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