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 f(xk+1)f(x_{k+1}) 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 x(tk+1)x(t_{k+1}) approxomiert. Beim Trapezverfahren jedoch x(tk+1)x(t_{k+1}) und f(xk+1)f(x_{k+1}). Letzteres gibt es natürlich nicht beim expliziten Eulerverfahren. Warum approximimere ich nicht zum Beispiel x(tk)x(t_{k}) an?

    Vielen Dank
    LG, freakC++



  • Prinzipiell, willst du die Ordnung (in hh) deines lokalen Diskretisierungsfhelers haben. Also nimm an du machst nur ein Schritt, also:

    xk=x(t)\bullet \quad x_k = x(t) seien exakt und gegeben.

    Den absoluten Fehler den du machst ist also x(t+h)xk+1x(t+h) - x_{k+1}. xk+1x_{k+1} ergibt sich, aus der Vorschrift für dein numerisches Verfahren:
    xk+1=xk+hΦ(...)x_{k+1} = x_k + h\Phi(...)
    Der relative Fehler (durch hh geteilt) ist also
    x(t+h)x(t)hΦ(...)\frac{x(t+h)-x(t)}{h}-\Phi(...)
    (Oder anders ausgedrückt; wie gut approximiert Φ\Phi den Anstieg der glatten Lösung.)

    Den ganzen Ausdruck kannst du nun Taylorentwickeln (in hh) wenn du das möchstest. Sowie ne hh 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: tt oder tkt_k 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 LL
    f(t_1)f(t_2)Lt_1t_2,t_1,t_2|f(t\_1) - f(t\_2)| \leq L | t\_1 - t\_2 | , \quad \forall t\_1, t\_2

    Für dich heist das, anschaulich, dein FF 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 (t0,T)(t_0,T), mit NN 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]
    x(T)x_NChNhp,(N(Tt_0)/h)x(T) - x\_N \leq ChNh^p , \quad ( N \approx (T-t\_0) /h )
    x(T)x_NC(Tt_0)hpCneuhpx(T) - x\_N \leq C (T-t\_0) h^p \leq C_{neu}h^p



  • 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 :))


Anmelden zum Antworten