日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

基于Python實現(xiàn)拉格朗日插值法_python

作者:泡泡怡 ? 更新時間: 2023-01-09 編程語言

一、拉格朗日的基本思想

拉格朗日插值法是以法國十八世紀數(shù)學家約瑟夫·拉格朗日命名的一種多項式插值方法。

許多實際問題中都用函數(shù)來表示某種內(nèi)在聯(lián)系或規(guī)律,而不少函數(shù)都只能通過實驗和觀測來了解。在若干個不同的地方得到相應的觀測值,拉格朗日插值法可以找到一個簡單函數(shù),其恰好在各個現(xiàn)測的點取到觀測到的值,這個函數(shù)可以是代數(shù)多項式,三角多項式等。

二、線性插值

三、多個點

四、代碼實現(xiàn)

def lagrange(xx,y):
    l=len(y)
    l_n = 0
    for k in range(l):
        xxx=xx.copy()
        x_k = xxx[k]
        xxx.pop(k)
        l_k = 1
        for i in range(len(xxx)):
            l_k *= (x - xxx[i]) / (x_k -xxx[i])
        l_n += y[k] * l_k
    return expand(l_n) 

五、完整代碼

import matplotlib.pyplot as plt
import numpy as np 
import pandas as pd
from sympy import expand
from sympy.abc import x
xx=[]
for i in range(7):
    xx.append(data['x'][i])
y=[]
for j in range(7):
    y.append(data['y'][j])
def lagrange(xx,y):
    l=len(y)
    l_n = 0
    for k in range(l):
        xxx=xx.copy()
        x_k = xxx[k]
        xxx.pop(k)
        l_k = 1
        for i in range(len(xxx)):
            l_k *= (x - xxx[i]) / (x_k -xxx[i])
        l_n += y[k] * l_k
    return expand(l_n)  
lagrange_interpolation_polynomial = lagrange(xx, y)
print("拉格朗日插值多項式為:",lagrange_interpolation_polynomial)
x2=np.linspace(-1,4,100)
y1=[]
for i in range(len(x2)):
    y1.append(lagrange_interpolation_polynomial.subs(x,x2[i]))
print(y1)
#繪制散點圖,逼近函數(shù)
plt.figure(figsize=(8,4))
plt.scatter(xx,y,c='red')
plt.plot(x2,y1,'-')
plt.show()

六、pop()函數(shù)

七、結(jié)果展示

原文鏈接:https://blog.csdn.net/m0_72662900/article/details/128278422

欄目分類
最近更新