DIFERENSIAL NUMERIK
Disusun Untuk Memenuhi Tugas Mata Kuliah Metode Numerik
Dosen Pengampu : Juhrani, M.Pd.
Disusun oleh :
Suwaibatul Aslamiah (190101040303)
Norhalimah (190101040334)
Dwi Maya Puspitasari (190101040336)
Syukur, alhamdulillah Segala Puji bagi Allah SWT. yang telah melimpahkan
rahmat dan hidayah-Nya kepada kami, sehingga kami dapat menyelesaikan
makalah ini. Sholawat serta salam tidak lupa kami tunjukkan kepada Baginda
Rasulullah SAW. beserta keluarga serta para sahabatnya yang telah
memperjuangkan agama Islam sampai saat ini.
Kemudian daripada itu kami sadar didalam makalah ini masih terdapat
banyak kekurangan dan kekeliruan. Maka dari itu kami memohon agar sekiranya
Ibu Dosen dan para pembaca memberikan kritikan atau masukan positif, sehingga
makalah ini dapat lebih baik lagi untuk kedepannya.
Akhirnya kami tetap berharap agar makalah ini dapat menjadi salah satu dari
amalan kami demi memenuhi tugas yang diberikan oleh pembimbing kami.
Semoga dapat menjadi amalan atau ilmu yang bermanfaat bagi para pembaca.
Aamiin yaa Robbal Alamiin.
Pemakalah
i
DAFTAR ISI :
KATA PENGANTAR ................................................................................................... i
DAFTAR ISI ................................................................................................................... ii
BAB I PENDAHULUAN ............................................................................................... 1
A. Latar Belakang ......................................................................................................... 1
B. Rumusan Masalah .................................................................................................... 1
C. Tujuan Pembahasan .................................................................................................. 1
BAB II PEMBAHASAN ................................................................................................ 2
A. Persamaan Diferensial Numerik................................................................................. 2
1. Persamaan Diferensial Biasa (PDB) ........................................................................... 2
2. Persamaan Diferensial Parsial (PDP) .......................................................................... 2
B. Metode Euler .............................................................................................................. 3
C. Metode Runge-Kutta .................................................................................................. 6
1. Metode Runge-Kutta Orde 1 ....................................................................................... 7
2. Metode Runge-Kutta Orde 2 ....................................................................................... 7
3. Metode Runge-Kutta Orde 3 ....................................................................................... 7
4. Metode Runge-Kutta Orde 4 ....................................................................................... 8
BAB III PENUTUP ...................................................................................................... 13
Kesimpulan ................................................................................................................... 13
Daftar pustaka ............................................................................................................... 14
ii
BAB I
PENDAHULUAN
A. Latar Belakang
Persamaan diferensial adalah suatu persamaan yang mengandung derivatif
dari variabel terikat terhadap satu atau lebih variabel bebas. Persamaan diferensial
sendiri dibagi menjadi dua yaitu persamaan diferensial parsial dan persamaan
diferensial biasa. Persamaan diferensial parsial adalah suatu persamaan yang
memuat satu variabel terikat dan variabel bebas yang lebih dari satu, sedangkan
persamaan diferensial biasa adalah suatu persamaan yang hanya memuat satu
variabel bebas dan satu variabel terikat (Awrejcewicz, 2014).
Suatu persamaan diferensial biasa dikatakan linear jika fungsi tak diketahui
atau turunan-turunannya berpangkat satu. Pandang bentuk umum suatu persamaan
diferensial linear orde 3 adalah sebagai berikut ini : 𝑎3 (𝑥)𝑦 + 𝑎2 (𝑥)𝑦 +
𝑑3 𝑦 𝑑2 𝑦 𝑑𝑦
𝑎1 (𝑥)𝑦 + 𝑎0 (𝑥)𝑦 = 𝐹(𝑥)(1) atau 𝑎3 (𝑥) + 𝑎2 (𝑥) + 𝑎1 (𝑥) +
𝑑𝑥 2 𝑑𝑥 2 𝑑𝑥
1
BAB II
PEMBAHASAN
b. y ′ = x 2 + y 2 e. 2y”′ − 23y ′ = 1 − y ′
dy
c. 2 dx + x 2 y − y = 0
Peubah bebas untuk contoh di atas adalah x dan terikatnya adalah y yang
merupakan fungsi dari x atau ditulis sebagai y = g(x).
PDB orde 1 adalah PDB yang turunan tertingginya adalah turunan pertama.
Contoh a, b, c di atas adalah PDB orde 1.
PDB orde 2 adalah PDB yang turunan tertingginya adalah turunan kedua.
Contoh d di atas adalah PDB orde 2.
PDB orde 3 adalah PDB yang turunan tertingginya adalah turunan ketiga.
Contoh e di atas adalah PDB orde 3.
Dan seterusnya. PDB orde kedua ke atas dinamakan PDB orde lanjut.
2. Persamaan Diferensial Parsial (PDP)
PDP adalah persamaan diferensial yang mempunyai lebih dari satu peubah
1
Syafii, “METODE NUMERIK ALGORITMA DAN PEMROGRAMAN VISUAL C++”, (Padang: Andalas
University Press), hlm. 69
2
bebas. Turunan fungsi terhadap setiap peubah bebas dilakukan secara
parsial. Contoh:
𝑑2 𝑦 𝑑2𝑦
= + 𝑥𝑡𝑠𝑖𝑛(𝑦𝑡)
𝑑𝑥 3 𝑑𝑥. 𝑑𝑡
y=f(x)
B. METODE EULER
Metode eular atau metode eular chaucy. Metode eular disebut juga
metode orde pertama.
y(xr+1 ) = y(xr ) + h(xr , yr ); r = 0,1,2, . . . n
Disederhanakan menjadi
𝑦𝑟+1 = 𝑦𝑟 + ℎ𝑓𝑟 → 𝑓𝑟 = 𝑓(𝑥𝑟 , 𝑦𝑟 )3
Contoh:
Diketahui PDB
𝑑𝑦
=𝑥+𝑦 𝑑𝑎𝑛 𝑦(0) = 1
𝑑𝑥
2
Metode Numerik (Persamaan Diferensial Biasa: Metode Euler), https://youtu.be/k3Zjx3qiNus
(diakses pada tanggal 23 Maret 2021)
3
Syafii, Op. Cit., hlm. 69
3
Gunakan metode Euler untuk menghitung y(0.10) dengan ukuran langkah
h=0.0.5 dan h=0.02. jumlah angka benar = 5. diketahui solusi sejati PDB
tersebut adalah y(x) = ℯ x − x − 1.
Penyelesaian:
1. Diketahui: a = x0 = 0; b = 0.10; h = 0.05
Dalam hal ini, f(x, y) = x + y dengan penerapan metode eular pada PDB
tersebut menjadi f(xr , yr ) = xr + yr
𝑦𝑟+1 = 𝑦𝑟 + ℎ 𝑓𝑟
𝑦𝑟+1 = 𝑦𝑟 + ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑦𝑟+1 = 𝑦𝑟 + 0.05(𝑥𝑟 + 𝑦𝑟 )
Sehingga
𝑥0 = 0 → 𝑦0 = 1
𝑥1 = 0.05 → 𝑦1 = 𝑦0 + 0.05(𝑥0 + 𝑦0 ) = 1 + 0.05(0 + 1) = 1.0500
𝑥2 = 0.10 → 𝑦2 = 𝑦1 + 0.05(𝑥1 + 𝑦1 ) = 1.0500 + 0.05(𝑜. 05 +
1.0500) = 1.1050
Jadi, y(0.10) ≈ 1.1050
Bandingkan dengan galat yang nilai sejatinya
y(0.10) = ℯ x − x − 1 = ℯ 0.10 − 1 = 0.00517
Sehingga galatnya:
Galat = |0.00517 − 1.1050| = 1.0998
2. Diketahui: a = x0 = 0; b = 0.10; h = 0.02
Dalam hal ini, f(x, y) = x + y → f(xr , yr ) = xr + yr
(metode euler pada PDB)
𝑦𝑟+1 = 𝑦𝑟 + ℎ 𝑓𝑟
𝑦𝑟+1 = 𝑦𝑟 + ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑦𝑟+1 = 𝑦𝑟 + 0.02(𝑥𝑟 + 𝑦𝑟 )
Sehingga
𝑥0 = 0 → 𝑦0 = 1
𝑥1 = 0.02 → 𝑦1 = 𝑦0 + 0.02(𝑥0 + 𝑦0 ) = 1 + 0.02(0 + 1) = 1.0200
𝑥2 = 0.04 → 𝑦2 = 𝑦1 + 0.02 𝑓(𝑥1 + 𝑦1 ) = 1.0200 + 0.02(0.02 +
1.0200) = 1.0408
𝑥3 = 0.06 → 𝑦3 = 1.0624
4
𝑥4 = 0.08 → 𝑦4 = 1.0848
𝑥5 = 0.10 → 𝑦5 = 1.1081
Jadi, y(0.10) ≈ 1.1081
Nilai sejati y(0.10) = 0.00517
4
Galat = |0.00517 − 1.1081| = 1.1029
- Program euler
#include <iostream>
#include<conio.h>
#include<math.h>
#include<windows.h>
#include<iomanip>
using namespace std;
int main()
{
double a,b,x0,yi,h,x,y;
int i,n;
cout<<" -Difrensial Numerik - \n";
cout<<" Menghitung PDB dengan metode Euler \n";
cout<<"a=x0= ";
cin>>a;
cout<<"b=y0= ";
cin>>b;
cout<<"h= ";
cin>>h;
n=(b-x0)/h;
yi=1;
x=0;
cout<<"\t\tnilai n adalah="<<n<<endl;
cout<<setw(15)<<"i"<<setw(15)<<"x"<<setw(15)<<"y"<<endl;
for (i=1;i<=n;i++)
{
yi=yi+(h*(x+yi));
x=x+h;
cout<<setw(15)<<i<<setw(15)<<x<<setw(15)<<yi<<endl;
cout<<endl;
}
4
Metode Numerik (Persamaan Diferensial Biasa: Metode Euler), https://youtu.be/k3Zjx3qiNus
(diakses pada tanggal 23 Maret 2021)
5
cout<<"nilai y akhir adalah ="<<yi<<endl; }
- Output program euler
6
C. METODE RUNGE-KUTTA
Pengembangan metode langkah tunggal berikutnya untuk memperbaiki hasil
perhitungan metode Euler adalah Metode Rungge Kutta.
y(x) 3 5
2
4
𝑥 𝑥 𝑥 𝑥
5
Syafii, Op. Cit., hlm 72
7
1. Metode Runge-Kutta Orde Satu
𝑘1 = ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑦𝑟+1 = 𝑦𝑟 + (𝑎1 𝑘1 )
Galat per langkah metode Runge-Kutta orde satu : O(ℎ2 )
Galat longgokan metode Runge-Kutta Orde satu : O(ℎ)
Yang termasuk metode Runge-Kutta orde satu adalah metode Euler :
𝑘1 = ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑦𝑟+1 = 𝑦𝑟 + 𝑘1 ( dalam hal ini 𝑎1 = 1)
𝑘1 = ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
𝑘2 = ℎ 𝑓(𝑥𝑟 + ℎ , 𝑦𝑟 + 𝑘1 )
1
𝑦𝑟+1 = 𝑦𝑟 + 2 (𝑘1 + 𝑘2 )
𝑘1 = ℎ 𝑓(𝑥𝑟 , 𝑦𝑟 )
3 3
𝑘2 = ℎ 𝑓(𝑥𝑟 + 4 ℎ, 𝑦𝑟 + 4 𝑘1
1 2
𝑦𝑟+1 = 𝑦𝑟 + (3 𝑘1 + 3 𝑘2 )
𝑘3 = ℎ 𝑓(𝑥𝑟 + ℎ , 𝑦𝑟 − 𝑘1 + 2𝑘2 )
8
1
𝑦𝑟+1 = 𝑦𝑟 + 6 (𝑘1 + 4𝑘2 + 𝑘3 )
𝑘4 = ℎ 𝑓(𝑥𝑟 + ℎ , 𝑦𝑟 + 𝑘3 )
1
𝑦𝑟+1 = 𝑦𝑟 + 6 (𝑘1 + 2𝑘2 + 2𝑘3 + 𝑘4 )
Contoh 1 :
𝑑𝑦
Diketahui PDB = 1 + 𝑦2 ; 𝑦(0) = 0
𝑑𝑥
→ 𝒙 𝟎 = 𝟎 → 𝒚𝟎 = 𝟎
𝒙𝟏 = 𝟎. 𝟏𝟎 → 𝒚𝟏 =?
𝑘1 = ℎ 𝑓(𝑥0 , 𝑦0 ) = 0.10(1 + 02 ) = 0.10
1 1
𝑘2 = ℎ 𝑓 (𝑥0 + 2 ℎ , 𝑦0 + 2 𝑘1 ) = 0.10(1 + 0.052 ) = 0.10025
6
Metode Numerik (Persamaan Diferensial Biasa: Metode Runge-kutta),
https://youtu.be/I_b_lxYa00M (diakses pada tanggal 22 Maret 2021)
9
𝑘3 = ℎ 𝑓(𝑥0 + ℎ , 𝑦0 − 𝑘1 + 2𝑘2 ) = 0.10(1 + 10052 ) = 0.10101
1 1
𝑦1 = 𝑦0 + 6 (𝑘1 + 4𝑘2 + 𝑘3 ) = 0 + 6 (0.10 + 4(0.10025) +
0.10101) = 0.100334
𝒙𝟐 = 𝟎. 𝟐𝟎 → 𝒚𝟐 =?
𝑘1 = ℎ 𝑓(𝑥1 , 𝑦1 ) = 0.10(1 + 0.1003342 ) = 0.110067
1 1
𝑘2 = ℎ 𝑓 (𝑥1 + 2 ℎ , 𝑦1 + 2 𝑘1 ) = 0.10(1 + 0.1508452 ) = 0.100303
0.10416) = 0.102047
Jadi, 𝒚(𝟎. 𝟐𝟎) ≈ 𝟎. 𝟏𝟎𝟐𝟎𝟒𝟕
K1 = (float)h*1+(y0*y0);
cout<<"K1="<<K1<<endl;
K2 = (float)h *(1+ ((K1/2)*(K1/2)));
cout<<"K2="<<K2<<endl;
K3 = (float) h *(1+(K2*K2));
cout<<"K3="<<K3<<endl;
y= y0+ (K1 + 4 * K2 + K3)/6;
cout<<"Jadi, y1 ="<<y<<endl;
10
cout<<"y2 dengan jarak 0.20";
cout<<"-------------------------------------\n";
K1 = (float)h*1+(y*y);
cout<<"K1="<<K1<<endl;
K2 = (float)h *(1+ ((K1/2)*(K1/2)));
cout<<"K2="<<K2<<endl;
K3 = (float) h *(1+(K2*K2));
cout<<"K3="<<K3<<endl;
y2 = y0+(K1 + 4 * K2 + K3)/6;
return 0;
}
- Output program
- Contoh 2
Dapatkan penyelesaian persamaan diferensial pada 𝑥=0.2 dengan step
0.2 bila diketahui nilai awal 𝑦(0)=1 menggunakan metode Runga
Kutta Orde 4.
𝑦’−𝑦=𝑥
Penyelesaian :
Dari persamaan differensial di atas : 𝑓(𝑥𝑟 , 𝑦𝑟 ) = 𝑥 + 𝑦
11
𝑘1 = ℎ . 𝑓(𝑥0 , 𝑦0 ) = (0.2) × (0 + 1) = 0.2
1 1
𝑘2 = ℎ . 𝑓(𝑥0 + ℎ, 𝑦0 + 𝑘1 )
2 2
= (0,2) × 𝑓(0 + 0.1 , 1 + 0.1)
= (0.2) × (0.1 + 1.1)
= 0.24
1 1
𝑘3 = ℎ . 𝑓(𝑥0 + ℎ, 𝑦0 + 𝑘2 )
2 2
= (0,2) × 𝑓(0 + 0.1 , 1 + 0.12)
= (0.2) × (0.1 + 1.12)
= 0.244
𝑘4 = ℎ . 𝑓(𝑥0 + ℎ , 𝑦0 + 𝑘3 )
int main () {
float x, y, y2,h,x0,y0,K1,K2,K3, K4;
cout<<"Nilai x0 :";
cin>>x0;
cout<<"Nilai y0 : ";
cin>>y0;
12
cout<<"Nilai h : ";
cin>>h;
cout<<"-------------------------------------------------\n";
K1 = h*(x0 + y0);
cout<<"K1="<<K1<<endl;
K2 = (float)h *(x0+(0.5*h) + y0+(0.5*K1));
cout<<"K2="<<K2<<endl;
K3 = (float) h *(x0+0.5*h + y0+0.5*K2);
cout<<"K3="<<K3<<endl;
K4 = (float) h *(x0+h + y0+K3);
cout<<"K4="<<K4<<endl;
y= y0+ 1/6*(K1 + 2 * K2 + 2*K3+K4);
cout<<"Jadi, y1 ="<<y<<endl;
return 0;
}
- Output contoh 2
13
BAB III
PENUTUP
Kesimpulan
Persamaan differensial merupakan persamaan yang menghubungkan suatu
besaran dengan perubahannya. Persamaan differensial dinyatakan sebagai
persamaan yang mengandung suatu besaran dan differensialnya, dan dituliskan
dengan:
𝑑𝑥 𝑑 2 𝑥 𝑑𝑛 𝑥
𝐹 (𝑥, , 2 , … , 𝑛 , 𝑡) = 0
𝑑𝑡 𝑑𝑡 𝑑𝑡
Persamaan differensial mempunyai banyak ragam dan jenis mulai dari yang
mudah diselesaikan hingga yang sulit diselesaikan, mulai dari yang sederhana
sampai yang sangat kompleks. Persamaan differensial pada umumnya dapat
diselesaikan dengan metode analitik.
Dengan menggunakan metode numerik kita dapat menyelesaikan persoalan
matematika yang komplek atau yang tidak dapat diselesaikan dengan metode
analitik. Ketepatan dalam hasilpun akan sangat lebih baik jika kita menggunakan
metode numerik. Metode euler dan runge-kutta merupakan metode yang sering
digunakan untuk menyelesaikan solusi dari persamaan diferensial.
14
DAFTAR PUSTAKA
Asri, M. M. (t.thn.). https://www.academia.edu/4532357/Metode Numerik sebagai
Algoritma Komputasi.
Maulida, L. (t.thn.). Solusi Penyelesaian Diferensial secara Numerik dengan
menggunakan metode Euler dan Runge-Kutta Menggunakan Program
C++.
Metode Numerik (Persamaan Diferensial Biasa: Metode Euler),
https://youtu.be/k3Zjx3qiNus (diakses pada tanggal 23 Maret 2021).
Metode Numerik (Persamaan Diferensial Biasa: Metode Runge-kutta),
https://youtu.be/I_b_lxYa00M (diakses pada tanggal 22 Maret 2021).
Syafii. (2014). METODE NUMERIK ALGORITMA DAN PEMROGRAMAN
VISUAL C++. Padang: Andalas University Press.
15