MATLAB给出一组数据x=[-1,-0.96,-0.62,0.1,04,1],y=[-1,-0.1512,0.386,0.4802,0.8838,1],分别使用2 ~ 5次多项式对其进行多项式拟合,绘制出拟合曲线,并分别计算拟合误差。
时间: 2024-10-28 10:07:36 浏览: 37
在MATLAB中,你可以使用`polyfit`函数来进行多项式拟合,然后用`polyval`函数来评估拟合结果。首先,我们对给定的数据x和y进行拟合:
```matlab
% 定义数据
x = [-1, -0.96, -0.62, 0.1, 0.4, 1];
y = [-1, -0.1512, 0.386, 0.4802, 0.8838, 1];
% 多项式阶数从2到5
degree = [2, 3, 4, 5];
n = length(x);
for i = 1:length(degree)
% 拟合多项式
p = polyfit(x, y, degree(i));
% 计算并保存拟合值
y_fit = polyval(p, x);
% 绘制拟合曲线
plot(x, y, 'o', x, y_fit, '-');
title(sprintf('Degree %d Polynomial Fit', degree(i)));
xlabel('x');
ylabel('y');
grid on;
% 计算拟合误差
error = y - y_fit; % 残差
rmse = sqrt(mean(error.^2)); % 平均绝对误差
disp(['RMSE for Degree ' num2str(degree(i)) ' fit: ' num2str(rmse)]);
end
```
这段代码会逐个使用2、3、4和5次多项式对数据进行拟合,分别绘制出拟合曲线,并显示每次拟合的平均绝对误差(Root Mean Squared Error,RMSE)。运行此代码,你会得到每个多项式的拟合曲线以及对应的误差。
阅读全文