用python实现拉格朗日插值法
时间: 2023-09-27 21:04:29 浏览: 149
拉格朗日插值法是一种常用的数值分析方法,可以用于对已知数据进行插值和外推。下面是用 Python 实现拉格朗日插值法的示例代码:
```python
import numpy as np
def lagrange(x, y, x_new):
"""
拉格朗日插值法实现函数
:param x: 已知数据的横坐标数组
:param y: 已知数据的纵坐标数组
:param x_new: 需要插值的横坐标值或一组横坐标值
:return: 对应的插值结果或一组插值结果
"""
n = len(x)
m = len(x_new)
y_new = np.zeros(m)
for i in range(m):
for j in range(n):
# 计算拉格朗日基函数
l = 1
for k in range(n):
if k != j:
l *= (x_new[i] - x[k]) / (x[j] - x[k])
y_new[i] += y[j] * l
return y_new
```
下面是一个示例,假设我们已知函数 y = sin(x),并通过一些离散的数据点来近似表示它。我们可以使用 `lagrange` 函数来对这个函数进行插值:
```python
x = np.array([0, np.pi / 2, np.pi])
y = np.sin(x)
x_new = np.linspace(0, np.pi, 100)
y_new = lagrange(x, y, x_new)
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='data points')
plt.plot(x_new, y_new, label='interpolated curve')
plt.legend()
plt.show()
```
运行上述代码,我们可以得到如下的插值结果图像:
![lagrange插值结果](https://img-blog.csdnimg.cn/20211007193202693.png)
阅读全文