Warum liefert meine Berechnung der Finite-Differenzen-Gewichte für Taylor-Reihen falsche Ergebnisse?Python

Python-Programme
Guest
 Warum liefert meine Berechnung der Finite-Differenzen-Gewichte für Taylor-Reihen falsche Ergebnisse?

Post by Guest »

Ich versuche, die Gewichte für eine Finite-Differenzen-Approximation der ersten Ableitung f′(x)f'(x)f′(x) mithilfe der Taylor-Reihenentwicklung zu berechnen. Ich suche nach den Gewichten a,b,c,d,ea, b, c, d, ea,b,c,d,e, so dass:
af(x+2Δx )+bf(x+Δx)+cf(x)+df(x−Δx)+ef(x−2Δx)a f(x+2\Delta x) + b f(x+\Delta x) + c f(x) + D f(x-\Updelta x) + e f(x-2\Updelta x)af(x+2Δx)+bf(x+Δx)+cf(x)+df(x−Δx)+ef(x−2Δx)
nähert sich f′(x)f'(x)f′(x) an. Folgendes habe ich getan:
  • Ich habe die Taylor-Reihenentwicklung für f(x±kΔx)f(x \pm k\Delta x)f verwendet (x±kΔx), wobei k=1,2k = 1, 2k=1,2.
  • Ich habe ein System linearer Gleichungen erstellt um die folgenden Bedingungen durchzusetzen:
    • Koeffizienten von f(x): a+b+c+d+e=0
    • Koeffizienten von f′(x): 2a+b−d−2e=1
    • Koeffizienten von f′′(x): 4a+b+ d+4e=0
    • Koeffizienten von f(3)(x): 8a+b−d−8e=0
    • Koeffizienten von f(4)(x): 16a+b+d+16e=0
  • Ich habe die Matrixgleichung A⋅z=bA \cdot z = implementiert bA⋅z=b in Python:

    Code: Select all

    import numpy as np
    
    A = np.array([
    [1, 1, 1, 1, 1],      # Coefficients of f(x)
    [2, 1, 0, -1, -2],    # Coefficients of f'(x)
    [4, 1, 0, 1, 4],      # Coefficients of f''(x)
    [8, 1, 0, -1, 8],     # Coefficients of f'''(x)
    [16, 1, 0, 1, 16]     # Coefficients of f''''(x)
    ])
    
    b = np.array([0, 1, 0, 0, 0])  # Targeting the first derivative
    
    z = np.linalg.solve(A, b)
    print(z)
    
    
  • Das Problem:
    Die Ausgabe, die ich erhalte, ist:

    Code: Select all

    [0.25,0,-0,0,-0.25]
    
    Die erwarteten Gewichte für die erste Ableitung sollten jedoch etwa so lauten:
  • Code: Select all

    [-1/12,2/3,0,-2/3,1/12]
    
  • Was ich versucht habe:

    Doppelt überprüft die Koeffizienten in Matrix A, um sicherzustellen, dass sie mit der Taylor-Reihenentwicklung übereinstimmen.
  • Überprüft, dass der Vektor auf der rechten Seite b=[0,1 ,0,0,0] ist für die Approximation von f′(x) korrekt.
Trotzdem sind die Gewichtungen falsch. Fehlt mir etwas im Matrix-Setup oder der Python-Implementierung?

[*]Erwartetes Verhalten:
I möchten, dass die Lösung mit den theoretischen Gewichten für eine zentrale Finite-Differenzen-Approximation der ersten Ableitung f′(x) unter Verwendung von fünf Punkten übereinstimmt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post