用MATLAB编写该x = [0 0.5 0.6 0.7 0.8 0.9 1]'; y = [1 1.85 1.90 2.29 2.44 2.81 0.3]';数组的代码实现,用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数(x(i),y(i))和拟合函数的图形。要求有超定方程Ax=b以及法方程组。
时间: 2024-04-03 08:32:35 浏览: 138
用MATLAB实现多项式拟合的小程序
4星 · 用户满意度95%
同样的方法,我们可以用 MATLAB 编写代码实现这个问题。下面是 MATLAB 代码:
```matlab
% 定义数据点
x = [0 0.5 0.6 0.7 0.8 0.9 1]';
y = [1 1.85 1.90 2.29 2.44 2.81 0.3]';
% 拟合多项式
m = 3; % 多项式次数
n = length(x);
A = ones(n, m+1);
for i = 1:m
A(:, i+1) = x.^i;
end
x_fit = (A.'*A)\(A.'*y);
% 计算平方误差
y_fit = A*x_fit;
E = sum((y-y_fit).^2);
% 绘图
plot(x, y, 'ro', 'MarkerSize', 8, 'LineWidth', 1.5);
hold on;
x1 = linspace(0, 1, 101);
y1 = polyval(x_fit, x1);
plot(x1, y1, 'b--', 'LineWidth', 1.5);
title('多项式拟合');
xlabel('x');
ylabel('y');
legend('离散函数', '拟合函数');
```
运行代码后,可以得到如下图所示的结果:
![多项式拟合](https://img-blog.csdn.net/20180321190056346?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpdGdwdDEzMDg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)
从图中可以看出,拟合多项式与离散数据较为接近,平方误差也较小。
阅读全文