Penyelesaian Persamaan Differensial Biasa dengan Metode Euler¶
Metode Euler¶
Dalam metode numerik, metode Euler adalah salah satu prosedur numerik orde pertama untuk menyelesaikan diferensial biasa, dalam artian metode Euler disebut juga metode deret Taylor orde pertama. $$ y(x_0+h)=y(x_0) +h{dy \over dx}\Bigr|_{y=y_0}^{x=x_0} + O(h^2) $$
PDB orde satu yaitu : y(x) = f(x, y), dengan kondisi awal y_0 = y(x_0)
Metode Euler : $ y_{i+1} = y_i + h f(x,y) $, dan i yaitu 1,2,3,...n
Algoritma Metode Euler¶
Terdapat langkah-langkah harus dikerjaan untuk menyelesaikan persamaan differensial biasa yaitu sebagai berikut:
- Mulai
- Tetapkan nilai x_0, y_0, h, x
- Definisikan sebuah fungsi $ f(x,y) $
- Hitung $ n = (x - x_0) / h $ sebagai banyaknya iterasi
- lakukan perulangan dari i sampai ke n, untuk menghitung x_i = x_0 + i * h, $y_{i+1} = y_i + f(x_i, y_i) $
- kemudian tampilkan nilai dari $ y_i $
- Berhenti
Perhitungan Metode Euler¶
Berikut merupakan proses perhitungan metode Euler untuk PDB $ {dy \over dx} = 1+x^2, \space \space \space y(1) = -4 $ $$ f(x,y) = 1 + x^2, \space \space \space x_0 = 1, \space \space \space y_0 = -4, \space \space \space h = 0.01 $$
i | x_i | y_i |
---|---|---|
0 | 1 | -4 |
1 | 1,01 | -3,98 |
2 | 1,02 | -3,9598 |
3 | 1,03 | -3,9394 |
Implementasi Metode Euler dengan Python¶
Dalam kasus ini akan diselesaikan sebuah persamaan differensial biasa dengan bahasa pemrograman Python dengan PDB sebagai berikut : $$ {dy \over dx} = 1+x^2, \space \space \space \space \space \space y(1) = -4 $$ Dari persamaan tersebut akan dicari nilai aproksimasi dari y(1.01), \space y(1.02), \space y(1.03). Berikut merupakan program dari meode Euler:
x0 = 1 y0 = -4 h = 0.01 x = 1.1 def f(x,y): return 1 + x**2 def metode_euler(x0, y, h, x): y = y0 i = 0 n = (x - x0) / h print(str('-'*57)+'\n|\t i \t|\t xi \t|\t yi \t\t|\n'+str('-'*57)) while i < n: print('|\t',i,'\t|\t',round(x0,4),'\t|\t',round(y,4),'\t|') y = y + h * f(x0, y) x0 = x0 + h i+=1 metode_euler(x0, y0, h, x)
Penjelasan program :
Seperti halnya algoritma metode Euler diatas, pertama program tersebut menginisialisasi nilai dari $x0, y0, h, $ dan $ x $, dimana x merupakan batas perkiraan.
x0 = 1 y0 = -4 h = 0.01 x = 1.1
Kemudian program tersebut mendefinisikan sebuah fungsi, seperti persamaan differensial diatas, yaitu f(x,y) = 1 + x^2
def f(x,y): return 1 + x**2
Kemudian program tersebut terdapat fungsi metode_euler(x0,y0,h,x), dimana dalam fungsi tersebut tedapat variabel y sebagai penampung sementara nilai dari y0, variabel i sebagai iterasi yang dimulai dari 0, dan n yang merupakan variabel yang nantinya berisi nilai untuk batas iterasi, yang didapat dari (x-x_0) / h. Selanjutnya dilakukan iterasi sebanyak n untuk menghitung nilai y, yaitu y = y sebelumnya + h x fungsi PDB. Dan x = x sebelumnya + h.
def metode_euler(x0, y0, h, x): y = y0 i = 0 n = (x - x0) / h print(str('-'*57)+'\n|\t i \t|\t xi \t|\t yi \t\t|\n'+str('-'*57)) while i < n: print('|\t',i,'\t|\t',round(x0,4),'\t|\t',round(y,4),'\t|') y = y + h * f(x0, y) x0 = x0 + h i+=1
Setelah program tersebut dijalankan maka dihasilkan output seperti berikut:
------------------------------------- | i | xi | yi | ------------------------------------- | 0 | 1 | -4 | | 1 | 1.01 | -3.98 | | 2 | 1.02 | -3.9598 | | 3 | 1.03 | -3.9394 | | 4 | 1.04 | -3.9188 | | 5 | 1.05 | -3.898 | | 6 | 1.06 | -3.8769 | | 7 | 1.07 | -3.8557 | | 8 | 1.08 | -3.8343 | | 9 | 1.09 | -3.8126 | | 10 | 1.1 | -3.7907 |
Dari program yang dijalankan tersebut maka ditemukan nilai dari $y(1.01) = -3.98 $, y(1.02) = -3.9598, dan $y(1.03)= -3.9394 $.
Sekian terimakasih.