MATLAB数学实验报告 下载本文

2.4实验题目四

2.4.1 实验题目描述

1790

年到1980年各年美国人口数的统计数据如下表:

1800 5.3 1900 72.0 1810 1820 1830 1840 1850 1860 1870 1880 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 1910 1920 1930 1940 1950 1960 1970 1980 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 年份 1790 统计 3.9 年份 1890 统计 62.0

试根据以上数据,

(1) 分别用Malthu模型和Logistic模型建立美国人口增长的近似曲线

(设美国人口总体容纳量为3.5亿);

(2) 预测2000年,2005年,2010年,2015年,2020年人口数; (3) 对两种预测结果进行比较.

2.4.2问题的分析

2.4.2.1 Malthu模型

1798年,Malthus提出对生物繁殖规律的看法。他认为,一

种群中个体数量的增长率与该时刻种群的的个体数量成正比。设x(t)表示该种群在t时刻个体的数量,则其增长率(dx/dt)=rx(t),或相对增长率1/x*dx/dt=r.其中常数r=B-D,B和D分别为该种群个体的平均生育率与死亡率。

2.4.2.2

Logistic模型

1838年,Verhulst指出上述模型未考虑“密度制约”因素。

种群生活在一定的环境中,在资源给定的情况下,个体数目越多,个体所获资源就越少,这将抑制其生长率,增加死亡率。所以相对增长率1/x*(dx/dt)不应为一常数r,而应是r乘上一个“密度制约”因子。此因子随x单调减小,设其为(1-x/k),其中k为环境容纳量。于是Verhulst提出Logistic模型:dx/dt=rx(1-x/k)。

2.4.3实验设计的流程

2.4.3.1 Malthu模型源代码 clear;clf x=10:10:200;

y=[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(x+1780,'k-','markersize',20); axis([1780,2020,3,800]); grid;hold on n=20; a=sum(x(1:n)); b=sum(x(1:n).*x(1:n)); c=sum(log(y(1:n))); d=sum(log(y(1:n)).*x(1:n)); A=[n a;a b]; B=[c;d];

P=inv(A)*B; t=10:10:800; f=exp(P(1)+P(2)*t);

plot(t+1780,f,'ro-','linewidth',2); k=[2000 2005 2010 2015 2020]; f=exp(P(1)+P(2)*(k-1780)); fprintf('f=%.1f',f);

2.4.3.2 Logistic模型程序源代码 clc;clear; x=9:28;

y=[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(x*10+1700,y,'k.','markersize',15); grid; hold on;

axis([1790 2015 0 400]); m=1000*y./(1000-y); a1=sum(x); a2=sum(x.^2); a3=sum(log(m)); a4=sum(x.*log(m));

A=[20,a1;a1,a2]; B=[a3;a4]; p=inv(A)*B; t=9:0.1:55;

s=1./(0.001+exp(-p(1)-p(2)*t)); plot(t*10+1700,s,'r-'); k=[30 30.5 31 31.5 32];

l=[k*10+1700;1./(0.001+exp(-p(1)-p(2)*k))];

2.4.4上机实验结果的分析与结论

Malthus模型结果

Logistic 模型结果

对比预测结果与实际数据,可看出Logistic模型更符合自然规律。

三、 实验小结与体会

通过以上四组数学实验、我们熟悉了解了许多MATLAB的方法及理论、并尝试了将其运用到了实际问题中去,解决实际问题。比如,在实验一中,了解了方程的迭代以及分岔、混沌的概念;实验二中通过简单的MATLAB程序解决数学问题;实验三中尝试通过线性规划建立数学模型,从而解决生产生活中的实际问题,了解了最大最小化问题的求解及其MATLAB指令;实验四中通过人口预测问题的分析求解,了解运用最小二乘法进行数据拟合的基本思想,掌握了建立人口增长数学模型的思想方法,学会建立Malthu模型和Logistic模型。

此外,通过这几次数学实验,就个人而言,不仅思维得到了锻炼、提升,而且让我们感觉到数学的乐趣。用MATLAB编出的程序不仅