拉格朗日插值多项式matlab
时间: 2023-10-24 22:34:37 浏览: 93
拉格朗日插值多项式
以下是一个 MATLAB 实现的拉格朗日插值多项式:
```matlab
function [p] = lagrange_interp(x, y)
% LAGRANGE_INTERP 使用拉格朗日插值多项式计算
% 给定的数据点的插值多项式。
% 输入参数:
% x - 插值点的横坐标向量。
% y - 插值点的纵坐标向量。
% 输出参数:
% p - 插值多项式的函数句柄。
% 计算插值点的个数。
n = length(x);
% 构造拉格朗日基函数。
l = @(k, z) prod((z - x([1:k-1 k+1:n])) ./ (x(k) - x([1:k-1 k+1:n])));
% 构造插值多项式。
p = @(z) sum(y .* arrayfun(@(k) l(k, z), 1:n));
end
```
使用方法如下:
```matlab
% 构造插值点。
x = [0 1 2 3 4];
y = sin(x);
% 计算插值多项式。
p = lagrange_interp(x, y);
% 绘制插值函数和原始函数的图像。
xx = linspace(0, 4, 1000);
yy = sin(xx);
pp = p(xx);
plot(xx, yy, 'b-', xx, pp, 'r--');
legend('sin(x)', '插值多项式');
```
运行结果如下图所示:
![lagrange_interp_demo.png](https://i.loli.net/2021/05/03/4IbgeKjWz2QX9vn.png)
可以看到,插值多项式在插值点处与原函数完全重合,但在插值点之外则可能偏差较大。
阅读全文