您好,欢迎访问三七文档
辽宁工程技术大学上机实验报告实验名称实验2离散数据拟合模型院系理学院专业班级11-1姓名学号日期05.20实验目的简述本次实验目的:掌握离散数据拟合模型的建模方法,并会利用Matlab作数据拟合、数值计算与误差分析.实验准备你为本次实验做了哪些准备:上网查阅相关资料,阅读教材《数学建模》实验进度本次共有4个练习,完成4个。实验总结日本次实验的收获、体会、经验、问题和教训:实验题目:已知美国人口统计数据如表,完成下列数据的拟合问题:年份17901800181018201830184018501860人口/百万人3.95.37.29.612.917.123.231.4年份19001910192019301940195019601970人口/百万人76.092.0106.5123.2131.7150.7179.3204.0实验要求:1、如果用指数增长模型0()0()erttxtx模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算指数增长模型的以下三个数据拟合问题:(1)取定x0=3.9,t0=1790,拟合待定参数r;程序代码:p=@(r,t)3.9.*exp(r.*(t-1790));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];r=nlinfit(t,c,p,0.0359);sse=sum((c-p(r,t)).^2);|plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')axis([1790,2000,0,290])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据-指数增长型')legend('拟合数据')程序调用:成绩rr=0.0212ssesse=1.7418e+004(2)取定t0=1790,拟合待定参数x0和r;程序代码:p=@(r,t)r(2).*exp(r(1).*(t-1790));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];r0=[0.0359,3.9];r=nlinfit(t,c,p,r0);sse=sum((c-p(r,t)).^2);plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')axis([1790,2000,0,290])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据-指数增长型')legend('拟合数据')程序调用:rr=0.014214.9940ssesse=2.2639e+003(3)拟合待定参数t0,x0和r.要求写出程序,给出拟合参数和误差平方和的计算结果,并展示误差平方和最小的拟合效果图.程序代码:p=@(r,t)r(2).*exp(r(1).*(t-1790+1.*r(3)));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];r0=[0.0359,3.9,1];[r,x]=nlinfit(t,c,p,r0);sse=sum((c-p(r,t)).^2);a=1790+1.*r(3);subplot(2,1,1)plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')axis([1790,2000,0,290])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据-指数增长型')legend('拟合数据')subplot(2,1,2)plot(t,x,'k+',[1790:2000],[0,0],'k')axis([1790,2000,-20,20])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合误差')程序调用:rr=0.01427.326450.3522xx=Columns1through5-11.0940-11.9857-12.7277-13.3735-13.5848Columns6through10-13.4328-11.9995-9.1795-8.1818-3.7321Columns11through150.72484.32189.366411.236413.3761Columns16through205.09034.739011.029910.01112.8613Columns21through22-6.4202-15.8260ssesse=2.2639e+003aa=1.8404e+0032、通过变量替换,可以将属于非线性模型的指数增长模型转化成线性模型,并用Matlab函数polyfit进行计算,请说明转化成线性模型的详细过程,然后写出程序,给出拟合参数和误差平方和的计算结果,并展示拟合效果图.非线性模型的指数增长模型转化成线性模型程序代码:t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];[p,s]=polyfit(t-1790,log(c),1)b1=p(1)b2=exp(p(2))subplot(2,1,1)plot(t,c,'r*',t,exp(polyval(p,t-1790)),'r')axis([1790,2000,0,290])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据—指数增长型')legend('拟合数据')c1=(c-exp(polyval(p,t-1790))).^2c2=sum(c1)subplot(2,1,2)plot(t,c1,'k+',[1790,2000],[0,0],'k')axis([1790,2000,-20,20])xlabel('年份'),ylabel('误差')title('拟合误差')程序调用:p=0.02021.7992s=R:[2x2double]df:20normr:1.1418b1=0.0202b2=6.0450c1=1.0e+004*Columns1through40.00050.00040.00030.0002Columns5through80.00000.00000.00080.0042Columns9through120.00660.01660.02970.0404Columns13through160.05560.05180.04280.0039Columns17through200.00080.00760.06840.3049Columns21through220.87321.9802c2=3.4892e+0043、请分析指数增长模型非线性拟合和线性化拟合的结果有何区别?原因是什么?非线性拟合线性拟合4、如果用阻滞增长模型00()00()()erttNxxtxNx模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算阻滞增长的以下三个数据拟合问题:(1)取定x0=3.9,t0=1790,拟合待定参数r和N;程序代码:p=@(a,t)(a(2).*3.9)./(3.9+(a(2)-3.9).*exp(-a(1).*(t-1790)));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];a=nlinfit(t,c,p,[0.03,350])sse=sum((c-p(a,t)).^2)plot(t,c,'r*',t,p(a,t),'r')axis([1790,2000,0,300])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据—阻滞增长型')legend('拟合数据')程序调用:a=0.0274342.4418sse=1.2249e+003(2)取定t0=1790,拟合待定参数x0,r和N;程序代码:p=@(a,t)(a(2).*a(3))./(a(3)+(a(2)-a(3)).*exp(-a(1).*(t-1790)));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];a=nlinfit(t,c,p,[0.03,350,4.0])sse=sum((c-p(a,t)).^2)plot(t,c,'r*',t,p(a,t),'r')axis([1790,2000,0,300])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据—阻滞增长型')legend('拟合数据')程序调用:a=0.0215446.57327.6981sse=457.7405(3)拟合待定参数t0,x0,r和N.要求写出程序,给出拟合参数和误差平方和的计算结果,并展示误差平方和最小的拟合效果图.p=@(a,t)(a(2).*a(3))./(a(3)+(a(2)-a(3)).*exp(-a(1).*(t-1790+1*a(4))));t=1790:10:2000;c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];[a,x]=nlinfit(t,c,p,[0.03,350,4.0,10])sse=sum((c-p(a,t)).^2)t0=1790+1*a(4)subplot(2,1,1)plot(t,c,'r*',t,p(a,t),'r')axis([1790,2000,0,300])xlabel('年份'),ylabel('人口(单位:百万)')title('拟合美国人口数据—阻滞增长型')legend('拟合数据')subplot(2,1,2)plot(t,x,'k*',[1790,2000],[0,0],'k-')axis([1790,2000,-20,20])xlabel('年份'),ylabel('误差')title('拟合误差图—阻滞增长型')legend('拟合数据')程序调用:a=0.02154
本文标题:离散数据拟合模型
链接地址:https://www.777doc.com/doc-4663619 .html