- 递归方程的求解
- 生成函数求解递归方程
- 用特征方程求解递归方程
- 用递推法求解递归方程
- 用递推法求解常系数递归方程
- 用递推法求解变系数递归方程
- 函数换名
递归方程的求解
@[递归方程, 生成函数, 递推法]
生成函数求解递归方程
生成函数及其性质。
定义 1 1 :令 a0 a 0 , a1 a 1 , a2 a 2 , … … 是一个实数序列,构造如下的函数:
G(z)=a0+a1z+a2z2+⋯=∑k=0∞akzk G ( z ) = a 0 + a 1 z + a 2 z 2 + ⋯ = ∑ k = 0 ∞ a k z k
则称 G(z) G ( z ) 称为 a0 a 0 , a1 a 1 , a2 a 2 , … … 的生成函数。
生成函数的性质:
- 加法:设 G(z)=∑∞k=0akzk G ( z ) = ∑ k = 0 ∞ a k z k 是序列 a0 a 0 , a1 a 1 , a2 a 2 , … … 的生成函数, H(z)=∑∞k=0bkzk H ( z ) = ∑ k = 0 ∞ b k z k 是序列 b0 b 0 , b1 b 1 , b2 b 2 , … … 的生成函数,则:
αG(z)+βH(z)=α∑k=0∞akzk+β∑k=0∞bkzk=∑k=0∞(αak+βbk)zk α G ( z ) + β H ( z ) = α ∑ k = 0 ∞ a k z k + β ∑ k = 0 ∞ b k z k = ∑ k = 0 ∞ ( α a k + β b k ) z k
是序列 αa0+βb0 α a 0 + β b 0 , αa1+βb1 α a 1 + β b 1 , αa2+βb2 α a 2 + β b 2 , … … 的生成函数。
移位:设 G(z)=∑∞k=0akzk G ( z ) = ∑ k = 0 ∞ a k z k 是序列 a0 a 0 , a1 a 1 , a2 a 2 , … … 的生成函数,则:
zmG(z)=∑k=0∞ak−mzk z m G ( z ) = ∑ k = 0 ∞ a k − m z k
是序列 a0 a 0 , a1 a 1 , a2 a 2 , … … 的生成函数。
乘法:设 G(z)=∑∞k=0akzk G ( z ) = ∑ k = 0 ∞ a k z k 是序列 a0 a 0 , a1 a 1 , a2 a 2 , … … 的生成函数, H(z)=∑∞k=0bkzk H ( z ) = ∑ k = 0 ∞ b k z k 是序列 b0 b 0 , b1 b 1 , b2 b 2 , … … 的生成函数,则:
G(z)H(z)=(a0+a1z+a2z2+⋯)(b0+baz+b2z2+⋯)=a0b0+(a0b1+a1b0)z+(a0b2+a1b1+a2b0)z2+⋯=∑k=0∞ckzk G ( z ) H ( z ) = ( a 0 + a 1 z + a 2 z 2 + ⋯ ) ( b 0 + b a z + b 2 z 2 + ⋯ ) = a 0 b 0 + ( a 0 b 1 + a 1 b 0 ) z + ( a 0 b 2 + a 1 b 1 + a 2 b 0 ) z 2 + ⋯ = ∑ k = 0 ∞ c k z k
是序列 c0 c 0 , c1 c 1 , c2 c 2 , … … 的生成函数,其中 cn=∑∞k=0akbn−k c n = ∑ k = 0 ∞ a k b n − k 。
是序列 a0 a 0 , ca1 c a 1 , ca2 c a 2 , … … 的生成函数,特别地:
11−cz=1+cz+c2z2+c3z3+⋯ 1 1 − c z = 1 + c z + c 2 z 2 + c 3 z 3 + ⋯
是序列 1 1 , c c , c2 c 2 , c3 c 3 , … … 的生成函数。
生成函数求递归方程
递归关系式如下:
{h(n)h(1)=2h(n−1)+1=1 { h ( n ) = 2 h ( n − 1 ) + 1 h ( 1 ) = 1
用 h(n) h ( n ) 作为系数,构造生成函数:
G(x)=h(1)x+h(2)x2+h(3)x3+⋯=∑k=1∞h(k)xk G ( x ) = h ( 1 ) x + h ( 2 ) x 2 + h ( 3 ) x 3 + ⋯ = ∑ k = 1 ∞ h ( k ) x k
为了求解 h(n) h ( n ) 的值需要对 G(x) G ( x ) 进行演算:
G(x)−2xG(x)=h(1)x+h(2)x2+h(3)x3+⋯−2h(1)x2−2h(2)x3−⋯=h(1)x+(h(2)−2h(1))x2+(h(3)−2h(2))x3+⋯=x+x2+x3+⋯=x1−x G ( x ) − 2 x G ( x ) = h ( 1 ) x + h ( 2 ) x 2 + h ( 3 ) x 3 + ⋯ − 2 h ( 1 ) x 2 − 2 h ( 2 ) x 3 − ⋯ = h ( 1 ) x + ( h ( 2 ) − 2 h ( 1 ) ) x 2 + ( h ( 3 ) − 2 h ( 2 ) ) x 3 + ⋯ = x + x 2 + x 3 + ⋯ = x 1 − x
所以
G(x)=x(1−x)(1−2x)=11−2x−11−x=(1+2x+22x2+23x3+⋯)−(1+x+x2+x3+⋯)=(2−1)x+(22−1)x2+(23−1)x3+⋯=∑k=1∞(2k−1)xk G ( x ) = x ( 1 − x ) ( 1 − 2 x ) = 1 1 − 2 x − 1 1 − x = ( 1 + 2 x + 2 2 x 2 + 2 3 x 3 + ⋯ ) − ( 1 + x + x 2 + x 3 + ⋯ ) = ( 2 − 1 ) x + ( 2 2 − 1 ) x 2 + ( 2 3 − 1 ) x 3 + ⋯ = ∑ k = 1 ∞ ( 2 k − 1 ) x k
故
h(n)=2n−1 h ( n ) = 2 n − 1
用特征方程求解递归方程
递归方程的形式如下:
{f(n)f(i)=a1f(n−1)+a2f(n−2)+⋯+akf(n−k)=bi { f ( n ) = a 1 f ( n − 1 ) + a 2 f ( n − 2 ) + ⋯ + a k f ( n − k ) f ( i ) = b i
这种递归方程称为
k k 阶常系数线性非齐次递归方程。其通解形式为:
f(n)=f(n)+f∗(n) f ( n ) = f ( n ) + f ∗ ( n )
- 如果g(n)是n的m次多项式,即
g(n)=b0nm+b1nm−1+⋯+bm−1n+bm g ( n ) = b 0 n m + b 1 n m − 1 + ⋯ + b m − 1 n + b m
其中
bi b i 是常数,特解
f∗(n) f ∗ ( n ) 也是n的m次多项式:
f∗(n)=A0nm+A1nm−1+⋯+Am−1n+Am f ∗ ( n ) = A 0 n m + A 1 n m − 1 + ⋯ + A m − 1 n + A m
,其中
Ai A i 为待定系数。
- 如果
g(n) g ( n ) 具有以下指数形式:
g(n)=(b0nm+b1nm−1+⋯+bm−1n+bm)an(2.1) (2.1) g ( n ) = ( b 0 n m + b 1 n m − 1 + ⋯ + b m − 1 n + b m ) a n
其中
a,bi a , b i 为常数,如果
a a 不是特征方程的重根,特解
f∗(n) f ∗ ( n ) 为:
f∗(n)=(A0nm+A1nm−1+⋯+Am−1n+Am)an f ∗ ( n ) = ( A 0 n m + A 1 n m − 1 + ⋯ + A m − 1 n + A m ) a n
,其中
Ai A i 为待定系数。如果
a a 是特征方程的r重根,特解
f∗(n) f ∗ ( n ) 为:
f∗(n)=(A0nm+A1nm−1+⋯+Am−1n+Am)nran f ∗ ( n ) = ( A 0 n m + A 1 n m − 1 + ⋯ + A m − 1 n + A m ) n r a n
,其中
Ai A i 为待定系数。
用递推法求解递归方程
用递推法求解常系数递归方程
{f(n)f(0)=bf(n−1)+g(n)=c { f ( n ) = b f ( n − 1 ) + g ( n ) f ( 0 ) = c
其中
b,c b , c 是常数,
g(n) g ( n ) 是n的函数。
f(n)=b(bf(n−2)+g(n−1))+g(n)=⋯=cbn+∑i=1nbn−ig(i) f ( n ) = b ( b f ( n − 2 ) + g ( n − 1 ) ) + g ( n ) = ⋯ = c b n + ∑ i = 1 n b n − i g ( i )
用递推法求解变系数递归方程
{f(n)f(0)=g(n)f(n−1)+h(n)=c { f ( n ) = g ( n ) f ( n − 1 ) + h ( n ) f ( 0 ) = c
其中
g(n),h(n) g ( n ) , h ( n ) 是n的函数。
f(n)=g(n)(g(n)f(n−2)+h(n−1))+h(n)=⋯=g(n)g(n−1)⋯g(1)(f(0)+∑i=1nh(i)g(i)g(i−1)⋯g(1)) f ( n ) = g ( n ) ( g ( n ) f ( n − 2 ) + h ( n − 1 ) ) + h ( n ) = ⋯ = g ( n ) g ( n − 1 ) ⋯ g ( 1 ) ( f ( 0 ) + ∑ i = 1 n h ( i ) g ( i ) g ( i − 1 ) ⋯ g ( 1 ) )
函数换名
对于分治法,函数 f(n) f ( n ) 是以 f(nm) f ( n m ) 表示递归的,因此,可以考虑令:
g(k)=f(mk)=f(n) g ( k ) = f ( m k ) = f ( n )
,然后就可以使用上述方法计算递归方程的解。