关于拉格朗日插值算法的定义可以查看维基百科拉格朗日插值法。
这里直接上代码,当前代码不是最优算法
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
时,对应通过这三个点的曲线所对应的值,即我们成功地使用拉格朗日插值法完成了插值。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~