Obyčajné differenciálne rovnice/Runge-Kutta páry

From testwiki
Jump to navigation Jump to search

4.2 Vložené Runge-Kutta páry

Riadenie veľkosti kroku je možné aj pri explicitných Runge-Kutta metódach. Na rozdiel od prístupu opísaného v časti 3.2 pre riadenie veľkosti kroku explicitnej Eulerovej metódy sa tu veľkosť kroku pre odhad lokálnej chyby neznižuje na polovicu; namiesto toho sa používajú dve eRKV s rôznymi poradiami konzistencie. S cieľom minimalizovať počet vyhodnotení funkcie pri výpočte medzikrokov kj tieto dve „vložené“ eRKV používajú spoločné body vzorkovania. Na tomto mieste je potrebné uviesť, že podľa zistení o počte krokov a poradí eRKV si metóda vyššieho rádu vyžaduje ďalšie dodatočné medziľahlé body, aby sa dosiahol tento vyšší rád.

Ako vloženú Runge-Kutta dvojicu chápeme dve eRKV so s spoločnými interpolačnými bodmi (a krokmi). Prvá z eRKV má rád konzistencie p a druhá metóda dosahuje rád konzistencie s s s+1,s+2,,m opornými bodmi a ďalšími s+1,s+2,,m opornými bodmi. Váhové vektory týchto dvoch eRKV sa vo všeobecnosti líšia a iteračné špecifikácie (aktualizácie Runge-Kutta) týchto dvoch metód sú eRKV1: ηi+1=ηi+hj=1sbjkjeRKV2: η~i+1=η~i+hj=1sb~jkj+hj=s+1mb~jkj. Kvôli spoločným krokom s sa v oboch metódach používajú vyhodnotenia funkcií k1,ks. Príkladom vloženej dvojice Runge-Kutta je
Fehlenbergova RK dvojica rádov 2 a 3:

k1=f(ti,ηi)   k2=f(ti+h,ηi+hk1)k3=f(ti+h2,ηi+h4k1+h4k2)ηi+1=ηi+h(12k1+12k2)η~i+1=η~i+h(16k1+16k2+23k3).


4.2.1 Regulácia kroku pre Runge-Kutta páry

V nasledujúcom texte sa obmedzíme na prípad q=p+1 a odvodíme vzorec pre riadenie šírky kroku. Nech ηi+1,η~i+1 sú numerické riešenia v ti+1, ktoré sú odvodené z presného riešenia y(ti) namiesto ηi,η~i a metódy majú poradie konzistencie p a p+1. Potom pre lokálne chyby po použití Taylorovho rozšírenia (s Taylorovým zvyškom) platí ε(ti+1,h)=hτ(ti+1,h)=y(ti+1)ηi+1=a(ti)hp+1+𝒪(hp+2)=a(θ1)hp+1,ε~(ti+1,h)=hτ~(ti+1,h)=y(ti+1)η~i+1=b(ti)hp+2+𝒪(hp+3)=b(θ2)hp+2,

wobei θ1,θ2[ti,ti+h]. a(ti)hp+1,b(ti)hp+1 nazývame vedúce členy chyby oboch metód. Sú to členy s najmenšou mocninou h a obsahujú až (p+1)-tú a (p+2)-tú parciálnu deriváciu funkcie f v ti. Po odčítaní týchto dvoch rovníc dostaneme η~i+1ηi+1=a(ti)hp+1+𝒪~(hp+2)hτ(ti+1,h), (4.9)


t. j. lokálnu chybu prvej metódy (eRKV1) možno odhadnúť ako rozdiel medzi dvoma numerickými riešeniami. Vo (4.9) zanedbáme zvyšok 𝒪~.(hp+2) s vyššími mocninami h, získame odhad lokálnej chyby pomocou numerických riešení dvoch vložených eRKV, [1] |ε(ti+1,h)||η~i+1ηi+1| für h0.

Zároveň pre metódu rádu konzistencie p platí |ε(ti+1,h)|Khp+1 s konštantou chyby K=maxtIa(t).


Chybovú konštantu K potom možno vypočítať pre pevnú veľkosť kroku h ako K|ε(ti+1,h)|hp+1|η~i+1ηi+1|hp+1.(4.10)

Tento odhad konštánt chyby je základnou myšlienkou riadenia šírky kroku vo vložených Runge-Kutta metódach.
ALGORITHMUS:

  1. t=ti, zvolíme skúšobnú veľkosť kroku H a toleranciu tol pre lokálnu chybu.
    Vypočítame numerické riešenie v ďalšom kroku ti+H so skúšobnou veľkosťou kroku H:
    • pomocou kroku eRKV1 s veľkosťou kroku H a s krokov: ηi+1H,
    • pomocou kroku eRKV2 s veľkosťou kroku H a m>s krokov: η~i+1H.
  2. Odhadnite konštantu chyby K pomocou (4.10) ako K|η~i+1Hηi+1H|Hp+1.
  1. Vypočítajte optimálnu veľkosť kroku hopt tak, aby lokálna chyba ε(ti,hopt) približne zodpovedala zadanej tolerancii tol, pričom konštanta chyby sa odhaduje podľa vyššie uvedeného: tol|ε(ti,hopt)|Khoptp+1|η~i+1Hηi+1H|Hp+1hoptp+1 hopt(tolK)1p+1<(tol|η~i+1Hηi+1H|)1p+1H. (4.11)
  2. Určte (a uložte) numerické riešenie v ďalšom kroku ti+hopt pomocou veľkosti kroku hopt a metódy eRKV2 rádu p+1: ηi+1:=η~i+1hopt=η~i+hoptj=1mb~jkj.


Ďalšími príkladmi vložených Runge-Kutta metód sú dvojice vzorcov: Dorman & Prince (4., 5. rádu) alebo Bogacki & Shampine (2., 3. rádu), ktoré sú známe ako funkcie Matlabu 'ODE45' a 'ODE23'. Runge-Kutta dvojice sa často implementujú ako metóda typu FSAL (First Same As Last), pričom v každom časovom kroku sa uloží prvé vyhodnotenie funkcie k1 f, pretože to zodpovedá poslednému vyhodnoteniu ks predchádzajúceho kroku, ako je to v nasledujúcej metóde:


Tu platí nasledujúce k4=f(ti+h,ηi+h(29k1+13k2+49k3))η~i+1=η~i+h(29k1+13k2+49k3)  t=ti+1 (Ďalší krok)k1=f(ti+1,ηi+1)=f(ti+h,ηi+h(29k1+13k2+49k3))k4.

  1. Tento odhad predpokladá, že hodnoty η~i=ηi zodpovedajú presnej hodnote v ti, =y(ti). V praxi to tak nie je. Keďže sa však numerické riešenie vyššieho rádu ukladá ako riešenie vo vložených Runge-Kutta metódach a to je bližšie k presnému riešeniu, v praxi sa môže použiť odhad lokálnej chyby pomocou numerických riešení založených na (takmer) presnom riešení η~i.