母函数求递推的通项公式(一)

 

总是看到有人问递推的通项公式如何求,母函数(Generating function)是一个很好用的工具,

现总结如下以供学习

 

母函数是组合数学里面的概念,其实就是这坨东西

         是不是看不明白,确实有些生疏,再看这一坨

母函数求递推的通项公式(一)_第1张图片

恍然大悟,这不就是久负盛名的数列求和公式么!既然如此,看看它是如何应用于通项公式的

 

        首先来看看如下的二阶齐次递推公式

        f(n) = af(n-1)+bf(n-2)                          ------------------------------  (1)

(1)式可通过有名的差错法来求,将f(n)作为a(k),构造

G(x) = ∑f(n)*x^n

展开G(x) = f(0) + f(1)*x + f(2)*x^2 + f(3)*x^3.....

 

-G(x)           = -f(0) - f(1)*x -      f(2)*x^2      -  f(3)*x^3.....

a*x*G(x)    =           f(0)*a*x + f(1)*x^2*a   + f(3)*x^3*a......

        b*x^2*G(x)    =                        f(0)*x^2*b   + f(2)*x^3*b..........

 

3式相加得

( b*x^2 + a*x - 1 )*G(x)   =  -f(0) + ( f(0)*a - f(1) ) *x

G(x) = (-f(0) + ( f(0)*a - f(1) ) *x) / ( b*x^2 + a*x - 1 )

 

这里的b*x^2 + a*x - 1 = c(x) 也被称为特征方程,将分母拆分

 

G(x) = A/1-r1*x + B/1-r2*x,r1,r2为b*x^2 + a*x - 1 = 0 的两根,使用待定系数法可求出A,B

 

这里就可以利用母函数得

G(x) = A*∑(r1*x)^n + B*∑(r2*x)^n

既得

f(n) = A*r1^n + B*r2^n   ----------------------------------------------(2)

似乎是万事大吉了,不过还没有,

当r1 = r2 = r  时

G(x) = A/1-r*x + B/(1-r*x)^2

则得

G(x) = A*∑(r*x)^n + B*∑(n+1)(r*x)^n

f(n) = A*r^n + B*(n+1)r^n   ------------------------------------------(3)

 

(2),(3)即为所求解

        其中A =( f(0)*a - f(1) - f(0)*r1) / ( r1 - r2 )

B = ( f(0)*r2 + f(1) - f(0)*a)/ ( r1 - r2 )

 

本文主要主要关注的是二阶齐次递推公式,而母函数是应用很广的概念,如果有兴趣可进一步参见组合数学相关的教材

 

 

你可能感兴趣的:(c,function,工具)