生小兔问题

生小兔问题🐰

本文研究生小兔问题。使用代数模型,在考虑生育情况变化的情况下,求解兔子/白鼠的数目变化。


第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, nN,从第7个月后就开始生小白鼠,在第7、8两月每一对白鼠生1对小白鼠/月,从第9个月起的m个月内每一对白鼠生2对小白鼠/月 ( 0 < m < 3 ,   m ∈ N ) (0<m<3,\ m\in N) 0<m<3, mN,然后停止生育,在n月末死亡(n月白鼠数量还计算在内)。在实验室环境中可以舒适地生存100对白鼠,每个月先计算从上个月存活下来的白鼠,当某月从上个月存活下来的白鼠数量超过100对时,该月出生的小白鼠将被转移到别的实验室被转移到别的实验室。设开始时有1对刚出生的小白鼠,问第k月有多少对白鼠 ( 0 < k < 37 ,   k ∈ N ) (0<k<37,\ k\in N) 0<k<37, kN

第2章 模型搭建

在这里插入图片描述

在这里插入图片描述

Matlab 编程实现

function r = Rat(n, m, k, mov)
% n:总共存活的月数
% m:第9个月起的m个月内生2只白鼠/兔子
% k:k月的白鼠/兔子对数
% mov:是否将小鼠转移
if nargin<4
    mov = 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:k
    r = sum(x);
    x = A*x;
    if mov && r>100
        x(1) = 0;
    end
end
r = sum(x); 

Sylvan ©️

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值