龙格现象python
时间: 2023-11-07 15:06:16 浏览: 165
龙格现象的讨论以及利用切比雪夫节点消除该现象
5星 · 资源好评率100%
龙格现象是指在使用拉格朗日插值进行函数逼近时,当插值节点数量增多时,逼近结果的误差反而会增大的现象。在Python中,可以使用SciPy库中的lagrange函数来进行拉格朗日插值。通过指定一系列的插值节点和对应的函数值,可以得到插值多项式。然后,可以使用这个多项式来逼近原函数。为了验证龙格现象,可以使用numpy和matplotlib库进行绘图,选择不同的插值节点数量,绘制出不同阶次的拉格朗日插值结果和原函数曲线,并观察插值结果的误差。
```python
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()
```
阅读全文