最小二乘法程序说明及流程图_精品文档.pdf
《最小二乘法程序说明及流程图_精品文档.pdf》由会员分享,可在线阅读,更多相关《最小二乘法程序说明及流程图_精品文档.pdf(5页珍藏版)》请在冰豆网上搜索。
陆韶琦3110000441程序说明:
本程序用多项式拟合数据,程序会要求输入需要拟合的次数和数据点的个数,数据文件应该保存在本程序运行时的currentfolder下,文件取名为“mytext.txt”流程图:
输入需要拟合的次数N,和数据点的个数MC(i,j)=S(1,j)(i-1)(S(1,j)=0时,C(i.j)=0)0i=N+10j=Mj+=1i+=1A=CTC,b=CY;(Y为数据点中yi组成的列向量)通过列主元高斯消元法求解Ax=bai+1xiNi=0输出表达式对数据点S(1,1)到S(1,M)区间按0.01步长作图expr=endfalsefalse计算rms=i2M1;max=max1=imaxflag=j;max=A(j,i);endendfork=i:
N+2B=A(flag,k);A(flag,k)=A(i,k);A(i,k)=B;endforkh=i+1:
N+1m=-A(kh,i)/A(i,i);A(kh,i)=0;forkl=i+1:
N+2A(kh,kl)=A(kh,kl)+m*A(i,kl);endendendX=zeros(N+1,1);fori=N+1:
-1:
1forj=i-1:
-1:
1m=-A(j,i)/A(i,i);A(j,N+2)=A(j,N+2)+m*A(i,N+2);endX(i,1)=A(i,N+2)/A(i,i);enddisp(X);%根据系数求得待定曲线symsx;expr=0;fori=1:
N+1expr=expr+X(i,1)*x.(i-1);end%输出得到的曲线表达式disp(expr);%计算偏差bias=zeros(M,1);forj=1:
Mfori=1:
N+1bias(j,1)=bias(j,1)+X(i,1)*S(1,j)(i-1);endbias(j,1)=bias(j,1)-S(2,j);end%寻找最大偏差max=abs(bias(1,1);flag=1;fori=2:
Mifabs(bias(i,1)maxflag=i;max=abs(bias(i,1);endenddisp(themaximunabsoulutevalueis:
);disp(max);%计算均方误差rms=0;fori=1:
Mrms=rms+bias(i,1)2;endrms=sqrt(rms);disp(thesquarebiasis:
);disp(rms);%制图a=S(1,1):
0.01:
S(1,M);y=subs(expr,x,a);plot(a,y);holdon;gridon;fori=1:
Mx=S(1,i);y=S(2,i);plot(x,y,*);holdon;end运行结果:
表达式中分式难以化简,但在表达式前给出了次幂前的四位有效数字的系数