Tugas/Ujian Sains Komputasi: Algoritma dan Perancangan Software - UTS I Soal 1b
Soal 1b
Soal Utama
Diketahui persamaan diferensial sebagai berikut:
Sub Soal Ib i
Pilih sebuah metode numerik untuk menyelesaikan suatu persamaan diferensial dan rancanglah algoritma dari metode tersebut!
Jawaban Sub Soal Ib i
Dari suatu persamaan diferensial dengan bentuk:
dan memiliki initial condition . Kita bisa menyelesaikannya dengan metode Runge-Kutta order 4. Bentuk umumnya adalah sebagai berikut:
dimana adalah konstanta yang harus dicari.
Bentuk algoritmanya dalam pseudocode adalah sebagai berikut:
INPUT x0,y0,xmax
COMPUTE n = (xmax-x0)/h
FOR i 1:n
k1 = f(x0,y0)
k2 = f(x0 + 0.5*h,y0 + 0.5*k1*h)
k3 = f(x0 + 0.5*h,y0 + 0.5*k2*h)
k4 = f(x0 + h,y0 + k3*h)
y0 = y0 + (1/6)*(k1 + 2*k2 + 2*k3 + k4) * h
x0 = x0 + h
Jika dibuat dalam program R:
rk_4order = function(f, # dy/dx
x0, y0, # init condition
h, # selang
xmax){ # x max
# initial condition
x = x0
y = y0
n = (xmax-x0)/h
# proses iterasi
for(i in 1:n){
k1 = f(x0,y0)
k2 = f(x0 + 0.5*h,y0 + 0.5*k1*h)
k3 = f(x0 + 0.5*h,y0 + 0.5*k2*h)
k4 = f(x0 + h,y0 + k3*h)
y0 = y0 + (1/6)*(k1 + 2*k2 + 2*k3 + k4) * h
x0 = x0 + h
x = c(x, x0)
y = c(y, y0)
}
# output
output = data.frame(x = x,
y = y)
return(output)
}
Sub Soal Ib ii
Tentukanlah solusi persamaan diferensial di atas untuk rentang dengan kondisi awal dan rentang partisi .
Jawaban Sub Soal Ib ii
Mari kita selesaikan:
dydx = function(x,y){(x^2 + y)*sin((x^2) * y)}
x0 = 0
y0 = 5
xmax = 2
h = 0.2
solusi = rk_4order(dydx,x0,y0,h,xmax)
x | y |
---|---|
0.0 | 5.00000000 |
0.2 | 5.06760128 |
0.4 | 5.57269164 |
0.6 | 6.71789477 |
0.8 | 6.45613761 |
1.0 | 5.18752961 |
1.2 | 4.67362560 |
1.4 | 5.16720280 |
1.6 | 4.05194257 |
1.8 | 3.20113263 |
2.0 | 2.66358548 |
Solusi Persamaan Diferensial dengan RK4
Dalam bentuk grafik:
Sub Soal Ib iii
Bandingkan kurva solusinya (kurva vs ) jika digunakan nilai dan .
Jawaban Sub Soal Ib iii
Mari kita selesaikan:
solusi_h1 = rk_4order(dydx,x0,y0,0.1,xmax)
solusi_h2 = rk_4order(dydx,x0,y0,0.01,xmax)
Berikut grafik perbandingannya:
Secara visual dan intuitif bisa kita simpulkan bahwa semakin kecil , maka nilai hampirannya lebih baik karena penambahan terjadi secara perlahan.
if you find this article helpful, support this blog by clicking the ads.