1、matlab数学实验报告docMATLAB数学实验报告 -人口统计与预测指导老师:王宁实验者: 核工程93 孔海宇 09032064 核工程93 万承辉 09032075核工程93 张勇 09032082 实验日期:2010年5月28日实验目的 通过对人口预测问题的分析求解,了解利用最小二乘法进行数据拟合的基本思想,熟悉寻找最佳拟合曲线的方法,掌握建立增长数学模型的思想方法。通过拟合图像,对人口进行预测。实验原理 对于已知的关于自变量和因变量的一组数据(,),(),(),寻找一个合适的类型的函数y=f(x)(如线性函数y=ax+b,多项式函数,指数函数等),使它在观测点处取得的值与与观测值在某
2、种尺度下最接近,从而可用函数y=f(x)作为由观测点所反映的规律的近似表达式。数据拟合(最小二乘法):对于已知的一组数据(),(), 设定某一类型的函数y=f(x) 后, 确定函数中的参数, 使得在各点处的偏差的平方和最小,这种根据偏差平方和最小的条件确定参数的方法叫做最小二乘法. 在最小二乘问题中函数 的选取是非常重要的,但同时又比较困难。对于一般的拟合函数通常选取为一组线性无关的简单函数类(又称为拟合基函数)的线性组合 ()通过最小二乘法求出待定常数(。多项式曲线拟合:如果选用的基函数为幂函数类:1, ,此时拟合函数为一个m次多项式函数 ,根据最小二乘法拟合思想,问题归结为m+1元函数 的
3、最小值问题。利用多元函数取极值的条件 得到法方程组 可以求得多项式系数 .对于多项式曲线拟合的求解,MATLAB软件提供了相应的命令polyfit ,格式:p= polyfit(x,y,m)其中x,y为已知数据点向量,m为要拟合的多项式次数,结果返回拟合的m次多项式系数,从高次到低次存放在向量p中,再用命令y0=polyval(p,x0)求得多项式在x0处的值y0。由于高次多项式曲线变化不稳定,因此拟合时多项式次数不宜过高实验内容 本次实验要求根据美国前100年的人口数据数据,分别用Malthus和Logistic模型建立美国人口增长的近似曲线(设美国人口总体容量为10亿),并预测后100年我
4、国的人口数,通过与实际数据相比较,对两种预测结果进行分析。1790年到1980年各年美国人口的统计数据如下表:美国人口统计数字(单位:百万)Malthus模型 1978年,英国统计学家Malthus在进行大量的统计基础上发现了一个关于生物种群的繁殖规律,就是一个种群中个体数量的增长率与该时刻种群的个体数量成正比。按照此规律,设种群个体数量为时刻开始计时,t时刻种群个体数为,于是得到Malthus模型: 求解此方程,得到生物种群繁殖的规律为: 由此可见,生物种群个体数量是按照指数方式增长的。Logistic模型 1838年,荷兰生物学家Verhulst做了进一步的分析后指出,导致Malthus模
5、型不符合实际情况的主要原因是Malthus模型未能考虑生物种群繁殖过程中“密度制约”因素。事实上,种群生活在一定的环境中,在资源给定的情况下,个体数量越多,每一个个体获得的资源就越少,这将抑制其生育率,增加死亡率。因而,相对增长率不是常数,而应该乘上一个“制约因子”。这个因子随的增加而减少,设为,其中k为环境的容纳量。于是Verhulst提出了生物种群增长的Logistic模型: 求解方程得: 这便是Logistic模型。 实验问题求解: Malthus模型下的求解程序 clear;clft=1790:10:1980;N=3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4
6、38.6 50.2 62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5;plot(t,N,k.,markersize,20);axis(1790 1980 0 1000)grid;hold onpause(0.5)n=10;a=sum(t(1:n);b=sum(t(1:n).*t(1:n);c=sum(log(N(1:n);d=sum(t(1:n).*log(N(1:n)A=n a;a b;B=c;d;p=inv(A)*Bx=1790:10:1980;y=exp(p(1)+p(2)*x);plot(x,y,r-,linewidth,
7、2) Logistic模型下的求解程序clear;clft=1790:10:1980;N=3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5;plot(t,N,k.,markersize,20);axis(1790 1980 0 600)grid;hold onpause(0.5)n=10;I=3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2K=1000 1000 1000 1000 1000 100
8、0 1000 1000 1000 1000g=1./I;h=1./K;M=g-h;a=sum(t(1:n);b=sum(t(1:n).*t(1:n);c=sum(log(M(1:n);d=sum(t(1:n).*log(M(1:n)A=n a;a b;B=c;d;p=inv(A)*Bx=1790:10:1980;y=1./(0.001+exp(p(1)+p(2)*x);plot(x,y,r-,linewidth,2) 实验结果分析1、在Malthus模型下的求解情况分析由程序运行解得的a=-49.7954;b=0.0286由程序运行的曲线如下2、在Logistic模型下的求解情况分析由程序运行
9、解得的a=50.7047.7954;b=-0.0291由程序运行的曲线如下3、两种人口预测模型的对比由实验可知,两种模型均可对人口的未来走向有所预测,但很明显,Malthus模型在预测时会产生较大的误差,相比之下,由于Logistic模型考虑到了“密度制约”的因素,引进了一个制约因子,因此修改后的认可预测模型能够更好地对未来的人口加以预测。下面的图形是将两种模型的曲线在同一个图中加以比较,其中蓝色的线代表的是Malthus模型的人口预测曲线,红色的线代表的是Logistic模型的人口预测曲线,黑点代表实际的人口数目。 由图中二者的对比不难发现,Logistic模型确实比Malthus模型能更好
10、地对未来人口的走向加以预测。所以Logistic模型是一个更好的人口预测模型。实验误差分析 虽然两种人口模型均可以对未来的人口走势进行预测,但是,实际的人口数目仍小于预期的人口数目,而且随着时间的增加,这种误差会越来越明显。 这是由于实际情况下的情况更加复杂,除了人口密度的制约因素外,人口增长的因素还受到其他众多因素的影响,比如自然灾害、流行性疾病的发生、战争等等。例如,在20世纪三四十年代,人口的增长出现了短暂的停滞,这应该是由于美国当时正处于大萧条时代,后来又卷入了第二次世界大战的缘故,所以人口的总数会出现减缓增长的现象;而到了60年代前后,那时美国经济正在飞速发展,人口也在以一个较高的速度发展。这些外在因素的影响导致了实验预测产生误差,而且外在的因素影响越强烈,实验的预测情况与实际情况之间的误差就会越大。 总结与收获在此次实验中,我们共同合作,学会了用matlab编写简单的数学程序进行一些建模和数学计算,同时我们还掌握了两种人口预测的模型,并且在合作研究之中学会了如何客观全面地分析问题,解决问题。在我们一起合作时,我们也体会到了共同合作学习的重要性,学会了如何团结合作完成一个问题。总之,此次数学实验让我们受益匪浅,学到了很多知识,收获了很多能力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1