生小兔问题🐰
本文研究生小兔问题。使用代数模型,在考虑生育情况变化的情况下,求解兔子/白鼠的数目变化。
第1章 问题重述
生小兔问题 兔子出生后能够存活12个月,从第7月开始生小兔,7、8两月每对兔子生1对小兔/月,9、10两月每对兔子生2对小兔/月,然后停止生育,在第12月末死亡。设开始时有1对刚出生的小兔,问第k月有多少对兔子?
2002年ACM某题 一种实验用白鼠出生后总共存活n个月(9<n<13,n∈N)(9<n<13,\ n\in N)(9<n<13, n∈N),从第7个月后就开始生小白鼠,在第7、8两月每一对白鼠生1对小白鼠/月,从第9个月起的m个月内每一对白鼠生2对小白鼠/月(0<m<3,m∈N)(0<m<3,\ m\in N)(0<m<3, m∈N),然后停止生育,在n月末死亡(n月白鼠数量还计算在内)。在实验室环境中可以舒适地生存100对白鼠,每个月先计算从上个月存活下来的白鼠,当某月从上个月存活下来的白鼠数量超过100对时,该月出生的小白鼠将被转移到别的实验室被转移到别的实验室。设开始时有1对刚出生的小白鼠,问第k月有多少对白鼠(0<k<37,k∈N)(0<k<37,\ k\in N)(0<k<37, k∈N)?
第2章 模型搭建
Matlab 编程实现
function r = Rat(n, m, k, mov)
% n:总共存活的月数
% m:第9个月起的m个月内生2只白鼠/兔子
% k:k月的白鼠/兔子对数
% mov:是否将小鼠转移
if nargin<4mov = 1;
end
A = [zeros(1, n); eye(n)];
A(n+1,:) = [];
A(1,6:7) = 1;
A(1,8:8+m-1) = 2;
x = (zeros(1, n))';
x(1) = 1;
for i=2:kr = sum(x);x = A*x;if mov && r>100x(1) = 0;end
end
r = sum(x);
Sylvan ©️