可以结合 https://blog.youkuaiyun.com/ez_lcw/article/details/125731258?spm=1001.2014.3001.5502。
不同根的有理展开定理
设 R ( x ) = P ( x ) Q ( x ) R(x)=\frac{P(x)}{Q(x)} R(x)=Q(x)P(x),其中 Q ( x ) = ( x − x 1 ) ⋯ ( x − x ℓ ) Q(x)=(x-x_1)\cdots(x-x_{\ell }) Q(x)=(x−x1)⋯(x−xℓ) 且 x 1 , ⋯ , x ℓ x_1,\cdots,x_{\ell} x1,⋯,xℓ 两两不同, P ( x ) P(x) P(x) 为一个次数小于 ℓ \ell ℓ 的多项式。那么:
[ x n ] R ( x ) = − ∑ i = 1 ℓ c i x i n + 1 [x^n]R(x)=-\sum_{i=1}^{\ell}\frac{c_i}{x_i^{n+1}} [xn]R(x)=−i=1∑ℓxin+1ci
其中:
c i = P ( x i ) Q ′ ( x i ) c_i=\frac{P(x_i)}{Q'(x_i)} ci=Q′(xi)P(xi)
证明:
使用待定系数法,我们假设 R ( x ) R(x) R(x) 能被表示成如下的形式:
R ( x ) = c 1 x − x 1 + ⋯ + c ℓ x − x ℓ R(x)=\frac{c_1}{x-x_1}+\cdots+\frac{c_{\ell}}{x-x_{\ell}} R(x)=x−x1c1+⋯+x−xℓcℓ
其中 c 1 , ⋯ , c ℓ c_1,\cdots,c_{\ell} c1,⋯,cℓ 为所说的常数。
事实上这是有道理的,因为 c 1 , ⋯ , c ℓ c_1,\cdots,c_{\ell} c1,⋯,cℓ 为 ℓ \ell ℓ 个自由度,而 P ( x i ) P(x_i) P(xi) 其实也有 ℓ \ell ℓ 个自由度。换言之这应该是一个 R ℓ R^{\ell} Rℓ 与 R ℓ R^{\ell} Rℓ 之间的一一映射。
那么:
P ( x ) = Q ( x ) R ( x ) = Q ( x ) ( ) P(x)=Q(x)R(x)=Q(x)() P(x)=Q(x)R(x)=Q(x)()
我们把 c i c_i ci 单独提取出来:
R ( x ) = c i x − x i + P i ( x ) ∏ j ≠ i ( x − x j ) R(x)=\frac{c_i}{x-x_i}+\frac{P_i(x)}{\prod_{j\neq i}(x-x_j)} R(x)=x−xici+∏j=i(x−xj)Pi(x)
其中 P i P_i Pi 为一个次数小于 ℓ − 1 \ell-1 ℓ−1 的多项式。
那么:
P ( x ) = Q ( x ) R ( x ) = c i ∏ j ≠ i ( x − x j ) + P i ( x ) ( x − x i ) P(x)=Q(x)R(x)=c_i\prod_{j\neq i}(x-x_j)+P_i(x)(x-x_i)\\ P(x)=Q(x)R(x)=cij=i∏(x−xj)+Pi(x)(x−xi)
将 x = x i x=x_i x=xi 代入(准确地说,是计算 x → x i x\to x_i x→xi 时的值):
P ( x i ) = c i ∏ j ≠ i ( x i − x j ) c i = P ( x i ) ∏ j ≠ i ( x i − x j ) \begin{aligned}P(x_i)&=c_i\prod_{j\neq i}(x_i-x_j)\\c_i&=\frac{P(x_i)}{\prod_{j\neq i}(x_i-x_j)}\end{aligned} P(xi)ci=cij=i∏(xi−xj)=∏j=i(xi−xj)P(xi)
对于下式,我们使用洛必达法则处理:
∏ j ≠ i ( x i − x j ) = lim x → x i Q ( x ) x − x i = lim x → x i Q ′ ( x ) = Q ′ ( x i ) \prod_{j\neq i}(x_i-x_j)=\lim_{x\to x_i}\frac{Q(x)}{x-x_i}=\lim_{x\to x_i}Q'(x)=Q'(x_i) j=i∏(xi−xj)=x→xilimx−xiQ(x)=x→xilimQ′(x)=Q′(xi)
于是:
c i = P ( x i ) Q ′ ( x i ) c_i=\frac{P(x_i)}{Q'(x_i)} ci=Q′(xi)P(xi)
再根据 [ x n ] 1 x − x i = − 1 x i n + 1 [x^n]\frac{1}{x-x_i}=-\frac{1}{x_i^{n+1}} [xn]x−xi1=−xin+11,即可得证。
看到了另一种方法,是直接从递推数列的角度解释的:
考虑常系数齐次递推数列
h n = a 1 h n − 1 + a 2 h n − 2 + ⋯ + a k h n − k , a k ≠ 0 ( n ≥ k ) h_n=a_1h_{n-1}+a_2h_{n-2}+\cdots+a_kh_{n-k},\quad a_k\neq 0\quad (n\geq k) hn=a1hn−1+a2hn−2+⋯+akhn−k,ak=0(n≥k)
称 x k = a 1 x k − 1 + ⋯ + a k x^k=a_1x^{k-1}+\cdots+a_k xk=a1xk−1+⋯+ak 为该数列的特征方程。解特征方程可以得到 k k k 个非零根 q 1 , ⋯ , q k q_1,\cdots,q_k q1,⋯,qk,假设它们两两不同。
那么 h n = q i n h_n=q_i^n hn=qin 就满足这个递推数列,意味着对于任意选定的常数 c 1 , ⋯ , c k c_1,\cdots,c_k c1,⋯,ck,
h n = c 1 q 1 n + c 2 q 2 n + ⋯ + c k q k n h_n=c_1q_1^n+c_2q_2^n+\cdots+c_kq_k^n hn=c1q1n+c2q2n+⋯+ckqkn
也满足这个递推数列。
那么对于给定的初项 h 0 , ⋯ , h k − 1 h_0,\cdots,h_{k-1} h0,⋯,hk−1,我们只需选定恰当的常数 c 1 , ⋯ , c k c_1,\cdots,c_k c1,⋯,ck 使得对于任意的 n ∈ [ 0 , k − 1 ] n\in[0,k-1] n∈[0,k−1] 都满足 h n = c 1 q 1 n + ⋯ + c k q k n h_n=c_1q_1^n+\cdots+c_kq_k^n hn=c1q1n+⋯+ckqkn,那么就能使对于任意的 n ≥ k n\geq k n≥k 也都满足通项公式 h n = c 1 q 1 n + ⋯ + c k q k n h_n=c_1q_1^n+\cdots+c_kq_k^n hn=c1q1n+⋯+ckqkn。
具体来说,我们需要解这个方程:
[ 1 1 ⋯ 1 q 1 q 2 ⋯ q k q 1 2 q 2 2 ⋯ q k 2 ⋮ ⋮ ⋱ ⋮ q 1 k − 1 q 2 k − 1 ⋯ q k k − 1 ] [ c 1 c 2 c 3 ⋮ c k ] = [ h 0 h 1 h 2 ⋮ h k − 1 ] \begin{bmatrix}1&1&\cdots&1\\q_1&q_2&\cdots&q_k\\q_1^2&q_2^2&\cdots&q_k^2\\\vdots&\vdots&\ddots&\vdots\\q_1^{k-1}&q_2^{k-1}&\cdots&q_k^{k-1}\\\end{bmatrix}\begin{bmatrix}c_1\\c_2\\c_3\\\vdots\\c_k\end{bmatrix}=\begin{bmatrix}h_0\\h_1\\h_2\\\vdots\\h_{k-1}\end{bmatrix} ⎣⎢⎢⎢⎢⎢⎡1q1q12⋮q1k−11q2q22⋮q2k−1⋯⋯⋯⋱⋯1qkqk2⋮qkk−1⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡c1c2c3⋮ck⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡h0h1h2⋮hk−1⎦⎥⎥⎥⎥⎥⎤
听说左边那个系数矩阵叫范德蒙德矩阵,然后它有逆(满秩)当且仅当 q i q_i qi 各不相同,于是在 q i q_i qi 各不相同的假设前提下,该方程有唯一解。
最开始的那个方法应该可以理解成是直接将这个方程的解表示了出来。
有理生成函数的一般展开定理
设 R ( x ) = P ( x ) Q ( x ) R(x)=\frac{P(x)}{Q(x)} R(x)=Q(x)P(x),其中 Q ( x ) = ( x − x 1 ) s 1 ⋯ ( x − x ℓ ) s ℓ Q(x)=(x-x_1)^{s_1}\cdots(x-x_{\ell})^{s_{\ell}} Q(x)=(x−x1)s1⋯(x−xℓ)sℓ 且 x 1 , ⋯ , x ℓ x_1,\cdots,x_{\ell} x1,⋯,xℓ 两两不同, P ( x ) P(x) P(x) 是一个次数小于 ∑ s i \sum s_i ∑si 的多项式。那么:
[ x n ] R ( x ) = ∑ i = 1 ℓ f i ( n ) x i n [x^n]R(x)=\sum_{i=1}^{\ell}\frac{f_i(n)}{x_i^{n}} [xn]R(x)=i=1∑ℓxinfi(n)
其中 f i ( n ) f_i(n) fi(n) 是次数为 s i − 1 s_i-1 si−1 的关于 n n n 的多项式。
证明:
R ( x ) R(x) R(x) 一定能被表示成如下形式:
R ( x ) = C 1 ( x ) ( x − x 1 ) s 1 + ⋯ + C ℓ ( x ) ( x − x ℓ ) s ℓ R(x)=\frac{C_1(x)}{(x-x_1)^{s_1}}+\cdots+\frac{C_{\ell}(x)}{(x-x_{\ell})^{s_{\ell}}} R(x)=(x−x1)s1C1(x)+⋯+(x−xℓ)sℓCℓ(x)
其中 C i ( x ) C_i(x) Ci(x) 为次数小于 s i s_i si 次的多项式。
于是:
[ x n ] R ( x ) = ∑ i = 1 ℓ ∑ j = 0 s i − 1 ( [ x j ] C i ( x ) ) ( [ x n − j ] 1 ( x − x i ) s i ) = ∑ i = 1 ℓ ∑ j = 0 s i − 1 ( [ x j ] C i ( x ) ) ( − 1 x i ) s i ( 1 x i ) n − j ( n − j + s i − 1 s i − 1 ) = ∑ i = 1 ℓ 1 x i n ∑ j = 0 s i − 1 ( [ x j ] C i ( x ) ) ( − 1 x i ) s i ( 1 x i ) − j ( n − j + s i − 1 s i − 1 ) = ∑ i = 1 ℓ f i ( n ) x i n \begin{aligned}[x^n]R(x)&=\sum_{i=1}^{\ell}\sum_{j=0}^{s_i-1}\bigg([x^j]C_i(x)\bigg)\bigg([x^{n-j}]\frac{1}{(x-x_i)^{s_i}}\bigg)\\&=\sum_{i=1}^{\ell}\sum_{j=0}^{s_i-1}\bigg([x^j]C_i(x)\bigg)\left(-\frac{1}{x_i}\right)^{s_i}\left(\frac{1}{x_i}\right)^{n-j}\binom{n-j+s_i-1}{s_i-1}\\&=\sum_{i=1}^{\ell}\frac{1}{x_i^n}\sum_{j=0}^{s_i-1}\bigg([x^j]C_i(x)\bigg)\left(-\frac{1}{x_i}\right)^{s_i}\left(\frac{1}{x_i}\right)^{-j}\binom{n-j+s_i-1}{s_i-1}\\&=\sum_{i=1}^{\ell}\frac{f_i(n)}{x_i^n}\\\end{aligned} [xn]R(x)=i=1∑ℓj=0∑si−1([xj]Ci(x))([xn−j](x−xi)si1)=i=1∑ℓj=0∑si−1([xj]Ci(x))(−xi1)si(xi1)n−j(si−1n−j+si−1)=i=1∑ℓxin1j=0∑si−1([xj]Ci(x))(−xi1)si(xi1)−j(si−1n−j+si−1)=i=1∑ℓxinfi(n)
与不同根的有理展开定理不同的是, C i ( x ) C_i(x) Ci(x)(以致于 f i ( n ) f_i(n) fi(n))都不能被直接表示出来。
但我们仍然可以通过待定系数列方程的方法求出它们。
其他
事实上,本文所讨论的方法在实际应用中往往因很难求得多项式的所有根而受到限制。
一般来说,对于一个已经给定的递推数列,要求它的通项公式,往往用生成函数会是通法,下面记录了一些常见形式的生成函数:
-
{ k n } n : 1 1 − k x \{k^n\}_{n}:\frac{1}{1-kx} {kn}n:1−kx1。
-
{ n k } n \{n^k\}_n {nk}n:通过 1 1 − x \frac{1}{1-x} 1−x1 的 0 ∼ k 0\sim k 0∼k 阶导数进行线性组合得到。