Python实现拉格朗日插值
时间: 2023-11-05 10:14:46 浏览: 118
拉格朗日插值是一种基于多项式的插值方法,可以用于在已知的数据点上估计函数的值。以下是Python实现拉格朗日插值的示例代码:
```python
def lagrange_interpolation(x, y, z):
'''
x: 已知数据点的 x 坐标
y: 已知数据点的 y 坐标
z: 待估计函数的 x 坐标
'''
n = len(x)
result = 0
for i in range(n):
term = y[i]
for j in range(n):
if i != j:
term *= (z - x[j]) / (x[i] - x[j])
result += term
return result
```
使用示例:
```python
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
z = 2.5
print(lagrange_interpolation(x, y, z)) # 输出:6.25
```
在这个示例中,我们已知数据点 `(0,0)`, `(1,1)`, `(2,4)`, `(3,9)`, `(4,16)`,并且想要在 `x=2.5` 的位置估计函数的值。使用 `lagrange_interpolation` 函数可以得到 `6.25` 的结果。
相关问题
python实现拉格朗日插值
拉格朗日插值是一种常用的求解函数近似值的方法,可以通过已知的数据点构建一个多项式函数,从而估计其他点上的函数值。下面给出 Python 实现的代码:
```python
import numpy as np
def lagrange_interpolation(x, y, z):
"""
:param x: 原函数点横坐标
:param y: 原函数点纵坐标
:param z: 待求函数点横坐标
:return: 待求函数点纵坐标
"""
n = len(x)
m = len(z)
res = np.zeros(m)
for k in range(m):
for i in range(n):
t = 1
for j in range(n):
if j != i:
t *= (z[k] - x[j]) / (x[i] - x[j])
res[k] += t * y[i]
return res
```
其中,`x` 和 `y` 分别表示原函数点的横坐标和纵坐标,`z` 表示待求函数点的横坐标。返回值为待求函数点的纵坐标。该函数利用双重循环遍历原函数点,计算每个待求函数点的纵坐标,最后返回整个数组。
python实现拉格朗日插值法
拉格朗日插值法是一种用于在已知数据点之间估算未知点的方法。下面是一个用 Python 实现拉格朗日插值法的例子:
```python
import numpy as np
def lagrange_interpolation(x, y, x_new):
n = len(x)
y_new = 0
for i in range(n):
# 求出 Li(x_new) 的值
p = 1
for j in range(n):
if i != j:
p *= (x_new - x[j]) / (x[i] - x[j])
y_new += y[i] * p
return y_new
```
这个函数接受三个参数:`x` 和 `y` 是已知的数据点的横纵坐标,`x_new` 是待估算的点的横坐标。函数返回在 `x_new` 处的估算值。
使用这个函数的例子:
```python
# 已知数据点
x = np.array([1, 2, 3, 4])
y = np.array([5, 3, 2, 1])
# 在 x=2.5 处估算 y 的值
x_new = 2.5
y_new = lagrange_interpolation(x, y, x_new)
print(y_new) # 输出:2.6875
```
这个例子中,`x` 和 `y` 分别是已知的数据点的横纵坐标。我们使用 `lagrange_interpolation` 函数估算在 `x=2.5` 处的 `y` 值。输出结果为 `2.6875`。
阅读全文