在此要讨论的是关于兔子繁殖的问题,这个问题曾经导致了斐波那契数列的产生,但显然真正关兔子繁殖数量的表示没有这样的数列那么简单,之所以讨论这个问题源于前几天看到的一片文章讲到澳大利亚当初发生的兔灾,66年内,从几只兔子繁殖到100亿只。这个速度太过惊人,以至于想从公式上了解这样的一个进度是如何进行的,要寻找这样一个公式首先需要考虑几个条件

  • 一只兔子每次可以产2-7只兔子,我们可以令每次生育5只
  • 每只兔子在出生8个月之后便性成熟,我们假设此时便生育
  • 可生育的兔子在有生之年每个月都会生产

此外还要注意几个实际存在的问题,即

每只兔子都有自己的寿命,在生存环境优厚的条件下,兔子繁殖的数量与雄兔数量无关,而单独与雌兔的数量有着决定性的关系,且每次产仔中都会存在一定比例的雌兔,这个比例可以视作恒定。

根据上述叙述,给出下列各参数

  • 兔子的初始数量,这里认为只有雌兔,令其为M
  • 兔子每次产仔的数量为N
  • 性成熟时间为Ts​​​​​,此后涉及时间均以月为单位
  • 假设兔子寿命一致,均为T
  • 每次产仔,雌性所占比例为α

由于本次考虑的主要是计算在长时间的时期内兔子繁殖的数量的量级,故不考虑前期兔子的数量变化规律,直接计算变化稳定的时间段,得出递推式: f(t)=f(t1)+αNf(tTs)αNf(tT)​        (1)

上述的工作存在缺陷,对于繁殖数量的递推公式存在不足,对于繁殖情况考虑不足,实际的情况比想象的还要复杂很多,以上的工作只能是对实际的极度精简,且得到的母函数公式很难从中得到f(x)的结果,需要对母函数做泰勒展开得到各个时刻的结果,这涉及到多阶的求导,对于这个母函数的操作似乎较为困难。


对于k阶齐次常系数递归方程有通用的解法,一般二阶的递归方程是母函数方法,对于多阶的一般有特征方程解法,即对于 f(n)=a1f(n1)+a2f(n2)++ankf(nk)  (4) 特征方程为 xka1xk1ank=0            (5) 特征方程的解为t1,t2,,tk f(n)=c1t1n+c2t2n++cktkn           (6) 对于r阶重根ti而言,其系数为 a1+a2n++aknr1  (7) 其中ci,ai是根据初始值确定的常数

关于特征方程的正确性证明: 关于递归方程(1),首先找一个预期相似的模型,假设f(n)=xn时,得到 xna1xn1a2xn2akxnk=0     (8) 对方程(7)两边同除x得到 xn1a1xn2a2xn3akxn1k=0     (9) (7)和(8)在假设的基础上是符合递归方程的形式,因此我们可以发现递归方程的解实际上就是求xn的结果,当我们求得特征方程的解之后,还会发现, t1na1t1n1a2t1n2akt1nk=0     (10) t2na1t2n1a2t2n2akt2nk=0     (11) tkna1tkn1a2tkn2aktknk=0     (12) 对于(10)、(11)、(12)两边同乘某一常数cj仍然成立,令 xi=c1t1i+c2t2i++cktki               (13)

对于r阶的重根ti,在上述形式的式子中,不断做求导在两边同乘ti,便得到(7)中的系数。 即合并(10)、(11)、(12)得到的方程是符合递归方程的形式,于是f(n)=xn是齐次常系数递归方程的解。