Lagrange-Interpolation in Python

Ich habe in einer Universitätsklasse etwas über die Lagrange-Interpolation gelernt und sie in Python implementiert.

Was ist Funktionsinterpolation?

Die Funktionsinterpolation besteht darin, eine verkettete Funktion abzuleiten, die sie aus den diskret erhaltenen Punkten verbindet. [Diskret] img1
【Kontinuierlich】 img2

Was ist die Lagrange-Interpolationsmethode?

Wenn die Werte von xj und f (xj) als bekannte Datenpunkte für j = 0,1,2… n gesetzt werden

l_j(x) = \frac{(x-x_0)(x-x_1)…(x-x_{j-1})(x-x_{j+1})…(x-x_n)}{(x_j-x_0)(x_j-x_1)…(x_j-x_{j-1})(x_j-x_{j+1})…(x_j-x_n)}\\  
P_n(x) = \sum_{j=0}^{n}f(x_j)l_j(x)

Es wird so sein. Der wichtige Punkt ist, das j-te zu überspringen, wenn lj (x) gefunden wird. (Weil es 0 sein wird)

Lagrange-Interpolationsmethode in Python

Es wird wie folgt sein.

Lagrange.py


import numpy as np
import matplotlib.pyplot as plt

def lagurange(x,xp,fx):
    results = [];
    for l in range(len(x)):
        if(x[l] in xp):
            results.append(fx[np.where(xp==x[l])])
        else:
            result=0
            for j in range(len(xp)):
                lag = lx(x[l],j,xp)
                result += fx[j]*lag
            results.append(result)
    return results

def lx(x,j,xp):
    numerator,denominator = 1,1
    for i in range(len(xp)):
        if(i!=j):
            numerator *= x-xp[i]
            denominator *= xp[j]-xp[i]
    return numerator/denominator

def main():
    xp = np.arange(-10,10,3)
    fx = xp**3
    x = np.floor(np.arange(-10,10,0.1)*10)/10
    y = lagurange(x,xp,fx)
    plt.plot(x,y)
    plt.plot(xp,fx,"o")
    plt.show()

if __name__ == '__main__':
    main()

Ich denke, es gibt eine effizientere Art zu schreiben, weil ich sie so implementiert habe, wie sie ist, ohne primitiv über irgendetwas nachzudenken. In diesem Programm ist x der Funktion y = x ^ 3 als Daten in 3 Schritten bekannt, und die Lagrange-Interpolation wird im Bereich von x = -10 bis 10 in Schritten von 0,1 durchgeführt.

Bekannte Datenpunkte img4
Nach Lagrange-Interpolation img5
Sie haben eine feste Näherung von y = x ^ 3.

Recommended Posts

Lagrange-Interpolation in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python
Verwenden Sie config.ini mit Python
Täglicher AtCoder # 33 in Python
Löse ABC168D in Python
Logistische Verteilung in Python
Täglicher AtCoder # 7 in Python
LU-Zerlegung in Python
Einfacher gRPC in Python
AtCoder # 24 jeden Tag mit Python