数学建模 野兔生长问题.docx
《数学建模 野兔生长问题.docx》由会员分享,可在线阅读,更多相关《数学建模 野兔生长问题.docx(34页珍藏版)》请在冰豆网上搜索。
数学建模野兔生长问题
数学建模一周论文
野兔生长问题
姓名1:
学号:
姓名2:
学号:
姓名3:
学号:
专业:
班级:
指导教师:
2009年1月4日
摘要:
通过观察表格中野兔在连续九年的数量,利用所学数学知识分析得出野兔的生长规律,从而预测出第十年野兔的数量。
分析了野兔种群数量的统计结果,假设野兔在十年内生长环境变化稳定,但是数据显示这是不可能的,因为在两个数据点处出现了异常的增长现象。
在异常的自然条件下野兔的生长状况是不符合正常的生长律的。
因此我们先排除这两个异点,并试图揭示剩下的几组数据兔种群数量变化的规律。
模型里所给出的主要微分方程中有两个参数需要给出。
在给参数的过程中我们发现某些量值之间存在着线性函数关系式,利用计算机我求出了线性比例因子从而确定了所给出的参数。
在模型求解过程中,我们发现,对logistic模型赋予不同的参数会导模
型的解在一定程度上的变化。
于是我们想知道参数在一定范围内的改变到底对
解函数产生多大的影响?
这个问题的探讨实际上是对解的可靠性的探讨,对题
本身有较强的实践意义。
我们最终把这个问题归结为含参数的初值问题的微方
程对初值的依赖性与对参数的依赖性问题。
在对问题的探讨中,我们避免了纯粹的数学理论,而是利用计算机给出模型的解函数在不同的初值条件下、不同参数下的表现,并利用Matlab绘制成图像,直观且清晰地反映出模型的解函数对参数与初值不同选取的表现。
在解决这个问题的途中,我们还利用到了计算方法课程所学到的知识,通过观察数据,利用插值法描出图像,近似得出函数,再得出第十年的野兔数量。
野兔生长模型
1、问题重述
这是一个关于野兔生长状态的模型。
我们知道研究一定空间内某一生物物种的种群数量随时间变化的规律是很有实践意义的。
通过发现规律,我们可以更有效的了解一个种群发展变化的趋势、种群对自然世界的依赖程度和种群自身的成长结构,对人类了解并掌握自然规律,利用与控制生物资源有较大意义。
人类自身作为地球上的一个物种,也在不断的探求自己的命运。
由于地球上的资源与空间有限,人类自身的种群数量(即通常意义上的人口)就变得很重要了。
事实上,早在18世纪末,马尔萨斯(ThomasMalthus,1766—1834)就发表了著作《人口原理》,从此激发了人们研究人口增长趋势的兴趣。
马尔萨斯在他的这本书里提出了人口按指数增长的模型,并断言人口数量最终将超出食物所能提供的容纳能力。
虽然马尔萨斯模型的假设忽略了人口增长中的一些重要因素,但是这个模型作为以后改进模型的基础是很有价值的。
从这个意义上说,我们去探索野生动物的生长规律,正如同探索人类自身的种群数量,即人口增长规律一样,显得很有价值。
我们得到的数据是某地区野兔的数量在连续十年中的统计结果,如下表:
时间:
年数量:
十万
T=0
T=1
T=2
T=3
T=4
T=5
T=6
T=7
T=8
T=9
1
2.31969
4.50853
6.90568
6.00512
5.56495
5.32807
7.56101
8.9392
9.5817
我们要做的是通过分析所给数据,得出野兔生长的规律,即想办法用一个关于时间的函数来表达野兔的数量。
并预测T=10时野兔的数量。
2、问题的分析
时间(年)
T=0
T=1
T=2
T=3
T=4
T=5
T=6
T=7
T=8
T=9
数量(十万)
1
2.31969
4.50853
6.90568
6.00512
5.56495
5.32807
7.56101
8.9392
9.5817
增长量(十万)
/
1.31969
2.18883
2.39715
-0.90056
-0.44017
-0.23688
2.23294
1.37819
0.64250
增长百分比
/
131.97%
94.36%
53.17%
-13.04%
-7.33%
-4.26%
41.91%
18.23%
7.19%
我们先假设在一个小的单位时间间隔内新出生的兔子百分比为b,类似的兔
子死亡率的百分比为c。
换句话,新的兔子数P(t+Δt)是原有兔子数P(t)加上
在Δt时间内新增兔子数减去死亡兔子数,即
P(t+Δt)=P(t)+bP(t)Δt-cP(t)Δt
或
这样我们把问题化归到如何确定k。
一旦k被确定,通过已知数据,我们解这个
微分方程,就可以得到一个野兔数量随时间变化的函数了。
我们考虑(式2-1)中度量增长率的比例因子k是兔子数的函数而不是常数。
(否则当k是常数时我们知道兔子数将成指数增长,这是令人难以置信、不切实际的。
)考虑到在一定区域内,兔子的生存空间是有限的,食物是有限的,且存在种间竞争与种内竞争,结合生物学理论可知兔子数量必然趋于某个饱和值,是有限的。
我们假设这个饱和值是M,则合理的猜测是随着兔子数的增长并逐渐接近饱和值M时,比率k逐渐减小。
关于k的一个简单情形是线
性的子模型
k=r(M-P),r>0
其中r是常数,代入(式2-1)得到
dt(t≤t≤t)
dP
⎪=r(M-p)P
(式2-2)
P(t0)=p0
求解这个微分方程我们得到:
这个模型最早是由丹麦生物数学家Pierre-FrancoisVerhulst(1804--1849)
提出的,称为logistic增长模型。
在下面的模型求解部分,我们将大量使用该
函数来模拟野兔生长状态。
当然(式2-3)的得出依赖着假设k是一个简单的线性
子模型,我们将在模型的改进部分对此作一些讨论。
3、模型的假设
对模型的假设,我们在问题的分析中已经提到,为严谨在此完整列出。
野生兔的生活空间是有限的,食物是有限的,存在着种间竞争与种内竞争。
因此野生兔的数量将趋于一个稳定的饱和值。
假设除了T=4、T=5这两年外,野生兔的生长条件(包括天敌,气侯食物,空间,雌雄比例等)是近似的。
假设统计数据是可靠的。
度量野兔数量增长率的比例因子k是线性的子模型。
4、符号说明
在问题分析部分已出现并说明了一些符号,为严谨这里完整列出。
M:
野兔种群数量的饱和值
P(t)或P:
野兔种群数量随时间的函数
k:
增长率比例因子
pi:
时间为T=i时所对应的野兔数量统计值
C1,C2,C:
积分得到的常数
T,t:
时间变量
m:
表示斜率
C1C2C3M1M2M3
5、模型的求解
对种群饱和值的估计:
为了求出模型的解函数(式2-2),我们是需要估计出种群数量的饱和值M
与另一个参数r。
我们有下面的分析:
由(式2-2)可以得到:
P(M-P)(式5-1)
通过初等运算(式5-1)改写为
dP/P+dP/(M-pP)=rMdt(式5-2)
对上式两边积分,得到:
lnP-ln(M-P)=rMt+C(C为常数)(式5-2)
由(式5-3)知那么如果我们事先估计并确定M,再在图形中画出若干离散的点
2
)
其中t=0,1,2,3,4,5,6,7,8,9,就可以利用Matlab的直线拟合,求出斜率m=rM,从而确定r。
ln=rMt+C
M估计为10(十万)时,ln(p/(M-p))=Mrt+C的函数曲线
时间(年)图5-1
如图5-1所示,图形分为两段,第一段(第0年到第3年)和第二段(第6年到第9年)确实近似于直线。
并且得到:
两条的直线斜率都为m=1,r=0.1
M估计值为9.9(十万)时,ln(p/(M-p))=Mrt+C的函数曲线
函数曲线在0-3年的分支,参数为C1
函数曲线在6-9年的分支,参数为C2
时间(年)
图5-2
斜率m=1.007,r=0.10172(第0年到第3年);
斜率m=1.0812,r=0.10921(第6年到第9年)
(3)M=10.1(十万),
M估计值为10.1(十万)时,ln(p/(M-p))=Mrt+C的函数曲线
函数曲线在0-3年的分支,参数为C1
函数曲线在6-9年的分支,参数为C2
斜率m=0.99326,r=0.0983;斜率m=0.93706,r=0.09278。
接下来我们让M分别取这三个值时,利用式(2-2)估计出的不同年份的野兔数
量和实际统计数据之间的偏差情况。
用(式2-2)对各年份野兔数量作出计算及比较
(1)M=10(十万)时:
式(2-2)在从第0年到第3年就可以变为:
野兔种群饱和值为10(十万)的对比曲线
0-4年logistic函数曲线(第零年为初值)
图5-4
(2)M=9.9(十万)时,
用类似于
(1)的方法,我们得到表格:
时间
(年)
统计得到的兔子数
量(十万)
通过函数计算得到的兔子数量
(十万)
百分误差
0
1.00000
1.00000
0.00000%
1
2.31969
2.32870
0.38800%
2
4.50853
4.52522
0.37000%
3
6.90568
6.90426
-0.02100%
4
6.00512
8.54547
42.30300%
5
5.56495
9.35811
68.16200%
6
5.32807
5.32807
0.00000%
7
7.56101
7.66817
1.41700%
8
8.93920
9.01047
0.79700%
9
9.58170
9.57924
-0.02600%
10
9.78882
表5-2
从表格中可以看出:
第十年的野兔数量为978882只。
同样,作出此时的对比图形:
野兔的种群饱和值为9.9(十万)的曲线对比
(3)M=10.1(十万),用类似于
(1)的方法,得到的表格:
时间
(年)
统计得到的兔子数
量(十万)
通过函数计算得到的兔子数量
(十万)
百分误差
0
1.00000
1.00000
0.00000%
1
2.31969
2.31103
-0.37300%
2
4.50853
4.49235
-0.33900%
3
6.90568
6.90685
0.01700%
4
6.00512
8.62344
43.60100%
5
5.56495
9.49769
70.67000%
6
5.32807
5.32807
0.00000%
7
7.56101
7.47658
-1.11700%
8
8.93920
8.87936
-0.67000%
9
9.58170
9.58384
0.02200%
10
9.89129
式5-2
从表格中看出:
此时,第十年的野兔数量为989129只
这个时候的对比图形:
图(5-5)
模型求解的结论
从图形(图5-4、图5-5、图5-6)中可以看出,除了第4年和第5年之外,
函数曲线和原始数据的连线吻合的非常好,因此,我们认为野兔的生长规律可以
用函数(式2-2)来模拟。
同时得到,第四年和第五年的野兔增长出现异常现象。
根据图形(图5-4、图5-5、图5-6)的对比和表格(表5-1、表5-2、表5-3)
中数据的对比,以及最后表格5-4的结果,可以得出:
取野兔种群的饱和值M
为10(十万)时,经计算得到的数据与统计数据之间的百分误差最小,因此,
我们根据M为10(十万)这一情形对第十年野兔的数量作出预测,得到预测值
为984194只。
6、模型的误差分析
这里我们需要讨论几个造成模型误差的问题,它们都很有实际意义。
一个是
模型对初值的依赖性问题,另一个是模型对参数选取的依赖性问题。
先说明它们的意义。
在建立模型时,我们分别利用了T=0与T=6两年的数据作为微分方程(式
2-2)的初值而求得了方程的解,有两个自然的疑问是:
(问题6-1-1)
如果我们选取不同的数据点作为模型的初值,所得到的函数会有多大的差
别?
(问题6-1-2)
我们曾假设问题所给的数据是准确的,但是数据是由测量获得的,测量难免
有误差,那么测量的微小误差又会导致模型的解函数有怎样的变化?
以上的疑问都源于模型中微分方程(式2-2)对初值的依赖性。
在模型求解中我们也看到了对种群数量的饱和值的不同估计会导致解函数
的变化,如下表:
表6-1
于是我们想知道,
(问题6-2)
)
数
野
对种群数量饱和值的不同估计会对模型的解产生多大的影响?
从(表6-1)的数据已经看到M的不同取值对预测野兔第十年的种群数量
所产生的相对误差似乎不是太大。
事实上,M作为微分方程(式2-2)的重要参
数,我们可以把上述问题归结为微分方程对参数的依赖性问题。
注:
r也是(式2-2)的参数,但在这里我们并不打算分析模型的解对r的依赖
性,因为在模型求解中我们已经看到r的确定在很大程度上依赖于M,因此在
这里只要抓住问题的主要影响因素M就好了。
下面分别说明之。
这里只对从T=6到T=9这部分的模型函数作上述讨论,模型函数另一支的讨
论是类似的。
我们逐个回答上面提出的问题。
现选取不同的数据点作为(式2-2)的初值,我们得到四条曲线,其初值点
分别为(6,5.32807),(7,7.56101),(8,8.93920),(9,9.58170),并把它们
会置于同一张图上,如下图:
研究不同的初值点对模型解的影响(图中有四条曲线)
图6-1
我们看到,四条曲线几乎重合,从图形直观上,很难分辨它们。
于是我们认
为选取不同的初值点对模型的解几乎没有影响,这回答了(问题6-1-1)。
下面假设统计数据存在误差,为明确,我们假设所给初值有误差,并假设误差为正负0.25000(十万)只(误差百分比约为4.69%)。
于是分别以点(6,5.32807+0.25000),(6,5.32807),(6,5.32807-0.25000)为初值,
得到三个模型的解函数,分别记为
)
十
P
大的容忍度,即一定范围内的统计误差不会导致模型的解函数发生较大的变化,
解函数对初值的灵敏度较低,稳定性较好。
同样对于选取初值点为T=7、8、9
时,都有类似的结论,这回答了(问题6-1-2)
现在考虑M的不同取值对模型的解曲线的影响。
我们把M=9.9,10.0,10.1(十万只)所对应模型函数绘制于同一张图像中,得到下图
这样可以看出,模型的解函数对参数M的灵敏度低,即在一定的范围内,
M的变化对解函数的影响较小,模型函数的稳定性好。
这回答了(问题6-2)。
7、模型的改进(引用文献[3]内容)
由于种群增长受资源的限制,因此其增长是有限的。
Logistic方程假设种
群增长率降低的影响是最简单,即随密度上升而逐渐地,按比例地减小。
如M
为环境容纳量,当种群每增加一个个体时就对增长率降低产生了1/M的影响,
这样对密度制约激励的效应就成了线性的,也可以理解为若种群中有P个个体,
就利用了P/M部分的空间,而可利用的只有(1-P/M)部分,但是许多种群的
增长规律中都呈现出对密度制约效应的非线性趋势。
而且前面的模型中没有考虑
环境因子对种群增长的影响,因此在这里,给出一个密度制约效应成非线性且考
虑环境因子对种群增长影响的Logistic新模型:
Logistic新模型结构比指数模型结构增加了修正项
它表示剩余
空间或未利用增长机会既受到种内竞争特性对瞬时种群增长量的影响还受到环
境对种群增长的影响,参数k表示环境对种群增长的影响,其值大小可以用来反
映环境对种群的影响程度。
当k>1,表示环境对种群增长起抑制作用;当k<1时
表明环境对种群增长起促进作用,参数θ为种内竞争特性参数,其值满足
0<θ<+∞,当θ<1时,模型(式7-1)呈下凹增长趋势;当θ>1时,模型(式
7-1)呈上凸趋势,当θ→+∞时,种群呈负增长趋势;θ→0时,模型(式7-1)
趋向于固定密度效应的指数增长;
当k=1、θ=1时,模型(式7-1)即为Logistic模型。
同时,这样一个新的
模型还可以判断出在T=4和T=5时,模型中的参数k>1,即环境抑制种群增长。
8、模型的评价与推广
模型评价
一开始我们根据生物学的知识,对种群数量的饱和值取了一个估计值,而事
实上,我们在估计了M=10左右的几个值后,又分析了不同的M值对模型解的影响,从而得出我们对M值的估计具有一定的现实性和真实性。
在考虑初值误差对模型解影响过程中,我们采用常微分知识,考虑解对初值的依赖性和解对参数的依赖性,这种思路对于实际研究具有极其重大的现实意义。
该模型的使用范围是:
在一定的空间区域内,不考虑环境的重大变化对生物
种群的影响,而是按照该区域的一般自然规律。
同样,这也是本模型的不足
之处,因为现实中,我们研究的生物种群可能对环境的依赖性很强,那么环
境的影响就是一个重要的因素,但是我们也意识到要用一个很具体的模型,
该模型考虑现实中的每一个因素,并且表示这些因素的表达式又是简单的数
学式,要找这样的模型是很困难的,而我们采用的模型在绝大部分同类问题
中所体现的优越性是易见的,并且我们在以上的分析中也给出了相对较好的
(式7-1)模型。
模型的推广
这个模型是针对一定空间区域内,在一般规律下,对生物种群数量随时
间的变化范围作出的估计。
这种估计对于研究某一区域内的种群有直接
的好处,也利于人类研究人类自身。
对于一定区域内的生物种群,如果考虑种群生存环境的一般现象,我们
可以从事实上看到我们应用的模型对于该类问题的解决有重大的预见效
果,参见表5-1。
现在,在关于生物种群数量的研究中,有很多种方法,而logistic模型对
于这类与现实搭配的事实更趋于成功。
由以上的分析,我们看到了该模
型对于相对较小误差的测量,是可以得到相当准确的预测值的。
于是,
我们认为,在环境不发生重大改变的情况下,研究生物种群数量与时间
的关系就可以采用我们在解决本问题时的解法。
参考资料:
[1]FrankR.Giordano,MauriceD.Weir,WilliamP.Fox,AFirstCoursein
MathematicalModeling,(ThirdEdition),北京:
机械工业出版社,2005.1
[2]郑阿奇等,MATLAB实用教程,北京:
电子工业出版社,2004.5
[3]洪伟,吴承祯等,对种群增长模型的改进,应用与环境生物学报,2004.10
附录
****************注意:
运行时,每个程序都是独立的**************
程序说明:
程序二:
饱和值M估计为9.9(十万)时,仿造程序一计算相应表达式中r值和
函数图形的绘制。
程序三:
饱和值M估计为10.1(十万)时,仿造程序一计算r值和函数图形的
绘制。
(这里,图形是分段进行绘制的,第一段为第零年到第四年,第二段为
第五年到第十一年),同时将这个函数图形与统计的数据连线进行对比作出对比曲线。
并且计算出第十年的野兔数量。
,
程序五:
M估计为9.9(十万)时,仿照程序四,作出相应的曲线和计算出第十
年的野兔数量。
程序六:
M估计为10.1(十万)时,同样仿造程序四,作出相应的曲线和计算
出第十年的野兔数量。
程序七:
在最后预测第十年野兔数量时,研究模型的解对初值点(第六年对应的
统计量)统计误差的依赖性的程度,即在同一个坐标系中,绘制出三条
曲线,其中一条为以第六年的统计量为初值,其他两条中有一条的初值
多于第六年的统计量,另一条少于第六年的统计量。
同时计算出曲线之
间的最大差值。
程序八:
在最后预测第十年野兔数量时,研究不同的初值点的选取对模型的解的
影响程度,即分别以第六年,第七年,第八年,第九年的统计量作为函
的初值,并且在同一个坐标系中绘制四条曲线。
程序九:
预测第十年野兔数量时,研究不同的M值对模型的解的影响程度,即
在同一个坐标系中绘制出M分别取9.9,10,10.1的曲线。
同时计算出
曲线之间的最大差值。
具体程序:
(注:
每个附录都与相应的程序对应,即附录一对应与程序一)
附录一
T=0:
9;%第零年到第九年的时间段%
T1=0:
3;%前四年%
T2=6:
9;%后四年%
P=[12.319694.508536.905686.005125.564955.328077.561018.9392
9.5817];%十年中每年对应的数据%
P1=[12.319694.508536.90568];%前四年每年对应的数据%
P2=[5.328077.561018.93929.5817];%后四年每年对应的数据%
A1=P1./([10]-P1);%接下来的是表示取MM为种群的饱和值)为10,其中符号“1”
为前四年对应的数据,“2”后四年的数据%
X1=log(A1);
p1=polyfit(T1,X1,1);
p1x=poly2str(p1,'x');
p1v=polyval(p1,T1);
p1,p1x
A2=P2./([10]-P2);%2为取后四个数据%
X2=log(A2);
p2=polyfit(T2,X2,1);
p2x=poly2str(p2,'x');
p2v=polyval(p2,T2);
p2,p2x
plot(T1,X1,'dk',T1,X1,T1,p1v,T2,X2,'dk',T2,X2,T2,p2v)
附录二
T=0:
9;%第零年到第九年%
T1=0:
3;%第零年到第三年%
T2=6:
9;%最后四年%
P=[12.319694.508536.905686.005125.564955.328077.561018.9392
9.5817];%从第零年到第九年每年相应的野兔数%
P1=[12.31969