当前位置:文档之家› 基于matlab的最小二乘法实现

基于matlab的最小二乘法实现

基于matlab 的最小二乘法实现 程序流程图

matlab 的程序源代码:
A=[2,4,6,8;2,11,28,40];
pa=input('请输入你要的拟合多项式的次数:');
W=size(A);
H=W(2);
X=zeros(pa+1,1);
Y=zeros(pa+1,pa+1); for i=1:pa+1
输入Xi,yi 及要拟合的最高次数n 生成法方程矩阵的左端系数矩阵 生成法方程矩阵的右端矩阵 解法方程矩阵 输出各个项的系数,即求得拟合函数 求取所求结果的均方误差 求取所求结果的最大偏差 结束程序
for j=1:pa+1
x=0;
for k=1:H
s=1;
for b=1:i+j-2
s=s*A(1,k);
end
x=x+s;
end
Y(i,j)=x;
end
end
a=zeros(pa+1,1);
for i=1:pa+1
x=0;
for k=1:H
s=A(2,k);
for b=1:i-1
s=s*A(1,k);
end
x=x+s;
end
a(i,1)=x;
end
X=inv(Y)*a;
disp('从0次到你要的阶数的系数依次为:') X
Z1=zeros(H,1);
for i=1:H
w=0;
for k=1:pa+1
s=X(k,1);
for j=1:k-1
s=s*A(1,i);
end
w=w+s;
end
Z1(i,1)=w;
end
Z1;
Z2=A(2,:)';
d=Z1-Z2;
s=0;
for i=1:H
s=s+d(i,1)*d(i,1); end
disp('均方误差为:') a=sqrtm(s)
b=d(1,1);
for i=1:H
if d(i,1)>b
b=d(i,1);
else
;
end
end
disp('最大偏差为:') b。

相关主题