资源描述:
《离散数据拟合模型.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、成绩辽宁工程技术大学上机实验报告实验名称实验2离散数据拟合模型院系理学院专业班级11-1姓名学号日期05.20实验目的简述本次实验目的:掌握离散数据拟合模型的建模方法,并会利用Matlab作数据拟合、数值计算与误差分析.实验准备你为本次实验做了哪些准备:上网查阅相关资料,阅读教材《数学建模》实验进度本次共有4个练习,完成4个。实验总结日本次实验的收获、体会、经验、问题和教训:实验题目:已知美国人口统计数据如表,完成下列数据的拟合问题:年份17901800181018201830184018501860187018801890人口/百万人3.95.
2、37.29.612.917.123.231.438.650.262.9年份19001910192019301940195019601970198019902000人口/百万人76.092.0106.5123.2131.7150.7179.3204.0226.5251.4281.4实验要求:1、如果用指数增长模型模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算指数增长模型的以下三个数据拟合问题:(1)取定x0=3.9,t0=1790,拟合待定参数r;程序代码:>>p=@(r,t)3.9.*exp(r.
3、*(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);
4、>>plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')>>axis([1790,2000,0,290])>
5、>xlabel('年份'),ylabel('人口(单位:百万)')>>title('拟合美国人口数据-指数增长型')>>legend('拟合数据')程序调用:>>rr=0.0212>>ssesse=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,
6、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.9940>>
7、ssesse=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
8、,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+',[17
9、90:2000],[0,0],'k')>>axis([1790,2000,-20,20])>>xlabel('年份'),ylabel('