Laporan Praktikum 9 Analisis Numerik Syarif Abdullah (G551150381)∗†
Matematika Terapan Departemen Matematika FMIPA IPB E-mail: syarif
[email protected] 12 Mei 2016
ORDINARY DIFFERENTIAL EQUATIONS (Euler, Heun and Runge-Kutta Methods)
Deskripsi: Mengambil 1 soal latihan dari buku Numerical Mathematics and Computing, Sixth edition Ward Cheney, David Kincaid, Tuliskan dengan LaTex dan modifikasi menjadi soal untuk dikerjakan dalam Scilab. Soal Problem 10.1 Nomor 17: Gunakan Metode Euler, Heun dan Runge-Kutta Orde-4 untuk menyelesaikan persamaan differensial berikut pada interval [0, 1] dengan step size h = 0.1: x0 = −x + t + 1 2 x (0) = 1 Jawab: Langkah Kerja: 1. Pertama-tama kita buat program untuk Metode Metode Euler, Heun, Runge-Kutta Orde-4, Nilai Eksak dan Galat. 2. Kemudian kita panggil fungsi pembangkit Metode Euler, Heun, Runge-Kutta Orde-4, Nilai Eksak dan Galat dengan persamaan, interval dan size yang telah diketahui. 3. Kemudian kita bandingkan hasil Metode Euler, Heun, Runge-Kutta Orde-4 dan Nilai Eksak. 4. Kemudian kita bandingkan galat Metode Euler, Heun, Runge-Kutta Orde-4 dengan Nilai Eksak. ∗ http † File
://syarif abdullah.student.ipb.ac.id/ dibuat dengan LYX Program
1
5. Kemudian kita plotting grafik nilai dari Metode Euler, Heun, Runge-Kutta Orde-4 dengan kurva ODE Eksak. 6. Analisis hasil yang telah didapatkan dan menyimpulkan jawaban yang diminta. Adapun pseudocode lengkap ODE Metode Metode Euler, Heun, Runge-Kutta Orde-4, Nilai Eksak, Galat serta plottingnya adalah sebagai berikut: //Praktikum Analsis Numerik 2016 //ODE Metode Euler, Heun dan Runge-Kutta Orde-4 //fungsi ODE: -x + t + (1/2) //a : Batas bawah Interval //b : Batas Atas Interval //h : Jarak subinterval //xawal : Nilai Awal //x0 : Nilai x awal Eksak //t0 : Nilai t awal Eksak //xeu=euler(f,a,b,xawal,h) : fungsi pembangkit ODE Euler //xheun = heun(f,a,b,xawal,h) : fungsi pembangkit ODE Heun //rk4 = rungekutta4(f,a,b,xawal,h) : fungsi pembangkit ODE Runge-Kutta Orde-4 //xeksak=eksak(f,x0,t0) : fungsi pembangkit ODE Eksak clc ; clear ; close (); funcprot (0) ; disp(’ Praktikum Analisis Numerik Syarif Abdullah (G551150381)’) disp(’ ODE Metode Euler, Heun dan Runge-Kutta Orde-4’) disp(’1. Panggil fungsi pembangkit Metode Euler, Heun,’) disp(’ Runge-Kutta Orde-4, Nilai Eksak dan Galat yaitu:’) disp(’ xeu=euler(f,0,1,1,0.1);xheun=heun(f,0,1,1,0.1);’) disp(’ rk4=rungekutta4(f,0,1,1,0.1);xeksak=eksak(f,1,0);’) disp(’ [xeg,xhg,xrg]=galat(xeksak,xeu,xheun,rk4);’) disp(’2. Bandingkan Nilai Euler, Heun, Runge-Kutta dan Eksak yaitu:’) disp(’ Euler Heun RK4 Eksak=[xeu xheun rk4 xeksak]’) disp(’3. Bandingkan Galat Euler, Heun, Runge-Kutta dengan Eksak yaitu:’) disp(’ Galat Euler Heun RK4=[xeg xhg xrg]’) disp(’4. Plotting Grafik Euler, Heun, Runge-Kutta dan Eksak yaitu:’) disp(’ plotode()’) deff(’L = f(t,x)’,’L = -x + t + (1/2)’); function xeu=euler(f,a,b,xawal,h) n = (b-a)/h; 2
xeu = zeros(n+1,1); xeu(1) = xawal; for i = 1 : n xeu(i+1) = xeu(i) + h * f( a + (i-1)*h , xeu(i) ); end endfunction function xheun=heun(f,a,b,xawal,h) n = (b-a)/h; xheun = zeros(n+1,1); xheun(1) = xawal; for i = 1 : n K1 = h * f( a + (i-1)*h , xheun(i) ); K2 = h * f( a + (i-1)*h + h , xheun(i) + K1 ); xheun(i+1) = xheun(i) + 1/2 * (K1 + K2) ; end endfunction function rk4=rungekutta4(f,a,b,xawal,h) n = (b-a)/h; rk4 = zeros(n+1,1); rk4(1) = xawal; for i = 1 : n K1 = h * f( a + (i-1)*h , rk4(i) ); K2 = h * f( a + (i-1)*h + 1/2*h , rk4(i) + 1/2*K1 ); K3 = h * f( a + (i-1)*h + 1/2*h , rk4(i) + 1/2*K2 ); K4 = h * f( a + (i-1)*h + h , rk4(i) + K3 ); rk4(i+1) = rk4(i) + 1/6 * (K1 + 2*K2 + 2*K3 + K4) ; end endfunction function xeksak=eksak(f,x0,t0) t = [0:0.1:1]; s = ode(x0,t0,t,f ); xeksak=s’ endfunction function [xeg,xhg,xrg]=galat(xeksak,xeu,xheun,rk4) xeg=abs(xeksak-xeu); xhg=abs(xeksak-xheun); xrg=abs(xeksak-rk4);
3
endfunction function plotode() t = linspace(0,1,100); xtrue=ode(1,0,t,f ); y = [0:0.1:1]; plot(y,xeu’,y,xheun’,y,rk4’,t,xtrue,style=1,style=2,style=3,style=4); xtitle(’ODE Metode Euler vs Heun vs Runge-Kutta Orde-4 vs Eksak’,’t’,’x’); legend([”Metode Euler”; ”Metode Heun”; ”Metode RK-4”; ”Nilai Eksak”],2,%f ); endfunction
4
5
Apabila program di atas dijalankan, maka akan mendapatkan hasil sebagai berikut: Praktikum Analisis Numerik Syarif Abdullah (G551150381) ODE Metode Euler, Heun dan Runge-Kutta Orde-4 1. Panggil fungsi pembangkit Metode Euler, Heun, Runge-Kutta Orde-4, Nilai Eksak dan Galat yaitu: xeu=euler(f,0,1,1,0.1);xheun=heun(f,0,1,1,0.1); rk4=rungekutta4(f,0,1,1,0.1);xeksak=eksak(f,1,0); [xeg,xhg,xrg]=galat(xeksak,xeu,xheun,rk4); 2. Bandingkan Nilai Euler, Heun, Runge-Kutta dan Eksak yaitu: Euler Heun RK4 Eksak=[xeu xheun rk4 xeksak] 3. Bandingkan Galat Euler, Heun, Runge-Kutta dengan Eksak yaitu: Galat Euler Heun RK4=[xeg xhg xrg] 4. Plotting Grafik Euler, Heun, Runge-Kutta dan Eksak yaitu: plotode() –>xeu=euler(f,0,1,1,0.1);xheun=heun(f,0,1,1,0.1); –>rk4=rungekutta4(f,0,1,1,0.1);xeksak=eksak(f,1,0); –>[xeg,xhg,xrg]=galat(xeksak,xeu,xheun,rk4); –>Euler Heun RK4 Eksak=[xeu xheun rk4 xeksak] Euler Heun RK4 Eksak = 1. 1. 1.
1.
0.95
0.9575
0.9572563
0.9572562
0.915
0.9285375
0.9280964
0.9280962
0.8935
0.9118264
0.9112276
0.9112274
0.88415
0.9062029
0.9054804
0.9054800
0.885735
0.9106136
0.9097964
0.9097961
0.8971615
0.9241054
0.9232179
0.9232175
0.9174453
0.9458153
0.9448784
0.9448780
0.9457008
0.9749629
0.9739939
0.9739935
0.9811307
1.0108414
1.009855
1.0098545
1.0230177 1.0528115 1.0518197 1.0518192 –>Galat Euler Heun RK4=[xeg xhg xrg] Galat Euler Heun RK4 =
6
0.
0.
0.
0.0072562
0.0002438
3.082D − 08
0.0130962
0.0004413
0.0000002
0.0177274
0.0005991
0.0000003
0.0213300
0.0007229
0.0000004
0.0240611
0.0008176
0.0000003
0.0260560
0.0008879
0.0000004
0.0274327
0.0009373
0.0000004
0.0282927
0.0009694
0.0000004
0.0287238
0.0009869
0.0000004
0.0288016 0.0009923 –>plotode()
0.0000004
7
8
Dari Hasil di atas, didapatkan kesimpulan bahwa dalam menyelesaikan Ordinary Differential Equations (ODE) pada permasalahan di atas Metode Heun lebih baik dari pada Metode Euler, namun Metode Runge-Kutta Orde-4 lebih baik dari pada Metode Heun. Hal ini terlihat pada hasil galat yang didapatkan, di mana Metode Runge-Kutta Orde-4 memiliki galat paling kecil. Hal ini diperkuat dengan hasil plotting grafik dari penyelesaian ODE di atas, di mana metode Euler hampiran kurvanya masih jauh dari kurva solusi. Metode Heun memiliki hampiran kurva yang cukup dekat dengan kurva solusi seperti kurva yang dihasilkan oleh Metode Runge-Kutta Orde-4. Namun Metode Runge-Kutta Orde-4 memiliki hampiran kurva lebih baik dari pada Metode Heun, hal ini dapat dilihat dari hasil galat dari Metode Runge Kutta Orde-4. Demikian. Semoga bermanfaat. Amin.
Referensi : 1. Arief, Saifuddin. 2015. Pengenalan Scilab. 2. Atkinson, K. E. 2013. Scilab Textbook Companion for An Introduction To Numerical Analysis. 3. Cheney, Ward and Kincaid, David. 2008. Numerical Mathematics and Computing, Sixth edition. Thomson Brooks: United States of America. 4. Gilberto E. Urroz. 2001. Numerical Integration Using Scilab. Info Clearinghouse.com 5. Jacques, I and Judd, C. 2013. Scilab Textbook Companion for Numerical Analysis I. 6. Munir, Rinaldi. 2013. Metode Numerik. Informatika: Bandung. 7. Periyasamy CNME Tutorial 6
Profile: Nama : Syarif Abdullah Tmpt/Tgl Lahir : Gresik, 26 Januari 1986 Alamat : Leran Manyar Gresik Jawa Timur NRP : G551150381 Jurusan : Matematika Terapan Departement : Matematika Fakultas : Matematika dan Ilmu Pengetahuan Alam Universitas : Institut Pertanian Bogor Hobby : Baca buku dan utek-utek soal E-mail : syarif
[email protected] Web/Blog : http ://syarif abdullah.student.ipb.ac.id/
9