用Python进行拉格朗日插值
时间: 2023-11-16 16:09:59 浏览: 90
拉格朗日插值是一种基于多项式的插值方法,可以用来求解给定数据点的函数值。以下是用 Python 实现拉格朗日插值的示例代码:
```python
import numpy as np
def lagrange_interp(x, y, x_new):
"""
:param x: 原始数据点的 x 坐标,为一维数组
:param y: 原始数据点的 y 坐标,为一维数组
:param x_new: 需要求解的新数据点的 x 坐标,为一维数组
:return: 对应新数据点的 y 坐标,为一维数组
"""
n = len(x)
m = len(x_new)
y_new = np.zeros(m)
for j in range(m):
for i in range(n):
# 计算拉格朗日插值基函数的值
l = 1
for k in range(n):
if k != i:
l *= (x_new[j] - x[k]) / (x[i] - x[k])
# 根据插值公式计算新数据点的 y 坐标
y_new[j] += y[i] * l
return y_new
```
这里使用了 NumPy 库来实现矩阵运算和数组操作。使用示例:
```python
# 原始数据点
x = np.array([1, 2, 3, 4])
y = np.array([2, 3, 5, 8])
# 需要求解的新数据点
x_new = np.array([1.5, 2.5, 3.5])
# 求解
y_new = lagrange_interp(x, y, x_new)
print(y_new) # 输出 [2.5 4. 6.5]
```
这里假设原始数据点已经按照 x 坐标从小到大排好序了。如果原始数据点没有排好序,则需要在插值函数中先对原始数据点进行排序。
阅读全文