Sprawozdanie
laboratoria Metod Numerycznych 09.05.2011
I. Metoda Heuna:
Opis metody:
Interpretacja geometryczna
$$\int_{\mathbf{t}_{\mathbf{k}}}^{\mathbf{t}_{\mathbf{k + 1}}}{\mathbf{x}\left( \mathbf{t} \right)\mathbf{dt \approx h}\frac{\mathbf{x}\left( \mathbf{t}_{\mathbf{k}} \right)\mathbf{+ x(}\mathbf{t}_{\mathbf{k + 1}}\mathbf{)}}{\mathbf{2}}}$$
Metoda Heuna powstała poprzez ulepszenie metody Rungego Kutty drugiego rzędu(RK2)
2) Implementacja metody :
function x=heun(A,B,fw,fw2,dt,t,x0)
maxit=t/dt;
x=x0;
[m,n]=size(A);
I=eye(m,m);
f1=inline(fw);
f2=inline(fw2);
for i=1:maxit
u1=feval(f1,i*dt)
u2=feval(f2,i*dt)
u=[u1;u2]
p=(I+dt*A)*x+dt*B*u;
x=x+0.5*dt*(A*x+B*u+A*p+B*u);
iter(i)=i;
zmx1(i)=x(1);
zmx2(i)=x(2);
zmx3(i)=x(3);
end;
plot(iter,zmx1,iter,zmx2,iter,zmx3)
3) Dane i wykres:
a) Sprawdzenie sposobu działania metody dla danych :
R1=100
R2=100
C1=100e-6
C2=220e-6
L=1e-3
x0=[0;0;0]
E=[R1*C1 0 L; 0 R2*C2 L; C1 C2 0]
A1=[-1 0 0;0 -1 0; 0 0 1]
B1=[1 0;0 1;0 0]
A=inv(E)*A1
B=inv(E)*B1
fw='10*sin(2*pi*50*t)'
fw2='20*sin(2*pi*50*t)'
dt=1e-5
t=1e-1
b) Otrzymany wykres:
4) Wnioski
Metoda Hauna ma przewagę nad niektórymi metodami np. metodą Eulera(zarówno dokładność i czas) a przy tym są podobnie złożone obliczeniowo
Metoda Heuna jest mniej dokładna niż RK4
II. Metoda Rungego-Kutty (RK4):
1)Opis metody:
(wynika z rozkładu funkcji x do czwartej pochodnej)
Polega na aproksymacji wg. Wzoru
Xk + 1= Xk+W1*k1+W2*k2+ W3*k3+W4*k4
2)Implementacja metody :
function x=rudy(A,B,fw,fw2,dt,t,x0)
maxit=t/dt;
x=x0;
[m,n]=size(A);
I=eye(m,m);
f1=inline(fw);
f2=inline(fw2);
for i=1:maxit
u1=feval(f1,i*dt)
u2=feval(f2,i*dt)
u=[u1;u2]
k1=A*x+B*u;
k2=A*(x+k1*dt/2)+B*u;
k3=A*(x+k2*dt/2)+B*u;
k4=A*(x+k3*dt)+B*u;
x=x+(dt/6)*(k1+k2*2+k3*2+k4);
iter(i)=i;
zmx1(i)=x(1);
zmx2(i)=x(2);
zmx3(i)=x(3);
end;
plot(iter,zmx1,iter,zmx2,iter,zmx3)
3) Dane i wykres:
a)Sprawdzenie sposobu działania metody dla danych :
x0=[0;0;0]
R1=100
R2=100
C1=100e-6
C2=220e-6
L=1e-3
E=[ (R1*C1) 0 L; 0 (R2*C2) L; C1 C2 0]
A1=[-1 0 0;0 -1 0; 0 0 1]
B1= [1 0; 0 1; 0 0]
A=inv(E)*A1
B=inv(E)*B1
fw='10*sin(2*pi*50*t)'
fw2='20*sin(2*pi*50*t)'
dt=1e-5
t=1e-1
d) Otrzymany wykres:
c) Sprawdzenie sposobu działania metody dla danych :
x0=[0;0;0]
R1=100
R2=100
C1=100e-6
C2=220e-6
L=1e-3
E=[ (R1*C1) 0 L; 0 (R2*C2) L; C1 C2 0]
A1=[-1 0 0;0 -1 0; 0 0 1]
B1= [1 0; 0 1; 0 0]
A=inv(E)*A1
B=inv(E)*B1
fw='10*sin(2*pi*50*t)'
fw2='20*sin(2*pi*50*t)'
dt=1e-6
t=1e-1
d) Otrzymany wykres:
4) Wnioski
- Metoda RK4 ma największy rząd i dostajemy dokładniejsze obliczenia w porównaniu do innych metod przy tym samym kroku.
- Jest to metoda która sprawdza się dla małych kroków , dla dużych ( np. dt = 1e-6) obliczenia są strasznie wolne , zmniejszając krok czasowy przyśpieszamy obliczenia.
- Dla dużych kroków metoda Rk4 jest o wiele wolniejsza niż metoda Eulera.
WNIOSEK OGÓLNY
Jeśli zależy nam na dużej dokładności należy wybrać metodę wysokiego rzędu Rungego-Kutty (RK4). Metoda Rk4 jest najlepsza zarówno pod względem szybkości jak i dokładności.
Moim zdaniem jest to najlepsza metoda z dotychczas nam poznanych.