4 persamaan diferensial
DESCRIPTION
Program MATLAB - Persamaan DiferesialTRANSCRIPT
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
MENYELESAIKAN PERSAMAAN DIFERENSIAL BIASAENYELESAIKAN PERSAMAAN DIFERENSIAL BIASA
4.1 Solusi Persamaan Diferensial (PD) dengan syarat awal
Misalkan kita memiliki PD seperti di bawah ini :
secara analisis maka solusi dari persamaan tersebut adalah :
Sedangkan secara numerik kita tidak akan mendapatkan solusi seperti diatas, tetapi kita
akan mencari solusi pada suatu waktu tertentu. Sehingga diperlukan suatu syarat awal
agar solusi dapat dicari yaitu misalkan pada waktu mula-mula solusi melalui suatu titik
tertentu. Syarat semacam ini diperlukan karena solusi persamaan diferensial dapat
berbeda-beda karena adanya suatu konstanta. Andaikan kita mempunyai persamaan
diferensial :
solusi secara analisis matematik dari persamaan ini adalah :
dapat dilihat bahwa solusinya tidak hanya satu tetapi tergantung dari nilai konstanta C.
Sedangkan solusi secara numerik kita menentukan suatu syarat awal terhadap fungsi
tersebut misalnya bahwa solusi persamaan tersebut melalui titik (1,1). Sehingga akan
didapatkan hanya sebuah solusi yaitu :
misal kita masukkan nilai x = 2 maka solusi dari PD tersebut adalah :
Jadi dapat disimpulkan bahwa solusi dari persamaan diferensial di x = 2
dan syarat awal (1,1) adalah 12. Ada beberapa metode yang dapat diterapkan untuk
mencari solusi dari PD yaitu : metode Euler, Runge-Kutta dll.
4.1.1 Metode Euler
© Avid-06 41
IV
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Untuk mencari solusi PD biasa dengan syarat awal dapat dilakukan dengan
metode Euler. Metode Euler terdiri dari 2 metode yaitu : orde 1 dan orde 2. Berikut ini
kita akan membahasa satu persatu dari ke dua metode tersebut.
4.1.1.1 Metode Euler orde 1
Metode ini diturunkan dari uraian deret Taylor disekitar x dinyatakan dengan
f(x+h) yaitu :
Jika diambil sampai suku h pangkat 1 maka persamaan tersebut menjadi :
dimana dalam Persamaan Diferensial Biasa dapat ditulis menjadi :
sehingga persamaan diatas menjadi :
persamaan ini bisa ditulis dalam bentuk iterasi :
persamaan ini sering disebut dengan iterasi Euler orde 1. Jika kita menentukan syarat
awal adalah titik (x0,y0) dan kita menginginkan solusi persamaan diferensial di titik xp
maka kita harus membagi selang antara x0 dan xp menjadi n buah pita yang masing-
masing lebarnya h sehingga diperoleh titik-titik x0, x1, x2, …xp.
Dari syarat awal yaitu titik (x0,y0) maka dengan rumus iterasi Euler kita dapat
menentukan y1 dengan absis x1 = x0 + h. Selanjutnya dari titik (x1,y1) kita dapat
menentukan y2 dengan absis x2 = x1 + h. Demikian seterusnya sampai didapatkan yp yang
absisnya adalah xp. Dengan demikian nilai yp merupakan solusi dari persamaan diferensial
pada titik xp.
Contoh :
Hitunglah solusi persamaan diferensial berikut pada x = 2:
,dimana syarat awal (x0,y0) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :
© Avid-06 42
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i xi yi f(x,y) yi+1
0 1 1 9 1.9
1 1.1 1.9 9.4 2.84
2 1.2 2.84 9.8 3.82
3 1.3 3.82 10.2 4.84
4 1.4 4.84 10.6 5.9
5 1.5 5.9 11.0 7.00
6 1.6 7.00 11.4 8.14
7 1.7 8.14 11.8 9.32
8 1.8 9.32 12.2 10.54
9 1.9 10.54 12.6 11.8
10 2.0 11.8
Jadi solusi persamaan difrensial pada x = 2 adalah 11.8
Contoh :
Sebuah benda bergerak lurus sepanjang sumbu x. Laju benda V(t) setiap setengah
detik adalah :
t 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
V(t) 14.3 26.4 37.3 47.3 56.8 65.8 74.4 82.6 90.4 97.7
Berapa panjang jalan x yang ditempuh sampai dengan detik ke 5. Jika mula-mula (t0)
benda berada pada posisi x = 3.7
Jawab :
Iterasi Euler orde 1 :
detik
Awal t0 = 0.5, x0 = 3.7© Avid-06 43
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Saat i = 0 ,
hasil selanjutnya dapat dilihat dalam tabel di bawah ini :
i ti xi v(t) xi+1
0 0.5 3.7 14.3 10.85
1 1.0 10.85 26.4 24.05
2 1.5 24.05 37.3 42.70
3 2.0 42.70 47.3 66.35
4 2.5 66.35 56.8 94.75
5 3.0 94.75 65.8 127.65
6 3.5 127.5 74.4 164.85
7 4.0 164.85 82.6 206.15
8 4.5 206.15 90.4 251.35
9 5.0 251.35 97.7
Sehingga jarak yang ditempuh sampai dengan detik ke 5 adalah 251.35 m
Latihan :
1.Tentukan solusi persamaan diferensial :
pada saat x = 2 dan syarat awal adalah (0,1)
2.Tentukan solusi persamaan diferensial :
f ‘(x) = x2 + 2
saat x = 3 dan syarat awal (1,1)
4.1.1.2 Program Komputer metode Euler orde 1
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Euler orde-1. Dimana bentuk persamaan diferensial yang dicari solusinya adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://****************************************************************************//Menghitung Persamaan Diferensial dengan metode Euler orde satu//compiler : Visual C++//****************************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>
© Avid-06 44
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
void main(){
double eps=1e-3;double x,x1,x2,y,y1,y2,fx,delx,delt,pita; int n;cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;x=x1;y=y1;while (x<x2){
//*************************//fx=y;fx=4*x+5;//*************************y=y+fx*delx; //iterasi Euler orde-1x=x+delx;
}if (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<y;
}else{
delt=y-y2;cout.width(15);cout<<pita;cout.width(15);cout<<y;cout.width(15);cout<<delt;
}cout<<endl;y2=y;
}cout<<"Nilai Fungsi di "<<x2<<" adalah : "<<y;cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.999.
4.1.1.3 Metode Euler orde 2
© Avid-06 45
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Dari uraian deret Taylor untuk f(x+h), jika kita menyertakan suku-suku dengan h
pangkat 2 maka akan didapatkan persamaan :
dimana
persamaan (4.3) dapat dinyatakan dalam bentuk iterasi :
Persamaan ini disebut sebagai iterasi Euler orde 2.
4.1.1.4 Program komputer Metode Euler orde 2
Program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Euler orde-2, dimana bentuk persamaan diferensial yang dicari solusinya adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://***************************************************************************//Menghitung Persamaan Difrensial dengan metode Euler orde dua//compiler : Visual C++//***************************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double x,x1,x2,y,y1,y2,fx,dx,delx,delt,pita; int n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;x=x1;y=y1;while (x<x2){ //************************
//fx=y; //bentuk fungsi//dx=y; //turunan fx=4*x+5;
© Avid-06 46
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
dx=4;//*************************y=y+fx*delx+dx*pow(delx,2)/2; //iterasi Euler orde 2x=x+delx;
}if (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<y;
}else{
delt=y-y2;cout.width(15);cout<<pita;cout.width(15);cout<<y;cout.width(15);cout<<delt;
}cout<<endl;y2=y;
}cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<y;cout<<endl;
}Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.9993.
4.1.2. Metode Runge-Kutta
Persamaan umum iterasi Runge-Kutta adalah :
dimana
dengan
4.1.2.1 Runge-Kutta orde 1© Avid-06 47
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Jika diambil m = 1 maka akan menghasilkan iterasi Runge-Kutta orde 1 yaitu :
karena dan . Dengan mengambil maka persamaan
(4.7) sama dengan persamaan iterasi Euler orde-1 yaitu :
4.1.2.2 Runge-Kutta orde 2
Jika diambil m = 2 maka akan menghasilkan iterasi Runge-Kutta orde 2 yaitu :
dimana
jadi dalam hal ini kita perlu menentukan nilai-nilai dari . Untuk
mendapatkan nilai dari konstanta-konstanta tersebut maka pertama-tama kita lihat uraian
deret Taylor sampai orde 2 yaitu :
dimana
sehingga persamaan (4.7) menjadi :
Jika dinyatakan dengan rumus iterasi maka persamaan (4.8) menjadi :
untuk k2 jika diuraikan dalam deret Taylor akan menjadi :
sehingga rumus iterasi (persamaan (4.10)) menjadi :
© Avid-06 48
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
dari persamaan (4.10) dan (4.11) didapatkan :
a) Metode Heun
Dalam metode ini diambil nilai dari konstanta :
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
dimana
b) Metode Raltson
Dalam metode ini diambil nilai dari konstanta :
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
dimana
c) Metode Poligon
Dalam metode ini diambil nilai dari konstanta :
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
© Avid-06 49
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
dimana
Contoh :
Hitunglah solusi persamaan difrensial berikut pada x = 2 dengan metode Heun:
dimana syarat awal (x0,y0) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :
dimana
sehingga :
jadi
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i xi yi k1 k2 yi+1
0 1 1 0.9 0.94 1.92
1 1.1 1.92 0.94 0.98 2.88
2 1.2 2.88 0.98 1.02 3.88
3 1.3 3.88 1.02 1.06 4.92
4 1.4 4.92 1.06 1.10 6.00© Avid-06 50
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
5 1.5 6.00 1.10 1.14 7.12
6 1.6 7.12 1.14 1.18 8.28
7 1.7 8.28 1.18 1.22 9.48
8 1.8 9.48 1.22 1.26 10.72
9 1.9 10.72 1.26 1.30 12.00
Jadi solusi persamaan difrensial pada x = 2 adalah 12.00
4.1.2.3 Program komputer Metode Runge Kutta orde 2 - Heun
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Heun. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://********************************************************************************************//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Heun //compiler : Visual C++//********************************************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double k[4];double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita; int i,n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;xx=x1;yy=y1;while (xx<x2){
x=xx;y=yy;for (i=1;i<=2;i++){ //************************
© Avid-06 51
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
//fx=y; //bentuk fungsi fx=4*x+5;
//fx=1-exp(-12.5*x/68.1);//fx=fx*9.8*68.1/12.5;//*************************k[i]=delx*fx;if (i==1){
x=xx+delx;y=yy+k[i];
}} //forxx=xx+delx;yy=yy+(k[1]+k[2])/2;
} //whileif (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<yy;
}else{
delt=yy-y2;cout.width(15);cout<<pita;cout.width(15);cout<<yy;cout.width(15);cout<<delt;
}cout<<endl;y2=yy;
} //whilecout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;cout <<endl;cout<<"Banyaknya iterasi = "<<n;cout<<endl;
}Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.
2) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Raltson. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://**********************************************************************************************//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Raltson //compiler : Visual C++
© Avid-06 52
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
//**********************************************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double k[4];double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita; int i,n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;xx=x1;yy=y1;while (xx<x2){
x=xx;y=yy;for (i=1;i<=2;i++){ //************************
//fx=y; //bentuk fungsi
fx=4*x+5;
//fx=1-exp(-12.5*x/68.1); //bentuk fungsi //fx=fx*9.8*68.1/12.5;//*************************k[i]=delx*fx;if (i==1){
x=xx+3*delx/4;y=yy+3*k[i]/4;
}} //forxx=xx+delx;yy=yy+(k[1]+2*k[2])/3; //iterasi runge-kutta orde 2 - Raltson
} //whileif (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<yy;
}else{
delt=yy-y2;cout.width(15);cout<<pita;
© Avid-06 53
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
cout.width(15);cout<<yy;cout.width(15);cout<<delt;
}cout<<endl;y2=yy;
} //whilecout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;cout <<endl;cout<<"Banyaknya iterasi = "<<n;cout<<endl;
}Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.
3) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Poligon. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://******************************************************************//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Poligon //compiler : Visual C++//******************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double k[4];double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita; int i,n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;xx=x1;yy=y1;while (xx<x2){
x=xx;
© Avid-06 54
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
y=yy;for (i=1;i<=2;i++){ //************************
//fx=y; //bentuk fungsi
fx=4*x+5;
//fx=1-exp(-12.5*x/68.1); //bentuk fungsi //fx=fx*9.8*68.1/12.5;//*************************k[i]=delx*fx;if (i==1){
x=xx+delx/2;y=yy+k[i]/2;
}} //forxx=xx+delx;yy=yy+k[2]; //iterasi runge-kutta orde 2 - Poligon
} //whileif (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<yy;
}else{
delt=yy-y2;cout.width(15);cout<<pita;cout.width(15);cout<<yy;cout.width(15);cout<<delt;
}cout<<endl;y2=yy;
} //whilecout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;cout <<endl;cout<<"Banyaknya iterasi = "<<n;cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.
4.1.2.4 Runge-Kutta orde 3
Rumus iterasi dari metode ini didapatkan dengan menyertakan suku-suku orde-3
dalam uraian deret Taylor. Jika diambil m=3 dalam persamaan (4.1) maka didapat rumus
iterasi Runge-Kutta orde 3 adalah :
© Avid-06 55
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
dengan
4.1.2.5 Program Komputer Runge-Kutta orde 3
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 3. Dimana bentuk persamaan diferensial yang dicari solusinya
adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://**************************************************************************************//Menghitung Persamaan Diferensial dengan metode Runge-Kutta orde Tiga //compiler : Visual C++//**************************************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double k[4];double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita; int i,n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1;pita=pow(2,n); //2^n delx=(x2-x1)/pita;xx=x1;yy=y1;while (xx<x2){
x=xx;y=yy;for (i=1;i<=3;i++){ //************************
//fx=y; //bentuk fungsi
fx=4*x+5;© Avid-06 56
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
//fx=1-exp(-12.5*x/68.1); //bentuk fungsi f//x=fx*9.8*68.1/12.5;//*************************k[i]=delx*fx;switch(i){case (1):
{x=xx+delx/2;y=yy+k[i]/2;break;
}case(2):
{x=xx+delx/2;y=yy-k[1]+2*k[2];break;
}}
} //forxx=xx+delx;yy=yy+(k[1]+4*k[2]+k[3])/6; //iterasi Runge-Kutta orde 3
} //whileif (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<yy;
}else{
delt=yy-y2;cout.width(15);cout<<pita;cout.width(15);cout<<yy;cout.width(15);cout<<delt;
}cout<<endl;y2=yy;
} //whilecout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;cout <<endl;cout<<"Banyaknya iterasi = "<<n;cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.993.
4.1.2.6 Runge-Kutta orde 4
© Avid-06 57
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Metode ini dinyatakan dengan menyertakan suku-suku orde-4 dalam uraian deret
Taylor. Adapun rumus iterasi Runge-Kutta orde 4 adalah :
dengan
4.1.2.7 Program Komputer Runge-Kutta orde 4
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 4. Dimana bentuk persamaan diferensial yang dicari solusinya
adalah :
f ’(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini ://******************************************************************//Menghitung Persamaan Diferensial dengan metode Runge-Kutta orde Empat //compiler : Visual C++//******************************************************************#include <iostream.h>#include <math.h>#include <iomanip.h>void main(){
double eps=1e-3;double k[4];double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita; int i,n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yocin >>x1>>y1;cout << " Masukkan titik akhir (x) : ";cin >>x2;cout <<endl<<endl;n=0;delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps{
n+=1; //cacah iterasipita=pow(2,n); //2^n delx=(x2-x1)/pita;xx=x1;yy=y1;while (xx<x2){
x=xx;y=yy;
© Avid-06 58
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
for (i=1;i<=4;i++){ //************************
//fx=y; //bentuk fungsi
fx=4*x+5;
//fx=1-exp(-12.5*x/68.1); //bentuk fungsi //fx=fx*9.8*68.1/12.5;//*************************k[i]=delx*fx;if(i==1||i==2){
x=xx+delx/2;y=yy+k[i]/2;
}else
if (i==3){
x=xx+delx;y=yy+k[3];
}
} //forxx=xx+delx;yy=yy+(k[1]+2*(k[2]+k[3])+k[4])/6; //iterasi Runge-Kutta orde 4
} //whileif (n==1){
cout.width(15);cout<<pita;cout.width(15);cout<<yy;
}else{
delt=yy-y2;cout.width(15);cout<<pita;cout.width(15);cout<<yy;cout.width(15);cout<<delt;
}cout<<endl;y2=yy;
} //whilecout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;cout <<endl;cout<<"Banyaknya iterasi = "<<n;cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.
4.2 Sistem Persamaan Diferensial Biasa© Avid-06 59
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Sebuah sistem persamaan diferensial adalah kumpulan dari dua atau lebih
persamaan diferensial yang dinyatakan dengan bentuk umum yaitu :
dengan syarat awal x0, y10, y20,...,yn0. Sistem PD tersebut terdiri dari n buah PD sehingga
solusinya juga ada n buah yaitu : y1, y2,...yn. Untuk mencari solusi Sistem PD tersebut
dapat dipakai salah satu metode penyelesaian PD yang sudah kita bahas sebelumnya.
Contoh :
Hitunglah solusi sistem persamaan diferensial berikut ini pada x = 2 dengan
metode Euler orde 1 :
dimana syarat awal (x0,y10,y20) = (0,4,6)
Jawab :
Jika kita membagi antara x0=0 dan x=2 menjadi 5 pita maka lebar masing-masing
pita (h) adalah :
Persamaan tersebut terdiri dari 2 buah PD, sehingga persamaan iterasi Euler orde 1 untuk
masing – masing PD tersebut dinyatakan dengan persamaan berikut ini :
Untuk persamaan diferensial pertama :
Untuk persamaan diferensial kedua :
Iterasi 1 ( i =0) :© Avid-06 60
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Iterasi 2 ( i =1) :
Iterasi 3 ( i =2) :
Iterasi 4 ( i =3) :
Iterasi 5 ( i =4) :
© Avid-06 61
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Jadi solusi dari sistem PD tersebut adalah :
dan
4.2.1 Persamaan Diferensial Orde 2
Untuk menyelesaikan PD orde 2 dapat dilakukan dengan cara yang sama seperti
penyelesaian pada sistem PD. PD orde 2 tersebut disubstitusi sehingga menghasilkan 2
buah PD orde 1. Andaikan kita memiliki sebuah PD orde 2 seperti berikut ini :
Contoh 1 :
Kita dapat menuliskan persamaan (4.24) menjadi :
Dengan mensubtitusikan :
maka PD orde 2 ( pers. 4.25) akan menjadi :
Kita mendapatkan dua buah PD orde 1 yaitu persamaan (4.26) dan persamaan (4.27).
Kedua PD ini membentuk sebuah sistem PD yang solusinya dapat kita hitung. Solusi dari
PD orde 2 (4.24) adalah y2. Jika dimisalkan syarat awal dari PD itu adalah :
x0 = 0
y10 = 0
y20 = 0.1
misal kita akan mencari solusi dari PD orde 2 (pers. 4.24) untuk x = 1.57 dengan metode
Euler orde 1. Berikut ini akan diuraikan solusinya untuk jumlah pita = 5 :
Persamaan iterasi Euler orde 1 untuk masing-masing PD (4.26 dan 4.27) adalah :
Untuk PD (4.26) :
© Avid-06 62
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Untuk PD (4.27) :
Iterasi 1 ( i = 0) :
Iterasi 2 ( i =1) :
Iterasi 3 ( i =2) :
Iterasi 4 ( i =3) :
Iterasi 5 ( i =4) :© Avid-06 63
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Contoh 2 :
Dalam contoh 2 ini akan dicari solusi PD orde 2 dari pers. (4.24) dengan metode
Runge-Kutta orde 4.
Kita dapat menyatakan PD tersebut menjadi :
Dengan mensubtitusi maka akan didapat 2 buah PD orde 1 yaitu :
Syarat awal dari PD itu adalah :
x0 = 0
y10 = 0
y20 = 0.1
Solusi untuk x = 1.57 dengan metode Runge-Kutta 4 adalah :
jumlah pita = 5 maka
Persamaan iterasi RK 4 untuk masing-masing PD adalah :
Iterasi 1 ( i = 0) :
© Avid-06 64
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
© Avid-06 65
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Setelah itu kita menghitung iterasi RK 4 untuk masing-masing PD yaitu :
PD pertama :
PD kedua :
Iterasi 2 ( i = 1) :
© Avid-06 66
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
© Avid-06 67
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Setelah itu kita menghitung iterasi RK 4 untuk masing-masing PD yaitu :
PD pertama :
PD kedua :
© Avid-06 68
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Iterasi selanjutnya silahkan dihitung sendiri.
4.2.2 Solusi Persamaan Diferensial dengan syarat batas
Dalam sub bab sebelumnya kita sudah mencari penyelesaian persamaan
diferensial dengan syarat awal yaitu dengan mengandaikan bahwa solusinya melalui
sebuah titik awal (x0,y0) tertentu. Dalam sub bab ini kita akan membahas mengenai
penyelesaian PD melalui 2 buah titik yang merupakan titik-titik batas atau ujung tertentu
yang dilewati oleh penyelesaian PD tersebut. Metode yang kita gunakan untuk
menyelesaikan PD dengan syarat batas adalah dengan metode coba-coba dan disertai
dengan proses interpolasi atau ekstrapolasi untuk mempercepat proses. Interpolasi atau
ekstrapolasi yang kita gunakan adalah interpolasi atau ekstrapolasi linier. Metode ini
dipakai untuk menentukan syarat awal dari syarat batas yang ditentukan pada PD.
Interpolasi linear adalah proses penentuan sebuah titik dari 2 buah titik yang
diketahui dengan pendekatan fungsi berbentuk linear (garis lurus). Interpolasi linear akan
dibahas secara rinci dalam bab berikutnya. Jika diketahui 2 buah titik dengan koordinat
(x1, y1) dan (x2, y2) maka interpolasi linear dapat ditentukan dengan persamaan :
atau bisa ditulis :
Dari persamaan ini jika kita mengetahui nilai absis sebuah titik (x) maka kita dapat
menentukan nilai ordinatnya (y). Titik (x,y) ini bisa berada di dalam atau di luar rentang
(x1, y1) dan (x2, y2). Jika berada di dalam rentang (x1, y1) dan (x2, y2) maka disebut dengan
proses interpolasi. Dan Jika berada di luar rentang (x1, y1) dan (x2, y2) maka disebut
dengan proses ekstrapolasi.
Contoh berikut ini adalah sebuah sebuah PD orde 2 dengan syarat batas.
Contoh :
Jika solusinya melalui syarat batas yaitu titik (0,0) dan (10,0), maka tentukan
penyelesaian PD tersebut pada x = 4,5.
© Avid-06 69
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Jawab :
PD tersebut bisa ditulis menjadi :
Pecah persamaan tersebut menjadi 2 buah PD orde 1 dengan substitusi :
Syarat batas dari sistem PD ini adalah titik(0,0) dan titik(10,0). Untuk menyelesaikan
kedua PD ini maka kita memerlukan syarat awal yaitu : x0, y10, dan y20. Dari syarat batas
maka kita hanya mendapatkan syarat awal x0 = 0 dan y10 = 0. Kita belum mendapatkan
syarat awal y20. Sehingga kita perlu menentukan y20 dengan menggunakan metode coba-
coba disertai proses interpolasi atau ekstrapolasi linear.
Mula-mula kita mencoba memberi nilai y20 = 1 dan kita cari nilai solusi dari PD orde 2
diatas pada x = 10. Hasilnya didapatkan y(10) = 10,208.
Selanjutnya kita coba dengan nilai y20 = 2, dan solusi dari PD orde 2 diatas pada x = 10
adalah y(10) = 8,035.
Dari proses ini kita mendapatkan 2 buah titik yaitu (1, 10,208) dan (2, 8,035). Jadi nilai
awal y20 yang sebenarnya terletak pada ekstrapolasi linear dari garis yang melalui titik (1,
10,208) dan (2, 8,035).
Untuk y = 0 maka
Nilai x inilah yang akan dipakai sebagai nilai awal y20 sehingga
© Avid-06 70
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Setelah kita mendapatkan nilai y20 maka selanjutnya kita dapat menghitung solusi PD orde
2 diatas dengan metode-metode yang sudah kita pelajari sebelumnya ( Euler, R.Kutta).
4.2.3 Metode Finite Difference untuk menyelesaikan PD dengan syarat batas
Sebuah PD orde 2 dapat dinyatakan dalam bentuk yaitu :
atau
dengan syarat batas adalah titik (a,α) dan titik (b,β) atau bisa ditulis :
Syarat batas ini menunjukkan bahwa solusi dari PD tersebut y harus melalui titik (a,α) dan
titik (b,β). Persaman diferensial tsb dapat diselesaikan dengan metode Finite Difference.
Metode ini didapatkan dari metode penyelesaian diferensial atau turunan pada sub bab
3.2. Metode untuk menyelesaikan turunan baik turunan pertama maupun turunan kedua
yaitu :
Jika kita mensubstitusikan persamaan (4.30) dan (4.31) ke dalam persamaan (4.29) maka
akan didapatkan :
Jika kita memisalkan :
© Avid-06 71
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Sehingga persamaan (4.32) menjadi :
Dimana i = 1, 2,3,...N. N menyatakan jumlah selang atau interval antara a dan b. Selang
atau interval h yang dinyatakan dengan :
Dalam hal ini kita hanya akan mencari nilai w1, w21, ...,wN. Dari syarat batas kita sudah
bisa mengetahui w0 dan wn+1 yaitu :
Persamaan (4.33) merupakan sebuah sistem persamaan linear yang dapat dinyatakan
dalam bentuk operasi matrik yaitu :
Aw = b
A adalah matrik tridiagonal orde NxN yaitu :
w dan b adalah vektor :
© Avid-06 72
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Jadi vektor w dapat ditentukan dengan :
w = A-1 b
Selain itu w juga dapat dihitung dengan menggunakan metode lain seperti : Eliminasi
Gauss, Gauss-Jordan, atau Iterasi Gauss-Seidal. Sebagai contoh jika N = 3 maka uraian
persamaan (4.33) akan menjadi :
untuk i = 1 :
untuk i = 2 :
untuk i = 3 :
© Avid-06 73
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi
Dari persamaan (4.34), (4.35), dan (4.36) maka kita mendapatkan sistem persamaan linear
yang dapat dinyatakan dalam bentuk operasi matrik : Aw = b :
Matrik A adalah matrik tridiagonal orde 3x3 :
Vektor w dan b :
© Avid-06 74