45
IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi MENYELESAIKAN PERSAMAAN DIFERENSIAL BIASA ENYELESAIKAN 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 © Avid-06 41 IV

4 Persamaan Diferensial

Embed Size (px)

DESCRIPTION

Program MATLAB - Persamaan Diferesial

Citation preview

Page 1: 4 Persamaan Diferensial

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

Page 2: 4 Persamaan Diferensial

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

Page 3: 4 Persamaan Diferensial

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

Page 4: 4 Persamaan Diferensial

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

Page 5: 4 Persamaan Diferensial

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

Page 6: 4 Persamaan Diferensial

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

Page 7: 4 Persamaan Diferensial

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

Page 8: 4 Persamaan Diferensial

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

Page 9: 4 Persamaan Diferensial

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

Page 10: 4 Persamaan Diferensial

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

Page 11: 4 Persamaan Diferensial

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

Page 12: 4 Persamaan Diferensial

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

Page 13: 4 Persamaan Diferensial

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

Page 14: 4 Persamaan Diferensial

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

Page 15: 4 Persamaan Diferensial

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

Page 16: 4 Persamaan Diferensial

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

Page 17: 4 Persamaan Diferensial

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

Page 18: 4 Persamaan Diferensial

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

Page 19: 4 Persamaan Diferensial

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

Page 20: 4 Persamaan Diferensial

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

Page 21: 4 Persamaan Diferensial

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

Page 22: 4 Persamaan Diferensial

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

Page 23: 4 Persamaan Diferensial

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

Page 24: 4 Persamaan Diferensial

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

Page 25: 4 Persamaan Diferensial

IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi

© Avid-06 65

Page 26: 4 Persamaan Diferensial

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

Page 27: 4 Persamaan Diferensial

IV Menyelesaikan Persamaan Diferensial Biasa Fisika Komputasi

© Avid-06 67

Page 28: 4 Persamaan Diferensial

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

Page 29: 4 Persamaan Diferensial

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

Page 30: 4 Persamaan Diferensial

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

Page 31: 4 Persamaan Diferensial

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

Page 32: 4 Persamaan Diferensial

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

Page 33: 4 Persamaan Diferensial

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

Page 34: 4 Persamaan Diferensial

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