拉格朗日插值n次python
时间: 2023-11-17 08:59:16 浏览: 163
拉格朗日函数(lagrange.m)用于观察高次插值的龙格现象
5星 · 资源好评率100%
拉格朗日插值法是一种用于在一组已知数据点之间进行插值的方法。它可以通过构造一个多项式函数来逼近这些数据点,从而得到在这些数据点之间的任何点的函数值。n次拉格朗日插值多项式是一种n次多项式函数,它可以通过n个已知数据点来确定。Python可以使用numpy和sympy库来实现拉格朗日插值多项式。其中,numpy库可以用于计算插值多项式的系数,而sympy库可以用于计算插值多项式的表达式。下面是一个Python实现的例子:
引用:
1.数学原理
1.1 线性插值
1.2二次插值
1.3 n次拉格朗日插值多项式
2.Python实现
引用:
五、完整代码
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)
#绘制散点图,逼近函数
plt.figure(figsize=(8,4))
plt.scatter(xx,y,c='red')
plt.plot(x2,y1,'-')
plt.show()
引用:
由前面得规律可以得到n次拉格朗日插值多项式:
L2(x)=∑i=1n(∏i=0,i≠jn x−xi xj−xi)yj
2.Python实现
import numpy as np
def LagrangeInterpolation(x):
grid_x = np.array([4, 5, 6])
k = len(grid_x)
value = np.array([10, 5.25, 1])
result = 0
for j in range(k):
result_l = 1
for i in range(k):
if i != j:
result_l = result_l * (x - grid_x[i]) / (grid_x[j] - grid_x[i])
result = result + value[j] * result_l
return result
if __name__ == '__main__':
x=18
result=LagrangeInterpolation(x)
print(result)
阅读全文