解决斐波那契数列的非齐次递归关系

问题描述

我正在尝试解决斐波那契数列的递推关系,但问题是它不是齐次的。

递推关系如下:

F(n) = F(n -1) + F(n -2) + Θ(n) for n > 1,and Θ(n) = c1n + c2,其中 c1,c2 > 0

初始条件:F(0) = 0,F(1) = 1

我试图通过将其视为具有常数系数的齐次线性二阶递归来解决它,但我不确定如何解决

F(n) - F(n - 1) - F(n - 2) = c1n + c2

代替:

F(n) - F(n - 1) - F(n - 2) = 0

求解这种递推关系的最佳方法是什么?

解决方法

您可以使用以下不等式找到下限和上限:

2F(n-2) + Theta(n) < T(n) < 2F(n-1) + Theta(n)

您可以轻松证明下限和上限在 Theta(n 2^n) 中。因此,T(n) = Theta(n 2^n)

,

使用 Ansatz F1(n) = a*n + b,您可以获得

F1(n) - F1(n-1) - F1(n-2) = -a*n + 3a - b = Θ(n) = c1*n + c2.

所以我们有 a = -c1b = -3c1 - c2,即

F1(n) = -c1*n - 3c1 - c2

解决给定的递归无需查看初始条件。将此与同构递归的解决方案 F0 结合(参见 Binet's formula

F0(n) = d1*q1^n + d2*q2^n

q1/2 = (1 +/- sqrt(5))/2 获取

F(n) = F0(n) + F1(n) = d1*q1^n + d2*q2^n - c1*n - 3c1 - c2 .

现在可以通过求解该线性方程组来调整因子 d1,d2 以匹配给定的初始条件

F(0) = d1 + d2 - 3c1 - c2 = 0
F(1) = d1*q1 + d2*q2 - 4c1 - c2 = 1

对于d1d2