You are on page 1of 8

0

MAKALAH KOMPUTASI NUMERIK



PENYELESAIANSISTEM PERSAMAAN ALJABAR NON LINEAR
(SPANL)
DENGAN MENGGUNAKAN PROGRAM PASCAL













Disusun Oleh Kelompok 9:

Muhammad Bagus Prakasa/1206220264
Ratu Bilqis Chairunnisa/1206237826
Risa Hashimoto/1206224615
Rexy Darmawan/1206202103


Departemen Teknik Kimia
Fakultas Teknik
Universitas Indonesia
Depok, Desember 2013
1

SOAL:
Buat program Pascal/FORTRAN untuk menyelesaikan SPANL di bawah dengan Metode
Newton.
663 . 3
1 2
919 , 3
828 . 12 4 3 2
2 2
2 3




z y x w
x wx w
yz xy wx
w w w

JAWAB:
Sistem persamaan aljabar non linear di atas dapat diselesaikan dengan metode Newton. Pertama,
persamaan yang ada diekspresikan dalam

Kemudian, dengan menggunakan ekspansi deret Taylor diperoleh



Karena diperlukan fungsi turunan pertama, pada program ini digunakan metode diferensial
selisih maju untuk mendapatkan persamaan turunan pertama.
h
x f h x f
x f
) ( ) (
) (
'


Matriks Jacobian
2

Metode yang digunakan ini mengadopsi langsung definisi diferensial, yaitu

h
x f h x f
x f
h
) ( ) (
) (
lim
0
'



Nilai h yang digunakan selanjutnya akan sangat kecil (~0), yaitu h = 0,00001.
Matriks Jacobian yang telah terbentuk kemudian dapat digunakan sebagai SPAL sehingga untuk
mendapatkan solusi x
1
hingga x
n
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. Di sini karena keterbatasan, penulis belum
dapat merancang program yang dapat digunakan untuk menyelesaikan sejumlah sistem
persamaan aljabar non linear secara umum. Karena itu, pada jawaban ini program yang
digunakan hanya dapat menyelesaikan SPANL yang terdapat pada soal.
Berikut program yang dihasilkan.
program SPANLsolveit;
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;

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
3

{deklarasi fungsi}
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-1,b]*d[b];
end;
for a:=1 to 4 do
4

x[a]:=x[a]+d[a];

clrscr;
for a:=1 to 4 do
writeln('x',a,' = ',x[a]:9:4,' d',a,' = ',d[a]:5:2);
end;
end.

Penjelasan program tersebut adalah sebagai berikut
program SPANLsolveit;
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;

begin
end.


Pada main program
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
{deklarasi fungsi}
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];
Deklarasi Variabel
Main Program
5

nf[4,5]:=-3.663-f[4];

Pertama-tama taksiran awal nilai w, x, y, dan z diinput dengan w = x
1
, x = x
2
, y = x
3
, z = x
4
.
Setelah itu jumlah iterasi juga diinput. Semakin banyak iterasi, hasil yang diperoleh semakin
baik, namun waktu yang diperlukan program untuk memroses data juga lebih lama. Jika taksiran
awal yang diinput pertama kali cukup besar, atau terdapat perbedaan yang cukup menyolok pada
nilai taksiran w, x, y, maupun z, disarankan menginput jumlah iterasi bernilai besar.
Pada deklarasi fungsi, nf merupakan selisih c dan F(x) pada persamaan


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;

Bagian ini digunakan untuk mendapatkan nilai turunan pertama dengan menggunakan metode
diferensial selisih maju. Dalam program, f(x) dalam persamaan
h
x f h x f
x f
) ( ) (
) (
'


didefinisikan sebagai df, f(x+h) didefinisikan sebagai fxh, dan x+h didefinisikan sebagai xh.

{eliminasi gauss}
{a. substitusi dan eliminasi}
6

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-1,b]*d[b];
end;
for a:=1 to 4 do
x[a]:=x[a]+d[a];

Baris selanjutnya digunakan untuk mensubstitusi-eliminasi matriks Jacobian yang diperoleh
hingga mendapatkan nilai x yang konvergen.


Berikut hasil eksekusi program dengan taksiran awal w = x
1
= 12, x = x
2
= 34, y = x
3
= 2, dan z
= x
4
= 20; dengan 100 iterasi.

Hasil yang diberikan adalah sebagai berikut.

7

d menunjukkan hasil inputan x
1
, x
2
, x
3
, dan x
4
, pada matriks yang diselesaikan melalui SPAL
metode eliminasi Gauss memberikan hasil 0. Dengan demikian akurasi hasil cukup baik.
Untuk inputan taksiran x yang lebih besar lagi, hasil yang diberikan tidak jauh berbeda,


Jadi, dapat disimpulkan dengan menggunakan program SPALsolveit, diperoleh,
5799 , 3
0831 , 1
2500 , 0
2500 , 1

z
y
x
w

You might also like