FAKULTAS TEKNIK
UPN “VETERAN” JAWA TIMUR Nama : KHOLIFATUL MUBIN
NPM/Semester : 18031010037 / IV
Praktikum : MATEMATIKA TEKNIK Sesi : A-1
Percobaan : METODE JACOBI DAN GAUSS Paralel :A
SIEDEL
Tanggal : 20 MARET 2020
Pembimbing : IR. L URIP WIDODO, MT.
LAPORAN RESMI
SOAL!
1. Buatlah Algoritma perhitungan manual dari Metode Jacobi dan Gauss-Seidell
2. Sebutkan kelebihan dan kekurangan diantara kedua metode tersebut
3. Selesaikan matriks dibawah ini:
a.
b.
4. Suatu reaksi kimia dijalankan dalam serangkaian tiga reaktor alir tangki
berpengaduk (CSTR) yang disusun seperti gambar di bawah.
Reaksi kimia adalah reaksi irreverible orde satu dengan persamaan reaksi :
A → B
Ri = Vi ki CAi (mol/jam)
2. Metoda ini diterapkan hanya jika elemen diagonal lebih besar dari
jumlah semua elemen pada persamaan tersebut, yaitu:
2. Metoda ini diterapkan hanya jika elemen diagonal lebih besar dari jumlah
semua elemen pada persamaan tersebut, yaitu:
3. Kita bisa mengubah posisi persamaan agar syarat tersebut terpenuhi. Kita
mulai dengan men-set nilai awal x, y dan z sebagai nol. Selesaikan x, y
dan z sebagai variable lain, yaitu:
4. Nilai di atas adalah nilai awal x(0) , y(0) , z(0) Kita lanjutkan dengan
nilai awal y(0) dan z(0) dari persamaan pertama, yaitu
5. Kemudian kita hitung (1)
y dengan menggunakan nilai baru x
(1)
dan
z(0)
6. Dengan cara yang sama, kita hitung z(1) dengan menggunakan nilai
baru y(1) dan x(1)
8. Ulangi proses dengan cara yang sama, sehingga nilai iterasi ke-r adalah
x(r) , y(r ) , z(r )
9. Iterasi tersebut terus dilakukan hingga dua nilai yang dihasilkan berturut-
turut sama
2. Kelebihan dan Kekurangan Metode Jacobi dan Gauss Siedel
a) Pemrosesan hasil output iterasi Gauss-Seidel lebih sedikit dibandingkan
iterasi Jacobi,.
b) Waktu pemrosesan hasil output iterasi Jacobi lebih cepat dibandingkan
iterasi Gauss-Seidel,
c) Hasil output iterasi Jacobi lebih akurat dibandingkan iterasi Gauss-Seidel,
karena jumlah iterasi Jacobi yang lebih banyak menyebabkan proses
pengulangan dan hasil dari setiap iterasinya lebih jelas.
d) Menggunakan metode iterasi Jacobi lebih teliti untuk memecahkan
masalah numerik dalam SPL berukuran besar
3. A.
ALGORITMA
1. Mulai
2. Menampilkan persamaan yang telah diketahui pada soal
3. Masukkan pilihan metode perhitungan
4. Case 1
a. Menampilkan metode Gaus Siedel
b. Masukkan persamaan dan besar persen eror
c. Menghitung dengan menggunakan rumus
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
d. Mendapatkan hasil x1,y1,z1,w1
e. Melakukan perulangan dengan menggunakan while ketika epx>er||
epy>er||epz>er||epw>er
f. Menghitung dengan menggunakan rumus
x=x1;y=y1;z=z1;w=w1;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
epw=abs((w1-w)/w1)*100;
it=it+1;
g. Mendapatkan hasil x1,y1,z1,w1,epx,epy,epz,epw
5. Case 2
a. Menampilkan metode Jacoi
b. Masukkan persamaan dan besar persen eror
c. Menghitung dengan menggunakan rumus
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
d. Mendapatkan hasil x1,y1,z1,w1
e. Melakukan perulangan dengan menggunakan while ketika epx>er||
epy>er||epz>er||epw>er
f. Menghitung dengan menggunakan rumus
x=x1;y=y1;z=z1;w=w1;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
epw=abs((w1-w)/w1)*100;
it=it+1;
g. Mendapatkan hasil x1,y1,z1,w1,epx,epy,epz,epw
6. Selesai
LISTING PROGRAM
clear all;
clc;
disp('Perhitungan Matriks');
disp('-------------------');
disp('[1 4 9][14]');
disp('[4 9 16][29]')
disp('[9 16 25][50]');
disp('-------------------');
disp(' ');
disp('1. Metode Gaus Siedel');
disp('2. Metode Jacobi');
pil=input('Masukkan metode perhitungan yang diinginkan :');
disp(' ');
switch pil
case 1
disp ('======= METODE GAUS SIEDEL======= ');
disp ('');
a=[1 4 9 14];
b=[4 9 16 29];
c=[9 16 25 50];
er=input ('percent eror (%) = ');
y=0; z=0;
x1=(a(1,4)-(a(1,2)*y)-(a(1,3)*z))/a(1,1);
y1=(b(1,4)-(b(1,1)*x1)-(b(1,3)*z))/b(1,2);
z1=(c(1,4)-(c(1,1)*x1)-(c(1,2)*y1))/c(1,3);
epx=100; epy=100; epz=100; it=1;
fprintf ('%4s%9s%15s%15s%15s%15s
%15s\n','iterasi','x1','x2','x3','Ex1','Ex2','Ex3');
disp('=====================================================');
fprintf ('%4i%12.2f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,epx,epy,epz);
while epx>er||epy>er||epz>er
x=x1;y=y1;z=z1;
x1=(a(1,4)-(a(1,2)*y)-(a(1,3)*z))/a(1,1);
y1=(b(1,4)-(b(1,1)*x1)-(b(1,3)*z))/b(1,2);
z1=(c(1,4)-(c(1,1)*x1)-(c(1,2)*y1))/c(1,3);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
it=it+1;
fprintf ('%4i%12.2f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,epx,epy,epz);
end
disp('=====================================================');
fprintf('%0s%0.4f\n','x1= ',x1);
fprintf('%0s%0.4f\n','x2= ',y1);
fprintf('%0s%0.4f\n','x3= ',z1);
fprintf('%0s%0.0f\n','Iterasinya sampai ',it);
case 2
disp (' =======METODE JACOBI======= ');
disp ('');
a=[1 4 9 14];
b=[4 9 16 29];
c=[9 16 25 50];
er= input ('percent eror (%) = ');
x=0; y=0; z=0;
x1=(a(1,4)-(a(1,2)*y)-(a(1,3)*z))/a(1,1);
y1=(b(1,4)-(b(1,1)*x)-(b(1,3)*z))/b(1,2);
z1=(c(1,4)-(c(1,1)*x)-(c(1,2)*y))/c(1,3);
epx=100; epy=100; epz=100; it=1;
fprintf ('%4s%9s%15s%15s%15s%15s
%15s\n','iterasi','x1','x2','x3','Ex1','Ex2','Ex3');
disp('=====================================================');
fprintf ('%4i%12.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,epx,epy,epz);
while epx>er||epy>er||epz>er
x=x1;y=y1;z=z1;
x1=(a(1,4)-(a(1,2)*y)-(a(1,3)*z))/a(1,1);
y1=(b(1,4)-(b(1,1)*x)-(b(1,3)*z))/b(1,2);
z1=(c(1,4)-(c(1,1)*x)-(c(1,2)*y))/c(1,3);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
it=it+1;
fprintf ('%4i%12.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,epx,epy,epz);
end
disp('=====================================================');
fprintf('%0s%0.4f\n','x1= ',x1);
fprintf('%0s%0.4f\n','x2= ',y1);
fprintf('%0s%0.4f\n','x3= ',z1);
fprintf('%0s%0.0f\n','Iterasinya sampai ',it);
otherwise
disp('Tidak ada dalam pilihan');
end
FLOWCHART
HASIL RUN
HITUNGAN SECARA MANUAL
Manual Untuk Metode Gauss Siedell
Persamannya:
x+4y+9z=14 (1a)
4x+9y+16z=29 (1b)
9x+16y+25z=50 (1c)
Sistem Persamaan (1) diubah menjadi bentuk
x=14-4y-9z (2a)
29−4 x−16 z
y= (2b)
9
50−9 x−16 y
z= (2c)
25
Langkah / iterasi pertama
kita substititusikan nilai pemisalan y=z=0 kedalam persamaan (2a)
sehingga:
x’=14-4(0)-9(0)=14 (3a)
Hasil dari x’ disubstitusikaan kedalam persamaan (2b) guna mencari nilai
y’.Disini nilai x’=x dan z=0
29−4 (14)−16(0)
y’= = -3 (3b)
9
Hasil dari x’ dan y’ disubstitusikan kedalam persamaan (2c) guna
mencari nilai z’. Disni nilai x’=x dan y=y’
50−9(14 )−16(−3)
z= = -1,12 (2c)
25
Iterasi Kedua
Nilai x’, y’, z’ yang diperoleh tidaklah sama dengan nilai pemisalan.Iterasi
dilanjutkan dengan prosedur diatas untuk untuk menghitung x’’, y’’, z’’
den persen kesalahan yang terjadi
x’’ = 14-4(-3)-9(-1,12)=36,08
''
x −x '
Persen kesalahan x= (100%)=
x' '
36,08−14
x= (100%)= 61,20%
36,08
29−4 ( 36,08 )−16 (−1,12)
y’’ = = -10,82
9
''
y −y '
Persen kesalahan x= (100%)=
y''
−10,82−(−3)
x= (100%)= 72,28%
−10,82
50−9(36,08)−16(−10,82)
z’’ = = -4,06
25
''
z −z '
Persen kesalahan z= (100%)=
z''
−4,06−(−1,12)
z= (100%)= 72,43%
−4,06
Iterasi ketiga
x’’’ = 14-4(-10,82)-9(-4,06)= 93,85
x ' '' −x ' '
Persen kesalahan x= (100%)=
x'''
93,85−36,08
x= (100%)= 61,56%
93,85
29−4 ( 93,85 )−16 (−4,06)
y’’’ = = -31,27
9
'''
y −y' '
Persen kesalahan x= (100%)=
y'''
−31,27−(−10,82)
x= (100%)= 65,39%
−31,27
50−9( 93,85)−16(−31,27)
z’’’ = = -11,78
25
' ''
z −z ' '
Persen kesalahan z= (100%)=
z' ' '
−11,78−(−4,06)
z= (100%)= 65,50%
−11,78
Hitungan dilanjutkan dengan prosedur diatas , sampai akhirnya diperoleh
persen kesalahan yang relative kecil (terhadap ketelitian/ toleransi yang
diharapkan)
Manual Metode Jacobi
Persamannya:
x+4y+9z=14 (1a)
4x+9y+16z=29 (1b) (1)
9x+16y+25z=50 (1c)
Sistem Persamaan (1) diubah menjadi bentuk
x=14-4y-9z (2a)
29−4 x−16 z
y= (2b) (2)
9
50−9 x−16 y
z= (2c)
25
Langkah / iterasi pertama
kita substititusikan nilai pemisalan x=y=z=0 kedalam persamaan (2 dan
dihitung nilai x’, y’, z’ ) sehingga:
x’=14-4(0)-9(0)=14 (3a)
29−4 (0)−16(0)
y’= = 3,22 (3b)
9
50−9(0)−16(0)
z= =2 (3c)
25
Nilai x’, y’, z’ yang diperoleh tidaklah sama dengan nilai
pemisalan.Iterasi dilanjutkan dengan memasukkan nilai x’, y’, z’ kedalam
persamaan (2) untuk menghitung nilai x’’, y’’, z’’ dan nilai persen kesalah
yang terjadi
Iterasi kedua
Substitusikan nilai x’, y’, z’ ke persamaan (2)
x’’ = 14-4(3,22)-9(2)= -16.8889
''
x −x '
Persen kesalahan x= (100%)=
x' '
−16.8889−14
x= (100%)= 182.89%
−16.8889
29−4 (14)−16(2)
y’’ = = -6.56
9
y' '− y '
Persen kesalahan x= (100%)=
y''
−6.56−(3,22)
x= (100%)= 149.15%
−6.56
50−9(−16.8889)−16(−6.56)
z’’ = = -5.10
25
z ' ' −z '
Persen kesalahan z= (100%)=
z''
−5.10−(2)
z= (100%)= 139.20%
−5.10
Iterasi Ketiga
Substitusikan nilai x’’, y’’, z’’ ke persamaan (2)
LISTING PROGRAM
clear all;
clc;
disp('Perhitungan Matriks');
disp('-------------------');
disp('[ 1 4 9 16][ 30]');
disp('[ 4 9 16 25][ 54]')
disp('[ 9 16 25 36][ 86]');
disp('[16 25 36 49][126]');
disp('-------------------');
disp(' ');
disp('1. Metode Gaus Siedel');
disp('2. Metode Jacobi');
pil=input('Masukkan metode perhitungan yang diinginkan :');
disp(' ');
switch pil
case 1
disp ('======= METODE GAUS SIEDEL======= ');
a=[1 4 9 16 30];
b=[4 9 16 25 54];
c=[9 16 25 36 86];
d=[16 25 36 49 126];
er=input ('percent eror (%) = ');
y=0;z=0;w=0;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=100; epy=100; epz=100; epw=100; it=1;
fprintf ('%4s%8s%10s%10s%10s%10s%10s%10s
%10s\n','iterasi','x1','x2','x3','x4','Ex1','Ex2','Ex3','Ex4');
disp('================================================
==');
fprintf ('%4i%12.2f%10.2f%10.2f%10.2f%10.2f%10.2f%10.2f
%10.2f\n',it,x1,y1,z1,w1,epx,epy,epz,epw);
while epx>er||epy>er||epz>er||epw>er
x=x1;y=y1;z=z1;w=w1;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
epw=abs((w1-w)/w1)*100;
it=it+1;
fprintf ('%4i%12.2f%10.2f%10.2f%10.2f%10.2f%10.2f%10.2f
%10.2f\n',it,x1,y1,z1,w1,epx,epy,epz,epw);
end
disp('==================================================');
fprintf('%0s%0.4f\n','x1= ',x1);
fprintf('%0s%0.4f\n','x2= ',y1);
fprintf('%0s%0.4f\n','x3= ',z1);
fprintf('%0s%0.4f\n','x4= ',w1);
fprintf('%0s%0.0f\n','Iterasinya sampai ',it);
case 2
disp (' =======METODE JACOBI======= ');
a=[1 4 9 16 30];
b=[4 9 16 25 54];
c=[9 16 25 36 86];
d=[16 25 36 49 126];
er= input ('percent eror (%) = ');
x=0; y=0; z=0; w=0;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=100; epy=100; epz=100; epw=100; it=1;
fprintf ('%4s%9s%15s%15s%15s%15s%15s%15s
%15s\n','iterasi','x1','x2','x3','x4','Ex1','Ex2','Ex3','Ex4');
disp('================================================
==');
fprintf ('%4i%12.4f%15.2f%15.2f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,w1,epx,epy,epz,epw);
while epx>er||epy>er||epz>er
x=x1;y=y1;z=z1;
x1=(a(1,5)-(a(1,2)*y)-(a(1,3)*z)-(a(1,4)*w))/a(1,1);
y1=(b(1,5)-(b(1,1)*x1)-(b(1,3)*z)-(b(1,4)*w))/b(1,2);
z1=(c(1,5)-(c(1,1)*x1)-(c(1,2)*y1)-(c(1,4)*w))/c(1,3);
w1=(d(1,5)-(d(1,1)*x1)-(d(1,2)*y1)-(d(1,4)*z1))/d(1,4);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
epw=abs((w1-w)/w1)*100;
it=it+1;
fprintf ('%4i%12.4f%15.2f%15.2f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,x1,y1,z1,w1,epx,epy,epz,epw);
end
disp('==================================================');
fprintf('%0s%0.4f\n','x1= ',x1);
fprintf('%0s%0.4f\n','x2= ',y1);
fprintf('%0s%0.4f\n','x3= ',z1);
fprintf('%0s%0.4f\n','x4= ',w1);
fprintf('%0s%0.0f\n','Iterasinya sampai ',it);
otherwise
disp('Tidak ada dalam pilihan');
end
HASIL RUN
HITUNGAN SECARA MANUAL
Manual Untuk Metode Gauss Siedell
Persamannya:
x+4y+9z+16w=30 (1a)
4x+9y+16z+25w=54 (1b)
9x+16y+25z+36w=86 (1c)
16x+25y+36z+49w=126 (1d)
Sistem Persamaan (1) diubah menjadi bentuk
x=30-4y-9z-16w (2a)
54−4 x−16 z−25 w
y= (2b)
9
86−9 x−16 y −36 w
z= (2c)
25
126−16 x−25 y−36 z
w= (2d)
49
Langkah / iterasi pertama
kita substititusikan nilai pemisalan y=z=w=0 kedalam persamaan (2a)
sehingga:
x’=30-4(0)-9(0)-16(0)=30 (3a)
Hasil dari x’ disubstitusikaan kedalam persamaan (2b) guna mencari nilai
y’.Disini nilai x’=x dan z=w=0
54−4(30)−16(0)−25(0)
y’= =¿ -7.33 (3b)
9
Hasil dari x’ dan y’ disubstitusikan kedalam persamaan (2c) guna
mencari nilai z’. Disni nilai x’=x dan y=y’ dan w=0
86−9(30)−16(−7,33)−36(0)
z’= = -2.67 (2c)
25
Hasil dari x’, y’, z’ disubstitusikan kedalam persamaan (2d) guna
mencari nilai w’. Disni nilai x’=x dan y=y’ dan z=z’
126−16( 30)−25(−7,33)−36 (−2,76)
w’= =-0.82 (2d)
49
Iterasi Kedua
Nilai x’, y’, z’, w’ yang diperoleh tidaklah sama dengan nilai
pemisalan.Iterasi dilanjutkan dengan prosedur diatas untuk untuk
menghitung x’’, y’’, z’’ dan w’’dengan persen kesalahan yang terjadi
x’’=30-4(-7.33)-9(-2.67)-16(-0.82)= 96.39
''
x −x '
Persen kesalahan x= (100%)=
x' '
96.39−30
x= (100%)= 68.88%
96.39
54−4(96.39)−16(−2.67)−25(−0.82)
y’’= =−29.83
9
y' '− y '
Persen kesalahan y= (100%)=
y''
−29.83−(−7.33)
y= (100%)= 75.42%
−29.83
86−9(96.39)−16 (−29.83)−36(−0.82)
z’’= = -10.99
25
''
z −z '
Persen kesalahan z= (100%)=
z''
−10.99−(−2.67)
z= (100%)= 75.74%
−10.99
126−16( 96.39)−25(−29.83)−36 (−10.99)
w’’= = -2.69
49
''
w −w '
Persen kesalahan w= (100%)=
w''
−2.69−(−0.82)
w= (100%)= 69.65%
−2.69
Iterasi ketiga
x’’’=30-4( −29.83 )-9(-10.99)-16(-2.69)= 291.31
x ' '' −x ' '
Persen kesalahan x= (100%)=
x'''
291.31−96.39
x= (100%)= 66.91%
291.31
54−4(291.31)−16 (−10.99)−25(−2.69)
y’’’= =−96.46
9
y' ' '− y ' '
Persen kesalahan y= (100%)=
y'''
−96.46−(−29.83)
y= (100%)= 69.07 %
−96.46
86−9(291.31)−16(−96.46)−36(−2.69)
z’’’= = -35.83
25
z ' '' −z ' '
Persen kesalahan z= (100%)=
z' ' '
−35.83−(−10.99)
z= (100%)= 69.32%
−35.83
126−16( 291.31)−25 (−96.46)−36 (−35.83)
w’’’= = -7.51
49
w' ' ' −w ' '
Persen kesalahan w= (100%)=
w'''
−7.51−(−2.69)
w= (100%)= 64.19%
−7.51
ALGORITMA
1. Mulai
2. Masukkan nilai yang diketahui pada soal
3. Masukkan persamaan 1, 2, dan 3
4. Menghitung menggunakan rumus
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
5. Mendapatkan nilai x1, y1, dan z1
6. Mengulang ketika epx>er||epy>er||epz>er
7. Menghitung menggunakan rumus
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
x=x1
y=y1
z=z1
8. Mendapatkan nilai x1, y1, dan z1
9. Selesai
FLOWCHART
LISTING PROGRAM METODE GAUSS SIEDEL
clear all;
clc;
disp('===========================================');
disp(' METODE GAUSS SIEDEL ');
disp('===========================================');
qa0=1000;
ca0=1;
r0=qa0*ca0;
qb=1000;
qc=100;
Qout=qb+qc;
fprintf('Jika diketahui QA0=1000 L/jam dan CA0=1 mol/L maka R0= %3.2f
mol/jam\n',r0)
fprintf('Jika diketahui QB=1000 L/jam dan QC=100 L/jam maka Qoutput= %3.2f
L/jam\n',Qout)
disp(' ')
a=input('~ Masukkan persamaan 1 = ');
b=input('~ Masukkan persamaan 2 = ');
c=input('~ Masukkan persamaan 3 = ');
er=input('~ Percent error (%) = ');
disp(' ')
y=0;z=0;
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
epx=100;epy=100;epz=100;it=1;
fprintf('-------------------------------------------------------------------------\n');
fprintf('%2s%8s%10s%11s%14s%11s%11s\n','iterasi','ca1','ca2','ca3','error
ca1','error ca2','error ca3');
fprintf('-------------------------------------------------------------------------\n');
fprintf('%4.0f%13.4f%9.4f%11.4f%13.4f%11.4f
%11.4f\n',it,x1,y1,z1,epx,epy,epz);
while epx>er||epy>er||epz>er
x=x1;y=y1;z=z1;it=it+1;
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
fprintf('%4.0f%13.4f%9.4f%11.4f%13.4f%11.4f
%11.4f\n',it,x1,y1,z1,epx,epy,epz);
end
fprintf('-------------------------------------------------------------------------\n');
disp(' ')
disp('================================================');
disp(' Jadi didapat ca1, ca2, dan ca3 yaitu ');
disp('================================================');
fprintf('%0s%0.4f%2s%0.4f\n','> CA1 = ',x1,' mol/L dengan % error = ',epx);
fprintf('%0s%0.4f%2s%0.4f\n','> CA2 = ',y1,' mol/L dengan % error = ',epy);
fprintf('%0s%0.4f%2s%0.4f\n','> CA3 = ',z1,' mol/L dengan % error = ',epz);
fprintf('%0s%0.0f\n','> Number of Iterations = ',it);
disp('================================================');
HASIL RUN PROGRAM METODE GAUSS SIEDEL
LISTING PROGRAM METODE JACOBI
clear all;
clc;
disp('===========================================');
disp(' METODE JACOBI ');
disp('===========================================');
qa0=1000;
ca0=1;
r0=qa0*ca0;
qb=1000;
qc=100;
Qout=qb+qc;
fprintf('Jika diketahui QA0=1000 L/jam dan CA0=1 mol/L maka R0= %3.2f
mol/jam\n',r0)
fprintf('Jika diketahui QB=1000 L/jam dan QC=100 L/jam maka Qoutput= %3.2f
L/jam\n',Qout)
disp(' ')
a=input('~ Masukkan persamaan 1 = ');
b=input('~ Masukkan persamaan 2 = ');
c=input('~ Masukkan persamaan 3 = ');
er=input('~ Percent error (%) = ');
disp(' ')
x1=0;y=0;z=0;
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
epx=100;epy=100;epz=100;it=1;
fprintf('-------------------------------------------------------------------------\n');
fprintf('%2s%8s%10s%11s%14s%11s%11s\n','iterasi','ca1','ca2','ca3','error
ca1','error ca2','error ca3');
fprintf('-------------------------------------------------------------------------\n');
fprintf('%4.0f%13.4f%9.4f%11.4f%13.4f%11.4f
%11.4f\n',it,x1,y1,z1,epx,epy,epz);
while epx>er||epy>er||epz>er
x=x1;y=y1;z=z1;it=it+1;
x1=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1);
y1=(b(1,4)-b(1,1)*x1-b(1,3)*z)/b(1,2);
z1=(c(1,4)-c(1,1)*x1-c(1,2)*y1)/c(1,3);
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
fprintf('%4.0f%13.4f%9.4f%11.4f%13.4f%11.4f
%11.4f\n',it,x1,y1,z1,epx,epy,epz);
end
fprintf('-------------------------------------------------------------------------\n');
disp(' ')
disp('================================================');
disp(' Jadi didapat ca1, ca2, dan ca3 yaitu ');
disp('================================================');
fprintf('%0s%0.4f%2s%0.4f\n','> CA1 = ',x1,' mol/L dengan % error = ',epx);
fprintf('%0s%0.4f%2s%0.4f\n','> CA2 = ',y1,' mol/L dengan % error = ',epy);
fprintf('%0s%0.4f%2s%0.4f\n','> CA3 = ',z1,' mol/L dengan % error = ',epz);
fprintf('%0s%0.0f\n','> Number of Iterations = ',it);
disp('================================================');
ALGORITMA
1. Memulai program
2. Memasukkan nilai persamaan l, persamaan k, persamaan p, persamaan a
dan nilai persen kesalahan (pe)
3. Menghitung
a. nilai w (w1) dengan rumus
( l ( 1,5 )−l ( 1,2 ) x−1 ( 1,3 ) y−l ( 1,4 ) z )
w 1=
l ( 1,1 )
b. nilai x (x1) dengan rumus
( k ( 1,5 )−k ( 1,1 ) w−k ( 1,3 ) y −k ( 1,4 ) z )
x 1=
k ( 1,2 )
c. nilai y (y1) dengan rumus
( p ( 1,5 ) −p ( 1,1 ) w− p ( 1,2 ) x− p ( 1,4 ) z )
y 1=
p (1,3 )
d. nilai z (z1) dengan rumus
( a (1,5 )−a ( 1,1 ) w−a ( 1,2 ) x −a ( 1,3 ) y )
z 1=
a ( 1,1 )
4. Dilakukan perulangan while hingga nilai persen kesalahan w (erw), persen
kesalahan x (erx), persen kesalahan y (ery), dan persen kesalahan z (erz)
kurang dari nilai toleransi persen kesalahan (pe)
5. Menghitung
a. nilai w (w1) dengan rumus
( l ( 1,5 )−l ( 1,2 ) x−1 ( 1,3 ) y−l ( 1,4 ) z )
w 1=
l ( 1,1 )
b. nilai x (x1) dengan rumus
( k ( 1,5 )−k ( 1,1 ) w−k ( 1,3 ) y −k ( 1,4 ) z )
x 1=
k ( 1,2 )
c. nilai y (y1) dengan rumus
( p ( 1,5 ) −p ( 1,1 ) w− p ( 1,2 ) x− p ( 1,4 ) z )
y 1=
p (1,3 )
d. nilai z (z1) dengan rumus
( a (1,5 )−a ( 1,1 ) w−a ( 1,2 ) x −a ( 1,3 ) y )
z 1=
a ( 1,1 )
6. Menghitung persen kesalahan
a. w (erw) dengan rumus
|( w 1−w
erw=
w 1 )|
x 100
erx= |( x 1−x
x 1 )|
x 100
e= |( z 1−z
z 1 )|
x 100
7. Menampilkan nilai lemak (w1), nilai karbo (x1), nilai protein (y1), nilai
air (z1) dan jumlah iterasi
8. Selesai
FLOWCHART
LISTING PROGRAM
clc;
clear all;
disp('Perhitungan Matriks');
disp('-------------------');
disp(['81 4 10 14 20']);
disp([' 1 75 1 6 50']);
disp([' 4 6 35 4 10']);
disp(['14 5 54 86 20']);
disp('-------------------');
disp(' ');
disp('1. Metode Gaus Siedel');
disp('2. Metode Jacobi');
pil=input('Masukkan metode perhitungan yang diinginkan :');
disp(' ')
switch pil
case 1
disp('***********GAUSS SIEDEL***********');
er=input('Persen error = ');
a=[81 4 10 14 20];
b=[1 75 1 6 50];
c=[4 6 35 4 10];
d=[14 5 54 86 20];
disp('===================================================
==========================================================
==================');
x=0;y=0;z=0;
w1=(a(1,5)-(a(1,2)*x)-(a(1,3)*y)-(a(1,4)*z))/a(1,1);
x1=(b(1,5)-(b(1,1)*w1)-(b(1,3)*y)-(b(1,4)*z))/b(1,2);
y1=(c(1,5)-(c(1,1)*w1)-(c(1,2)*x1)-(c(1,4)*z))/c(1,3);
z1=(d(1,5)-(d(1,1)*w1)-(d(1,2)*x1)-(d(1,3)*y1))/d(1,4);
epw=100;epx=100;epy=100;epz=100;it=1;
fprintf('%4s%12s%15s%15s%15s%15s%15s%15s%15s\n','
Iterasi','x1','x2','x3','x4','%e1','%e2','%e3','%e4');
disp('===================================================
==========================================================
==================');
fprintf('%4i%17.4f%15.4f%14.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,w1,x1,y1,z1,epw,epx,epy,epz);
while epw>er||epx>er||epy>er||epz>er
w=w1;x=x1;y=y1;z=z1;
w1=(a(1,5)-(a(1,2)*x)-(a(1,3)*y)-(a(1,4)*z))/a(1,1);
x1=(b(1,5)-(b(1,1)*w1)-(b(1,3)*y)-(b(1,4)*z))/b(1,2);
y1=(c(1,5)-(c(1,1)*w1)-(c(1,2)*x1)-(c(1,4)*z))/c(1,3);
z1=(d(1,5)-(d(1,1)*w1)-(d(1,2)*x1)-(d(1,3)*y1))/d(1,4);
epw=abs((w1-w)/w1)*100;
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
it=it+1;
fprintf('%4i%17.4f%15.4f%14.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,w1,x1,y1,z1,epw,epx,epy,epz);
end
disp('======================================================
==========================================================
===============');
fprintf('%0s%0.4f\n','Lemak = ',w1);
fprintf('%0s%0.4f\n','Karbohidrat = ',x1);
fprintf('%0s%0.4f\n','Protein = ',y1);
fprintf('%0s%0.4f\n','Air = ',z1);
fprintf('%0s%0.0f\n','iterasi = ',it);
case 2
disp('***********METODE JACOBI***********');
er=input('Persen error = ');
a=[81 4 10 14 20];
b=[1 75 1 6 50];
c=[4 6 35 4 10];
d=[14 5 54 86 20];
disp('===================================================
==========================================================
==================');
w=0;x=0;y=0;z=0;
w1=(a(1,5)-(a(1,2)*x)-(a(1,3)*y)-(a(1,4)*z))/a(1,1);
x1=(b(1,5)-(b(1,1)*w)-(b(1,3)*y)-(b(1,4)*z))/b(1,2);
y1=(c(1,5)-(c(1,1)*w)-(c(1,2)*x)-(c(1,4)*z))/c(1,3);
z1=(d(1,5)-(d(1,1)*w)-(d(1,2)*x)-(d(1,3)*y))/d(1,4);
epw=100;epx=100;epy=100;epz=100;it=1;
fprintf('%4s%12s%15s%15s%15s%15s%15s%15s%15s\n','
Iterasi','x1','x2','x3','x4','%e1','%e2','%e3','%e4');
disp('===================================================
==========================================================
==================');
fprintf('%4i%17.4f%15.4f%14.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,w1,x1,y1,z1,epw,epx,epy,epz);
while epw>er||epx>er||epy>er||epz>er
w=w1;x=x1;y=y1;z=z1;
w1=(a(1,5)-(a(1,2)*x)-(a(1,3)*y)-(a(1,4)*z))/a(1,1);
x1=(b(1,5)-(b(1,1)*w)-(b(1,3)*y)-(b(1,4)*z))/b(1,2);
y1=(c(1,5)-(c(1,1)*w)-(c(1,2)*x)-(c(1,4)*z))/c(1,3);
z1=(d(1,5)-(d(1,1)*w)-(d(1,2)*x)-(d(1,3)*y))/d(1,4);
epw=abs((w1-w)/w1)*100;
epx=abs((x1-x)/x1)*100;
epy=abs((y1-y)/y1)*100;
epz=abs((z1-z)/z1)*100;
it=it+1;
fprintf('%4i%17.4f%15.4f%14.4f%15.2f%15.2f%15.2f%15.2f
%15.2f\n',it,w1,x1,y1,z1,epw,epx,epy,epz);
end
disp('======================================================
==========================================================
===============');
fprintf('%0s%0.4f\n','Lemak = ',w1);
fprintf('%0s%0.4f\n','Karbohidrat = ',x1);
fprintf('%0s%0.4f\n','Protein = ',y1);
fprintf('%0s%0.4f\n','Air = ',z1);
fprintf('%0s%0.0f\n','iterasi = ',it);
otherwise
disp('Tidak Ada Dalam Pilihan');
end
HASIL RUN PROGRAM