7.1. Pendahuluan
Persamaan diferensial adalah persamaan yang mempunyai turunan fungsi. Penyelesaian
persamaan diferensial adalah suatu fungsi yang memenuhi persamaan diferensial tersebut dan juga
memenuhi kondisi awal yang diberikan pada persamaan tersebut. Di dalam penyelesaian persamaan
diferensial secara analitis, biasanya dicari penyelesaian umum yang mengandung konstanta
sembarang. Konstanta tersebut selanjutnya dievaluasi untuk disesuaikan dengan kondisi awal.
Metode penyelesaian persamaan diferensial secara analitis biasanya terbatas pada persamaan
dengan bentuk tertentu dan linier dengan koefisien konstan. Bentuk persamaan diferensial terdiri
atas dua kategori, yaitu:
Persamaan Diferensial Biasa (Ordinary Differential Equation-ODE). Terdiri atas satu variabel
bebas dengan turunannya terhadap variabel tersebut. Contoh:
dy
2x + 3y = 10 persamaan diferensial biasa orde satu.
dx
d2y
+ 4 y = 0 persamaan diferensial biasa orde dua.
d2x
Persamaan Diferensial Parsiil (Partial Differential Equation-PDE). Terdiri atas lebih dari satu
variabel bebas. Di dalam bidang ilmu fisika dan rekayasa, variabel bebas biasanya berupa
variabel ruang (x, y dan z) dan waktu. Contoh:
d3y d2y
= + xt sin( yt) persamaan diferensial parsiil orde tiga.
dx 3 dx.dt
Penyelesaian persamaan dilakukan dengan mencari nilai y sebagai fungsi dari x dan
kemiringan kurva pada setiap titik yang ditinjau. Langkah-langkah pada perhitungan persamaan
diferensial secara numerik adalah:
1. Menghitung nilai awal yang diketahui, misalnya di titik (x0,y0).
2. Kemudian dihitung kemiringan kurva (garis singgung) di titik tersebut [(x0,y0)].
3. Menghitung nilai berikutnya [titik (x1,y1)] yang berjarak x berdasarkan nilai y0 di titik x0
dan kemiringan fungsi di titik tersebut.
4. Selanjutnya perhitungan diulangi untuk titik (x2,y2) yang berjarak x dari titik (x1,y1)dan
seterusnya sampai batas yang ditentukan.
Contoh 1.
dy
Selesaikan persamaan: = f ( x , y) = -2 x 3 + 12 x 2 - 20 x + 8.5 dengan y(0)=1, dari x=0 sampai x=2
dx
BAB VII. Persamaan Diferensial Biasa -103
dengan panjang langkah x=0.5 dan x=0.25.
Penyelesaian eksak dari persamaan contoh 1 adalah:
y = -0.5x4 + 4x3 - 10x2 + 8.5x +1
Penyelesaian numerik.
Penyelesaian numerik dilakukan secara bertahap pada beberapa titik yang berurutan. Dengan
menggunakan persamaan (7.6) dihitung nilai yi+1 yang berjarak x=0.5 dari titik awal x=0. Untuk
i=0 maka persamaan (7.6) menjadi:
y1 = y 0 + f ( x 0 , y 0 )x
Dari kondisi awal, pada x=0 nilai fungsi y(0) = 1,
sehingga : y (0.5) =y(0) + f(0;1)0.5
Kemiringan garis di titik (x0, y0) adalah:
dy
= f (0,1) = 2(0) 3 + 12(0) 2 20(0) + 8.5
dx
sehingga:
y (0.5) =1+8.5 (0.5) = 5.25
Perintah MATLAB.
function y = DifEuler(f,x,y0)
dx=abs(x(2)-x(1));
y(1)=y0;
for i =2:length(x)
y(i) = y(i-1) + dx*f(x(i-1));
end
[x' y']
Sebelum fungsi MATLAB di atas bisa digunakan, maka fungsi diferensial dan nilai x harus
BAB VII. Persamaan Diferensial Biasa -104
didefinisikan terlebih dahulu. Untuk menyelesaikan contoh (1) di atas di dalam jendela MATLAB
diketikkan perintah:
>> f=inline('-2*x.^3+12*x.^2-20*x+8.5','x')
f =
Inline function:
f(x) = -2*x.^3+12*x.^2-20*x+8.5
>> x=0:0.25:2; % membuat vektor x dengan x=0.25
>> y= DifEuler(f,x,1)
ans =
0 1.0000
0.2500 3.1250
0.5000 4.1797
0.7500 4.4922
1.0000 4.3438
1.2500 3.9688
1.5000 3.5547
1.7500 3.2422
2.0000 3.1250
Sedangkan untuk x=0.5, tinggal mengubah perintah untuk membuat vektor x seperti berikut ini:
>> f=inline('-2*x.^3+12*x.^2-20*x+8.5','x')
f =
Inline function:
f(x) = -2*x.^3+12*x.^2-20*x+8.5
>> x=0:0.5:2;
>> y= DifEuler(f,x,1)
ans =
0 1.0000
0.5000 5.2500
1.0000 5.8750
1.5000 5.1250
2.0000 4.5000
Untuk persentase error yang terjadi pada setiap titik dari proses di atas (misal untuk
x=0.25), bisa dicek dengan menggunakan perintah simbolik syms NamaVariabel untuk membuat
persamaan simbolik, int(NamaFungsi) pada MATLAB untuk mendapatkan solusi persamaan
secara analitis. Seperti terlihat pada kode MATLAB berikut ini:
function y=EksakDif(f,x,c)
format long g
g=int(f); % proses integrasi fungsi
h=inline(strcat(char(g),'+',num2str(c)))
for i=1:length(x)
y(i)=h(x(i));
end
y=[x' y'];
Kemudian dalam jendela MATLAB ketikkan perintah ini:
>>syms x % variabel simbolik
>>f=-2*x.^3+12*x.^2-20*x+8.5; % fungsi simbolik
>> x=0:0.25:2;
y=EksakDif(f,x,1)
y =
0 1
0.25 2.560546875
0.5 3.21875
0.75 3.279296875
1 3
1.25 2.591796875
1.5 2.21875
1.75 1.998046875
2 2
BAB VII. Persamaan Diferensial Biasa -105
hasil proses file EksakDif.m di atas menghasilkan nilai eksak dari fungsi diferensial yang
dievaluasi.
Penyelesaian numerik dari persamaan diferensial biasa menyebabkan terjadinya dua tipe
kesalahan dalam proses perhitungannya, yaitu:
kesalahan pemotongan, yang disebabkan oleh teknik penyelesaian yang digunakan untuk
memperkirakan nilai y,
kesalahan akibat pembulatan, yang disebabkan oleh keterbatasan jumlah angka (digit) yang
digunakan dalam hitungan.
Kedua kemiringan yang diberikan oleh persamaan (7.7) dan (7.9) kemudian diratakan untuk
memperoleh kemiringan rerata pada interval, yaitu:
' y ' + yi' +1 f ( x i , yi ) + f ( x i +1 , yi0+1 )
y = i =
2 2
Kemiringan rerata tersebut kemudian digunakan untuk ekstrapolasi linier dari yi ke yi+i dengan
menggunakan metode Euler :
f ( x i , y i ) + f ( x i +1 , y i0+1 )
y i +1 = y i + x (7.10)
2
Persamaan (7.8) disebut dengan persamaan prediktor, sedang persamaan (7.10) disebut dengan
persamaan korektor.
Contoh 2.
Selesaikan persamaan berikut, dy/dt= f(t,y) = -y2 dengan y(0) = 1 , dengan menggunakan metode
BAB VII. Persamaan Diferensial Biasa -106
Heun dan t=0.l.
Penyelesaian:
1
penyelesaian eksak dari persamaan di atas adalah y =
1+ t
Penyelesaian numerik dengan menggunakan metode Heun. Persamaan di atas dapat ditulis dalam
bentuk:
Persamaan untuk mencari nilai: y i+1 = y i + f (t i , y i )t = y i - y i2 t
Persamaan untuk menentukan kemiringan : f ( t i , y i ) = -y i2
untuk i = 0, Persamaan menjadi: y1 = y 0 - y 02 t
Langkah Penyelesaian:
Langkah 1.
y(0) = 1
kemiringan di titik (t0,y0) adalah : f(t0,y0)= -y02=-(1)2=-1
perkiraan awal (prediktor) dari nilai y di i=1 adalah y10=1-1(0.1)=0.9
kemiringan fungsi di titik i=1 adalah f(t1, y10)=-(0.9)2=0.81
f ( t 0 , y 0 ) + f ( t 1 , y 01 ) - 1 + (-0.81) - 0.905
y1 = y 0 + t = 1 + .0.1 = 1 + ( ).01 =0.9095
2 2 2
Langkah 2.
selanjutnya : y1=0.9095
kemiringan di titik (t1,y1) adalah : f(t1,y1)= -y12=-(0.9095)2=-0.82719
prediktor dari nilai y di i=2 adalah y20=0.9095-0.82719(0.1)=0.82678
kemiringan fungsi di titik i=2 adalah f(t2, y20)=-( 0.82678)2=-0.68357
f ( t 1 , y1 ) + f ( t 2 , y 02 ) - 0.82719 + (-0.68357)
y 2 = y1 + t = 0.9095 + .0.1 = 0.83396
2 2
dan seterusnya sampai selesai.
Tabel 7.2. Hasil hitungan dengan Metode Heun
ti Yeksak Y perkiraan t (%)
0.00 1.000000 1.00000 -
0.10 0.909090 0.90950 0.05
0.20 0.833333 0.83396 0.08
0.30 0.769231 0.76997 0.10
0.40 0.714286 0.71507 0.11
0.50 0.666666 0.66746 0.12
Perintah MATLAB.
Kode MATLAB untuk Metode Heun adalah:
function y = DifHeun(f,x,y0)
dx=abs(x(2)-x(1));
y(1)=y0;
for i =1:length(x)-1
g(i)=f(x(i),y(i));
y(i+1)=y(i)+dx*f(x(i),y(i));
g(i+1)=f(x(i+1),y(i+1));
y(i+1)=y(i)+dx*(g(i)+g(i+1))/2;
end
disp (' x y')
y=[x' y'];
Untuk menyelesaikan soal contoh (2) dengan kode MATLAB di atas, di dalam jendela MATLAB
diketikkan perintah:
BAB VII. Persamaan Diferensial Biasa -107
> f=inline('-y.^2','x','y')
f =
Inline function:
f(x,y) = -y.^2
>> x=0:0.1:0.5;
x y
y =
0 1
0.1 0.9095
0.2 0.833962148468902
0.3 0.769971154038388
0.4 0.715074674301156
0.5 0.667467169349524
Contoh 3. Selesaikan persamaan berikut dengn metode poligon untuk x=0.1, dengan rentang x
dari x=0 ke x=0.5.
dy
= f ( x , y) = e x dan y(0)=1
dx
Penyelesaian:
BAB VII. Persamaan Diferensial Biasa -108
Persamaan di atas menjadi:
y i+1 = y i + f ( x i , y i )x = y i + e xi x ,
untuk nilai tengah interval,
x 0.1
y 1 = y0 + e0 = 1+1 = 1.05
2
2 2
kemiringan fungsi pada titik tengah interval:
y '1 = f ( x 1 , y 1 ) = e 0.05 = 1.051271
2 2 2
maka perkiraan nilai y di titik i=1 adalah:
y1 = y 0 + f ( x 1 , y 1 )x = 1 + (1.051271)(0.1) = 1.105127
2 2
Perintah MATLAB.
Kode MATLAB untuk Metode Poligon adalah:
function y = DifPoligon(f,x,y0)
dx=abs(x(2)-x(1));
y(1)=y0;
for i =1:length(x)-1
ytengah = y(i) + f(x(i),y(i))*dx/2;
gtengah=f(x(i)+dx/2,ytengah);
y(i+1)=y(i)+gtengah*dx;
end
disp (' x y')
y=[x' y'];
Untuk menyelesaikan soal contoh (3) dengan kode MATLAB di atas, di dalam jendela MATLAB
diketikkan perintah:
>> f=inline('exp(x)','x','y')
f =
Inline function:
f(x,y) = exp(x)
>> x=0:0.1:0.5;
>> y = DifPoligon(f,x,1)
x y
y =
0 1
0.1 1.1051271096376
0.2 1.22131053391043
0.3 1.34971307557921
0.4 1.49161983043853
0.5 1.64845104898755
Persamaan tersebut menunjukkan bahwa nilai k mempunyai hubungan berurutan. Nilai k1 muncul
dalam persamaan untuk menghitung k2, yang juga muncul dalam pers. untuk menghitung k3, dst.
Hubungan yang berurutan ini membuat metode Runge-Kutta adalah efisien dalam hitungan. Ada
beberapa tipe metode Runge-Kutta yang tergantung pada nilai n yang digunakan.
Untuk n = 1 Metode Runge-Kutta Order Satu
Untuk n = 2 Metode Runge-Kutta Order Dua
Untuk n = 3 Metode Runge-Kutta Order Tiga
Untuk n = 4 Metode Runge-Kutta Order Empat
Perintah MATLAB.
Kode MATLAB untuk Metode Ralston adalah:
function y = DifRals(f,x,y0)
dx=abs(x(2)-x(1));
y(1)=y0;
for i =1:length(x)-1
k1=f(x(i),y(i));
k2=f(x(i)+3/4*dx,y(i)+k1*3/4*dx);
y(i+1)=y(i)+(1/3*k1+2/3*k2)*dx;
BAB VII. Persamaan Diferensial Biasa -111
end
disp (' x y')
y=[x' y'];
Untuk menyelesaikan soal contoh (4) dengan kode MATLAB di atas, di dalam jendela MATLAB
diketikkan perintah:
> f=inline('-2*x.^3 + 12*x.^2 -20*x + 8.5','x','y')
f =
Inline function:
f(x,y) = -2*x.^3 + 12*x.^2 -20*x + 8.5
>> x=0:0.5:4;
>> y=DifRals(f,x,1)
x y
y =
0 1
0.5 3.27734375
1 3.1015625
1.5 2.34765625
2 2.140625
2.5 2.85546875
3 4.1171875
3.5 4.80078125
4 3.03125
Contoh 5.
Selesaikan persamaan dy/dx = -2x3 + 12x2 - 20x + 8.5 dengan metode Runge-Kutta order 3.
Rentang nilai dari x=0 sampai x=4 dengan menggunakan langkah x=0.5. Kondisi awal pada x=0
adalah y=l.
Penyelesaian.
Langkah pertama dalam metode Runge-Kutta order 3 adalah menghitung k1, k2 dan k3. (variabel y
tidak berpengaruh karena sisi kanan persamaan tidak mengandung unsur y)
k1 = -2(0)3 + 12(0)2 - 20(0) + 8.5 = 8.5
k2 = -2(0.25)3 + 12(0.25)2 - 20(0.25) + 8.5 = 4.21875
k3 = -2(0.5)3 + 12(0.5)2 - 20(0.5) + 8.5 =1.25
Dengan menggunakan Persamaan (16) dihitung nilai y(x) :
y (0.5) = 1 + [ 1/6 (8.5 + 4 (4.21875) +1.25 ] 0.5 = 3.21875
selanjutnya dihitung lagi k1, k2 dan k3 untuk y(1):
k1 = -2(0.5)3 + 12(0.5)2 - 20(0.5) + 8.5 = -1.25
k2 = -2(0.75)3 + 12(0.75)2 - 20(0.75) + 8.5 = -0.59375
k3 = -2(1)3 + 12(1)2 - 20(1) + 8.5 = -1.5
y (1) = 3.21875 + [ 1/6 (1.25+ 4 (-0.59375) +(-1.5)] 0.5 = 3.21875 - 0.21875000= 3.000000
BAB VII. Persamaan Diferensial Biasa -112
dan seterusnya sampai x=4.
Perintah MATLAB.
Kode MATLAB untuk Metode Runge Kutta Orde 3 adalah:
function y = Rungkut3(f,x,y0)
dx=abs(x(2)-x(1));
y(1)=y0;
for i =1:length(x)-1
k1=f(x(i),y(i));
k2=f(x(i)+0.5*dx,y(i)+k1*0.5*dx);
k3=f(x(i)+dx,y(i)-k1*dx+2*dx*k2);
y(i+1)=y(i)+dx*1/6*(k1+4*k2+k3);
end
disp (' x y')
y=[x' y'];
Untuk menyelesaikan soal contoh (5) dengan kode MATLAB di atas, di dalam jendela MATLAB
diketikkan perintah:
>> f=inline(' -2*x.^3 + 12*x.^2 - 20*x + 8.5 ','x','y')
f =
Inline function:
f(x,y) = -2*x.^3 + 12*x.^2 - 20*x + 8.5
>> x=0:0.5:4;
> y = Rungkut3(f,x,1)
x y
y =
0 1
0.5 3.21875
1 3
1.5 2.21875
2 2
2.5 2.71875
3 4
3.5 4.71875
4 3
Contoh 6.
Selesaikan persamaan berikut dengan metode Runge-Kutta order 4.
dy/dx = -2x3 + 12x2 - 20x + 8.5
dari x=0 sampai x=4 dengan menggunakan langkah x=0.5. Kondisi awal pada x=0 adalah y=l.
Penyelesaian.
k1 = -2(0)3 + 12(0)2 - 20(0) + 8.5 = 8.5
BAB VII. Persamaan Diferensial Biasa -113
3 2
k2 = -2(0.25) + 12(0.25) - 20(0.25) + 8.5 = 4.21875
k3 = -2(0.25)3 + 12(0.25)2 - 20(0.25) + 8.5 =4.21875
k4 = -2(0. 5)3 + 12(0.5)2 - 20(0.5) + 8.5 =1.25
y (0.5) = 1 + [ 1/6 (8.5 + 2 (4.21875) + 2 (4.21875) +1.25 ] 0.5 = 3.21875
dan seterusnya sampai x=4.
Perintah MATLAB.
Kode MATLAB untuk Metode Runge Kutta Orde 3 adalah:
function y = Rungkut4(f,x,y0)
format long g
dx=abs(x(2)-x(1));
y(1)=y0;
for i =1:length(x)-1
k1=f(x(i),y(i));
k2=f(x(i)+0.5*dx,y(i)+k1*0.5*dx);
k3=f(x(i)+0.5*dx,y(i)+k2*0.5*dx);
k4=f(x(i)+dx,y(i)+k3*dx);
y(i+1)=y(i)+dx*1/6*(k1+2*k2+2*k3+k4);
end
disp (' x y')
y=[x' y'];
Untuk menyelesaikan soal contoh (6) dengan kode MATLAB di atas, di dalam jendela MATLAB
diketikkan perintah:
>> f=inline(' -2*x.^3 + 12*x.^2 - 20*x + 8.5 ','x','y')
f =
Inline function:
f(x,y) = -2*x.^3 + 12*x.^2 - 20*x + 8.5
>> x=0:0.5:4;
>> y = Rungkut4(f,x,1)
x y
y =
0 1
0.5 3.21875
1 3
1.5 2.21875
2 2
2.5 2.71875
3 4
3.5 4.71875
4 3