利用matlab编程求解人口预测模型.doc
利用matlab编程求解人口预测模型
一、名词和符号说明
名词解释:
(1)拟合: 对于某个变化过程中的多个相互依赖的变量,可建立适当的数学模型,用于分析预报决策或控制该过程.对于两个变量可通过用一个一元函数去模拟这两个变量的取值.用不同的方法可得到不同的模拟函数.下面使用图表介用Mathematica做曲线拟合。
(2)差分方程:含有自变量,未知函数以及未知函数差分的函数方程,称为差分方程。
(3)迭代法:是牛顿在17世纪提出的一种求解方程f(x)=0.多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。 设r是f(x)=0的根,选取x0作为r初始近似值,过点(,f())做曲线y=f(x)的切线L,L的方程为,求出L与x轴交点的横坐标 ,称为r的一次近似值,过点(,f())做曲线y=f(x)的切线,并求该切线与x轴的横坐标称为r的二次近似值,重复以上过程,得r的近似值序列{Xn},其中,称为r的n+1次近似值。上式称为牛顿迭代公式。
符号说明:
第 k年i岁的女性总人数
女性人口的(按年龄)分布向量
第k年i岁的女性生育率
第k年i岁的女性死亡率
第 k年i岁的女性存活率
i岁女性的生育模式 k年总和生育率(控制人口数量的主要参数)
A 存活率矩阵
B 生育模式矩阵
二、模型假设
针对本题中出现的数据的代表意义和建立模型时能够使问题理想化、简单化,我们应用已知数据,将其时间离散化,由于女性是影响总人口变化的主要因素 ,因此本模型从考虑女性人口的发展变化出发, 我们在不失科学性的前提下作出如下合理的基本假设:
假设女性最大年龄为90岁,最小年龄为0岁,以1岁为1个年龄组,1年为1个时段,不考虑同一时间间隔内人口数量的变化。
(2) 中短期内,总和生育率、死亡率和出生性别比不会发生大的波动,可以以往年平均值代替预测值;
(3) 长期人口预测的参数主要由政策决定;
(4) 死亡率只与年龄有关,不考虑生存空间等自然资源的制约,不考虑意外灾难等因素对人口变化的影响。
(5) 生育率仅与年龄和时间有关,存活率也仅与年龄有关。
(6) 育龄区间为[14,49]。
(7) 在讨论乡村人口城镇化时,只考虑乡到城镇的迁入与迁出。
(8) 流入流出人口不改变该地区的人口性别、年龄结构。
三、模型的建立与求解
求解预测中长期人口增长问题
首先我们来建立一个离散的人口增长模型, 由于女性是影响总人口变化的主要因素 (考虑性别比即可得到总人口数量)所以我们借助于女性人口的发展变化规律来分析和预测总人口的发展变化趋势。引入Leslie人口模型,利用差分方程,既可得到离散型的人口模型。
a 、问题分析
根据附录2已有的数据,分别针对市、镇、乡人口的不同情况建立三个差分方程模型,运用Matlab 求解,再用Excel软件描绘出人口数量变化的趋势,对中国人口数量增长做出中短期(10—)和长期(50年以后)的分析和预测,确定人口增长的总趋势,并依据《中国人口统计年鉴》中已有人口总数进行模型验证。
b 、模型建立
首先,参照附表中的数据,由于市、镇、乡差距较大,我们将分别进行研究。
:第k年i岁的女性生育率; : k年总和生育率,或生育胎次;
:第k年i岁的女性死亡率; :第 k年i岁的女性存活率
: i岁女性的生育模式
,
用表示女性人口的(按年龄)分布向量,记A=
B=则模型应表示为:
=A+B
利用matlab软件编程求解,程序如下:
c=zeros(91);
d1=[ … … ];
for i=1:91
for j=1:91
if i==j
c(i+1,j)=d1(i)
end
end
end
A=c1
a1=[ … … ];
b=zeros(91);
for i=1:35
b(1,i+15)=a1(i)
end
B=b1;
=[ … …] %2001对应初始值
y=zeros(91,n)%n表示要预测年数
y(:,1)= ;
for k=1:19
y(:,k+1)=A*y(:,k)+(k)*B*y(:,k)
end
(一)用此模型预测中短期女性人口变化趋势
考虑到男女性别比例波动不大,所以女性人口数量的发展趋势可以预测全国总人口的发展趋势。
对所给数据进行处理,发现近期(k)变化很小,这里我们取=/5即:市:=1;镇:=1.254;乡:=1.649,代入模型方程,得:
x(k)=……………………………………………………………(3