Kamis, 06 Oktober 2011

Tugas Final

METODE EULER
Metode Numerik Orde I atau XA(∆t)
X_A (∆t)= x(t+∆t)=x(t)+∆t((dx(t))/dt)+Error (1)
mulai pada t = 0, dihitung x(0+∆t)=x(0)+∆t f{t,x(0)} dan seterusnya…
Metode Numerik Orde II atau XB(∆t)
X_B (∆t)= x(t+∆t)=x(t)+∆t((dx(t))/dt)+(1/2) 〖(∆t)〗^2 ((d^2 x(t))/〖dt〗^2 )+Error (2)
Jika : x^' (t)=(dx(t))/dt dan x^'' (t)=(d^2 x(t))/〖dt〗^2 , maka x(t+∆t)=x(t)+∆t[x^' (t) ]+(1/2) 〖(∆t)〗^2 [x^'' (t)]
Setelah di olah, maka persamaan numerik orde II menjadi :
x(t+∆t)=x(t)+1/2 ∆t[x^' (t)+Ex^' (t+∆t) ] (3)
Dengan :
estimasi x(t+∆t) ∶ Ex(t+∆t)=x(t)+∆t[x^' (t)]
estimasi x'(t+∆t) ∶ Ex'(t+∆t)=f{t+∆t,Ex(t+∆t)}
Estimasi Error : E_est=|X_B (∆t)-X_A (∆t)| (4)

Contoh kasus : soal yang dikelas :
(dx(t))/dt=x^' (t)=f{t,x(t) }= -2 x(t) ,x(0)=10
Solusi menggunakan Metode Numerik Deret Euler Orde I atau XA(∆t)

X_A (∆t)= x(t+∆t)=x(t)+∆t((dx(t))/dt)
Misalnya Δt = 0.05 , ε = 0.000001
Pada t=0 :
t=0∶ x(∆t) =x(0)+∆t(dx(0)/dt)
=x(0)+∆t(-2*x(0))
=10+0.05(-2*10)
x(0.05)=9
t=0.05∶ x(∆t) =x(0.05)+∆t(dx(0.05)/dt)
=9+0.05(-2*9)
x(0.1)=8.1
t = 0.1 : ………………….dan seterusnya

Solusi menggunakan Metode Numerik Deret Euler Orde II atau XB(∆t)
x(t+∆t)=x(t)+1/2 ∆t[x^' (t)+Ex^' (t+∆t) ]
t=0∶ x^' (0) =-2*10=-20
Ex(0+∆t) =x(0)+∆t[x^' (0) ]= 10+(0.05)*(-20)= 9
Ex^' (0+∆t)=-2*Ex(∆t)= -2*9= -18
x(t+∆t)=10+1/2 0.05[-20+(-18) ]
x(0.05)=9.05
t=0.05∶ x^' (0.05) =-2*9.05=-18.1
Ex(0.05+∆t) =x(0.05)+∆t[x^' (0.05) ]= 9.05+(0.05)*(-18.1)= 8.145 Ex^' (0.05+∆t)=-2*Ex(0.05+∆t)= -2*8.145= -16.29
x(t+∆t)=9.05+1/2 0.05[-18.1+(-16.29) ]
x(0.1)=8.19025
t = 0.1 : ………………….dan seterusnya

Estimasi Error :
E_est=|X_B (∆t)-X_A (∆t)|
t = 0 : Eest = | 9.05 – 9 | = 0.05
t = 0.05 : Eest = | 8.19025 – 8.1 | = 0.09025
t = 0.1 : ………………….dan seterusnya

Langkah selanjutnya adalah membandingkan nilai estimasi error dengan nilai batas toleransi sampai didapatkan Eest ≤ ε .

Langkah-langkah program :
Input Variabel ---> Proses perhitungan ----> Membandingkan hasil orde 1 dan orde 2 ----> Jika Nilai (estimasi<=toleransi) bernilai TRUE, program berhenti. Kode program pascal untuk penyelesaian kasus : program NumerikOrder_1_2; {$APPTYPE CONSOLE} uses SysUtils; var no, i, interval :integer; t, toleransi, delta, Estimasi:real; O1xt, O1x1t, Orde1 : real; O2xt, O2x1t, Ex, Ex1, Orde2 : real; S : String; procedure inisialisasi; begin Writeln (''); writeln (' Metode Numerik : Solusi Persamaan Differensial '); writeln (' (c) pohny : P2700210066 '); Writeln (''); Write ('Input nilai TOLERANSI = '); Readln(toleransi); Write ('Input nilai DELTA = '); Readln(delta); Write ('Input nilai INTERVAL AWAL = '); Readln(interval); t:=-(delta); O1xt:=10; O2xt:=10; no:=0; writeln ('|-------------------------------------------------------------------------|'); writeln ('| langkah t | Order 1 (Xa)| Order 2 (Xb) | E est | E est <= Toleransi |'); writeln ('|-------------------------------------------------------------------------|'); end; procedure hitung; begin for i:=0 to interval do begin no:=no+1; t:= t + delta; // nilai t O1x1t := -2*O1xt; // Awal Orde 1 -------------------->
Orde1 := O1xt + (delta * O1x1t); // Akhir Orde I ------------------->

O2x1t := -2*O2xt; // Awal Orde II ------------------->
Ex := O2xt + (delta * O2x1t);
Ex1 := -2 * Ex;
Orde2 := O2xt + (0.5) * delta * (O2x1t + Ex1); // Akhir Orde II ------>

Estimasi := ABS(Orde2-Orde1);
if (Estimasi <= Toleransi) then S:=('True') else S:=('False'); writeln (' ', no-1:4, ' ', t:4:2,' ',Orde1:8:8,' ',Orde2:8:8,' ',Estimasi:8:8,' ',S); O1xt := Orde1; O2xt := Orde2; if (S='True') then begin Writeln('Nilai ESTIMASI <= TOLERANSI pada langkah ke ',no-1); break; end; end; end; begin inisialisasi; hitung; if (S='False') then begin Writeln('Nilai ESTIMASI <= TOLERANSI belum ditemukan... !!!'); Writeln('Menambah nilai INTERVAL secara OTOMATIS'); repeat hitung until S='True'; end; readln; end. Gambar eksekusi program Lanjutan.. Kasus 2 : Rangkaian Seri RLC Pelepasan muatan kapasitor, pada t=0, saklar S ditutup, sehingga vi(t) = 0, t ≥ 0 dan diketahui kondisi awal Vc (0) = 1 volt, i(0) = 0 ampere Tanggal kelahiran : 28-11-1981. Hal ini berarti nilai komponen RLC adalah: R = 8 Ohm, L = 9 Henry, C = 1 Farad Solusi mencari i(t): Hukum Kirchoff II / Kirchoff’s Voltage Law (KVL) Jumlah tegangan pada suatu lintasan tertutup samadengan nol, atau penjumlahan tegangan pada masing-masing komponen penyusunnya yang membentuk satu lintasan tertutup akan bernilai samadengan nol. Secara matematis : Vloop = 0 ::. dapat ditulis menjadi VR + VL +VC = 0 Persamaan dasar : V_R=Ri(t) , V_L=L (di(t))/dt , V_c=1/C ∫▒〖i(t) dt ,dan (〖dV〗_c (t))/dt=1/C i(t) 〗 dengan kondisi awal Vc(0) = 1, maka persamaan menjadi : Ri(t)+L di(t)/dt+V_c (t)=0 (5) Persamaan (5) dapat ditulis menjadi : (di(t))/dt+R/L i(t)+V_c (t)=0 (6) (di(t))/dt=-R/L i(t)-1/L Vc(t) Persamaan Orde I (7) (d^2 i(t))/(dt^2 )=-R/L (di(t))/dt-1/L (〖dV〗_c (t))/dt Persamaan Orde II (8) Diketahui bahwa (〖dV〗_c (t))/dt=1/C i(t), maka persamaan (8) menjadi : (d^2 i(t))/(dt^2 )=-R/L (di(t))/dt-1/LC i(t) Persamaan Orde II (9) Pada persamaan (7), untuk t = 0, i(0) = 0, dan Vc(0) = 1, maka (di(0))/dt=-R/L i(0)-1/L Vc(0) (10) di(0)/dt=-1/L= -1/9= -0,1111 (10.a) Untuk mendapatkan persamaan arusnya, terlebih dahulu dihitung 0 dan α rangkaian seri RLC tersebut dengan nilai R = 8 Ohm , L = 9 Henry , C = 1 Farad ω_0=1/√LC= 1/√9.1=0,3333 α= R/2L= 8/2.9=0,4444 Karena α > ω_0, maka respon terlalu teredam (overdamped), sehingga persamaan arusnya adalah:
i(t)= A_1 e^(s_1 t)+A_2 e^(s_2 t) (11)
Dengan s1 dan s2 adalah :
s_1=-α+√(α^2-ω_0^2 )=-0,4444+√(〖0,4444〗^2-〖0,3333〗^2 )=-0,1504
s_2=-α-√(α^2-ω_0^2 )=-0,4444-√(〖0,4444〗^2-〖0,3333〗^2 )=-0,7383
Dengan memasukkan nilai s1 dan s2 , maka didapatkan persamaan arus :
i(t)= A e^(-0,1504 t)+B e^(-0,7383t) ampere (11.a)
Untuk t = 0 dan i(0)=0,
i(0)= A e^0+B e^0 ampere
0 = A + B
A = - B

Untuk mendapatkan nilai A1 dan A2, Pers. (11.a) dideferensialkan, menjadi :
di(t)/dt=(-0,1504 A e^(- 0,1504 t) )+(- 0,7383B e^(- 0,7383t) )
untuk t = 0, dan di(0)/dt=-0,1111 ; lihat persamaan (10.a), maka :
di(0)/dt=(- 0,1504A e^0 )+(- 0,7383B e^0 )
Karena A = -B, maka B = -A, maka perubahan variable mengubah notasi menjadi penjumlahan.
-0,1111=-0,1504 A+0,7383 A=0,5 A
A=(-0,1111)/0,5=-0,222
Karena A = - B, maka :
A= -0,222 dan B=0,222
Dengan memasukkan nilai A dan B ke persamaan (11.a), maka persamaan arusnya menjadi :
i(t)=-0,222 e^(- 0,1504 t)+0,222 e^(- 0,7383 t) ampere (11.b)

i(t)= 0,222 (e^(- 0,1504 t)- e^(- 0,7383 t) ) ampere (12)


-Solusi untuk mencari Vc(t)
V_c (t)=1/c ∫▒〖i(t) dt〗

=1/1 ∫▒〖0,222(e^(- 0,1504 t)- e^(- 0,7383 t) ) 〗 dt

=0,222(∫▒〖e^(- 0,1504 t) dt-〗 ∫▒e^(- 0,7383 t) dt )

Catatan : Berdasarkan tabel integral :
∫▒e^kx dx= e^kx/k
Maka persamaan Vc(t) menjadi :
V_c (t)=0,222(e^(- 0,1504 t)/(- 0,1504)-e^(-0,7383 t)/(- 0,7383 ) ) (13)
Berikut Listing Program Mencari nilai vc(t) dan i(t) Analitik :
program Vct_It_Analitik;

{$APPTYPE CONSOLE}
uses
SysUtils;

var
t : integer;
n : integer;
Time,VC,Arus : array [0..1000] of real;
step:integer;

begin
n:=600;
step:=0;
Writeln(' pohny : P2700210066');
Writeln('-----------------------------------------------------');
Writeln(' Nilai Vc(t) dan I(t) Analitik ');
Writeln(' Untuk R = 8 Ohm, L = 9 Henry, C = 1 Farad');
Writeln(' Redaman : OVERDUMPED');
Writeln('-----------------------------------------------------');
Writeln(' step t Vc(t) Analitik i(t) Analitik ');
Writeln('-----------------------------------------------------');
for t:=1 to n do
begin
step:=step+1;
Time[t]:=(t-1)*0.2;
Arus[t]:=0.222 *(exp(-0.1504*Time[t])-exp(-0.7383*Time[t]));
VC[t]:=0.222 *((exp(-0.1504*Time[t])/-0.1504)-(exp(-0.7383*Time[t])/-
0.7383));
Writeln(' ',step,' ',Time[t]:4:2,' ',VC[t]:9:9,' ',Arus[t]:9:9);
end;
readln;
end.













Catatan: Nilai i(t) bernilai positif artinya arah arusnya tidak terbalik





















































----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SOLUSI NUMERIK : METODE EULER
Persamaan differensial yang digunakan:
∴ (dV_c (t))/dt=1/C i(t) dt ∴ (d^2 V_c (t))/dt=1/C di(t)/dt
∴ (di(t))/dt=-R/L i(t)-1/L V_c (t) ∴ (d^2 i(t))/dt=-R/L (di(t))/dt- 1/L (dV_c (t))/dt
Dengan kondisi awal :〖 V〗_c (0)=1 Volt dan i(0)=0 Ampere dan R = 8 Ohm ; L = 9 H ; C = 1 F
Metode Numerik Orde I ; IA(∆t) dan VA(∆t)
I_A (∆t)= i(t+∆t)=i(t)+∆t((di(t))/dt) (14)
V_A (∆t)= V_c (t+∆t)=V_c (t)+∆t((dV_c (t))/dt) (15)
Metode Numerik Orde II atau IB(∆t) dan VB(∆t)
I_B (∆t)= i(t+∆t)=i(t)+∆t [-R/L i(t)-1/L V_c (t)]+1/2 〖∆t〗^2 [-R/L (-R/L i(t)-1/L V_c (t))-1/L (1/C i(t)) ] 16)
V_B (∆t)= V_c (t+∆t)=V_c (t)+∆t[ 1/C i(t)]+1/2 〖∆t〗^2 [ 1/C (-R/L i(t) - 1/L 〖 V〗_c (t)) ] (17)
Estimasi Error : E_( I est)=|I_B (∆t)-I_A (∆t)| dan E_( V_c est)=|V_B (∆t)-V_A (∆t)| (18)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Solusi menggunakan Metode Numerik Deret Euler Orde I

Misalnya Δt = 0.05
t=0 t=0
i(0+0,05)=i(0)+∆t(di(0)/dt)
=i(0)+∆t(-8/9 i(0)-1/9 V_c (0) )
=0+0,05(-8/9.0-1/9.1)
i(0,05)=-0,061111111 V_c (0+0,05) =V_c (0)+∆t((dV_c (0))/dt)
=V_c (0)+∆t(1/C i(0) )
=1+0,05(1/9.0)
V_c (0,05)=1
t=0,05 t=0,05
i(∆t) =i(0,05)+∆t(-8/9 i(0,05)-1/9 V_c (0,05) )
=-0,0611+0,05(-8/9.(-0,0611)-1/9.1)
i(0,1)=-0,00063 V_c (∆t) =V_c (0,05)+∆t(1/C i(0) )
=1+0,05(1/9.(-0,061111111))
〖 V〗_c (0,1)= 0,999660528
t = 0,1 : ………………….dan seterusnya






Solusi menggunakan Metode Numerik Deret Euler Orde II

Misalnya Δt = 0.05 , ε = 0.0001
t=0
i(0+0,05)=i(0)+∆t[-8/9-1/9 V_c (0)]+1/2 〖∆t〗^2 [-8/9 (-8/9 i(0)-1/L V_c (0))-1/9 (1/1 V_c (0)) ]
=i(0)+0,05[-8/9-1/9.1]+1/2 〖0,05〗^2 [-8/9 (-8/9.0-1/L.1)-1/9 (1/1.1) ]
i(0,05)=0,03886
V_c (0+0,05) =V_c (0)+∆t(1/1 i(0))+1/2 〖∆t〗^2 [1/1 (-8/9 i(0) - 1/9 〖 V〗_c (0)) ]
=1+0,05(1/1.0)+1/2 〖0,05〗^2 [1/1 (-8/9.0 - 1/9.1) ]
V_c (0,05)=0,999861125
t=0,05
i(0,05+0,05)=i(0,05)+∆t[-8/9-1/9 V_c (0,05)]+1/2 〖∆t〗^2 [-8/9 (-8/9 i(0,05)-1/L V_c (0,05))-1/9 (1/1 V_c (0,05)) ]
=0,03886+0,05[-8/9-1/9.0,99986]+1/2 〖0,05〗^2 [-8/9 (-8/9.0,03886-1/L.0,99986)-1/9 (1/1.0,99986) ]
i(0,1)=-0,011138444
V_c (0,05+0,05) =V_c (0,05)+∆t(1/1 i(0,05))+1/2 〖∆t〗^2 [1/1 (-8/9 i(0,05) - 1/9 〖 V〗_c (0,05)) ]
=1+0,05(1/1.0)+1/2 〖0,05〗^2 [1/1 (-8/9.0 - 1/9.1) ]
V_c (0,1)=0,999861125
….dan seterusnya….

Estimasi Error : E_( I est)=|I_B (∆t)-I_A (∆t)| dan E_( V_c est)=|V_B (∆t)-V_A (∆t)| (18)
t=0 t=0
Ei est = |0,038861- ( - 0,061111111)| = 0,099972111 E Vc est = |0,999861125-1| =0,000138875
t=0,05 t=0,05
Ei est = | - 0,011138444 - (-0,00063)| = -0,010508444 E Vc est = |0,999861125-0,999660528|=0,000200597
….dan seterusnya….sampai didapatkan nilai Estimasi ≤ Toleransi

Kode Program untuk menyelesaikan pelepasan muatan Kapasitor pada Rangkaian RLC Seri
program RLC_Euler_Order_2;
{$APPTYPE CONSOLE}
uses
SysUtils;

var
no, i, interval :integer; t, toleransi, delta:real; Est_it,Est_Vct : real;
S : String; R,L,C : real; it,vct,dit,itOrde1,dVct,VctOrde1:real;
it2,vct2,itOrde2,VctOrde2:real;

procedure tanya; //------------
begin
Writeln ('');
writeln (' Metode Numerik : Solusi Persamaan Differensial ');
writeln (' (c) pohny : P2700210066 ');
Writeln ('');
Writeln ('');
Write ('Input nilai TOLERANSI = '); Readln(toleransi);
Write ('Input nilai DELTA = '); Readln(delta);
Write ('Input nilai JUMLAH LANGKAH = '); Readln(interval);
Write ('Input nilai R = '); Readln(R);
Write ('Input nilai L = '); Readln(L);
Write ('Input nilai C = '); Readln(C);
t:=-(delta); no:=0;

writeln ('|----------------------------------------------------------------|');
writeln ('|langkah t |i(t)Order 1 | i(t) Order 2 | Vc(t) Orde 1 | Vc(t) Orde 2 | Ei(t) est | E Vc(t) est | E est <= Toleransi |'); writeln ('|---------------------------------------------------------------|'); end;//--------------- procedure hitung; //----------------------------- begin it:=0; Vct:=1; it2:=0; Vct2:=1; for i:=0 to interval do begin no:=no+1; t:= t + delta; // nilai t dit := ((-R/L)*it)-((1/L)*Vct); // Awal Orde 1 ------------------------>
itOrde1:=it+(delta*dit);
dVct:=(1/C)*it;
VctOrde1:=vct+(delta*dVct); // Akhir Orde I ----------------------------->
itOrde2:=itOrde1+0.5*(delta*delta)*(((-R/L)*dit)-((1/L)*dVct)); // ------> Awal Orde II
VctOrde2:=VctOrde1+0.5*(delta*delta)*((1/C)*dit); // Akhir Orde II ------>
Est_it := ABS(itOrde2-itOrde1); //----------> Estimasi
Est_Vct:= ABS(VctOrde2-VctOrde1);
if (Est_it <= Toleransi) OR (Est_Vct <= Toleransi) then S:=('True')else S:=('False');

writeln (' ', no-1:4, ' ', t:4:2,' ',itOrde1:9:9,' ',itOrde2:9:9,' ',
VctOrde1:9:9,' ',VctOrde2:9:9,' ',Est_it:9:9,' ',Est_Vct:9:9,' ',S);
it := itOrde1; vct:=VctOrde1; it2:= itOrde2; vct2:=VctOrde2;
if (S='True') then
begin
Writeln('Nilai ESTIMASI i(t) atau ESTIMASI Vc(t) <= TOLERANSI pada langkah ke ',no-1);
break;
end;
end;
end;

begin
tanya;
hitung;

if (S='False') then
begin
Writeln('');
Writeln('Nilai ESTIMASI <= TOLERANSI belum ditemukan... !!!');
Writeln('Menambah JUMLAH LANGKAH secara OTOMATIS');
Writeln('');
repeat hitung until S='True';
end;
readln;
end.






















Untuk Nilai R = 800, L = 9 dan C = 1 , Vc(0)=1, i(0)=0 : dengan cara yang sama seperti diatas didapatkan data analitik sebagai berikut :
t α ω_0 s 1 s 2 A B
0 44,4444444 0,3333333 0,00125002 -88,88763878 0,001249892 -0,001249892

Gambar. Hasil Eksekusi program – Analitik




Untuk Nilai R = 800, L = 9 dan C = 1 , Vc(0)=1, i(0)=0 : dengan merubah variable pada program,didapatkan data numerik sebagai berikut :








Untuk Nilai R = 0,08, L = 9 dan C = 1 , Vc(0)=1, i(0)=0 : dengan cara yang sama seperti diatas TIDAK didapatkan data analitik. Tidak adanya data karena program menjadi error.
Untuk Nilai R = 0,08, L = 9 dan C = 1 , Vc(0)=1, i(0)=0 : dengan merubah variable pada program,didapatkan data numerik sebagai berikut :







oOo Selesai oOo

Tidak ada komentar:

Posting Komentar