Lagrange 插值拟合函数代码
时间: 2023-08-30 11:05:25 浏览: 87
以下是使用Python实现的Lagrange插值拟合函数的代码:
```python
import numpy as np
def lagrange(x, y, xi):
"""
Lagrange插值拟合函数
Parameters:
x (array-like): 插值点的x坐标
y (array-like): 插值点的y坐标
xi (float): 插值点的x坐标
Returns:
yi (float): 插值点的y坐标
"""
n = len(x)
yi = 0
for i in range(n):
# 计算 Li(x)
Li = 1
for j in range(n):
if i != j:
Li *= (xi - x[j]) / (x[i] - x[j])
yi += Li * y[i]
return yi
```
该函数接受三个参数:插值点的x坐标(x)、插值点的y坐标(y)和待插值点的x坐标(xi),并返回插值点的y坐标(yi)。在函数内部,我们首先计算 Li(x) 的值,然后将 Li(x) 与对应的 y 值相乘,并将它们累加到 yi 中。在计算 Li(x) 的过程中,我们使用了双重循环,其中外循环遍历插值点,内循环计算 Li(x) 的值。
以下是一个使用Lagrange插值拟合函数进行拟合的例子:
```python
import matplotlib.pyplot as plt
# 定义插值点
x = np.array([0, 1, 2])
y = np.array([1, 0, 4])
# 定义插值区间
xi = np.linspace(0, 2, 100)
# 计算插值函数
yi = [lagrange(x, y, i) for i in xi]
# 绘制插值函数
plt.plot(x, y, 'o', label='插值点')
plt.plot(xi, yi, label='Lagrange插值函数')
plt.legend()
plt.show()
```
该代码首先定义了三个插值点,然后使用 linspace 函数生成了一个包含100个元素的数组,该数组包含了从0到2之间均匀分布的数字。接下来,我们使用 Lagrange 插值拟合函数计算了 xi 对应的 yi 值,并将它们存储在 yi 数组中。最后,我们使用 matplotlib 库绘制了插值点和插值函数的图像。
阅读全文