当前位置:文档之家› 第二次数学建模作业

第二次数学建模作业

4. 根据表1.14 的数据,完成下列数据拟合问题:表 1.14 美国人口统计数据(百万人)年份1790 1800 1810 1820 1830 1840 1850 1860 人口 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4年份1870 1880 1890 1900 1910 1920 1930 1940 人口38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 年份1950 1960 1970 1980 1990 2000人口150.7 179.3 204.0 226.5 251.4 281.4解答:(1):(i)执行程序:t=1790:10:2000;x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.2,92.0,106.5,123.2,131.7,150.7,179.3,204 .0,226.5,251.4,281.4];f=@(r,t)3.9.*exp(r(1).*(t-1790));r=nlinfit(t,x,f,0.036)sse=sum((x-f(r,t)).^2)plot(t,x,'k+',1790:10:2000,f(r,1790:10:2000),'k')axis([1790,2000,0,300]),legend('测量值','理论值')xlabel('美国人口/(百万)'),ylabel('年份')title('美国人口指数增长模型图II')运行结果:>> Untitledr =0.0212sse =1.7433e+004即,拟合效果:r =0.0212;误差平方和为:1.7433e+004.拟合效果图(i):(ii)由表1.14我们知道,当t=1800时,有5)101(0≈+r x ,所以我们可以猜测,r=0.1,x =2.5.对待定参数0x ,r 进行数据拟合同时进行绘图,其程序如下:t=1790:10:2000;x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.2,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];f=@(r,t)r(1).*exp(r(2).*(t-1790)); r0=[2.5,0.1]; r=nlinfit(t,x,f,r0) sse=sum((x-f(r,t)).^2)plot(t,x,'k+',1790:1:2000,f(r,1790:1:2000),'k')axis([1790,2000,0,300]),legend('测量值','理论值',2) xlabel('美国人口/(百万)'),ylabel('年份') title('美国人口指数增长模型图II')命令窗口显示的计算的结果如下: >> Untitled r =15.0005 0.0142 sse =2.2657e+003即我们知道,拟合结果为:r=r(2)= 0.0142, 0x =r(1)= 15.0005;误差平方和为:2.2657e+003. 拟合效果图(ii ):(iii)由表1.14我们知道,当t=1900时,有()76)-t 1900101(00≈+r x ,所以我们可以猜测,r=0.03,x =19, 0t =1800.对待定参数0t ,0x ,r 进行数据拟合同时进行绘图,其程序如下:t=1790:10:2000;x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.2,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];f=@(r,t)r(1).*exp(r(2).*(t-r(3))); r0=[19,0.03,1800]; r=nlinfit(t,x,f,r0) sse=sum((x-f(r,t)).^2)plot(t,x,'k+',1790:1:2000,f(r,1790:1:2000),'k')axis([1790,2000,0,300]),legend('测量值','理论值',2) xlabel('美国人口/(百万)'),ylabel('年份') title('美国人口指数增长模型图III')命令窗口显示的计算的结果如下:>> UntitledWarning: The Jacobian at the solution is ill-conditioned, and some model parameters may not be estimated well (they are not identifiable). Use caution in making predictions. > In nlinfit at 224 In Untitled at 5 r =1.0e+003 *0.0159 0.0000 1.7939 sse =2.2657e+003即,拟合效果:r =0,0x =7.9,0t =1742.5;误差平方和为:2.2657e+003我们由MATLAB9给出的警告信息,知道这个拟合存在病态条件,所以数据可能拟合的不太好。

拟合效果图(iii ):综上,经分析我们应该(ii)才是这个问题的最好的拟合方案,因为(i )和另两个比较他的误差平方和最大,而(iii )则存在不正常的条件,所以这三个中,(ii)是这个问题的最好的拟合方案。

他的增长模型为:x(t)= 15.0005.*exp(0.0142.*(t-1790)).其拟合效果图如下:(2)对指数增长模型x(t)= 0x .*exp(r.*(t-0t ))两边求导数得:ln(x(t))=ln(0x )+r.*(t-0t ) 我们固定0t =1790再令ln(x(t))=y, ln(0x )=b(0),r=b(1), t-1790=x,于是原变式为:y=b(0)+b(1).*x. 转化成线性模型级拟合效果图的MATLAB 命令如下: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.2,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];x=t-1790;y=log(c);a=polyfit(x,y,1),x0=exp(a(2)),r=a(1)f=@(k,t)k(1).*exp(k(2).*(t-k(3)));k=[x0,r,1790];sse=sum((c-f(k,t)).^2)plot(-20:1:230,polyval(a,-20:1:230),'r',t-1790,log(c),'k+'),legen d('理论值','测量值',2)窗口计算结果为:a =0.0202 1.7993x0 =6.0456r =0.0202sse =3.4928e+004所以拟合的结果为:x0 =6.0456,r =0.0202;误差平方和为:3.4928e+004。

拟合效果图如下:(3)指数增长模型线性化拟合得误差平方和比非线性拟合大得多,拟合误差比较图的MATLAB命令如下:f=@(r,t)r(1).*exp(r(2).*(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.2,92.0,106.5,123.2,131.7,150.7,179.3,204 .0,226.5,251.4,281.4];x=c-f([14.9940,0.0142],t);y=c-f([6.045,0.0202],t);plot(c,x,'ro',c,y,'b+',0:.1:300,0,'k+'),legend('非线性拟合','线性拟合')axis([0,300,-160,40]),xlabel('美国人口(百万)'),ylabel('拟合误差'),title('指数增长模型的拟合误差比较图')图如下:我们从这个拟合误差比较图可以看出,非线性拟合的误差比较稳定,而线性拟合的误差却人口的增长越来越大。

出现这种情况的原因的当x(t)数值越大时,y 的对数带来的损失越大,使得线性拟合的误差越大。

(4)(i )由题目给的表知道,当t=1870时,有393.9-N 3.9 3.9N)17901870(≈+--r e )(,所以我们可以猜测N=40,r=7229.我们拟合待定参数r ,N 绘制拟合效果图的Matlab 命令如下: f=@(h,t)3.9.*h(1)./(3.9+(h(1)-3.9).*exp(-h(2).*(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.2,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4]; h0=[40,9/722]; h=nlinfit(t,c,f,h0)sse=sum((c-f(h,t)).^2),N=h(1),r=h(2)plot(t,c,'b+',1780:.01:2010,f(h,1780:.01:2010),'k'),legend('测量值','理论值',2) axis([1780,2010,0,300])xlabel('美国人口/(百万)'),ylabel('年份') title('美国人口指数增长模型图')命令窗口显示的计算结果: >> Untitled1 h =342.3524 0.0274sse =1.2294e+003 N =342.3524 r =0.0274 >>故,N= 342.3524,r=0.0274;误差平方和是:1.2294e+003。

相关主题