• Tidak ada hasil yang ditemukan

BAB I: PENDAHULUAN

B. Saran

Tugas akhir ini membahas tentang penyelesaian masalah nilai awal dengan menggunakan metode Euler, metode Heun dan metode blok rasional. Tentu masih banyak kekurangan dalam tugas akhir ini. Dalam tugas akhir ini hanya dibahas masalah nilai awal persamaan diferensial biasa linier koefisien konstan homogen tingkat satu dan dua. Saran dari penulis, tugas akhir ini bisa dikembangkan untuk menyelesaikan masalah nilai awal persamaan diferensial biasa non linier koefisien konstan non homogen tingkat tiga, empat, atau tingkat yang lebih tinggi dan dapat ditambahkan pula syarat bagaimana menentukan bahwa kesalahan penghitungan sudah dikatakan baik.

Daftar Pustaka

Boyce, W. E. and R. C. DiPrima. (2012). Elementary Differential Equation and Boundary Value Problem. (10th Edition). New York: John Wiley & Sons, Inc.

Burden, R. L. and J. D. Faires. (2011). Numerical Analysis. (9th edition). Boston: PWS Publishing Company.

Hackbusch, W. (2014). The Concept of Stability in Numerical Mathematics. Berlin: Springer-Verlag.

https://mtaufiknt.files.wordpress.com/2009/10/bab5-metnum-untuk-mna.pdf. Diakses tanggal 15 Januari 2017.

Lambert, J. D. (1974). Two unconventional classes of methods for stiff systems,

Stiff Differential Equations, edited by Willoughby R. A. New York: Plenum Press. 171-186.

Mungkasi, S. (2014). Metode rasional eksplisit untuk masalah nilai awal.

Prosiding Seminar Nasional Sains dan Pendidikan Sains IX, 21 Juni 2014, UKSW, Salatiga, Indonesia, 629-635.

Mungkasi, S. dan A. Christian. (2017). Runge-Kutta and rational block methods for solving initial value problems, Journal of Physics: Conference Series

795(1):012040.

Munir, L. (2007). Metode Numerik: Revisi kedua. Bandung: Informatika.

Nagle, R. K., E. B. Saff, and A. D. Snider. (2012). Fundamentals of Differential Equations and Boundary Value Problem. (6th edition). Boston: Pearson. Nagle, R. K., E. B. Saff, and A. D. Snider. (2012). Fundamentals of Differential

Equations. (8th edition). Boston: Pearson.

Teh, Y. Y., Z. Omar, and K. H. Mansor. (2014). An A-stable explicit rational block method for the numerical solution of initial value problem.

Proceedings of the International Conference on the Analysis and Mathematical Applications in Engineering and Science, 19-22 January 2014, CSRI, Curtin University, Sarawak, Malaysia, pp 233-241.

Teh, Y. Y., Z. Omar, and K. H. Mansor. (2014). rational block method for the numerical solution of first order initial value problem I: Concepts and Ideas. Global Journal of Pure and Applied Mathematics. 12(4):

3787-Teh, Y. Y., Z. Omar, and K. H. Mansor. (2014). rational block method for the numerical solution of first order initial value problem II: A-stability and L-stability. Global Journal of Pure and Applied Mathematics. 12(4): 3809-3829.

LAMPIRAN

Lampiran 1: Masalah Nilai Awal A. Contoh 4.

Diberikan masalah nilai awal:

= , = , ∈ [ , . ].

Penyelesaian analitisnya, yaitu:

= ��3+ln

Berikut ini merupakan kesalahan maksimum untuk contoh 4. Tabel 4. Kesalahan maksimum untuk contoh 4.

� Euler Heun Rational Block

32 2.33886 0.04985 0.03245

64 1.23673 0.01285 0.00810

128 0.63662 0.00326 0.00203

256 0.32307 0.00008 0.00051

B. Contoh 5

Diberikan masalah nilai awal:

′′ + = , = , = , ∈ [ , ].

Penyelesaian analitisnya, yaitu:

Berikut ini merupakan kesalahan maksimum untuk contoh 5. Tabel 5. Kesalahan maksimum untuk contoh 5.

� Euler Heun Rational Block

