【发布时间】:2022-12-09 18:32:27
【问题描述】:
我被要求使用拉格朗日插值法绘制一条穿过图形上几个点的线(禁止使用 scipy.interpolate.lagrange)。
但似乎我的代码不能给出正确的结果。说实话,我什至不知道哪一部分是错的。
如果我被要求找到线上特定点的值,我应该如何调整代码来做到这一点?
第一张图片是预期的输出。第二个是我的代码的输出。
有人可以告诉我如何纠正吗?
源代码
import numpy as np
import matplotlib.pyplot as plt
m = 4
X = np.array([0, 1, 1.5, 2, 3])
Y = np.array([2, 8, 12, 10, 20])
def p(x):
px = 0;
for j in range(m+1):
Lmj = 1
for k in range(m+1):
if k != j:
Lmj *= (x - X[k])/(X[j] - X[k])
px += Y[j] * Lmj;
return px
plt.scatter(X, Y)
Xinterp = np.linspace(min(X), max(X), 100)
plt.plot(Xinterp, p(Xinterp))
plt.show()
另外, plt.show() 行是否必要?从我讲师的笔记来看,代码没有这一行,但仍然可以显示图形。但是在我复制的源代码版本中,我需要添加这一行来显示图形。
非常感谢您注意到这个问题。
【问题讨论】:
标签: python interpolation graphplot