拉格朗日插值代码实现 Python
时间: 2023-08-14 16:36:37 浏览: 302
拉格朗日插值Python代码
以下是用 Python 实现拉格朗日插值的代码:
```python
def lagrange_interpolation(x, y, z):
"""
拉格朗日插值函数
:param x: 已知点的 x 坐标列表
:param y: 已知点的 y 坐标列表
:param z: 需要插值的点的 x 坐标
:return: 插值点的 y 坐标
"""
n = len(x)
result = 0.0
for i in range(n):
p = 1.0
for j in range(n):
if i != j:
p *= (z - x[j]) / (x[i] - x[j])
result += y[i] * p
return result
```
其中,`x` 和 `y` 分别是已知点的 x 坐标和 y 坐标列表,`z` 是需要插值的点的 x 坐标,函数返回插值点的 y 坐标。在函数中,首先获取已知点的数量 `n`,然后利用拉格朗日插值公式计算出插值点的 y 坐标。具体来说,对于每一个已知点 `x[i],y[i]`,定义一个多项式 `p`,然后将所有 `p` 相加得到最终的插值结果。其中,`p` 的定义如下:
$$p_i(z) = \prod_{j\neq i} \frac{z-x_j}{x_i-x_j}$$
也就是说,`p` 是一个关于 `z` 的多项式,它在 `x[i]` 处取值为 `1`,在其他已知点处取值为 `0`,在其他位置上根据公式计算。最终的插值结果就是所有 `p` 与对应的 `y` 的乘积之和。
阅读全文