FAKULTAS TEKNIK
UPN “VETERAN” JAWA TIMUR Nama : VITA KARTIKA SARI
NPM/Semester : 1631010039 / IV
Praktikum : MATEMATIKA TEKNIK Sesi :V
Percobaan : METODE RUNGE KUTTA Paralel :A
Tanggal : 02 MEI 2018
Pembimbing : IR. L. URIP WIDODO, MT
LAPORAN RESMI
SOAL
1. Jelaskan apa yang dimaksud dengan Metode Runge Kutta pada Persamaan
Differensial Biasa. Jelaskan secara lengkap dengan memberikan pengertian,
algoritma, kelebihan, dan kekurangan dari metode sebelumnya.
2. Buatlah Listing Program, Hasil Run, dan Flowchart dengan menggunakan
Bahasa Pemrograman Turbo Pascal dari Metode Runge Kutta Orde 4.
Berikut persamaannya :
𝑑𝑦
a. = 2.97𝑡 3 − 1.5 𝑡
𝑑𝑡
𝑥
𝑑𝑦 10 𝑥 exp( )
100
b. =
𝑑𝑥 1+𝑥 2
Mula-mula reaktor berisi 0.01 gmol A dan 0.01 gmol gas inert dengan
volume 0.5 liter. Tentukan volume reaktor setelah reaksi berlangsung
selama 25 detik. Neraca mol A pada unsteady state dinyatakan sebagai :
2
𝑑𝑛𝐴 0.1𝑛𝐴
= 𝑉(−𝑟) = −
𝑑𝑡 𝑉
1
𝑛𝑡 0.01 + 𝑛𝐴 + 2(0.01 − 𝑛𝐴 )
𝑉 = 𝑉0 ( ) = 0.5 ( )
𝑛𝑡0 0.02
= 0.75 − 25 𝑛𝐴 [=] 𝑙𝑖𝑡𝑒𝑟
𝑑𝑛𝐴 0.1 𝑛2
Dengan demikian : = − 0.75−25𝐴𝑛 … … … … … … … … … … (∗)
𝑑𝑡 𝐴
240
1. Metode Runge-Kutta merupakan salah satu dari satu perangkat metode yang
penting untuk menyelesaikan persamaan diferensial dengan syarat awal
𝑦 ′ = 𝑓(𝑥, 𝑦)
𝑦(𝑥0 ) diberikan
Untuk memecahkan persoalan ini, pada sumbu waktu 𝑥 dipilih simpul-simpul
waktu diskret
𝑥0 , 𝑥1 , 𝑥2 , … , 𝑥𝑟 , 𝑥𝑟+1 , … , 𝑥𝑛 dan seterusnya
dengan 𝑥𝑟+1 = 𝑥𝑟 + ℎ𝑟 , dengan ℎ𝑟 merupakan “step length” dari saat ke-r ke saat
ke-(r+1). Pada umumnya “step length” tergantung pada r, tetapi untuk mudahnya
diperlakukan konstan, yaitu h.
Metode Runge-Kutta memberikan solusi dengan ketelitian hasil yang lebih
besar dan tidak memerlukan turunan dari fungsi. Bentuk umum metode Runge-
Kutta orde-𝑛 adalah:
𝒚𝒓+𝟏 = 𝒚𝒓 + 𝒂𝟏 𝒌𝟏 + 𝒂𝟐 𝒌𝟐 + … + 𝒂𝒏 𝒌𝒏
dengan 𝑎1 , 𝑎2 , … , 𝑎𝑛 adalah tetapan dan
𝑘1 = ℎ𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑘2 = ℎ𝑓(𝑥𝑟 + 𝑝1 ℎ, 𝑦𝑟 + 𝑞11 𝑘1 )
𝑘3 = ℎ𝑓(𝑥𝑟 + 𝑝1 ℎ, 𝑦𝑟 + 𝑞21 𝑘1 + 𝑞22 𝑘2 )
𝑘𝑛 = ℎ𝑓(𝑥𝑟 + 𝑝𝑛−1 ℎ, 𝑦𝑟 + 𝑞𝑛−1,1 𝑘1 + 𝑞𝑛−1,2 𝑘2 + . . . + 𝑞𝑛−1,𝑛−1 𝑘𝑛−1
Nilai (𝑎𝑖 , 𝑝𝑖 𝑞𝑖𝑗 ) dipilih sedemikian rupa sehingga meminimumkan galat per
langkah, dan persamaan untuk umum metode Runge-Kutta orde-n akan sama
dengan metode deret Taylor dari orde setinggi mungkin.
241
2. Metode Runge-Kutta Orde Dua
Metode Runge-Kutta tingkat satu berbentuk
242
4. Metode Runge-Kutta Orde Empat
Metode Runge-Kutta orde tiga berbentuk
243
Algoritma Metode Runge-Kutta :
1. Start untuk memulai program.
2. Memasukkan persamaan f(x,y) , nilai x awal, y awal, batas x, dan delta x.
3. Untuk cam = x awal sampai batas maka:
a. yi+1 = yi+h.f(xi,yi)
b. x = x+h
4. Mencari nilai y baru
5. Menampilkan nilai x baru, y baru, dan nilai k
6. End
244
2. Listing Program
𝒅𝒚
a. Persamaan = 𝟐. 𝟗𝟕𝒕𝟑 − 𝟏. 𝟓 𝒕
𝒅𝒕
Program metode_runge_kutta;
uses crt;
var
xa,ya,h,batas,u,k1,k2,k3,k4,x2,x3,x4,y2,y3,y4,yb:real;
function persamaan(x,y:real):real;
var pers:real;
begin
pers:=(2.97*x*x*x)-(1.5*x);
persamaan:=pers;
end;
begin
clrscr;
writeln('===============================================
==========');
writeln(' METODE RUNGE KUTTA ORDE 4 ');
writeln('===============================================
==========');
writeln('Menyelesaikan Persamaan berikut :(2.97*x*x*x)-(1.5*x) ');
writeln('---------------------------------------------------------');
write('Masukan Nilai X =');readln(xa);
write('Masukan Nilai Y =');readln(ya);
write('Masukan Delta X =');readln(h);
write('Masukan Batas X =');readln(batas);
writeln('--------------------------------------------------------');
writeln(' x y k1 k2 k3 k4 ');
writeln('--------------------------------------------------------');
xa:=xa;
repeat
xa:=xa;
245
k1:=persamaan(xa,ya);
x2:=xa+(1/2*h);
y2:=ya+((1/2)*k1*h);
k2:=persamaan(x2,y2);
x3:=xa+(1/2*h);
y3:=ya+((1/2)*k2*h);
k3:=persamaan(x3,y3);
x4:=xa+h;
y4:=ya+(k3*h);
k4:=persamaan(x4,y4);
yb:=ya+((h/6)*(k1+(2*k2)+(2*k3)+k4));
xa:=x4;
ya:=yb;
writeln(xa:5:2,ya:10:2,k1:10:2,k2:10:2,k3:10:2,k4:10:2);
until(xa=batas);
readln;
end.
246
Hasil Run Program
247
Flowchart
Start
var
xa,ya,h,batas,u,k1,k2,k3,k4,x2,x3,x4,y2,y3,y4,yb:real;
function persamaan(x,y:real):real;
var pers:real;
pers:=(2.97*x*x*x)-(1.5*x);
xa:=xa;
Repeat
xa:=xa;
k1:=persamaan(xa,ya);
x2:=xa+(1/2*h);
y2:=ya+((1/2)*k1*h);
k2:=persamaan(x2,y2);
x3:=xa+(1/2*h);
y3:=ya+((1/2)*k2*h);
k3:=persamaan(x3,y3);
x4:=xa+h;
No y4:=ya+(k3*h);
k4:=persamaan(x4,y4);
yb:=ya+((h/
6)*(k1+(2*k2)+(2*k3)+k4));
xa:=x4;
ya:=yb;
Until
Xa:=batas
Yes
End
248
𝒙
𝒅𝒚 𝟏𝟎 𝒙 𝐞𝐱𝐩( )
𝟏𝟎𝟎
b. Persamaan =
𝒅𝒙 𝟏+𝒙𝟐
Listing Program
Program metode_runge_kutta;
uses crt;
var
xa,ya,h,batas,u,k1,k2,k3,k4,x2,x3,x4,y2,y3,y4,yb:real;
function persamaan(x,y:real):real;
var pers:real;
const e=2.71;
begin
pers:=(10*x*e*(x/100))/(1+x*x);
persamaan:=pers;
end;
begin
clrscr;
writeln('===============================================
==========');
writeln(' METODE RUNGE KUTTA ORDE 4 ');
writeln('===============================================
==========');
writeln('Menyelesaikan Persamaan berikut :(10*x*e*(x/100))/(1+x*x) ');
writeln('---------------------------------------------------------');
write('Masukan Nilai X =');readln(xa);
write('Masukan Nilai Y =');readln(ya);
write('Masukan Delta X =');readln(h);
write('Masukan Batas X =');readln(batas);
writeln('--------------------------------------------------------');
writeln(' x y k1 k2 k3 k4 ');
writeln('--------------------------------------------------------');
xa:=xa;
249
repeat
xa:=xa;
k1:=persamaan(xa,ya);
x2:=xa+(1/2*h);
y2:=ya+((1/2)*k1*h);
k2:=persamaan(x2,y2);
x3:=xa+(1/2*h);
y3:=ya+((1/2)*k2*h);
k3:=persamaan(x3,y3);
x4:=xa+h;
y4:=ya+(k3*h);
k4:=persamaan(x4,y4);
yb:=ya+((h/6)*(k1+(2*k2)+(2*k3)+k4));
xa:=x4;
ya:=yb;
writeln(xa:5:2,ya:10:2,k1:10:2,k2:10:2,k3:10:2,k4:10:2);
until(xa=batas);
readln;
end.
250
Hasil Run Program
251
Flowchart Program
Start
var
xa,ya,h,batas,u,k1,k2,k3,k4,x2,x3,x4,y2,y3,y4,yb:real;
function persamaan(x,y:real):real;
var pers:real;
Const e=2.71;
pers:=(10*x*e*(x/100))/(1+x*x);
xa:=xa;
Repeat
xa:=xa;
k1:=persamaan(xa,ya);
x2:=xa+(1/2*h);
y2:=ya+((1/2)*k1*h);
k2:=persamaan(x2,y2);
x3:=xa+(1/2*h);
y3:=ya+((1/2)*k2*h);
k3:=persamaan(x3,y3);
x4:=xa+h;
No y4:=ya+(k3*h);
k4:=persamaan(x4,y4);
yb:=ya+((h/
6)*(k1+(2*k2)+(2*k3)+k4));
xa:=x4;
ya:=yb;
Until
Xa:=batas
Yes
End
252
3. METODE RUNGE KUTTA ORDE 2
Listing Program
clear all;
clc;
syms x;
syms y;
disp('=========================================');
disp(' Metode Runge-Kutta Orde 2');
disp('=========================================');
f=input('Persamaan = ');
xa=input('Nilai x = ');
ya=input('Nilai y = ');
batas=input('Batas x = ');
h=input('Delta x = ');
disp(' x y k1 k2');
disp('---------------------------------------------');
u=xa;
for cam=xa:h:batas
k1=subs(f,{x,y},{xa,ya});
x2=xa+(3/4)*h;
y2=ya+(3/4)*k1*h;
k2=subs(f,{x,y},{x2,y2});
yb=ya+(h*((1/3)*k1+(2/3)*k2));
disp([ xa' yb' k1' k2']);
xa=xa+h;
end;
253
Hasil Run Program
254
Flowchart
Start
Syms x
Syms y
u=xa;
For
cam=xa:h:batas;
k1=subs(f,{x,y},{xa,ya});
yes
x2=xa+(3/4)*h;
y2=ya+(3/4)*k1*h;
k2=subs(f,{x,y},{x2,y2});
yb=ya+(h*((1/3)*k1+(2/3)*k2));
xa=xa+h;
no
End
255
METODE RUNGE KUTTA ORDE 3
Listing Program
clear all;
clc;
syms x;
syms y;
disp('=========================================');
disp(' Metode Runge-Kutta Orde 3');
disp('=========================================');
f=input('Persamaan = ');
xa=input('Nilai x = ');
ya=input('Nilai y = ');
batas=input('Batas x = ');
h=input('Delta x = ');
disp(' x y k1 k2 k3');
disp('--------------------------------------');
u=xa;
for cam=xa:h:batas
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*h);
y2=ya+((1/2)*k1*h);
k2=subs(f,{x,y},{x2,y2});
x3=xa+h;
y3=ya+(k1*h+2*k2*h);
k3=subs(f,{x,y},{x3,y3});
yb=ya+((h/6)*(k1+(4*k2)+k3));
disp([xa' ya' k1' k2' k3']);
xa=xa+h;
end;
256
Hasil Run Program
257
Flowchart
Start
Syms x
Syms y
u=xa;
For
cam=xa:h:batas;
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*h);
yes y2=ya+((1/2)*k1*h);
k2=subs(f,{x,y},{x2,y2});
x3=xa+h;
y3=ya+(k1*h+2*k2*h);
k3=subs(f,{x,y},{x3,y3});
yb=ya+((h/6)*(k1+(4*k2)+k3));
xa=xa+h;
no
End
258
METODE RUNGE KUTTA ORDE 4
Listing Program
clear all;
clc;
syms x;
syms y;
disp('=========================================');
disp(' Metode Runge-Kutta Orde 4');
disp('=========================================');
f=input('Persamaan = ');
xa=input('Nilai x = ');
ya=input('Nilai y = ');
batas=input('Batas x = ');
h=input('Delta x = ');
disp(' x y k1 k2 k3 k4');
disp('----------------------------------------------------------------');
u=xa;
for cam=xa:h:batas
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*h);
y2=ya+((1/2)*k1*h);
k2=subs(f,{x,y},{x2,y2});
y3=ya+((1/2)*k2*h);
k3=subs(f,{x,y},{x2,y3});
x4=xa+h;
y4=ya+(k3*h);
k4=subs(f,{x,y},{x4,y4});
yb=ya+((h/6)*(k1+(2*k2)+(2*k3)+k4));
disp([xa' ya' k1' k2' k3' k4']);
xa=xa+h;
end;
259
Hasil Run Program
260
Flowchart
Start
Syms x
Syms y
u=xa;
For
cam=xa:h:batas;
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*h);
y2=ya+((1/2)*k1*h);
yes k2=subs(f,{x,y},{x2,y2});
y3=ya+((1/2)*k2*h);
k3=subs(f,{x,y},{x2,y3});
x4=xa+h;
y4=ya+(k3*h);
k4=subs(f,{x,y},{x4,y4});
yb=ya+((h/6)*(k1+(2*k2)+(2*k3)+k4));
Xa=xa+h;
no
End
261
4. Listing Program
clear all;
clc;
syms x;
disp('====================================');
disp(' VOLUME REAKTOR RUNGEKUTTA ORDE 4 ');
disp('====================================');
f=input('Persamaan = ');
xa=input('t awal = ');
xk=input('t akhir = ');
ya=input('nA(0) = ');
dx=input('Delta t = ');
disp(' t k1 k2 k3 k4 nA ');
disp('===============================================');
for cam=xa:dx:xk
k1=subs(f,x,xa);
x2=xa+(1/2*dx);
y2=ya+(1/2*k1*dx);
k2=subs(f,x,x2);
x3=xa+(1/2*dx);
y3=ya+((1/2)*k2*dx);
k3=subs(f,x,x3);
x4=xa+dx;
y4=ya+(k3*dx);
k4=subs(f,x,x4);
ys=ya+(1/6*k1+(2*k2)+(2*k3)+k4)*dx;
ya=ys;
disp([xa' k1' k2' k3' k4' ys']);
xa=xa+dx;
end
v=0.75-(25*ys);
262
disp(['Volume reaktor = ',num2str(v),' liter']);
263
Hasil Run Program
264
Flowchart Program
Start
Syms x
for cam=xa:dx:xk
k1=subs(f,x,xa);
x2=xa+(1/2*dx);
y2=ya+(1/2*k1*dx);
k2=subs(f,x,x2);
x3=xa+(1/2*dx);
y3=ya+((1/2)*k2*dx);
Yes
k3=subs(f,x,x3);
x4=xa+dx;
y4=ya+(k3*dx);
k4=subs(f,x,x4);
ys=ya+(1/6*k1+(2*k2)+(2*k3)+k4)*dx;
ya=ys;
xa=xa+dx;
No
v=0.75-(25*ys);
End
265
5. Listing Program
clear all;
clc;
syms x;
syms y;
disp('==========================================');
disp(' SIFAT REAKTOR DENGAN RUNGEKUTTA ORDE 4 ');
disp('==========================================');
f=input('Persamaan = ');
xa=input('t awal = ');
xk=input('t akhir = ');
ya=input('nA awal = ');
dx=input('Delta t = ');
disp(' ');
disp(' t k1 k2 k3 k4 nA ');
disp('=================================================');
for cam=xa:dx:xk
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*dx);
y2=ya+((1/2)*k1*dx);
k2=subs(f,{x,y},{x2,y2});
y3=ya+((1/2)*k2*dx);
k3=subs(f,{x,y},{x2,y3});
x4=xa+dx;
y4=ya+(k3*dx);
k4=subs(f,{x,y},{x4,y4});
ys=ya+((dx/6)*(k1+(2*k2)+(2*k3)+k4));
ya=ys;
disp([xa' k1' k2' k3' k4' ys']);
xa=xa+dx;
end
266
disp(['mol A = ',num2str(ys)]);
267
Hasil Run Program
268
Flowchart Program
Start
Syms x
Syms y
for cam=xa:dx:xk
k1=subs(f,{x,y},{xa,ya});
x2=xa+(1/2*dx);
y2=ya+((1/2)*k1*dx);
k2=subs(f,{x,y},{x2,y2});
y3=ya+((1/2)*k2*dx);
k3=subs(f,{x,y},{x2,y3});
Yes x4=xa+dx;
y4=ya+(k3*dx);
k4=subs(f,{x,y},{x4,y4});
ys=ya+((dx/6)*(k1+(2*k2)+(2*k3)+k4));
ya=ys;
xa=xa+dx;
No
Output Mol A
End
269
6. Kesimpulan dari metode Runge-kutta adalah, Metode Runge-kutta memiliki
beberapa orde. Yaitu Orde 2, 3, dan 4, Semakin tinggi order dari metode
tersebut maka ketelitian dari perhitungan akan semakin besar. Pada teknik
kimia dapat pula digunakan untuk menghitung volume dari reactor.
270