32 0.04130 0.00043 0.00022

64 0.02094 0.00011 0.00006

128 0.01055 0.00003 0.00001

256 0.00530 0.000007 0.000003

C. Contoh 6.

Diberikan masalah nilai awal:

= + , = , ∈ [ , ].

Penyelesaian analitisnya, yaitu:

= tan + .

Berikut ini merupakan kesalahan maksimum untuk contoh 6. Tabel 6. Kesalahan maksimum untuk contoh 6.

� Euler Heun Rational Block

32 inf inf 1.49267

64 Inf Inf 64.56884

128 Inf Inf 18.11816

Lampiran 2: Program MATLAB

Berikut ini merupakan program komputer untuk menyelesaikan masalah nilai awal. Program ini dibuat dengan menggunakan software MATLAB.

A. Program untuk contoh 1

clear clc format long x0=0; %x awal y0=1; %y awal xb=1; %x akhir

N=32; %banyaknya langkah pengintegralan h=(xb-x0)/N; %ukuran langkah

x=[x0:h:xb]; %x0,x1,x2,...,xb

y=zeros(N+1,1); H=zeros(N+1,1); B=zeros(N+1,1); %y=Euler, H=Heun, B=Blok Rasional

y(1)=y0; H(1)=y0; B(1)=y0; %nilai awal

%% penyelesaian numeris

%penyelesaian dengan metode Euler

for i=1:N

f(i)=-10*y(i); %turunan pertama y terhadap x y(i+1)=y(i)+h*f(i); %metode Euler

end

%penyelesaian dengan metode Heun

for i=1:N k1=-10*H(i); %f(i) x_baru=x(i)+h; %x(i+1) y_baru=H(i)+h*k1;%y(i+1); k2=-10*y_baru; %f(i+1)

H(i+1)=H(i)+h/2*(k1+k2); %metode Heun

end

%penyelesaian dengan metode blok rasional

for i=1:2:N

f(i)=-10*B(i); %turunan pertama B terhadap x

df=-10*f(i); %df/dx --> turunan pertama f(x,y)terhadap x B(i+1)=B(i)+(2*h*f(i)^2)/(2*f(i)-h*df); %metode 3 Lambert

f(i+1)=-10*B(i+1);

B(i+2)=B(i+1)+(h*f(i+1)*(B(i+1)-B(i)))/(2*(B(i+1)-B(i))-h*f(i+1)); %metode 2 Lambert

%% Penyelesaian eksak y_eksak=exp(-10.*x); %% Plot grafik

figure

plot(x,y_eksak, 'k*'); %plot y eksak hold on

grid on

plot(x,y,'bo'); %plot euler plot(x,H,'r-'); %plot heun

plot(x,B,'g>'); %plot metode 2 dan 3

%keterangan grafik

title('Penyelesaian eksak dan numeris untuk N=32') xlabel('x')

ylabel('y')

legend('eksak','Euler','Heun','Blok Rasional') %display penyelesaian eksak dan numeris

