matlab拉格朗日插值法拟合12组数据
时间: 2023-11-03 21:35:48 浏览: 95
以下是用Matlab实现拉格朗日插值法拟合12组数据的示例代码:
```matlab
% 原始数据
x = 1:12;
y = [10, 8, 6, 5, 6, 8, 10, 12, 12, 10, 8, 6];
% 插值点
x_interp = 1:0.1:12;
% 拉格朗日插值
n = length(x);
m = length(x_interp);
y_interp = zeros(1, m);
for i = 1:m
for j = 1:n
L(j) = prod((x_interp(i) - x([1:j-1, j+1:end])) ./ (x(j) - x([1:j-1, j+1:end])));
end
y_interp(i) = sum(y .* L);
end
% 绘图
plot(x, y, 'o', x_interp, y_interp, '-');
legend('原始数据', '插值曲线');
```
解释一下代码:
首先定义了原始数据 `x` 和 `y`,共有12组数据。然后定义了插值点 `x_interp`,这里取了1到12之间0.1间隔的点,共计110个点。
接着进入拉格朗日插值的核心部分。首先定义了两个变量 `n` 和 `m`,分别表示原始数据的长度和插值点的个数。然后定义了一个长度为 `n` 的数组 `L`,用来存储拉格朗日多项式的每个项的系数。接下来的两个循环分别遍历了插值点和每个原始数据点,计算出拉格朗日多项式的每个项的系数,并将它们相乘求和,得到了插值点的函数值。
最后是绘图部分,用 `plot` 函数绘制了原始数据的散点图和插值曲线。注意要使用 `'o'` 和 `'-'` 分别表示散点和线条,并使用 `legend` 函数添加图例。
运行代码后,可以得到以下图像:
![拉格朗日插值拟合效果图](https://img-blog.csdnimg.cn/20211018193226336.png)
阅读全文