怪物牛繁殖问题

假设初始有一对牛,每个月生出一对小牛,新生的小牛过三个月成长为大牛,并开始繁殖,在假设所有牛不死亡的情况下,问第 n 个月有多少对牛? (假设第 n 个月有 a [ n ] 对牛,那么 a [ 1 ] = 2 , a [ 2 ] = 3 , a [ 3 ] = 4 , a [ 4 ] = 5 , a [ 5 ] = 7 依次类推 )

因为新生的小牛经过三个月可以成为大牛并开始繁殖,所以如果假设第 n 个月出生 b [ n ] 对小牛,那么其等于上个月的大牛对数 b [ n 1 ] 和 第 n 4 个月(经过三个月)出生的小牛对数 b [ n 4 ] ,所以有

(3) b [ n ] = { 1 n = 1 , 2 , 3 , 4 b [ n 1 ] + b [ n 4 ] n > 4

再加上有一对初始的大牛,所以第 n 个月的牛对数为

(4) a [ n ] = 1 + i = 1 n b [ i ]

所以求出 b [ n ] ,即可得出 a [ n ] ,求 b [ n ] 有两种方法:

方法一:
由递推关系可知

( 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 ) ( b [ n 1 ] b [ n 2 ] b [ n 3 ] b [ n 4 ] ) = ( b [ n ] b [ n 1 ] b [ n 2 ] b [ n 3 ] )

M = ( 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 )

由于 d e t ( M ) = 1 0 ,所以 M 可以对角化为 M = V D V 1 ,所以有 V D n V 1 ( b [ 4 ] , b [ 3 ] , b [ 2 ] , b [ 1 ] ) T = ( b [ n ] , b [ n 1 ] , b [ n 2 ] , b [ n 3 ] )

方法二:
假设 q 是方程 x 4 = x 3 + 1 的解,则显然有 q n 4 q 4 = q n 4 q 3 + q n 4 ,所以递推关系 b [ n ] = b [ n 1 ] + b [ n 4 ] 的解可以是 b [ n ] = q n ( n > 4 ) ,所以可以直接推出

a [ n ] = { n + 1 4 n 1 q n 1 q 5 + 4 q 4 q 1 + 1 n > 4

其中 q x 4 x 3 1 = 0 的解。

其中的一个 q 解为
q = 3 , ( 283 2 , 3 3 2 1 2 ) 1 6 2 , 12 , ( 283 2 , 3 3 2 1 2 ) 2 3 + 3 , ( 283 2 , 3 3 2 1 2 ) 1 3 16 ( 283 2 , 3 3 2 1 2 ) 1 3 + 4 3 , ( 283 2 , 3 3 2 1 2 ) 1 3 + 1 2 2 12 , ( 283 2 , 3 3 2 1 2 ) 2 3 + 3 , ( 283 2 , 3 3 2 1 2 ) 1 3 16 4 , 3 , ( 283 2 , 3 3 2 1 2 ) 1 6 + 1 4

猜你喜欢

转载自blog.csdn.net/qq_27576655/article/details/82192955