简单的人口迁徙——马尔科夫矩阵

科学   2021-04-17 20:17  

今天介绍一个特殊的矩阵,马尔科夫矩阵,它特殊在每一列加和等于1,根据这个特征可以用它来研究一些固定比例的变化问题。


比如有A、B两个地方,它们有各自的人口,但是每一年都会有80%的A地人留在A地,而剩余20%会迁往B地,对于B地,会有40%的人迁往A地,剩余60%留在B地,迁徙一次后,也就是一年后,两地的人口明显可以如下表示

A0与B0是开始时两地的人口,而A1、B1是一年后两地的人口。


假设每一年的迁徙比例都是固定的,我们可以很轻松的知道任意年后,两地的人口。


在上一篇讲述特征值与特征向量的文章中,讲述了用特征值与特征向量来处理递归函数的方法,而要知晓n 年后A、B两地的人口也是同样的递归问题。


我们依照上一篇文章的思路,可以得到以下关系

其中,S是系数矩阵的特征向量组成的矩阵,Λ是系数矩阵的特征值组成的对角阵,C是对特征向量取线性组合组成初始值矩阵的系数矩阵。


由此,我们就可以得到任意年的A、B两地人口数了。而且马尔科夫矩阵有一个性质,就是一定有一个特征值为1,而其它特征值都小于1。这个性质说明了什么?


注意,将上式展开写就是

从这个式子可以看出,当n趋于很大时,由于只有一个特征值等于1,而其它的特征值小于1,所以那些特征值小于1的项会趋于0,换句话说,这个式子n取无穷时的极限就是特征值等于1的那一项的值。在很多年后,A、B两地的人口会趋于固定,不再变化。


要计算多个地点之间的人口往来也是同样的道理,如下是显示五个地点A、B、C、D、E的人口变化趋势的程序

M=[0.6,0.01,0.05,0.01,0.02;...   0.18,0.75,0.26,0.003,0.12;...   0.1,0.15,0.42,0.02,0.25;...   0.1,0.08,0.18,0.96,0.01;...   0.02,0.01,0.09,0.007,0.6];           % 马尔科夫矩阵(系数矩阵),每列加和等于1
u0=[6000;10600;3750;21000;2500]; % A、B、C、D、E五个地区的初始人口
[S,L]=eig(M); % 计算马尔科夫矩阵的特征值与特征向量
C=S\u0; % 计算系数矩阵C
Y=1:20; % 从第1年到第20年的范围
mysize=size(Y);
EachY_A=ones(mysize);EachY_B=ones(mysize);EachY_C=ones(mysize);EachY_D=ones(mysize);EachY_E=ones(mysize);
for i=1:mysize(2) un=S*(L^(i-1))*C; % 特征值与特征向量表示的递归公式 EachY_A(i)=un(1); % 将每一年,各地的人口保存到对应的矩阵中 EachY_B(i)=un(2); EachY_C(i)=un(3); EachY_D(i)=un(4); EachY_E(i)=un(5);end
plot(EachY_A); % 将五个地区的人口趋势显示在图像上hold onplot(EachY_B);plot(EachY_C);plot(EachY_D);plot(EachY_E);legend('A','B','C','D','E')hold off


以下是程序运行结果


可以看出各地的变化趋势,而每个地区的人口最后都会趋于一个稳态值,这是由马尔科夫矩阵的特征值的性质决定的,以下是上面程序中马尔科夫矩阵的特征值对角阵


确实是除了一个为1的特征值,其它的特征值都小于1,这是最后能趋于一个稳态的关键。


读者可自行寻找其他例子,尝试更高阶的马尔科夫矩阵的应用。



地球远征军
普通一本毕业的物理大学生,在普通一本继续读物理研究生,当个普通人的同时多多思考宇宙。记录学习物理之路上的有趣见闻,一起保持住刚学习物理时的惊喜感和好奇心,希望有生之年看到人类遨游宇宙,走向星空。
 最新文章