You are on page 1of 10

Meylanie Olivya P270020900

Mencari Solusi Persamaan Differensial dengan


Metode Numerik

Untuk mencari solusi persamaan differensial menggunakan metode numerik dilakukan


dengan algoritma step-size, berikut ini :
1. Tetapkan suatu batas toleransi, , dalam kasus ini, digunakan  = 10-6
2. Tetapkan step-size awal :
∆t = ta / N
dimana : ta : t awal perhitungan dan N : jumlah interval
3. Hitung solusi untuk t = ∆t dengan metode A yaitu metode numerik order
pertama, sehingga diperoleh xA(∆t)
4. Hitung pula solusi untuk t = ∆t dengan metode B yaitu metode numerik order
kedua, sehingga diperoleh xB(∆t)
5. Hitung selisih Eest = |xB(∆t) - xA(∆t)| sebagai estimasi error
6. Jika Eest > , maka step-size diperkecil, step-size yang baru adalah ∆t/n, dimana n
adalah bilangan bulat > 1, kemudian kembali ke langkah 3
Jika Eest ≤ , berarti xB(∆t) adalah solusi untuk t = ∆t maka lanjut hitung solusi
untuk t = 2∆t dengan kembali menggunakan langkah 3 tanpa mengubah ∆t
7. Ulangi langkah 3-6 sampai t = ta.

Metode A : Metode Numerik Order Pertama


x(t + ∆t) = x(t) + ∆t(dx(t)/dt)

Metode B : Metode Numerik Order Kedua


