最小二乘法程序说明及流程图.pdf
文本预览下载声明
陆韶琦 3110000441
程序说明:本程序用多项式拟合数据,程序会要求输入需要拟合的次数和数据点的个
数,数据文件应该保存在本程序运行时的 current folder 下,文件取名为“mytext.txt”
流程图: 输入需要拟合的次数
N ,和数据点的个数M
false
0i=N
+1 i+=1
false
0j=M
j+=1 C (i,j )=S(1,j)^(i-1)
(S(1,j)=0 时,C (i.j )=0)
T
A=C C,b=CY;
(Y 为数据点中yi 组成的
列向量)
通过列主元高斯消元法求解Ax=b
输出表达式
N
i
expr= a i + 1 x
i=0
对数据点S (1,1 )到S (1 ,M )区间按0.01 步长
作图
M 2
计算δ = δi ;
rms 1
δ =max |δ|.
max 1=i= i
end
程序代码:
%多项式最小二乘法拟合数据
N=input( please put in how many times the power will you overfit:);
M=input( how many couples of statistics are there in the table:);
%读入数据文件
f=fopen(mytxt.txt,r);
S=fscanf(f,%g,[M 2]);
fclose(f);
S=S;
%显示数据文件,确保正确输入
disp(S(x,y)=);
disp(S);
%建立多项式系数法方程组中间矩阵
C=zeros(N+1,M);
for i=1:N+1
for j=1:M
if S(1,j)==0
C(i,j)=0;
else
C(i,j)=S(1,j).^(i-1);
end
end
end
%建立法方程组
A=C*C;
Y=zeros(M,1);
for i=1:M
Y(i,1)=S(2,i);
end
b=C*Y;
%用列主元高斯消元法接法方程组
A=[A,b];
for i=1:N+1
max=abs(A(i,i));
for j=i+1:N+1
if abs(A(j,i))max
flag=j;
max=A(j,i);
end
end
for k=i:N+2
显示全部