关于拉格朗日插值算法的定义可以查看维基百科​​拉格朗日插值法​​​。
这里直接上代码,当前代码不是最优算法

class Algorithm:
@staticmethod
def LagrangeInterpolation():
grid_x = np.array([4, 5, 6]) # the defining points
k = 3 # the number of defining points of Lagrange poly
value = np.array([10, 5.25, 1]) # the corresponding value on each defining point
x = 18 # the point whose value we are interested
result = 0 # later to save final result
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__':
main = Algorithm()
result_ = main.LagrangeInterpolation()
print(result_)
"""
result:
-11.0
"""

我们可以看到最后的结果为​​-11.0​​​,该结果与维基百科上给出的例子结果一致。因此,我们成功给出了当​​x=18​​时,对应通过这三个点的曲线所对应的值,即我们成功地使用拉格朗日插值法完成了插值。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~