Zweite Ableitung, expected error und absolut error

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Gumiho
User
Beiträge: 8
Registriert: Sonntag 19. April 2020, 15:24

Hallo Liebe Python Community,

ich habe wieder ein Problem beim Programmieren. Ich muss mit der Formel f"(x0) ≈ ( f(x0) − 2f(x0 + h) + f(x0 + 2h)) /h^2 die zweite Ableitung von tan(pi/4) bestimmen. Für die Werte h=1e − 1, 1e − 2, ..., 1e − 9, 1e − 10 einsetzen. Anschließend soll ein Graph gezeichnet werden an der der Unterschied zwischen expected error (O(h))und absolute error für die Werte für h zu sehen sind.

Momentan habe ich diesen Code zusammengestellt:

Code: Alles auswählen

 import math 
import numpy 


x= math.pi/4
fx= math.tan(math.pi/4)
fx2t=0                   #2nd derivative theoretically 

hs= [1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8, 1e-9, 1e-10]

for h in hs:
    fx2= (fx- 2*math.tan((math.pi+h)/4)+ math.tan((math.pi+2*h)/4)) / h**2  #2nd derivative numerically  
    print(fx2)
    
Ich weiß leider nicht weiter wie man den absoluten und den expected error darstellen soll. Ich kenne die Formel des absolute error aus der Mathematik aber nicht wie man den im Code integrieren sollte.

Ich würde mich über eine Antwort freuen.

Viele Grüße
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

numpy wird importiert aber nicht benutzt. Warum definierst Du `x` (eigentlich nach Formel x0`) benutzt es aber nicht. Dann rechnest Du h/4 aus, statt h, oder sowas ähnliches.

Und wie sieht der absolute error aus?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Gumiho: Was ist denn bitte die zweite Ableitung von tan(π/4)? Da ist ja gar keine Variable und das könnte man auch vereinfachen/ausrechnen — tan(π/4) ergibt 1 und die Ableitung dieser Konstante ist 0. Ich nehme mal an Du meinst eigentlich die zweite Ableitung von tan(x₀) an der Stelle x₀=π/4.

Was ist mit „2nd derivative theoretically“ gemeint? Du hast da auch den Kommentar „2nd derivative numerically“ — kann es sein, das Du statt „theoretically“ eigentlich „actually“ meintest? Denn das Gegenteil von einem numerisch errechneten Ergebnis ist ja nicht ein theoretisches Ergebnis, sondern das tatsächliche Ergebnis, ohne die Fehler/Abweichungen die durch die numerische Lösung entstehen.

Was ist das für ein Ausdruck auf der linken Seite der Zuweisung bei `fx2`? Wie kommt der Zustande? Was rechnet der aus? Es ist jedenfalls nicht die zweite Ableitung von tan(x₀) an der Stelle x₀=π/4. Hast Du die mal von Hand ausgerechnet?

Warum schreibst Du die Formel die Du gegeben hast, nicht als erstes einfach mal als Python-Funktion. Damit man, also auch derjenige der Deine Aufgabe am Ende kontrolliert, leicht sehen kann, dass Du das schon mal richtig gemacht hast. Die Funktion braucht mindestens zwei Argumente: `x0` und `h`. Und Du könntest auch `f` als Argument angeben.

Und die kannst Du dann mit den passenden Werten für `f`, `x0`, und `h` aufrufen.

Die `hs` hätte ich übrigens nicht alle hingeschrieben, sondern berechnet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also wenn ich keinen falschen Fehler gemacht habe, müsste der „absolute error“ so aussehen:
Bild
Blöd ist der Aussreisser bei 10⁻⁹, also das ganze noch mal mit dem grossen Abstand zu den anderen ”ausgeschnitten”, damit man mehr Details bei den anderen Punkten sieht:
Bild
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Gumiho
User
Beiträge: 8
Registriert: Sonntag 19. April 2020, 15:24

__blackjack__ hat geschrieben: Donnerstag 11. Juni 2020, 12:38 @Gumiho: Was ist denn bitte die zweite Ableitung von tan(π/4)? Da ist ja gar keine Variable und das könnte man auch vereinfachen/ausrechnen — tan(π/4) ergibt 1 und die Ableitung dieser Konstante ist 0. Ich nehme mal an Du meinst eigentlich die zweite Ableitung von tan(x₀) an der Stelle x₀=π/4.

Was ist mit „2nd derivative theoretically“ gemeint? Du hast da auch den Kommentar „2nd derivative numerically“ — kann es sein, das Du statt „theoretically“ eigentlich „actually“ meintest? Denn das Gegenteil von einem numerisch errechneten Ergebnis ist ja nicht ein theoretisches Ergebnis, sondern das tatsächliche Ergebnis, ohne die Fehler/Abweichungen die durch die numerische Lösung entstehen.

Was ist das für ein Ausdruck auf der linken Seite der Zuweisung bei `fx2`? Wie kommt der Zustande? Was rechnet der aus? Es ist jedenfalls nicht die zweite Ableitung von tan(x₀) an der Stelle x₀=π/4. Hast Du die mal von Hand ausgerechnet?

Warum schreibst Du die Formel die Du gegeben hast, nicht als erstes einfach mal als Python-Funktion. Damit man, also auch derjenige der Deine Aufgabe am Ende kontrolliert, leicht sehen kann, dass Du das schon mal richtig gemacht hast. Die Funktion braucht mindestens zwei Argumente: `x0` und `h`. Und Du könntest auch `f` als Argument angeben.

Und die kannst Du dann mit den passenden Werten für `f`, `x0`, und `h` aufrufen.

Die `hs` hätte ich übrigens nicht alle hingeschrieben, sondern berechnet.
Vielen Dank für deine Antwort. Ich habe anscheinend noch einiges zu tun um die Aufgabe richtig zu lösen, weil mein Code bei Vielen keinen großen Sinn ergibt. Bin gerade auch noch am zusammenbasteln damit ich endlich das gewünschte Ergebnis bekomme.
Antworten