x(t + ∆t) = x(t)+(½∆t)[x'(t) + Ex'(t+∆t)]
dengan Ex'(t+∆t) = f{t+∆t,Ex(t+∆t)}
dan Ex(t+∆t) = x(t)+∆t[x'(t)]
Meylanie Olivya P270020900
2

Bagian I : Implementasi Algoritma Step-Size pada Program dengan Bahasa Pascal

Pada bagian ini, algoritma step-size diimplementasikan dalam bahasa Pascal untuk
persamaan differensial berikut:

dx (t)
=−2 x ( t ) ; dimana x ( 0 )=10 (1)
dt

Pada saat t=0, x(0)=10, sehingga

x ( t )=10 e−2 t (2)

Berikut ini adalah program mencari solusi persamaan differensial dengan menggunakan
metode numerik :

Program Solusi_numerik_persamaan_differensial;
{Mencari solusi persamaan differensial dengan metode
numerik}

{Definisi Variabel:}
var xa,xb,Edx,t,ta,dt,err,N,an : real;
s : byte;

{Rincian Program:}
begin

{Proses input/permintaan data}


clrscr;
Gotoxy(33,5);writeln('Masukkan Data :');
Gotoxy(24,6);writeln('==================================');
Gotoxy(25,9);write('Nilai x pada saat t=0, x(0) = '); readln(xa);
Gotoxy(25,11);write('Nilai t awal perhitungan, ta = '); readln(ta);
Gotoxy(25,13);write('Jumlah interval, N = '); readln(N);
clrscr;

{Proses membuat tampilan solusi}


gotoxy(18,2); writeln('Solusi Persamaan Differensial dx(t)/dt =
-2x(t)');
gotoxy(23,3); writeln('Dengan x(0) = ‘,xa,’; ta = ‘,ta,’; dan N = ',N);
gotoxy(18,4); writeln('==============================================');
gotoxy(8,6); writeln('t');
gotoxy(5,7); writeln('=======');
gotoxy(15,6); writeln(' x(t) (metode A)');
gotoxy(15,7); writeln('===================');
gotoxy(37,6); writeln(' x(t) (metode B)');
gotoxy(37,7); writeln('===================');
gotoxy(60,6); writeln(' x(t) analitik');
gotoxy(60,7); writeln('===================');
Meylanie Olivya P270020900
2
{Proses inisialisasi}
xb := xa; {xa untuk metode A, dan xb untuk metode B}
dt := ta/N; {nilai ∆t awal}
e := 1e-2; {nilai }
s:=8;
{Proses mencari solusi}
while t < ta do
begin
if dt<e then dt:=ta/N; {Jika ∆t < e maka ∆t kembali ke nilai awal}
t := t + dt;
an := 10 * exp(-2*t); {Solusi analitik}

{Metode A : Metode Numerik order pertama}


xa := xa + (dt * (-2) * xa);

{Metode B : Metode Numerik order kedua}


Edx := (-2) * (xb + (dt * (-2) * xb));
xb := xb + ((0.5) * (dt) * ((-2) * xb + Edx));

{Estimasi error untuk penentuan step-size}


err := abs(xb-xa);
if err > e then dt := dt/5 {angka 5 adalah nilai n}
else dt := 2 * dt;

{Output solusi}
gotoxy(6,s); writeln(t:2:3);
gotoxy(22,s); writeln(xa:2:3);{output solusi numerik order pertama}
gotoxy(44,s); writeln(xb:2:3);{output solusi numerik order kedua}
gotoxy(66,s); writeln(an:2:3);{output solusi analitik}
s := s + 1;
readkey;
end;
end.

Tampilan program untuk memasukkan nilai awal ditunjukkan pada gambar 1. Tampilan
awal adalah proses meminta input dari user. Input tersebut adalah nilai x pada saat t=0
(x(0)), nilai t awal perhitungan (ta), dan jumlah interval (N).

Gambar 1. Tampilan program untuk memasukkan input

Sedangkan tampilan output ditunjukkan pada Gambar 2, dimana digunakan t awal = 1,


dan N = 10. Sehingga diperoleh solusi persamaan differensial dengan metode numerik
order pertama dan metode numerik order kedua. Sebagai perbandingan, hasil solusi
Meylanie Olivya P270020900
2
persamaan differensial dengan metode analitik juga ditampilkan. Tampak pada Gambar
2, solusi yang diberikan oleh metode B (Order Kedua) lebih mendekati nilai sebenarnya
(hasil analitik) dibandingkan dengan solusi metode A (Order Pertama).

Gambar 2. Tampilan output program untuk dx(t)/dt=-2x(t), dengan t awal=1, N=10

Kemudian program diujicoba dengan jumlah interval yang lebih besar yaitu, N = 50.
Diperoleh solusi yang ditunjukkan pada gambar 3. Tampak bahwa dengan
memperbanyak jumlah interval, solusi numerik yang diperoleh akan lebih mendekati
nilai sebenarnya (solusi analitik).

Gambar 3. Tampilan output program untuk dx(t)/dt=-2x(t), dengan t awal=1, N=50

Bagian II : Mencari Solusi Vc(t) dan i(t) Rangkaian Pelepasan Muatan Kapasitor C

Rangkaian pelepasan muatan kapasitor adalah sebagai berikut :


Meylanie Olivya P270020900
2

Vc(t)
Pada saat t = 0, saklar S ditutup dengan keadaan awal adalah V C (0) = 1 Volt dan i (0) = 0
A. Arus pada kapasitor adalah
dVc (t )
i ( t )=C (3)
dt
sehingga
dVc( t) 1
= i(t) (A)
dt C

Dengan menggunakan hukum Kirchoff untuk tegangan, diperoleh


di(t)
Ri ( t )+ L + V C ( t )=0 (4)
dt
sehingga
di(t) −1 R
= V (t )− i(t ) (B)
dt L C L

Persamaan (A) dan (B) akan digunakan dalam pencarian solusi V C(t) dan i(t) dengan
menggunakan program yang dihasilkan pada Bagian 1. Solusi V C(t) dapat diperoleh dari
persamaan (A), sedangkan solusi i(t) dari persamaan (B).
Nilai R, L dan C diambil dari angka-angka bukan nol pada tanggal lahir 3-5-1982.
 Nilai C diambil dari yang terkecil, yaitu 1, sehingga C = 1 farad
 Nilai L diambil dari yang terbesar, yaitu 9, sehingga L = 9 Henry
 Nilai R diambil yang ditengah, dan diamati untuk 3 kasus :
1) R = 8 Ohm
2) 0,01R = 0,08 Ohm
3) 100R = 800 Ohm
Program untuk mencari solusi i(t) dan V c(t) pada rangkaian pemuatan kapasitor dengan
metode numerik tidak begitu berbeda dengan program pertama, perbedaannya
terdapat pada persamaan differensialnya.
1. Kasus I, R = 8 Ohm
Jika persamaan (3) diturunkan, diperoleh :
Meylanie Olivya P270020900
2

di (t) d 2 V c (t )
=C (5)
dt dt2
Dengan mensubstitusi R = 8 Ohm, L = 9 Henry, C = 1 farad, pers.(3), dan pers.(5)
pada pers.(4), diperoleh :

d 2 V C (t ) d V C (t )
9 +8 +V C ( t )=0 (6)
dt2 dt
Jika

V C ( t ) =A e st (7)
Maka pers.(6) menjadi

9 s2 A e st +8 sA e st + A e st =0
A e st ( 9 s2 +8 s +1 )=0
dimana diperoleh akar-akar real (overdamped) :
−8+ √ 28 −8−√ 28
s1= dan s2=
18 18
sehingga

V C ( t ) =A 1 es t + A 2 es t
1 2
(8)

Jika VC(0) = 1 V, dan i(0) = 0 A disubstitusi pada pers.(8), diperoleh


1
A 2=
A1=1−A 2 dan s2
1−
s1
Sehingga program untuk kasus I dalam bahasa Pascal adalah sbb.

