Obyčajné differenciálne rovnice/Kontrola kroku pre jednokrokové metódy

From testwiki
Jump to navigation Jump to search

Kontrola kroku pre jednokrokové metódy

Nastavenie veľkosti kroku h počas numerického výpočtu riešenia zohráva dôležitú úlohu v úlohách s počiatočnou hodnotou, ktorých pravá strana je strmá funkcia. Ak sa v takýchto prípadoch zachová pevná veľkosť kroku, numerická chyba v oblastiach strmého nárastu zf stark wachsen und das numerische Verfahren versagen. Kontrola veľkosti kroku je nevyhnutná aj pre takzvané tuhé problémy s veľmi rozdielnymi rýchlosťami rastu zložiek riešenia. Problémy s tuhosťou sa budú podrobnejšie skúmať neskôr. V tejto časti opisuje, ako použiť presný výraz pre lokálnu chybu metódy na nastavenie veľkosti kroku h. Obmedzíme sa tu na explicitnú Euerovu metódu.

Lokálna chyba opisuje chybu, ktorú ESV pripúšťa v každom jednotlivom kroku výpočtu, pozri definíciu 3.8, alebo ako dobre sa funkcia metódy aproximuje pravej strane AWA, f(t,y). V prípade explicitnej Eulerovej metódy je lokálna chyba, vyhodnotená v bode ti τ(ti,h)=y'(ξ),ξ(ti,ti+h),bzw.,τ(ti,h)=y'(ti)+𝒪(h2).(3.16)


Čím je funkcia f strmšia (čím väčšia f(ti,y(ti))=y(ti)), tým väčšia je lokálna chyba τ(ti,h). Cieľom riadenia veľkosti kroku je prispôsobiť veľkosť kroku priebehu funkcie f tak, aby sa lokálna chyba v každom kroku výpočtu i=1,Nh1 udržala pod určitou toleranciou.

Aby sme našli vhodnú veľkosť kroku v každom kroku, musíme vopred "skenovať" numerické riešenie a budúcu chybu. Pri explicitnej Eulerovej metóde sa tento odhad dá urobiť porovnaním numerického riešenia s riešením pomocou dvoch "polovičných" Eulerových krokov (s veľkosťou kroku h2). Aby sme to vysvetlili, najprv preskúmame lokálnu chybu Eulerovej metódy s polovičnou veľkosťou kroku: 1. krok:ηi+12=ηi+h2f(ti,ηi)),2. Krok: ηi=ηi+12+h2f(ti+h2,ηi+12)=ηi+h2f(ti,ηi)+h2f(ti+h2,ηi+12).(3.17)


Lokálna chyba tejto metódy je dvakrát menšia ako chyba Eulerovho vzorca, pretože hτ(ti,h)=ε(ti,h)=y(ti+h)[y(ti)+h2f(ti))+h2f(ti+h2,y(ti)+h2f(ti,y(ti)))]stackrelTaylor=y(ti)+hy(ti)+h22y(ti)[y(ti)+h2f(ti,y(ti))+h2(f+h2(ft+ffy))(ti,y(ti)))]+𝒪(h3)=h22y(ti)h24(ft+ffy)(ti,y(ti))=y(ti)+𝒪(h3)=h24y(ti)+𝒪(h3),(3.18)


porovnaj (3.16). Podľa definície lokálnej chyby je lokálna chyba rovná rozdielu medzi presným a numerickým riešením (vypočítaným z presnej počiatočnej hodnoty), ε(ti,h)=y(ti+h)ηi+1, pozri poznámku 3.1 bod ii). V súlade s tým pre Eulerovu metódu dostaneme ηi+1=(3.16)y(ti+h)h22y(ti)+𝒪(h3),

a pre Eulerovu metódu s polovičnou veľkosťou kroku ηi+1=(3.18)y(ti+h)h24y(ti)+𝒪(h3).


Toto zistenie vedie k dvom záverom:
a) Lokálnu chybu Eulerovej metódy možno predpovedať pomocou rozdielu numerického riešenia s veľkosťou kroku h a polovičnou veľkosťou kroku, 2(ηi+1ηi+1)=h22y(ti)+𝒪~(h3).(3.19)


b) S vhodnou kombináciou dvoch riešení ηi+1,ηi+1 je možné odstrániť vedúci chybový prvok h22y(ti) a rekonštruovať numerické riešenie druhého rádu, pretože 2ηi+1ηi+1=y(ti+h)+𝒪(h3).

Rovnica (3.19) je základom pre úpravu veľkosti kroku Eulerovej metódy. Lokálnu chybu h22y(ti)+𝒪(h3) možno vopred určiť výpočtom rozdielu medzi numerickými riešeniami s plnou a polovičnou veľkosťou kroku 2(ηi+1ηi+1)ε(ti,h). Veľkosť kroku h sa volí tak, aby lokálna chyba neprekročila predtým zvolenú toleranciu tol:


ALGORITM: Regulácia šírky kroku

  1. t=ti, vyberte veľkosť skúšobného kroku H a toleranciu tol pre lokálnu chybu.

V ďalšom kroku vypočítajte numerické riešenie ti+H:.

    • pomocou jedného kroku Eulerovej metódy s veľkosťou kroku H: ηi+1H,
    • pomocou dvoch krokov Eulerovej metódy s polovičnou veľkosťou kroku H2:, ηi+1H, pozri (3.17).
  1. Odhadnite... vedúca konštanta chyby pomocou (3.19), |ε(ti,H)|=2|ηi+1Hηi+1H|γH2, H+γ|ε(ti,H)|H22|ηi+1Hηi+1H|H2.
  2. Zvoľte optimálnu veľkosť kroku hopt tak, aby lokálna chyba ε(ti,hopt) neprekročila zadanú toleranciu tol: tol|ε(ti,hopt)|γhopt2|ε(ti,H)|H2hopt2 hoptαtol|ε(ti,H)|H=αtol2|ηi+1Hηi+1H|H. Rovnica (3.20) Parameter α sa tu môže zvoliť na dodatočné škálovanie optimálnej veľkosti kroku. V praxi sa často používa α=0,9.
  3. Určite numerické riešenie ηi+1 v ďalšom kroku ti+hopt pomocou veľkosti kroku hopt a metódy druhého rádu, ηi+1:=ηi+1hopt, siehe (3. 17).

Tento krok nie je povinný; možno tu použiť aj klasickú explicitnú Eulerovu metódu, ale so stratou presnosti (poradie konzistencie).

Namiesto tolerancie absolútnej lokálnej chyby sa pri riadení veľkosti kroku často predpokladá tolerancia relatívnej chyby (%). V tomto prípade sa namiesto ε(ti,H) použije relatívna chyba εrel(ti,H)=ε(ti,H)ηi+1 sa používa na výpočet kroku, hoptαtol|εrel(ti,H)|H=αtol.|ηi+1|2|ηi+1Hηi+1H|H.