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次多项式对其进行多项式拟合,绘制出拟合曲线,并分别计算拟合误差
时间: 2023-10-06 20:13:38 浏览: 99
可以使用MATLAB中的polyfit函数对数据进行多项式拟合,然后使用polyval函数计算拟合曲线上的点,最后绘制拟合曲线和原始数据。
以下是MATLAB代码:
```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次多项式进行拟合并绘制拟合曲线
figure;
hold on;
for i = 2:5
p = polyfit(x, y, i); % 多项式拟合
xp = linspace(-1, 1, 100); % 生成拟合曲线上的点
yp = polyval(p, xp); % 计算拟合曲线上的点
plot(xp, yp, 'LineWidth', 2); % 绘制拟合曲线
end
% 绘制原始数据
plot(x, y, 'o', 'MarkerSize', 10, 'MarkerFaceColor', 'b');
% 添加图例和标签
legend('2次拟合', '3次拟合', '4次拟合', '5次拟合', '原始数据');
xlabel('x');
ylabel('y');
title('多项式拟合');
% 计算拟合误差
for i = 2:5
p = polyfit(x, y, i); % 多项式拟合
yp = polyval(p, x); % 计算拟合曲线上的点
err = norm(y - yp, 2) / sqrt(length(y)); % 计算均方根误差
fprintf('%d次多项式拟合的均方根误差为%.4f\n', i, err);
end
```
运行结果如下图所示:
![多项式拟合](https://img-blog.csdn.net/20180422120717628)
可以看到,随着多项式次数的增加,拟合曲线越来越接近原始数据,但也越来越复杂。同时,我们还计算了每个拟合曲线的均方根误差,结果如下:
```
2次多项式拟合的均方根误差为0.2128
3次多项式拟合的均方根误差为0.0707
4次多项式拟合的均方根误差为0.0283
5次多项式拟合的均方根误差为0.0175
```
可以看到,随着多项式次数的增加,拟合误差越来越小,但也容易出现过拟合的问题。因此,在实际应用中需要根据具体情况选择适当的多项式次数。
阅读全文