Python实现拉格朗日插值算法

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

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时,对应通过这三个点的曲线所对应的值,即我们成功地使用拉格朗日插值法完成了插值。

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

你可能感兴趣的:(Python科学计算基础,算法,python)