资源描述:
《计算物理学——线性与非线性拟合》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算物理学实验三——多元线性拟合&非线性拟合一、实验题目试编程完成下题:1.(多元线性拟合)已知一组实验数据如下所示,试用最小二乘法求它的多元线性拟合曲线.数据产生A0=2.2;A1=4;A2=3;A3=5;A4=4.3;X=rand(4,9);fori=1:9y(i)=A0+A1*X(1,i)+A2*X(2,i)-A3*X(3,i)+A4*X(4,i);endX=fix(X.*1000)/1000;y=fix(y.*1000)/1000;2.(非线性拟合)已知一组实验数据如下表所示,试用最小二乘法求它的二次多项式拟合
2、曲线.13456789101054211234二、流程图三、代码及结果11)线性拟合函数lfit.mfunctionA=lfit(x,y)%线性拟合x=x';[~,n]=size(x);X=zeros(n+1);Y=zeros(n+1,1);X(1,:)=[1,mean(x)];X(2:n+1,1)=(mean(x))';Y(1)=mean(y);forl=1:nX(l+1,2:n+1)=mean(x.*(x(:,l)*ones(1,n)));%求XY(l+1)=mean(y'.*x(:,l));%求YendA=XY
3、;%求系数主程序linefit.mclear;A0=2.2;A1=4;A2=3;A3=5;A4=4.3;x=rand(4,9);fori=1:9y(i)=A0+A1*x(1,i)+A2*x(2,i)-A3*x(3,i)+A4*x(4,i);endx=fix(x.*1000)/1000;y=fix(y.*1000)/1000;B=lfit(x,y);%多元线性拟合fprintf('多元线性拟合函数:y=(%4.4f)+(%4.4f*)*x1+(%4.4f)*x2+(%4.4f)*x3+(%4.4f)*x4',B);[
4、m,n]=size(x);X=[ones(n,1)x'];B=regress(y',X)'%验证运行结果:多元线性拟合函数:y=(2.2016)+(4.0032*)*x1+(2.9990)*x2+(-4.9977)*x3+(4.2946)*x4B=2.20164.00322.9990-4.99774.29462)非线性拟合函数nlfit.mfunctionA=nlfit(x,y,n)%非线性拟合x=x(:);y=y(:);X(:,1)=ones(length(x),1);forl=1:nX(:,l+1)=x.*X(:,
5、l);%求XendA=Xy;%求超定方程主程序nlinefit.mclear;x=[1345678910];y=[1054211234];plot(x,y,'-');axis([110010]);holdon;A=nlfit(x,y,2);%二次非线性拟合x=1:10;y=(A(1))+(A(2))*x+(A(3))*x.^2;plot(x,y,'--');title('二次拟合函数曲线');%二次拟合曲线fprintf('二次拟合函数:y=(%4.2f)+(%4.2f)*x+(%4.2f)*x^2',A);B=
6、polyfit(x,y,2)%验证运行结果:二次拟合函数:y=(13.46)+(-3.61)*x+(0.27)*x^22B=0.2676-3.605313.45973