next up previous contents index
Next: Rubni problem Up: Problem početnog uvjeta (Cauchyjev Previous: Eulerova metoda   Sadržaj   Indeks


Metoda Runge-Kutta

U metodi Runge-Kutta se također računa $ y_{i+1}$ pomoću već poznate vrijednosti $ y_i.$ Taj račun je točniji, jer uzima u obzir i neke međuvrijednosti funkcije $ f.$ Imamo sljedeći algoritam

Algoritam 10   (Metoda Runge-Kutta) Izaberemo dovoljno velik prirodni broj $ n.$ Za zadani korak

$\displaystyle h = \frac{b-a}{n}$

računamo niz brojeva $ (y_n)$ po formuli

$\displaystyle y_{i+1}$ $\displaystyle = y_{i} + \frac{1}{6}\,\left(k_1 + 2\,k_2 + 2\,k_3 + k_4\right),\qquad i=0,1,2,\ldots,n-1,$    

gdje je


$\displaystyle k_1$ $\displaystyle = h\,f(x_i,y_i)$    
$\displaystyle k_2$ $\displaystyle = h\,f\left(x_i + {{\frac{h}{2}}},y_i + {\frac{k_1}{2}}\right)$    
$\displaystyle k_3$ $\displaystyle = h\,f\left(x_i + {{\frac{h}{2}}},y_i + {\frac{k_2}{2}}\right)$    
$\displaystyle k_4$ $\displaystyle = h\,f(x_i + h,y_i + k_3).$    

Početna vrijednost $ y_0$ je određena početnim uvjetom.

Radi bolje preglednosti prilikom računanja se može koristiti sljedeća tabela.

$ i$ $ x_i$ $ y_i$ $ h\,f$  
0 $ x_0=a$ $ y_0$ $ k_1$ $ k_1$
  $ x_0+\frac{h}{2}$ $ y_0+\frac{k_1}{2}$ $ k_2$ $ 2\,k_2$
  $ x_0+\frac{h}{2}$ $ y_0+\frac{k_2}{2}$ $ k_3$ $ 2\,k_3$
  $ x_0+h$ $ y_0+k_3$ $ k_4$ $ k_4$
        % latex2html id marker 40403
$ \frac{1}{6}\,\sum\approx{}y_1-y_0$
$ 1$ $ x_1$ $ y_1$ $ k_1$ $ k_1$
  $ x_1+\frac{h}{2}$ $ y_1+\frac{k_1}{2}$ $ k_2$ $ 2\,k_2$
  $ x_1+\frac{h}{2}$ $ y_1+\frac{k_2}{2}$ $ k_3$ $ 2\,k_3$
  $ x_1+h$ $ y_1+k_3$ $ k_4$ $ k_4$
        % latex2html id marker 40439
$ \frac{1}{6}\,\sum\approx{}y_2-y_1$
$ 2$ $ x_2$ $ y_2$ $ k_1$ $ k_1$
  ... ... ... ...

Mathematica program 7   (Metoda Runge-Kutta)
 
f[x_,y_]=;      (* zadavanje f(x,y), ako je y'=f(x,y) *) 
x=;y=;          (* po\1etni uvjet *) 
h=;             (* korak *) 
rj={{x,y}}; 
br=0;           (* po\1etna vrijednost broja\1a *) 
n=;             (* broj koraka *) 
While[br<n, 
k1=h f[x,y]; 
k2=h f[x+h/2,y+k1/2]; 
k3=h f[x+h/2,y+k2/2]; 
k4=h f[x+h,y+k3]; 
br=br+1; 
x=x+h; 
y=y+(k1+2 k2+2 k3+k4)/6; 
rj=Append[rj,{x,y}]]; 
N[rj,10]        (* ispis rezultata s deset znamenaka *)

Primjer 3.18   Riješiti isti zadatak kao u primjeru 3.17 metodom Runge-Kutta.

Rješenje. Primijenimo li gornji program, koji slijedi algoritam metode Runge-Kutta, dobivamo sljedeće točke grafa rješenja.

$ x_i$ $ y_i$ $ e^{x_i}$
0 $ 1.$ $ 1.$
$ 0.1$ $ 1.105170833$ $ 1.105170918$
$ 0.2$ $ 1.221402571$ $ 1.221402758$
$ 0.3$ $ 1.349858497$ $ 1.349858808$
$ 0.4$ $ 1.49182424$ $ 1.491824698$
$ 0.5$ $ 1.648720639$ $ 1.648721271$
$ 0.6$ $ 1.822117962$ $ 1.8221188$
$ 0.7$ $ 2.013751627$ $ 2.013752707$
$ 0.8$ $ 2.225539563$ $ 2.225540928$
$ 0.9$ $ 2.459601414$ $ 2.459603111$
$ 1.$ $ 2.718279744$ $ 2.718281828$
Odmah možemo uočiti mnogo bolju točnost nego kod metode Eulera.

Postoji cijela familija metoda zasnovanih na ideji da se podsegment podijeli na još manje dijelove kako bi se izračunala vrijednost u sljedećem čvoru. Sve one nose naziv Runge-Kutta metode. Opisani postupak se najčešće upotrebljava.


next up previous contents index
Next: Rubni problem Up: Problem početnog uvjeta (Cauchyjev Previous: Eulerova metoda   Sadržaj   Indeks
2001-10-26