1、题目
半数新生老鼠存活 ;存活其中的半数活到2岁;最大寿命3岁;老鼠在1,2,3岁分别生0,6,8老鼠;求100年后老鼠的“人口结构”,老中青三代比例。200年结果?
2、题目分析
由题目可知,每一代老鼠的“人口结构”只与上一代老鼠的“人口结构”有关,假设第n代老鼠中青年、中年和老年的数量分别是y(n)、m(n)、o(n),则下一代老鼠中青年、中年和老年的数量分别是y(n+1)=1/2*(m(n)*6+o(n)*8)、m(n+1)=1/2*y(n)、o(n+1)=m(n)。先假定第一代的老鼠“人口结构”,根据以上迭代关系便可求得100年和200年后的老鼠“人口结构”。
3、仿真结果
4、结果分析
由图1和图2可以发现,青中老三代在100年和200年后的占比都分别是0.672、0.204、0.124,由图3和图4可以发现,老鼠的“人口结构”在25年之后会稳定下来,由图5可发现,不管第一年老鼠的青中老三代如何分布,其最终分布都会在25年之后稳定在某一个确定的状态。综上,可以得出结论:在马尔可夫链中,每个状态的出现只和上一状态有关,因此初始概率分布对后续的状态转移概率影响不大,即便我们使用不同的初始概率分布,最终的稳定状态概率分布仍然趋于相同的值。
5、代码
clear;
Generation(1,:) = [10,0,0];%第一代老鼠中青年、中年、老年的数量
Generation_rate(1,:) = Generation(1,:)/sum(Generation(1,:),2);%第一代青中老占比
%根据老鼠的繁衍规律进行迭代
for i=2:200
Generation(i,1) = Generation(i-1,2)*3 + Generation(i-1,3)*4;
Generation(i,2) = Generation(i-1,1)*0.5;
Generation(i,3) = Generation(i-1,2);
%计算第i代中老鼠青中老三代的数量占比
Generation_rate(i,:) = Generation(i,:)/sum(Generation(i,:),2);
end
g = 1:i;
%画出青中老占比随代数增加的变化曲线
plot(g,Generation_rate(:,1),'-.',g,Generation_rate(:,2),'-',...
g,Generation_rate(:,3),':','LineWidth',2)
legend('younth-rate','middle-rate','old-rate')
xlabel('Generation')
ylabel('Rate')
% all_sum = sum(Generation(i,:),2);%计算第i代老鼠总数
% %计算第i代中老鼠青中老三代的数量占比
% youth = Generation(i,1)/all_sum;
% middle = Generation(i,2)/all_sum;
% old = Generation(i,3)/all_sum;