Runge–Kutta-menetelmät

**Runge–Kutta-menetelmät** ovat erittäin keskeisiä numeerisen analyysin menetelmiä differentiaaliyhtälöiden ratkaisuun. Menetelmiä kehittivät saksalaiset matemaatikot Carl Runge ja Martin Wilhelm Kutta, joista Kutta julkaisi menetelmän vuonna 1895 artikkelissa Ueber die numerische Auflösung von Differentialgleichungen ja Kutta kehitti tätä edelleen vuonna 1901 julkaisussaan Beitrag zur naherungsweisen Integration von Differentialgleichungen. Runge-Kutta-menetelmille on runsaasti sovelluskohteita muun muassa fysiikan ja tilastotieteen alalla. 

Eräs Runge-Kutta-menetelmien hyvistä puolista on se, ettei sen käyttäminen edellytä funktion derivaatan laskemista. Tästä ominaisuudesta on erityisesti hyötyä ratkaistaessa stokastisia differentiaaliyhtälöitä numeerisesti.  Runge-Kutta-menetelmät ovat myös asymptoottisesti stabiileja eli hyvin pienillä askeleen arvoilla saadaan häiriön kasvu rajattua tietyn rajan alle. Menetelmää käytettäessä tarvitaan tietoa vain funktion edellisestä arvosta, muttei aiemmista. Tämän vuoksi askelpituuden muuttaminen on helppoa. Runge-Kutta-menetelmän huonoja puolia on se, että apuarvoja ei käytetä kovin hyvin hyödyksi, vaikka näihin voikin joissakin tapauksissa perustaa virhearvioita. Menetelmä on myös laskennallisesti melko raskas, koska se vaatii useiden funktion arvojen laskemisen joka kierroksella, mikä voi olla työlästä, erityisesti, jos funktio on monimutkainen.  

## Neljännen kertaluvun Runge–Kutta-menetelmä
### Menetelmän kuvaus
Tunnetuin Runge–Kutta-menetelmistä on neljännen kertaluvun Runge–Kutta, johon viitataan lyhenteellä "RK4" ja hyvin usein pelkkänä "Runge–Kutta-menetelmänä".

Olkoon alkuarvo-ongelmana
:y' = f(t, y(t)),\quad y(t_0) = y_0.

Nyt RK4-menetelmä voidaan kirjoittaa seuraavasti:
:y_{n+1} = y_n + \frac{h}{6}\left(k_1 + 2k_2 + 2k_3 + k_4 \right)
:t_{n+1} = t_n + h,
jossa *h* merkitsee käytettyä aika-askelta ja *y*n+1 on RK4-menetelmän approksimaatio arvosta *y*(*t*n+1) ja
:k_1 = f\left(t_n, y_n\right)
:k_2 = f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_1\right)
:k_3 = f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2\right)
:k_4 = f\left(t_n + h, y_n + hk_3\right)

Kertoimet *k*i ovat tulkittavissa mallinnettavan funktion kulmakertoimiksi välin eri pisteissä. Arvo *k*1 on kulmakerroin välin alkupisteessä, *k*2 on Eulerin menetelmällä laskettu approksimaatio puolivälin kulmakertoimesta, *k*3 samoin käyttäen *k*1:n sijaan *k*2:a laskuissa ja *k*4 on *k*3:a hyödyntäen laskettu kulmakertoimen arvo välin päätepisteessä. Näistä otetaan lopuksi keskiarvo painottaen puolivälin kulmakertoimia.

### Tarkkuus
RK4:n tarkkuus on sen nimen mukaisesti neljättä kertalukua, eli menetelmän virhe on verrannollinen käytetyn aika-askeleen *h* neljänteen potenssiin. Aika-askelta kohti virhe menetelmässä on *h*5, ja koska askelia tarvitaan 1/*h* aikayksikköä kohden, on kokonaisvirhe verrannollinen suureeseen *h*4.

## Low Storage Runge–Kutta -menetelmät
### Taustaa
Neljännen kertaluvun Runge–Kutta-menetelmässä tarvitaan uutta arvoa laskettaessa vanhan arvon lisäksi neljä aputulosta. Tietokoneella mallintaessa tämä tarkoittaa, että muistinkäyttö menetelmällä on viisi kertaa mallinnettavan systeemin koko. Suurissa mallinnuksissa tämä saattaa merkitä hyvinkin suurta kuormaa jopa nykyisten tietokoneiden muistimäärille. Tällaista varten on kehitetty ns. *Low Storage* eli pienen tallennuskapasiteetin Runge–Kutta-menetelmät.

### Kahden muistipaikan Runge–Kutta
Kahta muistipaikkaa käyttävä Runge–Kutta-menetelmä voidaan esittää seuraavassa muodossa. Aluksi asetetaan
:dy^0 = 0 ja y^0 = y_n.
Sitten lasketaan \forall i \in [0,m]
:dy^{i+1} = A_i dy^{i} + hf\left(y^i\right)
:y^{i+1} = y^i + B_i dy^{i+1}
ja lopuksi saadaan
:y_{n+1} = y^m.

Algoritmissa esiintyvä *m* merkitsee vaiheiden määrää ja siitä riippuu myös vakioiden *A*i ja *B*i arvot. Huomataan, että ohjelmakoodina algoritmissa tarvitaan vakioiden lisäksi ainoastaan muuttujat *dy*i ja *y*i. Artikkelissaan  Carpenter ja Kennedy esittelevät vakioiden *A*i ja *B*i johtamista sekä arvot muun muassa viisivaiheiselle kahden muistipaikan neljännen kertaluvun Runge–Kuttalle eli "(5,4) 2N-Storage RK"

## Runge-Kutta-menetelmä tietokoneella

Runge-Kutta-menetelmää voidaan simuloida lähes millä tahansa numeeriseen laskentaan kykenevällä ohjelmalla, jopa Excelillä. Esimerkiksi Matlab-ohjelmassa on valmiita komentoja, joilla voidaan ratkaista differentiaaliyhtälöitä numeerisesti Runge-Kutta-menetelmää käyttäen. 

## Katso myös

*Eulerin menetelmä
*Numeerinen analyysi

## Lähteet

## Kirjallisuutta
*