求解递推式与数列求和方法汇总
1. 求和因子法 (Summation Factor)
① 一阶线性递推
若递推式形如:
\a_n \\bar{T}_n = b_n \\bar{T}_{n-1} + C_n \\
要求 \(\bar{T}_n\) 的封闭形式,可采用求和因子 (summation factor)。
用 \(S_n\) 乘上两边:
\S_n a_n \\bar{T}_n = S_n b_n \\bar{T}_{n-1} + S_n C_n \\
取 \(S_n\) 满足:
\S_n b_n = S_{n-1} a_{n-1} \\
则转化为:
\S_n a_n \\bar{T}_n = S_{n-1} a_{n-1} \\bar{T}_{n-1} + S_n C_n \\
记 \(F_n = S_n a_n \bar{T}_n\),则有:
\F_n = F_{n-1} + S_n C_n \\
从而有:
\F_n = S_0 a_0 \\bar{T}_0 + \\sum_{k=1}\^n S_k C_k \\
即:
\\\bar{T}_n = \\frac{1}{S_n a_n} \\left( S_0 a_0 \\bar{T}_0 + \\sum_{k=1}\^n S_k C_k \\right) \\
下面来求解 \(S_n\):
由 \(S_n = \frac{S_{n-1} a_{n-1}}{b_n}\),于是有:
\S_n = k \\cdot \\frac{\\prod_{i=1}\^{n-1} a_{i-1}}{\\prod_{i=2}\^{n} b_i}, \\quad k \\text{为不等于0的常数} \\
eg1: 求解"快速排序"次数 \(C_n\)
\\\begin{cases} C_0 = C_1 = 0 \& \\text{①} \\\\ C_n = n+1 + \\frac{2}{n} \\sum_{k=0}\^{n-1} C_k \& \\text{②} \\end{cases} \\
其中 \(C_n\) 为"快速排序"平均比较次数。
先将 ② 中 \(n\) 乘开:
\nC_n = n\^2 + n + 2\\sum_{k=0}\^{n-1} C_k \\
向前差分得:
\nC_n - (n-1)C_{n-1} = 2n + 2C_{n-1} \\
\\\Rightarrow nC_n = (n+1)C_{n-1} + 2n \\quad (n\>2) \\
构造求和因子:
\S_n = \\frac{\\prod_{k=2}\^n k}{\\prod_{k=2}\^n (k+1)} = \\frac{2}{(n+1)n} \\
故 \(C_n\) 的通项公式推导(利用求和因子法结果):
\C_n = \\frac{n+1}{2} \\left( 2C_1 \\cdot \\frac{1}{2} + \\sum_{k=2}\^n \\frac{4}{k+1} \\right) - \\frac{2}{3}(n+1) \\
\= 2(n+1) \\sum_{k=2}\^n \\frac{1}{k+1} - \\frac{2}{3}(n+1) \\quad (n\>1) \\
Tip: \(-\frac{2}{3}(n+1)\) 是由 \(n=2\) 时特别讨论得到的修正项。
用调和级数 \(H_n\) 表示:
即
\C_n = 2(n+1)H_n - \\frac{8}{3}n - \\frac{2}{3} \\
其中 \(H_n = \sum_{k=1}^n \frac{1}{k}\)
2. 扰动法 (Perturbation Method)
格式:
\S_n + a_{n+1} = S_{n+1} = a_0 + \\sum_{k=1}\^{n+1} a_k \\
Tip: 移项得到 \(S_{n+1} - S_n = a_{n+1}\),即 \(S_n\) 的向前差分。
eg2: 求几何级数 \(G_n = \sum_{k=0}^n ax^k\) 的封闭形式。
\G_n + ax\^{n+1} = G_{n+1} = ax\^0 + \\sum_{k=0}\^n ax\^{k+1} = a + xG_n \\
提有 \(G_n\):
\G_n(1-x) = a - ax\^{n+1} \\
\G_n = \\frac{a - ax\^{n+1}}{1-x} \\
3. 归纳法
如对 \(\sum_{k=0}^n k^2\) 求和:
若猜测出答案为 \(\frac{n(n+\frac{1}{2})(n+1)}{3}\),对其归纳:
设 \(S_n = \sum_{k=0}^n k^2\),验证 \(S_{n+1}\) 满足通项。
\S_n = S_{n-1} + n\^2 \\
\\\iff 3S_n = (n\^3 - \\frac{3}{2}n\^2 + \\frac{1}{2}n) + 3n\^2 = n(n+\\frac{1}{2})(n+1) \\
故上式成立。
4. 待定系数法
已知 \(S_n = \sum_{i=0}^n i^2\)。
知 \(S_n\) 一定为三次多项式。
不妨设 \(S_n = \alpha n^3 + \beta n^2 + \gamma n + \lambda\)。
带入前四项求解方程组即可定出系数。
5. 利用积分 (近似与误差分析)
已知 \(S_n = \sum_{k=0}^n k^2\)。
知 \(\int_0^n x^2 dx = \frac{n^3}{3}\)。
记误差数列 \(E_n = S_n - \frac{1}{3}n^3\):
\E_n = S_{n-1} + n\^2 - \\frac{1}{3}n\^3 \\
\= (E_{n-1} + \\frac{1}{3}(n-1)\^3) + n\^2 - \\frac{1}{3}n\^3 \\
\= E_{n-1} + n - \\frac{1}{3} \\
故 \(E_n\) 满足递推 \(E_n = E_{n-1} + n - \frac{1}{3}\)。
\E_n - E_0 = \\sum_{i=1}\^n i - \\sum_{i=1}\^n \\frac{1}{3} = \\frac{n(n+1)}{2} - \\frac{1}{3}(n) \\
(注:笔记中此处略有简略,核心思想是将高阶求和降阶)
\(\therefore S_n = E_n + \frac{1}{3}n^3 = \frac{n(n+1)(2n+1)}{6}\)
6. 特征方程法
定义移位算子 \(E\) (\(Ea_n = a_{n+1}\))。
如对于递推式:
\a_n = c_1 a_{n-1} + c_2 a_{n-2} \\
可改写为 \(a_n (E^2 - c_1 E - c_2) = 0\) (注:此处笔记写法略有不严谨,标准写法应为算子作用于序列)。
令 \(P(x) = x^2 - c_1 x - c_2\)。
得 \(P(E)a_n = 0\)。
我们称 \(P(E)\) 为该递推式的零化多项式 。
由于 \(E(r^n) = r \cdot r^n = r^{n+1}\),
所以 \(\forall P\),都有 \(P(E)(r^n) = P(r) \cdot r^n\)。
故要使 \(P(E)(r^n) = 0\),则需 \(P(r) = 0\)。
故 \(a_n\) 可以表示为 \(r^n\) 的线性组合。
也可以从矩阵视角理解:
\\\begin{pmatrix} a_n \\\\ a_{n-1} \\end{pmatrix} = \\underbrace{\\begin{pmatrix} c_1 \& c_2 \\\\ 1 \& 0 \\end{pmatrix}}_{M} \\begin{pmatrix} a_{n-1} \\\\ a_{n-2} \\end{pmatrix} \\
故求通项即求 \(M^n\),即解 \(\det(M - \lambda I) = 0\)。
\\\begin{vmatrix} c_1 - \\lambda \& c_2 \\\\ 1 \& -\\lambda \\end{vmatrix} = \\lambda\^2 - c_1 \\lambda - c_2 = 0 \\
若 \(M\) 有两个不同特征值 \(\lambda_1, \lambda_2\),
则 \(M = P \cdot \text{diag}(\lambda_1, \lambda_2) \cdot P^{-1}\)。
其中 \(\text{diag}(\lambda_1, \lambda_2)\) 表示对角矩阵,
\(P, P^{-1}\) 分别表示特征向量矩阵和其逆。
故 \(a_n\) 可表示为 \(\lambda_1^n\) 和 \(\lambda_2^n\) 的线性组合。
若 \(M\) 有重根:
则 \(M\) 中含一个 \(m \times m\) 的 Jordan 块:
\J_2(\\lambda) = \\begin{pmatrix} \\lambda \& 1 \\\\ 0 \& \\lambda \\end{pmatrix} = \\lambda I + N \\
其中 \(N^m = 0\)。
由二项式定理知:
\J_2(\\lambda)\^n = (\\lambda I + N)\^n = \\sum_{j=0}\^n \\binom{n}{j} \\lambda\^{n-j} N\^j \\
\(\binom{n}{j}\) 是关于 \(n\) 的 \(j\) 次多项式。
故 \(J_2(\lambda)^n\) 的每个非零元素都形如 \(p(n)\lambda^n\)。
故可以写为:
\a_n = (A_0 + A_1 n)\\lambda\^n \\
7. 生成函数法 (Generating Functions)
对于无限数列 \(\{a_n\}\),其生成函数定义为:
\G(x) = \\sum_{i=0}\^{\\infty} a_i x\^i \\
若对于有限数列,记其最后一项之后的项全为0,即可转换为无限数列。
如求 \(a_n - c_1 a_{n-1} - c_2 a_{n-2} = 0\) 的通项:
记生成函数 \(G(x) = \sum_{i=0}^{\infty} a_i x^i\) ①
则:
\c_1 x G(x) = \\sum_{i=0}\^{\\infty} c_1 a_i x\^{i+1} = \\sum_{j=1}\^{\\infty} c_1 a_{j-1} x\^j \\quad \\text{②} \\
\c_2 x\^2 G(x) = \\sum_{i=0}\^{\\infty} c_2 a_i x\^{i+2} = \\sum_{j=2}\^{\\infty} c_2 a_{j-2} x\^j \\quad \\text{③} \\
① - ② - ③,得:
\G(x)(1 - c_1 x - c_2 x\^2) = a_0 + (a_1 - c_1 a_0)x \\
故:
\G(x) = \\frac{a_0 + (a_1 - c_1 a_0)x}{1 - c_1 x - c_2 x\^2} \\
设分母分解因式为 \((1-r_1 x)(1-r_2 x)\),接下来讨论 3 种情况:
① \(r_1 \neq r_2\)
分解为:
\G(x) = \\frac{C_1}{1-r_1 x} + \\frac{C_2}{1-r_2 x} \\
由级数公式 \(\frac{1}{1-rx} = \sum r^n x^n\) 知:
\G(x) = \\sum (C_1 r_1\^n + C_2 r_2\^n) x\^n \\
故 \(a_n = C_1 r_1^n + C_2 r_2^n\)。
② \(r_1 = r_2 = r\)
分解为:
\G(x) = \\frac{C_1}{1-rx} + \\frac{C_2}{(1-rx)\^2} \\
由级数公式 \(\frac{1}{(1-rx)^2} = \sum (n+1)r^n x^n\):
\G(x) = \\sum \[C_1 r\^n + C_2 (n+1)r\^n x^n \]
故 \(a_n = C_1 r^n + C_2 (n+1)r^n\)。
③ 共轭复根
设根为 \(\alpha \pm i\beta\)。
分解为:
\\\frac{C}{1-(\\alpha+i\\beta)x} + \\frac{\\overline{C}}{1-(\\alpha-i\\beta)x} \\
用 Euler 公式合并为:
\a_n = \\rho\^n (K_1 \\cos n\\theta + K_2 \\sin n\\theta) \\