Python中的Lagrange插值

2024-05-23 17:12:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用拉格朗日方法插值一个多项式,但这段代码不起作用:

def interpolate(x_values, y_values):
    def _basis(j):
        p = [(x - x_values[m])/(x_values[j] - x_values[m]) for m in xrange(k + 1) if m != j]
        return reduce(operator.mul, p)

    assert len(x_values) != 0 and (len(x_values) == len(y_values)), 'x and y cannot be empty and must have the same length'

    k = len(x_values)
    return sum(_basis(j) for j in xrange(k))

我跟随Wikipedia,但是当我运行它时,在第3行收到一个索引器错误!

谢谢


Tags: and方法代码inreduceforlenreturn
1条回答
网友
1楼 · 发布于 2024-05-23 17:12:57

检查索引,Wikipedia说“k+1数据点”,但是如果你严格遵循公式的话,你正在设置k = len(x_values)应该是k = len(x_values) - 1

相关问题 更多 >