在 MATLAB 中编写函数来实现 Lagrange 插值法和 Newton 插值法, 给出具体代码
时间: 2024-11-09 21:21:36 浏览: 114
在MATLAB中,Lagrange插值和Newton插值是非常常见的数值计算任务。下面是两个简单的函数示例:
1. **Lagrange插值法**:
```matlab
function y = lagrange_interpolation(x, xi, yi)
n = length(xi);
% 计算拉格朗日基 polynomials
l = ones(1, n);
for i = 1:n
l(i) = prod((x - xi(1:i-1)) ./ (xi(i) - xi(1:i-1)));
end
% 根据yi返回插值值
y = sum(l .* yi); % yi is a vector of interpolation points
end
```
使用这个函数,你可以传递你想要插值的数据点 `x`、节点 `xi` 和它们对应的值 `yi`。
2. **Newton插值法**:
```matlab
function p = newton_interpolation(x, f)
n = length(x);
p = zeros(1, n+1); % 创建一个(n+1)x1的向量存储多项式系数
for k = n:-1:1
pk = (f(x(k+1:end)) - polyval(p, x(k+1:end))) ./ (x(k) - x(k+1:end));
p = [p; pk]; % 将当前项添加到多项式系数向量中
end
end
```
这个函数接受一组数据点 `x` 和其对应函数值 `f` 的数组,返回一个多项式的系数,可以用于计算任意输入的插值值。
阅读全文