FAKULTAS TEKNIK
UPN “VETERAN” JAWA TIMUR Nama : PINGKY MARCELLA A.
NPM/Semester : 17031010034 / IV
Praktikum : MATEMATIKA TEKNIK Sesi :V
Percobaan : METODE RUNGE KUTTA Paralel :A
Tanggal :24 APRIL 2019
Pembimbing : LILIK SUPRIANTI, ST. MSc
LAPORAN RESMI
SOAL
1. Rangkum materi modul 5 – 8 secara sederhana, jelaskan fungsi setiap
modul untuk persamaan apa?
2. Buatlah soal tiap kelompok berbeda masing – masing 3 soal dengan
metode runge kutta orde 2 – 4.
137
1. Rangkuman Materi Modul 5 – 8
A) Modul 5
Metode jacobi
Metode jacobi ini dapat disebut metode tidak langsung karena nilai
yang didapatkan tidak langsung dioperasikan kembali.Untuk mencari
nilai variabel yang dicari, maka nilai variabel yang pertama di ubah
menjadi 0 biasanya. Misalnya untuk mencari nilai X maka nilai Y dan
Z awal adalah 0.Dan untuk mencari nilai variabel selanjutnya,variabel
yang sudah di dapatkan tadi dimasukkan ke persamaan sehingga
didapatkan persamaan selanjutnya.
Metode Gauss Seidel
Metode Gauss Seidel biasa disebut metode langsung karena
metode ini langsung mensubstitusikan bilangan yang sudah didapatkan
di perhitungan awal.Dalam metode gauss seidel sama seperti metode
jacobi dimana nilai variabel awal diubah menjadi 0 namun nilai yang
sudah didapatkan langsung dimasukkan untuk mencari nilai variabel
kedua. Misalkan untuk mencari nilai X1 maka nilai Y dan Z yang
didapatkan di substitusikan.
Fungsi metode jacobi dan gauss siedel sendiri untuk membantu
mempermudah melakukan operasi perhitungan dalam mencari nilai
x,y,dan z baru sampai iterasi yang di tentukan.
B) Modul 6
Metode Trapesium
Metode trapesium secara umumterbagi menjadi 2. Yaitu metode
trapesium untuk satu pias dan metode trapesium banyak pias. Metode
ini sering digunakan untuk mencari luas di bawah kurva. Metode
trapesium satu pias Merupakan metode pendekatan integral numerik
dengan persamaan polynomial orde 1. Dalam metode ini kurva
lengkung digantikan dengan garis lurus. Sedangkan metode trapesium
banyak pias adalah perbaikan dari metode satu pias. Karena persen
138
yang didapatkan dengan menggunakan metode satu pias masih terlalu
besar maka mertode ini memiliki persen kesalahan yang relatif kecil.
Metode Simpson
Secara umumada 3 macam metode simpson. Diantaranya:
1. Aturan Simpson 1/3
Aturan ini digunakan untuk polinomial order dua (persamaan
parabola) yang melalui titik f(xi-1), f(x), dan f(xi+1) untuk mendekati
fungsi. Secara umum terdapat dua rumus yaitu untuk 1 pias dan
banyak pias. Rumus simpson diturunkan berdasarkan deret Taylor.
Dengan
ba
x
2
Untuk satu pias, maka:
ba
Ai f (a) 4 f (c) f (b).........(17)
6
Dimana c adalah titik tengah antara a dan b.
Dengan grafik
f ( x)dx
3 f ( a ) f (b) 4i 1
f ( xi) 2i 2
f ( xi)........(19)
a
139
Dengan grafik
140
Fungsi metode simpsons dan trapesium sendiri digunakan untuk
mencari nilai luas di bawah kurva yang nantinya berhubungan dalam
penyelesaian problem TRK. Sehingga adanya pemrograman ini bisa
mempermudah penyelesaian. Tentunya sebagai mahasiswa teknik kimia
ini bisa digunakan untuk membantu menyelesaikan tugas akhir sebagai
perhitungan proses alat yang digunakan.
C) Modul 7
Metode Satu Langkah
Metode satu langkah merupakan metode differensial biasa. Dengan
menggunakan perkiraan kemiringan yang digunakan untuk
ekstrapolasi dari nilai y yang ditentukan sehingga dapat dihitung nilai
y secara bertahap.
Metode Euler
Merupakan salah satu metode satu langkah yang paling sederhana.
Dalam metode ini persamaan di integralkan untuk mencari nilai
perhitungan secara numeris dengan mensubstitusikan nilai x awal.
Dengan begitu kita bisa menentukan nilai y1 dengan ketentuan rumus
metode euler sehingga nantinya bisa kita gunakan untuk mencari nilai
x selanjutnya sampaibatas yang diinginkan dengan interval yang
ditentukan.
Fungsi metode euler dan satu langkah adalah untuk menyelesaikan
persamaan-persamaan baik linier atau pangkat 2 hingga pangkat tak
hingga.
D) Modul 8
Metode Runge Kutta
Secara umum metode ini terdiri dari beberapa orde dengan
berbagai metode-metode penyelesaian. Disini yang membedakan
hanyalah nilai k. Dimana saat orde 2 ada nilai k1 dan k2. Dan untuk
orde 3 terdapat nilai k1,k2,k3 dan untuk ordw 4 ada nilai k1,k2,k3,k4.
141
Disinilah letak perbedaan metode ini karena untuk mencari nilai k
rumusnya berbeda-beda.
Fungsi metode ini adalah untuk mempermudah menyelesaikan
persamaan persamaan yang ada. Dengan berbagai variasi metode ini
bisa dijadikan sebagai acuan hasil yang paling mendekati karena
memiliki ketelitian yang lebih tinggi dari metode euler.
142
2. Soal Metode Runge Kutta Orde 2
a. Algoritma
1. Mulai
2. Memasukkan pilihan
3. Menampilkan pilihan
4. For x0=x0:h:xt
5. Menghitung bagian numeris, bagian analitik, dan persen kesalahan
6. Menampilkan hasil perhitungan
143
b. Flowchart
mulai
Masukkan
pilihan
Bagian Numeris
Bagian Analitik Persen Menampi
f=(3*x^3)+(2*x^2)+x+ For k1=subs(f,{x,y},{
x1=x0+h Kesalahan lkan hasil
Case 1 YA 9+3*y; x0=x0:h:x x0,y0})
y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
xi=0; xt=4; delx=0,4 t k2=subs(f,{x,y},{
{x1,y0}) y2)*100 an
xb,yb})
NO
Bagian Numeris
Bagian Analitik Persen Menampi
f=(8*x^4)- For k1=subs(f,{x,y},{
x1=x0+h Kesalahan lkan hasil
Case 2 YA (3*x^2)+(7*x)-29-y; x0=x0:h:x x0,y0})
y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
xi=1; xt=5; delx=0,5 t k2=subs(f,{x,y},{
{x1,y0}) y2)*100 an
xb,yb})
NO
Bagian Numeris
Bagian Analitik Persen Menampi
f=(x^3)+(5*x^2)- For k1=subs(f,{x,y},{
x1=x0+h Kesalahan lkan hasil
Case 3 YA (12*x)-8-2*y; x0=x0:h:x x0,y0})
y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
xi=1; xt=4; delx=0,3 t k2=subs(f,{x,y},{
{x1,y0}) y2)*100 an
xb,yb})
NO
selesai
144
c. Script
clc; clear all;
syms x;
syms y;
disp('Program RungkuttaOrde 2');
disp('Masukkan Pilihan= ');
disp('1. (3*x^3)+(2*x^2)+x+9+3*y ; x=0-3 ; y(0)=2 ; delx= 0.4 ');
disp('2. (8*x^4)-(3*x^2)+(7*x)-29-y; x=1-5 ; y(1)=1 ; delx= 0.5');
disp('3. (x^3)+(5*x^2)-(12*x)-8-2*y ; x=0-4 ; y(0)=1 delx= 0.3 ');
pil=input('Masukkan Pilihanmu 1/2/3= ');
switch pil
case 1
disp('Persamaan yang digunakan= (3*x^3)+(2*x^2)+x+9+3*y');
disp('xi=0 dan xt=4 , dengandeltax= 0.4');
f=(3*x^3)+(2*x^2)+x+9+3*y;
f1=int(f);
x0=0;
xt=3;
y0=2;
h=0.4;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
yb=y0+0.5*k1*h;
k2=subs(f,{x,y},{xb,yb});
y1=y0+((0.5*k1)+(0.5*k2))*h;
%BagianAnalitik
145
x1=x0+h;
f2=int(f);
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x1;
end
case 2
disp('Persamaan yang digunakan= (8*x^4)-(3*x^2)+(7*x)-29-y');
disp('xi=1 dan xt=5 , dengandeltax= 0.5');
f=(8*x^4)-(3*x^2)+(7*x)-29-y;
f1=int(f);
x0=1;
xt=5;
y0=1;
h=0.5;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
yb=y0+0.5*k1*h;
k2=subs(f,{x,y},{xb,yb});
y1=y0+((0.5*k1)+(0.5*k2))*h;
%BagianAnalitik
x1=x0+h;
146
f2=int(f);
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x1;
end
case 3
disp('Persamaan yang digunakan= (x^3)+(5*x^2)-(12*x)-8-2*y');
disp('xi=0 dan xt=4 , dengandeltax= 0.3');
f=(x^3)+(5*x^2)-(12*x)-8-2*y;
f1=int(f);
x0=0;
xt=4;
y0=1;
h=0.3;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
yb=y0+0.5*k1*h;
k2=subs(f,{x,y},{xb,yb});
y1=y0+((0.5*k1)+(0.5*k2))*h;
%BagianAnalitik
x1=x0+h;
f2=int(f);
147
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x1;
end
end;
148
d. Hasil run
149
150
151
Soal Metode Runge Kutta Orde 3
a. Algoritma
1. Mulai
2. Memasukkan pilihan
3. Menampilkan pilihan
4. For x0=x0:h:xt
5. Menghitung bagian numeris, bagian analitik, dan persen kesalahan
6. Menampilkan hasil perhitungan
152
b. Flowchart
mulai
Masukkan
pilihan
Bagian Numeris
k1=subs(f,{x,y},{
Bagian Analitik Persen Menampi
f=(12*x^2)+(8*x*y)+4 For x0,y0})
x1=x0+h Kesalahan lkan hasil
Case 1 YA ; x0=x0:h:x k2=subs(f,{x,y},{
y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
xi=0; xt=2; delx=0,5 t xb,yb})
{x1,y0}) y2)*100 an
k3=subs(f,{x,y},{
xc,yc})
NO
Bagian Numeris
k1=subs(f,{x,y},{
Bagian Analitik Persen Menampi
For x0,y0})
f=(3*x^2)-(2*x*y)+1; x1=x0+h Kesalahan lkan hasil
Case 2 YA x0=x0:h:x k2=subs(f,{x,y},{
xi=1; xt=2; delx=0,5 y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
t xb,yb})
{x1,y0}) y2)*100 an
k3=subs(f,{x,y},{
xc,yc})
NO
Bagian Numeris
k1=subs(f,{x,y},{
For Bagian Analitik Persen Menampi
f=(24*x^2)- x0,y0})
x0=x0:h:x x1=x0+h Kesalahan lkan hasil
Case 3 YA (16*x*y)+8-y; k2=subs(f,{x,y},{
t y2=subs(f2,{x,y}, e=abs((y2-y1)/ perhitung
xi=1; xt=2; delx=0,5 xb,yb})
{x1,y0}) y2)*100 an
k3=subs(f,{x,y},{
xc,yc})
NO
selesai
153
c. Script
clc; clear all;
syms x;
syms y;
disp('Program RungkuttaOrde 3');
disp('Masukkan Pilihan= ');
disp('1. (12*x^2)-(8*x*y)+4 ; x=0-2 ; y(0)=1 ; delx= 0.5 ');
disp('2. (3*x^2)-(2*x*y)+1 ; x=0-2 ; y(0)=1 ; delx= 0.5');
disp('3. (24*x^2)-(16*x*y)+8-y; x=0-2 ; y(0)=1 ; delx= 0.5 ');
pil=input('Masukkan Pilihanmu 1/2/3= ');
switch pil
case 1
disp('Persamaan yang digunakan=(12*x^2)-(8*x*y)+4');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(12*x^2)-(8*x*y)+4;
f1=int(f);
x0=0;
xt=2;
y0=1;
h=0.5;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
yb=y0+0.5*k1;
k2=subs(f,{x,y},{xb,yb});
xc=x0+h;
yc=y0-k1+2*k2;
154
k3=subs(f,{x,y},{xc,yc});
y1=y0+(0.1667*(k1+4*k2+k3));
%BagianAnalitik
x1=x0+h;
f2=int(f);
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x0+1;
end
case 2
disp('Persamaan yang digunakan=(3*x^2)-(2*x*y)+1');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(3*x^2)-(2*x*y)+1;
f1=int(f);
x0=0;
xt=2;
y0=1;
h=0.5;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
yb=y0+0.5*k1;
k2=subs(f,{x,y},{xb,yb});
155
xc=x0+h;
yc=y0-k1+2*k2;
k3=subs(f,{x,y},{xc,yc});
y1=y0+(0.1667*(k1+4*k2+k3));
%BagianAnalitik
x1=x0+h;
f2=int(f);
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x0+1;
end
case 3
disp('Persamaan yang digunakan=(24*x^2)-(16*x*y)+8-y');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(24*x^2)-(16*x)+8-y;
f1=int(f);
x0=0;
xt=2;
y0=1;
h=0.5;
i=1;
fprintf('%5s%10s%20s%15s%15s\n','No','x','Ynumeris','Yanalitik','Per
sen Error');
for x0=x0:h:xt
%BagianNumeris
k1=subs(f,{x,y},{x0,y0});
xb=x0+0.5*h;
156
yb=y0+0.5*k1;
k2=subs(f,{x,y},{xb,yb});
xc=x0+h;
yc=y0-k1+2*k2;
k3=subs(f,{x,y},{xc,yc});
y1=y0+(0.1667*(k1+4*k2+k3));
%BagianAnalitik
x1=x0+h;
f2=int(f);
y2=subs(f2,{x,y},{x1,y0});
%PersenKesalahan
e=abs((y2-y1)/y2)*100;
fprintf('%5.0f%10.1f%20.4f%15.4f%15.4f\n',i,x0,y1,y2,e);
i=i+1;
y0=y1;
x0=x0+1;
end
end;
157
d. Hasil run
158
159
160
Soal Metode Runge Kutta Orde 4
a. Algoritma
1. Mulai
2. Memasukkan pilihan
3. Menampilkan pilihan
4. For x0=x0:h:xt
5. Menghitung nilai x2, x3, x4 ; y2, y3, y4 ; k1, k2, k3, k4
6. Menampilkan hasil perhitungan
161
b. Flowchart
mulai
Masukkan
pilihan
Menampi
f=(12*x^2)+(8*x*y)+4 For
Menghitung nilai Menghitung nilai Menghitung nilai lkan hasil
Case 1 YA ; x0=x0:h:x
x2, x3, x4 y2, y3, y4 k1, k2, k3, k4 perhitung
xi=0; xt=2; delx=0,5 t
an
NO
Menampi
For
f=(3*x^2)-(2*x*y)+1; Menghitung nilai Menghitung nilai Menghitung nilai lkan hasil
Case 2 YA x0=x0:h:x
xi=1; xt=2; delx=0,5 x2, x3, x4 y2, y3, y4 k1, k2, k3, k4 perhitung
t
an
NO
Menampi
f=(24*x^2)- For
Menghitung nilai Menghitung nilai Menghitung nilai lkan hasil
Case 3 YA (16*x*y)+8-y; x0=x0:h:x
x2, x3, x4 y2, y3, y4 k1, k2, k3, k4 perhitung
xi=1; xt=2; delx=0,5 t
an
NO
selesai
162
c. Script
clear all;
clc;
syms x;
syms y;
disp('Program RungkuttaOrde 3');
disp('Masukkan Pilihan= ');
disp('1. (12*x^2)-(8*x*y)+4 ; x=0-2 ; y(0)=1 ; delx= 0.5 ');
disp('2. (3*x^2)-(2*x*y)+1 ; x=0-2 ; y(0)=1 ; delx= 0.5');
disp('3. (24*x^2)-(16*x*y)+8-y; x=0-2 ; y(0)=1 ; delx= 0.5 ');
pil=input('Masukkan Pilihanmu 1/2/3= ');
switch pil
case 1
disp('Persamaan yang digunakan=(12*x^2)-(8*x*y)+4');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(12*x^2)-(8*x*y)+4;
x0=0;
y0=1;
xt=2;
h=0.5;
disp('==============================================
==================================================
==================================================
==');
fprintf('%5s%10s%10s%20s%10s%13s%10s%10s%10s%10s%10s%1
0s%10s%10s\n','no','x awal','y
awal','yakhir(yi+1)','x2','x3','x4','y2','y3','y4','k1','k2','k3','k4');
disp('==============================================
==================================================
==================================================
==');
163
i=1;
for x0=x0:h:xt
k1=subs(f,{x,y},{x0,y0});
x2=x0+(0.5*h);
y2=y0+(0.5*k1*h);
k2=subs(f,{x,y},{x2,y2});
x3=x2;
y3=y0+(0.5*k2*h);
k3=subs(f,{x,y},{x3,y3});
x4=x0+h;
y4=y0+(k3*h);
k4=subs(f,{x,y},{x4,y4});
yt=y0+((h/6)*(k1+(2*k2)+(2*k3)+k4));
fprintf('%5.0f%10.3f%10.3f%15.3f%17.3f%13.3f%10.3f%10.3f%10.
3f%10.3f%10.3f%10.3f%10.3f%10.3f\n',i,x0,y0,yt,x2,x3,x4,y2,y3,y4,
k1,k2,k3,k4);
x0=x0+h;
y0=yt;
i=i+1;
end
case 2
disp('Persamaan yang digunakan=(3*x^2)-(2*x*y)+1');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(3*x^2)-(2*x*y)+1;
x0=0;
y0=1;
xt=2;
h=0.5;
disp('==============================================
==================================================
164
==================================================
==');
fprintf('%5s%10s%10s%20s%10s%13s%10s%10s%10s%10s%10s%1
0s%10s%10s\n','no','x awal','y
awal','yakhir(yi+1)','x2','x3','x4','y2','y3','y4','k1','k2','k3','k4');
disp('==============================================
==================================================
==================================================
==');
i=1;
for x0=x0:h:xt
k1=subs(f,{x,y},{x0,y0});
x2=x0+(0.5*h);
y2=y0+(0.5*k1*h);
k2=subs(f,{x,y},{x2,y2});
x3=x2;
y3=y0+(0.5*k2*h);
k3=subs(f,{x,y},{x3,y3});
x4=x0+h;
y4=y0+(k3*h);
k4=subs(f,{x,y},{x4,y4});
yt=y0+((h/6)*(k1+(2*k2)+(2*k3)+k4));
fprintf('%5.0f%10.3f%10.3f%15.3f%17.3f%13.3f%10.3f%10.3f%10.
3f%10.3f%10.3f%10.3f%10.3f%10.3f\n',i,x0,y0,yt,x2,x3,x4,y2,y3,y4,
k1,k2,k3,k4);
x0=x0+h;
y0=yt;
i=i+1;
end
case 3
165
disp('Persamaan yang digunakan=(24*x^2)-(16*x*y)+8-y');
disp('xi=0 dan xt=2 , dengandeltax= 0.5');
f=(24*x^2)-(16*x*y)+8-y;
x0=0;
y0=1;
xt=2;
h=0.5;
disp('==============================================
==================================================
==================================================
==');
fprintf('%5s%10s%10s%20s%10s%13s%10s%10s%10s%10s%10s%1
0s%10s%10s\n','no','x awal','y
awal','yakhir(yi+1)','x2','x3','x4','y2','y3','y4','k1','k2','k3','k4');
disp('==============================================
==================================================
==================================================
==');
i=1;
for x0=x0:h:xt
k1=subs(f,{x,y},{x0,y0});
x2=x0+(0.5*h);
y2=y0+(0.5*k1*h);
k2=subs(f,{x,y},{x2,y2});
x3=x2;
y3=y0+(0.5*k2*h);
k3=subs(f,{x,y},{x3,y3});
x4=x0+h;
y4=y0+(k3*h);
k4=subs(f,{x,y},{x4,y4});
yt=y0+((h/6)*(k1+(2*k2)+(2*k3)+k4));
166
fprintf('%5.0f%10.3f%10.3f%15.3f%17.3f%13.3f%10.3f%10.3f%10.
3f%10.3f%10.3f%10.3f%10.3f%10.3f\n',i,x0,y0,yt,x2,x3,x4,y2,y3,y4,
k1,k2,k3,k4);
x0=x0+h;
y0=yt;
i=i+1;
end
end;
167
d. Hasil run
168
169
170