Kurs:Gewöhnliche Differentialgleichungen/3.2 Schrittweitensteuerung bei Einschrittverfahren

Aus testwiki
Zur Navigation springen Zur Suche springen

Schrittweitensteuerung bei Einschrittverfahren

Die Anpassung der Schrittweite h während der numerischen Berechnung der Lösung spielt eine wichtige Rolle bei den Anfangswertaufgaben, deren rechte Seite eine steile Funktion ist. Wird die Schrittweite in solchen Fällen fest gehalten, wird der numerische Fehler in den Bereichen des steilen Anstiegs von f stark wachsen und das numerische Verfahren versagen. Schrittweitensteuerung ist essenziel auch für die sogenannten steifen Aufgaben mit sehr unterschiedlichen Wachstumsraten der Lösungskomponenten. Die steifen Probleme werden noch später näher studiert. In diesem Abschnitt wird beschrieben, wie man den genauen Ausdruck für den lokalen Fehler eines Verfahrens für die Anpassung der Schrittweite h einsetzen kann. Wir beschränken uns hier auf das explizite Euerverfahren.

Der lokale Fehler beschreibt, welchen Fehler das ESV in jedem einzelnen Berechnungsschritt zulässt, siehe Definition 3.8, oder wie gut die Verfahrensfunktion die rechte Seite der AWA, f(t,y), annähert. Im Fall des expliziten Eulerverfahrens ist der lokaler Fehler, ausgewertet an der Stelle ti τ(ti,h)=y'(ξ),ξ(ti,ti+h),bzw.,τ(ti,h)=y'(ti)+𝒪(h2).(3.16)


Je steiler die Funktion f ist, (je größer f(ti,y(ti))=y(ti)), desto größer wird der lokale Fehler τ(ti,h). Das Ziel der Schrittweitensteuerung ist die Schrittweite an den Verlauf der Funktion f anzupassen, um den lokalen Fehler in jedem Berechnungschritt i=1,Nh1 unter einer gewissen Toleranz zu halten.

Um die passende Schrittweite in jedem Schritt zu finden, müssen wir die numerische Lösung und den zukünftigen Fehler vorab ”abtasten”. Bei explizitem Eulerverfahren bietet sich für diese Abschätzung der Abgleich der numerischen Lösung mit der Lösung mithilfe zweier ,,halber” Euler-Schritte (mit Schritweite h2). Um dies zu erläutern, untersuchen wir zuerst den lokalen Fehler des Eulerverfahrens mit halber Schrittweite: 1. Schritt:ηi+12=ηi+h2f(ti,ηi)),2. Schritt:ηi=ηi+12+h2f(ti+h2,ηi+12)=ηi+h2f(ti,ηi)+h2f(ti+h2,ηi+12).(3.17)


Der lokale Fehler dieses Verfahrens ist zweimal kleiner als der des Eulerfervahrens, denn hτ(ti,h)=ε(ti,h)=y(ti+h)[y(ti)+h2f(ti,y(ti))+h2f(ti+h2,y(ti)+h2f(ti,y(ti)))]=Taylory(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)


vergleiche (3.16). Nach der Definition des lokalen Fehlers ist der lokale Fehler gleich dem Unterschied zwischen der exakten und der numerichen Lösung (berechnet aus exaktem Startwert), ε(ti,h)=y(ti+h)ηi+1, siehe Bemerkung 3.1 Punkt ii). Demnach erhalten wir für das Eulerverahren ηi+1=(3.16)y(ti+h)h22y(ti)+𝒪(h3),

und für das Eulerverfahren mit halber Schrittweite ηi+1=(3.18)y(ti+h)h24y(ti)+𝒪(h3).


Diese Erkenntnis lässt zwei Folgerungen schließen:
a) Der lokale Fehler vom Eulerverfahren lässt sich mithilfe des Unterschiedes der numerischen Lösung mit Schrittweite h und halber Schrittweite vorhersagen, 2(ηi+1ηi+1)=h22y(ti)+𝒪~(h3).(3.19)


b) Mit einer geeigneten Kombination der zwei Lösungen ηi+1,ηi+1 ist es möglich das führende Fehlerglied h22y(ti) zu eliminieren und eine numerische Lösung zweiter Ordnung zu rekonstruieren, denn es gilt 2ηi+1ηi+1=y(ti+h)+𝒪(h3).

Die Gleichung (3.19) ist die Grundlage der Schrittweitenanpassung des Eulerverfahrens. Der lokaler Fehler h22y(ti)+𝒪(h3) lässt sich vorab bestimmen, indem man den Unterschied der numerischen Lösungen mit ganzer und halber Schrittweite 2(ηi+1ηi+1)ε(ti,h) bildet. Die Schrittweite h wird so gewählt, dass der lokaler Fehler die vorher gewählte Toleranz tol nicht überschreitet:


ALGORITMUS: Schrittweitensteuerung

  1. t=ti, wähle eine Probeschrittweite H und die Toleranz tol für den lokalen Fehler.

Berechne die numerische Lösung im nächsten Schritt ti+H:

    • mithilfe eines Schrittes des Eulerverfahrens mit Schrittweite H: ηi+1H,
    • mithilfe von zwei Schritten des Eulerverfahrens mit halber Schrittweite H2:, ηi+1H, siehe (3.17).
  1. Schätze die... führende Fehlerkonstante mittels (3.19), |ε(ti,H)|=2|ηi+1Hηi+1H|γH2, H+γ|ε(ti,H)|H22|ηi+1Hηi+1H|H2.
  2. Wähle die optimale Schrittweite hopt so, dass der lokale Fehler ε(ti,hopt) die vorgegebene Toleranz tol nicht überschreitet: tol|ε(ti,hopt)|γhopt2|ε(ti,H)|H2hopt2 hoptαtol|ε(ti,H)|H=αtol2|ηi+1Hηi+1H|H. Gleichung (3.20) Hier kann der Parameter α gewählt werden, um die optimale Schrittweite zusätzlich noch zu skalieren. In der Praxis wird of α=0.9 angewendet.
  3. Bestimme die numerische Lösung ηi+1 im nächsten Schritt ti+hopt mithilfe der Schrittweite hopt und des Verfahrens zweiter Ordnung, ηi+1:=ηi+1hopt, siehe (3.17).

Dieser Schritt ist optional, man kann hier auch das klassische explizite Eulerverfahren anwenden, allerdings mit Verlust der Genauigkeit (Konsistenzordnung).

Anstelle der Toleranz für den absoluten lokalen Fehler, wird in der Schrittweitensteuerung oft die Toleranz für den relativen Fehler (%) angenommen. In dem Fall wird statt ε(ti,H) er relativer Fehler εrel(ti,H)=ε(ti,H)ηi+1 für die Schrittberechnung benutzt, hoptαtol|εrel(ti,H)|H=αtol.|ηi+1|2|ηi+1Hηi+1H|H.