拉格朗日(Lagrange)插值原理
拉格朗日(Lagrange)插值公式的基本思想是把的构造问题转化为 n+1 个插值基函数 。很多人可能觉得样本数据越多,得到的插值数据会越精确,这样想法是不正确的。理论上说,样本数据过多,得到的插值函数的次数就越高,插值的结果的误差可能会更大。拉格朗日插值的稳定性不太好,出现不稳定的现象称为龙格现象, 接下来, 我们将验证龙格现象。
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import lagrange
def fun(x):
"""
定义龙格函数
"""
return 1/(1 + 25 * x**2)
plt.figure(figsize=(8,6))
for n in range(3, 12, 2):
# 取得龙格函数的 x, y 值
x=np.linspace(-1, 1, n)
y=fun(x)
# 生成对应的拉格朗日多项式
p = lagrange(x, y)
# 描点绘图
xi = np.linspace(-1, 1, 100)
yi= p(xi)
plt.plot(xi,yi,lw=0.7,label="n=%d"%(n-1))
plt.plot(xi,fun(xi),'k-',label=r"$\frac{1}{1 + 25x^{2}}\qquad$")
plt.xlabel("x",fontdict={"fontsize":12})
plt.ylabel("y",fontdict={"fontsize":12})
plt.title("Runge phenomenon of lagrange interpolation of different orders",fontdict={"fontsize":14})
plt.legend()
plt.show()
运行图片: