Diskretisierungsfehler errechnen
-
Hallo zusammen,
ich beschäftige mich im Rahmen meines Studiums momentan mit der numerischen Lösung von Anfangswertproblemen. Dabei bin ich gerade bei der Berechnung des Diskretisierungsfehlers angekommen.
Wie man auf Seite 15 unten sehen kann, wird hier der Diskretisierungsfehler der Trapezmethode berechnet:
http://mo.mathematik.uni-stuttgart.de/kurse/kurs56/kurs56_broschuere.pdf
Ich verstehe jedoch zwei Dinge nicht:
1.) Woher weiß ich, bis zu welchem Grad ich die Taylorentwicklung betreiben muss?
2.) Woher weiß ich, für welche Teile ich eine Taylorentwicklung erstellen muss?Beim Euler-Verfahren wird beispielsweise nur der Term x(tk+1) approximiert und auch nur bis zum zweiten Grad. Bei der Trapezmethode wird auch noch f(xk+1) durch Taylor approximiert.
Danke für die Hilfe
LG, freakC++
-
Du kannst deine Taylorentwicklung soweit treiben wie du lustig bist, nur löschen sich dann die Terme nicht mehr aus.
die zweite Frage versteh ich nicht ganz. Beim (expliziten) Euler verfahren taucht doch garnicht auf.
-
Hey!
Vielen Dank für deine rasche Antwort. Es geht also primär darum, den Term möglichst einfach zu gestalten und muss daher den am besten geeigneten Grad des Taylorpolynom heraussuchen. Ich dachte, dass sich von diesem dann die Ordnung ablesen lässt. Wenn ich den Grad aber beliebig hochtreiben kann, wie passt das zusammen?
Zu meiner zweiten Frage: Mir ist nicht klar, wovon ich überhaupt die Taylorentwicklung machen soll. Beim Euler-Verfahren wird approxomiert. Beim Trapezverfahren jedoch und . Letzteres gibt es natürlich nicht beim expliziten Eulerverfahren. Warum approximimere ich nicht zum Beispiel an?
Vielen Dank
LG, freakC++
-
Prinzipiell, willst du die Ordnung (in ) deines lokalen Diskretisierungsfhelers haben. Also nimm an du machst nur ein Schritt, also:
seien exakt und gegeben.
Den absoluten Fehler den du machst ist also . ergibt sich, aus der Vorschrift für dein numerisches Verfahren:
Der relative Fehler (durch geteilt) ist also
(Oder anders ausgedrückt; wie gut approximiert den Anstieg der glatten Lösung.)Den ganzen Ausdruck kannst du nun Taylorentwickeln (in ) wenn du das möchstest. Sowie ne Potenz übrig bleibt, kannst du aufhören zu entwickeln.
Das wird auch gemacht, so lassen sich die Ordnungsbedingungen für die verschieden Verfahren herleiten.Also nochmal deutlich: oder ist dein Entwicklungspunkt!
-
Alles klar! Danke. Es gibt ja auch noch den globalen Diskretisierungsfehler. Nachdem ich ein bisschen im Internet gestöbert hatte, war mir die grundlegende Idee eigentlich klar. Jetzt soll ich die Fehlerordnung des globalen Diskretisierungsfehler bestimmen. Die des lokalen kenne ich nun.
Auf einmal wird von Lipschitz-Stetigkeit gesprochen etc. Hä? Ich verwende folgende Quelle:
http://institute.unileoben.ac.at/amat/lehrbetrieb/num/vl-skript/skripts05/node86.html
Wie komme ich an die Ordnung des globalen Fehler. Irgendwie blicke ich da nicht durch....
Danke dir!
-
Lipschitz: Es gibt ein festes
Für dich heist das, anschaulich, dein aus deiner Quelle kann nicht senkrecht nach oben gehen. Dass das sinnvoll ist kann man einsehen, denn sonst wäre deine diskrete Lösung unter Umständen nicht beschränkt.
Mal ganz simpel:
Der globale Fehler im Rechenintervall , mit Schritten lässt sich abschätzen durch die Summe aller lokalen Fehler:
x(T) - x\_N \leq \sum\_{k=1}^N [x(t\_k) - x\_k] \leq h \sum_{k=1}^N \left[\frac{x(t\_k) - x\_{t_{k-1}}}{h} - \Phi_k \right]
-
ok, danke Was genau ist dein C? Das habe ich auch schon häufiger gesehen, aber irgendwo wird nirgenswo gesagt, was das ist. Die lokale Fehlerordnung ist ja jetzt genau p. Wenn ich nun den gloablen Fehler als Summe der lokalen Fehler ausrechne, dann ändert sich doch eigentlich gar nicht die Fehlerordnung, oder? Für mich ist nur die Fehlerordnung des globalen Fehlers interessant.
Danke für deine Hilfe!
-
Ach das C ist nur irgendeine generische Konstante (Also eine Zahl die nicht von h abhängt).
Ja richtig, bei linearen Eisnchrittverfahren ist Konsistenzordnung (loaker relativer Fehler) gleich Konvergenzordnung. (vorausgesetzt f ist hübsch :))