Lagrange插值基本算法实现
时间: 2025-01-04 07:15:09 浏览: 55
### Lagrange 插值算法实现
#### MATLAB 实现
为了构建通过给定点的光滑曲线,可以采用Lagrange插值法。此方法允许构造一个简单的多项式函数来近似这些点[^1]。
下面是一个具体的MATLAB代码实例,展示了如何利用Lagrange插值法求解特定$x$位置对应的$y$值:
```matlab
function y = lagrange_interpolation(x, y, xx)
n = length(x);
L = ones(n, length(xx));
for i = 1:n
for j = 1:n
if i ~= j
L(i,:) = L(i,:).*(xx-x(j))./(x(i)-x(j));
end
end
end
% 计算加权后的总和得到最终的结果
yy = zeros(size(xx));
for i = 1:n
yy = yy + y(i)*L(i,:);
end
end
```
这段程序定义了一个名为`lagrange_interpolation`的功能函数,接受三个参数:节点横坐标向量`x`、纵坐标向量`y`以及待查询的位置`xx`。它返回的是在指定位置上的预测值`yy`。对于每一个输入的数据点组合$(x_i,y_i)$,都会创建一个基函数$L_i(x)$,之后再把这些基函数按照权重相加以获得完整的插值表达式[^2]。
#### Python 实现
除了MATLAB之外,在Python中也可以很容易地实现同样的功能。这里提供了一种基于NumPy库的方式来进行Lagrange插值运算:
```python
import numpy as np
def lagrange_interpolate(x_points, y_points, x_new):
"""Compute the interpolated value at a new point using Lagrange interpolation."""
result = 0
num_points = len(x_points)
for i in range(num_points):
term = y_points[i]
for j in range(num_points):
if i != j:
term *= (x_new - x_points[j]) / (x_points[i] - x_points[j])
result += term
return result
```
上述Python版本实现了相同逻辑下的Lagrange插值过程,并且能够处理单个新样本点或多维数组形式的新样本集合作为输入变量`x_new`。这使得该函数更加灵活通用[^4]。
阅读全文
相关推荐

