A=[y_eksak' y H B];

disp(' eksak Euler Heun Blok Rasional') disp('======================================================') disp(A)

%% Penghitungan kesalahan numeris

Error_E=abs(y_eksak'-y); %Kesalahan Euler Error_H=abs(y_eksak'-H); %Kesalahan Heun

Error_B=abs(y_eksak'-B); %Kesalahan blok rasional

error=[Error_E Error_H Error_B]; disp('error')

disp('Euler Heun Blok Rasional') disp('======================================================') disp(error)

%Kesalahan maksimum

max=[max(Error_E) max(Error_H) max(Error_B)]; disp('kesalahan maksimum')

disp('Euler Heun Blok Rasional') disp('======================================================') disp(max)

%% plot kesalahan numeris figure

plot(x,Error_E,'bo') %plot kesalahan maksimum Euler hold on

grid on

plot(x,Error_H,'r-') %plot kesalahan maksimum Heun

plot(x,Error_B,'g>') %plot kesalahan maksimum blok rasional

%keterangan grafik

title('Kesalahan penyelesaian numeris untuk N=32') xlabel('x')

ylabel('y') grid on

legend('Euler','Heun','Blok Rasional')

B. Program untuk contoh 2

clear clc format long x0=0; %x awal y0=1.01; %y awal z0=-2;%z awal xb=1; %x akhir

N=128; %banyaknya langkah pengintegralan h=(xb-x0)/N; %ukuran-langkah

%misalkan y=y %f: y'=z

%g: y"=z'=-101z-100y

x=[x0:h:xb]; %x0,x1,x2,...,xb

y=zeros(N+1,1); Hy=zeros(N+1,1); By=zeros(N+1,1); %y=Euler, Hy=Heun, By=Blok Rasional

z=zeros(N+1,1); Hz=zeros(N+1,1); Bz=zeros(N+1,1); %y=Euler, Hz=Heun, Bz=Blok Rasional

y(1)=y0; Hy(1)=y0; By(1)=y0; %nilai awal y z(1)=z0; Hz(1)=z0; Bz(1)=z0; %nilai awal z

%% penyelesaian numeris

%penyelesaian dengan metode Euler

for i=1:N

%bagian f

f(i)=z(i);

y(i+1)=y(i)+h*f(i); %metode Euler

%bagian g

g(i)=-101*z(i)-100*y(i);

z(i+1)=z(i)+h*g(i); %metode Euler

end

%penyelesaian dengan metode Heun

for i=1:N k1=Hz(i); %f(x,y,z) k3=-101*Hz(i)-100*Hy(i); %g(x,y,z) x_baru=x(i)+h; %x(n+1) y_baru=Hy(i)+h*k1; %y(n+1)* z_baru=Hz(i)+h*k3; %z(n+1) %bagian f k2=z_baru; %f[x(n+1),y(n+1),z(n+1)] Hy(i+1)=Hy(i)+h/2*(k1+k2);

k4=-101*z_baru-100*y_baru; %g[x(n+1),y(n+1),z(n+1)] Hz(i+1)=Hz(i)+h/2*(k3+k4);

end

%penyelesaian dengan metode Blok Rasional

for i=1:2:N

f(i)=Bz(i); %f

g(i)=-101*Bz(i)-100*By(i); %g

diff_f=g(i); %f' -> turunan pertama f(x,y,z) terhadap x diff_g=-100*f(i)-101*g(i); %%g' -> turunan pertama g(x,y,z) terhadap x By(i+1)=By(i)+(2*h*f(i)^2)/(2*f(i)-h*diff_f); %metode 3 Lambert Bz(i+1)=Bz(i)+(2*h*g(i)^2)/(2*g(i)-h*diff_g); %metode 3 Lambert %bagian f f(i+1)=Bz(i+1); By(i+2)=By(i+1)+(h*f(i+1)*(By(i+1)-By(i)))/(2*(By(i+1)-By(i))-h*f(i+1)); %metode 2 Lambert

%bagian g

g(i+1)=-101*Bz(i+1)-100*By(i+1);

Bz(i+2)=Bz(i+1)+(h*g(i+1)*(Bz(i+1)-Bz(i)))/(2*(Bz(i+1)-Bz(i))-h*g(i+1)); %metode 2 Lambert

end %% Penyelesaian eksak y_eksak=0.01*exp(-100*x)+exp(-x); %% Plot grafik figure %bagian y

plot(x,y_eksak,'k*'); %plot y eksak axis([0 1 0.3 1])

hold on

grid on

plot(x,y,'bo'); %plot Euler plot(x,Hy,'r-'); %plot Heun

plot(x,By,'g>'); %plot blok rasional

%keterangan grafik

title('Penyelesaian eksak dan numeris untuk N=128') xlabel('x')

ylabel('y')

legend('y eksak','Euler','Heun','Blok Rasional') %% display penyelesaian eksak dan numeris

B1=[y_eksak' y Hy By];

disp('y eksak y Euler Hy Heun By Blok Rasional') disp('======================================================') disp(B1)

y_error=abs(y_eksak'-y); Hy_error=abs(y_eksak'-Hy); By_error=abs(y_eksak'-By);

disp('Kesalahan penyelesaian numeris untuk N=128') error_1=[y_error Hy_error By_error];

disp('y Euler Hy Heun By Blok Rasional') disp('====================================================') disp(error_1)

%% plot kesalahan numeris figure

plot(x,y_error,'bo') %plot kesalahan Euler hold on

grid on

plot(x,Hy_error,'r-') %plot kesalahan Heun

plot(x,By_error,'g>') %plot kesalahan blok rasional

%Keterangan grafik

title('Kesalahan penyelesaian numeris untuk N=128') xlabel('x')

ylabel('y')

legend('Euler','Heun','Blok Rasional') %% Kesalahan maksimum

Error_max_EULER=max(y_error); Error_max_HEUN=max(Hy_error); Error_max_BLOK=max(By_error);

Error_max=[Error_max_EULER Error_max_HEUN Error_max_BLOK]; disp('kesalahan maksimum')

disp('Euler Heun Blok Rasional') disp('===================================================') disp(Error_max)

C. Program untuk contoh 3

clear clc format long x0=0; %x awal y0=1; %y awal xb=1; %x akhir

N=64; %banyaknya langkah pengintegralan h=(xb-x0)/N; %ukuran langkah

x=[x0:h:xb]; %x0,x1,x2,...,xb

y=zeros(N+1,1); H=zeros(N+1,1); B=zeros(N+1,1); %y=euler, H=heun, B=Blok Rasional

y(1)=y0; H(1)=y0; B(1)=y0; %nilai awal

%% Penyelesaian numeris

for i=1:N

f(i)=1+y(i)^2; %turunan pertama y y(i+1)=y(i)+h*f(i); %metode Euler

end

%penyelesaian dengan metode Heun

for i=1:N k1=1+H(i)^2; %k1=f(x,y) x_baru=x(i)+h; %x(i+1) y_baru=H(i)+h*k1; %y(i+1); k2=1+y_baru^2; %k2=f(x_baru,y_baru)

H(i+1)=H(i)+h/2*(k1+k2); %metode heun

end

%penyelesaian dengan metode blok rasional

for i=1:2:N

f(i)=1+B(i)^2; %turunan pertama B

diff_f=2*B(i)*f(i); %df/dx -> turunan pertama f(x,y) terhadap x B(i+1)=B(i)+(2*h*f(i)^2)/(2*f(i)-h*diff_f); %metode Lambert 3 f(i+1)=1+B(i+1)^2; B(i+2)=B(i+1)+(h*f(i+1)*(B(i+1)-B(i)))/(2*(B(i+1)-B(i))-h*f(i+1)); %metode Lambert 2

end

%% Penyelesaian eksak y_eksak=tan(x+pi/4); %% Plot grafik

figure

plot(x,y_eksak,'k*'); %plot y eksak axis([x0 xb -100 250])

hold on

grid on

plot(x,y,'bo'); %plot Euler plot(x,H,'r-'); %plot Heun

plot(x,B,'g>'); %plot blok rasional

%keterangan grafik

title('Penyelesaian eksak dan numeris untuk N=64') xlabel('x')

ylabel('y')

legend('Eksak','Euler','Heun','Blok Rasional') %display penyelesaian eksak dan numeris

C=[y_eksak' y H B];

disp('eksak Euler Heun Blok Rasional') disp('======================================================') disp(C)

%% Penghitungan kesalahan numeris

Error_E=abs(y_eksak'-y); %kesalahan Euler Error_H=abs(y_eksak'-H); %kesalahan Heun

Error_B=abs(y_eksak'-B); %kesalahan blok rasional

error=[Error_E Error_H Error_B]; disp('error')

disp('Euler Heun Blok Rasional') disp('==================================================') disp(error)

%kesalahan maksimum

max=[max(Error_E) max(Error_H) max(Error_B)]; disp('kesalahan maksimum')

disp('Euler Heun Blok Rasional') disp('===================================================') disp(max)

%% plot kesalahan numeris figure

plot(x,Error_E,'bo') %plot kesalahan maksimum Euler axis([0 1 -100 245])

hold on

grid on

plot(x,Error_H,'r-') %plot kesalahan maksimum Heun

plot(x,Error_B,'g>') %plot kesalahan maksimum blok rasional

%keterangan grafik

title('Kesalahan penyelesaian numeris untuk N=64') xlabel('x')

ylabel('y') grid on

Dokumen terkait