KOMPUTASI NUMERIK
Dosen :
Dr. rer. nat. Ir. Yuswan Muharam, MT
Disusun Oleh :
Kelompok 4
1. Imas Mega Pratiwi
(1306370524)
2. Mega Puspitasari
(1306370713)
3. Ryan Andriant
(1306409356)
Tugas
Buatlah program Pascal untuk menyelesaikan SPANL di bawah ini dengan menggunakan
Metode Newton.
w 3 2w 2 3w 4 12.828
wx xy yz 3,919
w 2 2wx x 2 1
w x y z 3.663
Pembahasan
SPANL di atas dapat diselesaikan dengan menggunakan metode Newton. Dalam
menyelesaiakan SPANL di atas diperlukan fungsi turunan pertama. Dimana dalam hal ini kami
menggunakan metode diferensial selisih maju dari ketiga metode diferensial yang ada untuk
mendapatkan persamaan turunan pertamanya.
f ' ( x)
f ( x h) f ( x )
h
Di dalam menyelesaikan SPANL juga dikenal matriks Jacobian, dimana matriks yang
telah terbentuk kemudian dapat digunakan sebagai SPAL sehingga untuk mendapatkan solusi
x1 hingga xn dapat digunakan metode eliminasi Gauss. Bila x yang dihasilkan belum
memenuhi kriteria konvergensi yang diitetapkan, maka nilai x yang diperoleh ditambahkan
pada nilai x taksiran awal untuk kemudian digunakan sebagai nilai x baru. Perhitungan
dihentikan hingga konvergensi tercapai. Berikut listing program pascal yang digunakan untuk
menyelesaikan program pascal di atas :
program SPANL_Kelompok_4;
v
ar
a,b,c,it,i : integer;
y : real;
x : array [1..4] of real;
f : array [1..4] of real;
nf : array[1..4,1..5] of real;
xh : array [1..4] of real;
fxh : array [1..4] of real;
df : array [1..4] of real;
d : array [1..4] of real;
p : array[1..5] of real;
dx : array [1..4] of real;
begin
writeln('input taksiran awal : ');
for a:=1 to 4 do
readln(x[a]);
write('input jumlah iterasi : ');
readln(i);
for it:=1 to i do
begin
f[1]:=x[1]*x[1]*x[1]+2*x[1]*x[1]+3*x[1] ;
f[2]:=x[1]*x[2]+x[2]*x[3]+x[3]*x[4];
f[3]:=x[1]*x[1]+2*x[1]*x[2]+x[2]*x[2];
f[4]:=x[1]+x[2]+x[3]-x[4];
nf[1,5]:=12.828-4-f[1];
nf[2,5]:=-3.919-f[2];
nf[3,5]:=1-f[3];
nf[4,5]:=-3.663-f[4];
for a:=1 to 4 do
begin
for b:=1 to 4 do
begin
{diferensial selisih maju}
xh[b]:=x[b]+0.00001;
fxh[1]:=xh[1]*xh[1]*xh[1] + 2*xh[1]*xh[1] + 3*xh[1];
fxh[2]:=xh[1]*xh[2] + xh[2]*xh[3] + xh[3]*xh[4];
fxh[3]:=xh[1]*xh[1] + 2*xh[1]*xh[2] + xh[2]*xh[2];
fxh[4]:=xh[1] + xh[2] + xh[3] - xh[4];
df[a]:=(fxh[a]-f[a])/0.00001;
xh[b]:=x[b];
nf[a,b]:=df[a];
end;
end;
{eliminasi gauss}
{a. substitusi dan eliminasi}
for c:=1 to 3 do
begin
for a:=c to 4 do
begin
p[a]:= nf[a,c]/nf[c,c];
p[c]:=0;
for b:=1 to 5 do
nf[a,b]:=nf[a,b]-p[a]*nf[c,b] ;
end;
end;
{b. substitusi balik}
y:=0;
for a:=4 downto 1 do
begin
d[a]:=(nf[a,5]-y)/nf[a,a];
y:=0;
for b:=4 downto a do
y:= y+nf[a,b]*d[b];
end;
for a:=1 to 4 do
x[a]:=x[a]+d[a];
clrscr;
for a:=1 to 4 do
writeln('x',a,' = ',x[a]:9:4,'
end;
d',a,' = ',d[a]:5:2);
end.
Adapun bagian-bagian program dari penyelesaian SPANL di atas adalah sebagai berikut :
program SPANL_Kelompok_4;
uses wincrt;
var
a,b,c,it,i : integer;
y : real;
x : array [1..4] of real;
f : array [1..4] of real;
nf : array[1..4,1..5] of real;
xh : array [1..4] of real;
fxh : array [1..4] of real;
df : array [1..4] of real;
d : array [1..4] of real;
p : array[1..5] of real;
dx : array [1..4] of real;
Deklarasi Variabel
Main Program
begin
end.
readln(i);
for it:=1 to i do
begin
f[1]:=x[1]*x[1]*x[1]+2*x[1]*x[1]+3*x[1] ;
f[2]:=x[1]*x[2]+x[2]*x[3]+x[3]*x[4];
f[3]:=x[1]*x[1]+2*x[1]*x[2]+x[2]*x[2];
f[4]:=x[1]+x[2]+x[3]-x[4];
nf[1,5]:=12.828-4-f[1];
nf[2,5]:=-3.919-f[2];
nf[3,5]:=1-f[3];
nf[4,5]:=-3.663-f[4];
Deklarasi
Fungsi
Bagian metode diferensiasi selisih maju pada proses menentukan turunan pertama
for a:=1 to 4 do
begin
for b:=1 to 4 do
begin
{diferensial selisih maju}
xh[b]:=x[b]+0.00001;
fxh[1]:=xh[1]*xh[1]*xh[1] + 2*xh[1]*xh[1] +
3*xh[1];
fxh[2]:=xh[1]*xh[2] + xh[2]*xh[3] + xh[3]*xh[4];
fxh[3]:=xh[1]*xh[1] + 2*xh[1]*xh[2] + xh[2]*xh[2];
fxh[4]:=xh[1] + xh[2] + xh[3] - xh[4];
df[a]:=(fxh[a]-f[a])/0.00001;
xh[b]:=x[b];
nf[a,b]:=df[a];
end;
end;
x[a]:=x[a]+d[a];
Jadi, dapat disimpulkan dengan menggunakan program SPANL di atas, diperoleh hasil :
w = 26,5991
x = -142,5809
y = 11,1483
z = 51,6612