最小二乘法多项式曲线拟合matlab代码
时间: 2023-11-15 08:59:21 浏览: 180
下面是一个使用MATLAB实现最小二乘法多项式曲线拟合的代码:
```matlab
% 输入数据
x = [-1.0,-0.5,0.0,0.5,1.0,1.5,2.0];
y = [-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552];
% 拟合多项式的阶数
n = 3;
% 构造矩阵A和向量b
A = zeros(n+1,n+1);
b = zeros(n+1,1);
for i = 1:n+1
for j = 1:n+1
A(i,j) = sum(x.^(i+j-2)); end
b(i) = sum(y.*x.^(i-1));
end
% 求解线性方程组
alpha = A\b;
% 计算拟合函数的值
x0 = linspace(min(x),max(x),100);
y0 = zeros(size(x0));
for i = 1:n+1
y0 = y0 + alpha(i)*x0.^(i-1);
end
% 计算平方误差
r = sum((y - polyval(alpha,x)).^2);
% 绘制图像
plot(x,y,'o',x0,y0,'-');
xlabel('x');
ylabel('y');
title(['n=',num2str(n),', r=',num2str(r)]);
```
其中,输入数据x和y是已知的离散数据点,n是拟合多项式的阶数。代码中首先构造了矩阵A和向量b,然后求解线性方程组Ax=b得到拟合多项式的系数alpha。最后,计算拟合函数的值和平方误差,并绘制图像。
阅读全文