Program
Solusi_numerik_pelepasan_muatan_kapasitor_rangkaian_RLC;

{Definisi Variabel: }
var ia,ib,Edx,va,vb,t,dt,ta,N,e,err,dia,dib : real;
s1,s2,A1,A2,i,v : real;
j : byte;

{Rincian Program: }
begin

{Proses input/permintaan data}


clrscr;
Gotoxy(33,5);writeln('Masukkan Data :');
Gotoxy(24,6);writeln('==================================');
Gotoxy(25,9);write('Nilai i pada saat t=0, i(0) = ');readln(ia);
Meylanie Olivya P270020900
2
Gotoxy(25,11);write('Nilai v pada saat t=0, v(0) = ');readln(va);
Gotoxy(25,13);write('Nilai t awal perhitungan,ta = ');readln(ta);
Gotoxy(25,15);write('Jumlah interval, N = '); readln(N);

{Proses inisialisasi}
ib:=ia; vb:=va; e:=1e-2; dt:=ta/N;
s1:=(-8+sqrt(28))/18; s2:=(-8-sqrt(28))/18; {nilai s1 dan s2}
A2:=1/(1-s2/s1); A1:=1-A2; {nilai A1 dan A2}
i:=4; j:=10;

{Proses mencari solusi}


while ta > t do
begin
if dt < e then dt := ta/N;
t := t + dt;
v :=
{Metode Euler Order pertama}
dia := (-1)*(1/9)*va - (8/9)*ia;
ia := ia + (dt * dia); {nilai i(t)}
va := va + (dt * ia); {nilai VC(t)}
{Metode Euler Order kedua}
dib := (-1)*(1/9)*vb - (8/9)*ib; {angka 8 adalah nilai R,
nilai inilah yang akan diubah pada kasus II dan III}
Edx := (-1)*(1/9)*vb - (8/9)*(ib + dt * dib);
ib := ib + (1/2)*(dt)*(dib + Edx); {nilai i(t)}
vb := vb + ((0.5) * (dt) * (2*ib)); {nilai VC(t)}

{Estimasi error untuk penentuan step-size}


err := abs(vb-va);
if err > e then dt := dt/5
else dt := 2 * dt;

{Output Solusi}
gotoxy(i,j); writeln(t:2:3);
gotoxy(i+12,j); writeln(ia:2:3);
gotoxy(i+22,j); writeln(va:2:3);
gotoxy(i+35,j); writeln(ib:2:3);
gotoxy(i+45,j); writeln(vb:2:3);
j:=j+1;
readkey;
end;
end.

Output program dimana t awal = 10 dan N = 50 ditunjukkan pada gambar berikut.


Meylanie Olivya P270020900
2

Gambar 3. Solusi numerik untuk R = 8 Ohm, dengan ta=10 dan N=50

Dari gambar 3, tampak bahwa ketika nilai i(t) (Metode A dan B) meningkat, nilai
tegangan pada kapasitor, VC(t), menurun. Sesuai dengan nama rangkaiannya yaitu
rangkaian pelepasan muatan kapasitor, dimana Q = C.V dengan C = 1 farad (konstan),
maka muatan dalam kapasitor akan bergantung pada nilai V, sehingga muatan akan
terus menurun sampai pada waktu tertentu ketika nilai tegangan pada kapasitor = 0
Volt.
2. Kasus II, R = 0.08 Ohm

3. Kasus III, R = 800 Ohm


1. Untuk kasus II, dimana R = 0.08 Ohm; ta = 10; dan N = 100
Meylanie Olivya P270020900
2

Gambar 4. Solusi numerik untuk R = 0.08 Ohm, dengan ta=10 dan N=100

Berbeda dengan kasus 1, tegangan pada kapasitor untuk kasus 2 lebih cepat mengalami
penurunan. Sehingga dengan t awal dan N yang sama, gambar 4 menunjukkan bahwa
pada 3.1 < t < 6.3 detik, muatan pada kapasitor = 0.

2. Untuk kasus III, dimana R = 800 Ohm; ta = 10; dan N = 100


Meylanie Olivya P270020900
2
Gambar 5. Solusi numerik untuk R = 800 Ohm, dengan ta=10 dan N=100

Output yang dihasilkan ternyata tidak sesuai dengan yang diinginkan, sehingga program
diujicoba untuk ta = 1 dan N = 100. Output programnya adalah :

Gambar 6. Solusi numerik untuk R = 800 Ohm, dengan ta=1 dan N=100

Seperti halnya pada gambar 5, output program yang dihasilkan pada gambar 6 tidak
sesuai dengan yang diinginkan, dimana nilai tegangan tidak mengalami penurunan. Hal
ini disebabkan, pada kenyataannya nilai resistor yang terlalu besar menyebabkan arus
tidak dapat melaluinya

You might also like