1. 先把地基打牢无穷级数求和到底在求什么无穷级数求和这件事我在带新人的时候发现一个特别普遍的现象大家背公式背得飞快等比级数的和、p级数的敛散性、幂级数展开式一个个张口就来但一到具体题目尤其是带参数、带端点、带绝对值的那类立刻卡壳。卡的不是公式是没搞清楚求和这个动作本身分几层。所以这篇东西我不打算从中值定理讲起而是按我自己的理解顺序把无穷级数求和里最常用、最容易出事的八套工具——等比级数、等差乘等比、裂项相消、p级数、幂级数逐项求导、幂级数逐项积分、傅里叶级数、阿贝尔定理——按什么场景配什么武器的思路铺一遍。先说清楚一件事无穷级数求和在工程和科研里其实有两个完全不同的目标。一个是求闭式解也就是把 ∑aₙ 化成一个漂亮表达式比如 π²/6、ln2 这种另一个是求数值近似闭式解不存在或者太复杂的时候用截断加加速的手段把值算到足够精度。这两条路用的工具不一样坑也不一样。前者靠幂级数、傅里叶级数、阿贝尔定理这类解析手段后者靠部分和序列、欧拉变换、Kummer 加速这类数值手段。很多教材把两者混在一起讲结果读者既不知道什么时候该收手也不知道算出来的数到底可不可信。本文的核心关键词——无穷级数求和、等比级数、幂级数、阿贝尔定理——会贯穿始终你如果正在准备考试、做数值分析作业或者写代码时需要用级数近似某个函数下面的内容基本能覆盖你八成以上的真实场景。还有一层容易被忽略的前提求和之前必须先判收敛。这不是形式主义。条件收敛的级数一旦重排和可以变成任意值这是黎曼重排定理给的硬约束。我在实际项目里见过有人把一堆浮点数相加为了并行计算把顺序打乱了结果和差了 1e-3 量级回头查了半天以为是精度问题其实是条件收敛级数被重排了。所以下面每一套公式我都会把它的收敛条件单独拎出来说不省略。2. 八大公式的整体地图与选型逻辑2.1 为什么要有八大公式这张地图级数求和的题目千变万化但底层工具的品种其实很少。我把它整理成八种是因为这八种恰好覆盖了从纯代数变形到解析延拓赋值的完整光谱。左边四种等比、等差乘等比、裂项、p级数属于代数与判据层处理的是通项结构清晰、可以直接变形的问题右边四种幂级数逐项求导、逐项积分、傅里叶级数、阿贝尔定理属于解析层处理的是通项里带 n、带阶乘、带三角函数的复杂情形。这个分层非常重要因为它决定了你的思考方向看到 ∑1/(n(n1)) 应该立刻想到裂项看到 ∑n/2ⁿ 应该想到幂级数求导看到 ∑1/n² 应该先判 p 级数再考虑用傅里叶级数拿精确值。选型的第一步永远是看通项。通项是 qⁿ 形式等比通项是 (and)qⁿ 形式等差乘等比通项能拆成 f(n)-f(n1)裂项通项是 1/n^p 或它的线性组合p 级数通项里有 n 的多项式乘 xⁿ幂级数求导通项里有 xⁿ/n幂级数积分通项里有 cos(nx)、sin(nx)傅里叶通项在端点处条件收敛且需要求值阿贝尔定理。这套判断链条我在纸上写了无数遍熟练之后基本能在十秒内定位工具。通项特征首选工具关键前提高频陷阱a·qⁿ等比级数公式|q|1公比含参数时漏分情况(and)qⁿ错位相减|q|1相减后忘乘 q 的幂次f(n)−f(n1)裂项相消余项极限为 0只算首项不算余项1/n^pp 级数判据p1 收敛p 略大于 1 时数值误判n^k·xⁿ幂级数逐项求导|x|R端点单独判别xⁿ/n^k幂级数逐项积分|x|R积分常数 C 不会定cos(nx)、sin(nx)傅里叶级数狄利克雷条件系数 1/2 与首项处理端点条件收敛阿贝尔定理端点级数收敛直接代入 x1 越界2.2 收敛判据的快速自查清单动手求和之前我习惯跑一遍三秒钟的自查通项是否趋于零这是必要条件不满足直接判发散一个字的公式都不用写。通项趋于零之后看绝对收敛还是条件收敛取绝对值后如果还收敛那叫绝对收敛后面所有操作重排、分组、逐项运算都安全如果只有原级数收敛而绝对值级数发散就是条件收敛这时候分组求和、交换次序这些动作必须极其小心。判据的选择上比值法和根值法对付带阶乘、带 n 次幂的通项最好用比较判别法和它的极限形式对付多项式分式最顺手积分判别法专门处理单调递减的正项级数p 级数就是它的经典产物。我在实际使用中的体会是别贪多先把比值法和极限比较法用熟能解决八成的判断题。剩下的两成里一大半是交错级数用莱布尼茨判别法加绝对值判据组合就能搞定。真正需要积分判别法的场合其实不多但 p 级数这条路必须走一遍因为它是后面所有幂级数收敛半径讨论的参照系。提示判断收敛时如果通项里有 n 的幂和常数底数的指数混在一起比如 n²/2ⁿ优先用比值法如果通项整体是 1/f(n) 且 f 单调优先用积分判别法。用错方法不至于错但会绕远。3. 公式一与公式二等比级数与等差乘等比3.1 等比级数求和从公式推导到边界条件等比级数是所有级数求和的原点公式简单到很多人不屑于看推导但我建议你把推导至少手写三遍。设部分和 Sₙ a aq aq² … aq^(n−1)两边乘 q 得 qSₙ aq aq² … aqⁿ两式相减中间项全部抵消剩 (1−q)Sₙ a − aqⁿ于是 Sₙ a(1−qⁿ)/(1−q)。这个乘公比再相减的动作是后面错位相减的祖宗一定要练成本能。当 |q|1 时qⁿ→0于是和 S a/(1−q)。这个式子的适用边界极其重要|q|1。q1 时级数变成 aaa…通项不趋于零发散q−1 时级数在 a 和 0 之间反复跳部分和没有极限也发散|q|1 时通项爆炸必然发散。我见过太多人在含参数的题目里直接写出 a/(1−q) 然后代入 q2答案当然是错的。公比含参数时必须把 |q|1、|q|≥1 分开讨论这是不能省的步骤。举个实际会用到的例子0.999…1 这个经典争议本质就是首项 0.9、公比 0.1 的等比级数和是 0.9/(1−0.1)1。再比如金融里的永续年金估值每年现金流 C、折现率 r如果现金流以 g 增长且 gr现值就是 C/(r−g)这就是等比级数的直接应用条件 gr 对应的正是 |q|1。# 等比级数部分和与极限的数值验证 def geo_partial(a, q, n): if q 1: return a * n return a * (1 - q**n) / (1 - q) a, q 3, 0.6 for n in [5, 10, 20, 50]: print(n, geo_partial(a, q, n)) print(limit:, a / (1 - q)) # 7.5实测下来n50 的时候误差已经小到 1e-11 量级收敛速度取决于 |q| 有多小。3.2 等差乘等比错位相减的严谨化写法通项形如 (and)qⁿ 的级数是考试和工程估算里的常客比如 ∑n/2ⁿ、∑(2n1)/3ⁿ。处理手法叫错位相减思路和等比一样只是要多减一次。设 Sₙ ∑_{k0}^{n}(akd)q^k乘 q 得 qSₙ ∑(akd)q^(k1)两式相减系数上的等差部分会消掉一层剩下一个纯等比级数加两个端点项。整理之后取极限得到闭式∑_{n0}^{∞}(and)qⁿ a/(1−q) dq/(1−q)²条件依然是 |q|1。这个公式我建议直接记住结果但推导过程必须会因为考试里经常把它包装成 ∑(2n−1)/2ⁿ 这种变体。代入 a−1、d2、q1/2得 −1/(1/2) 2·(1/2)/(1/4) −2 4 2。你可以用代码验一下部分和n 到 20 的时候已经稳定在 2 附近。注意错位相减最容易错的地方是相减时的对齐。qSₙ 的第一项是 aq最后一项是 (and)q^(n1)减的时候 Sₙ 的第一项 a 没被消掉qSₙ 的最后一项多出来这两项必须单独留下否则结果会差一个常数。我批改作业时这个错误出现的频率最高。如果阶数更高比如 ∑n²qⁿ就要连续错位相减两次或者干脆走下一章的幂级数求导路线。后者更优雅也更不容易算错我在实际使用中基本不再手算二次错位相减。4. 公式三与公式四裂项相消与p级数4.1 裂项相消把通项拆成前后能抵消的形状裂项相消的核心思路是把通项表示成 f(n)−f(n1)这样部分和会形成望远镜式的连锁抵消Sₙ f(1)−f(n1)取极限只需算 f(n1) 的极限。最经典的例子是 1/(n(n1)) 1/n − 1/(n1)部分和是 1−1/(n1)极限为 1。推广形式是 1/(n(nk)) (1/k)(1/n − 1/(nk))这个 k 的因子千万别漏。更复杂一点的是三项乘积比如 1/(n(n1)(n2))它要拆成 (1/2)[1/(n(n1)) − 1/((n1)(n2))]等于把问题降一阶再裂一次。根式型的裂项靠有理化1/(√(n1)√n) √(n1)−√n部分和是 √(n1)−1发散。三角型的裂项靠和差化积比如 sin1/(cos n·cos(n1)) tan(n1)−tan n这类题在竞赛里出现得多。这里有一个几乎人人都会踩的坑只算首项忘了验证余项极限为零。裂项之后 Sₙ f(1) − f(n1)只有当 f(n1)→0 时和才等于 f(1)。如果 f(n) 趋于非零常数 c那级数其实发散部分和趋于 f(1)−c或者需要额外处理。我见过一道题通项裂项后余项趋于 1/2很多人的答案直接写成首项错得悄无声息。所以裂项之后的第一件事永远是把余项拎出来单独求极限。4.2 p级数与调和级数那个最危险的分界线p 级数 ∑1/n^p 的结论干净利落p1 收敛p≤1 发散。证明用积分判别法∑_{n1}^{N} 1/n^p 和 ∫₁^N x^(−p)dx 同阶积分在 p1 时收敛、p≤1 时发散中间差一个有界量。这个结论的重要性在于它给了一大类级数提供了比较基准任何通项和 1/n^p 同阶的级数直接拿 p 值判生死。p1 就是调和级数发散但发散得极其缓慢。前 n 项和约等于 ln n γγ 是欧拉—马歇罗尼常数约 0.5772。这意味着你想让调和级数的部分和超过 20n 得取到 e^19.4 量级约 2.7 亿项。这个数字解释了一个现象数值计算时调和级数看起来像收敛的因为增长太慢。我在代码里见过有人用 n10⁶ 的部分和去判断收敛性结果当然错。同样危险的还有 p 略大于 1 的情形。∑1/n^1.001 是收敛的但收敛极慢余项量级是 N^(−0.001)N 取 10⁶ 时余项还有约 0.986部分和根本看不出收敛趋势。所以用数值方法判断收敛性从来都不可靠必须先做解析判断数值只用来验证。精确值方面ζ(2)π²/6≈1.6449ζ(4)π⁴/90≈1.0823这两个值后面讲傅里叶级数时会重新推一遍。奇数 p 的 ζ 值目前没有简单的闭式ζ(3) 约 1.2021叫阿佩里常数这个结论本身是 1978 年才被证明的说明这类问题的难度并不低。p 值敛散性前 10⁶ 项部分和约备注p0.5发散约 1999增长如 √np1发散约 14.39增长如 ln np1.001收敛约 999.5余项衰减极慢p2收敛约 1.6449ζ(2)π²/6p4收敛约 1.0823ζ(4)π⁴/905. 公式五与公式六幂级数逐项求导与逐项积分5.1 收敛半径怎么求才不会翻车幂级数 ∑aₙxⁿ 的一切讨论都建立在收敛半径 R 上。求 R 的标准手段有两条比值法 R lim|aₙ/aₙ₊₁|根值法 R 1/limsup|aₙ|^(1/n)。两条都失效时比如系数有缺项像 ∑x^(2n)/n²直接对整体用比值法别硬套系数的公式。缺项是最容易出错的地方∑x^(2n) 的系数 aₙ 在奇数位是 0你把 0 代进比值公式会直接除零。求出 R 之后端点 x±R 必须单独判别这一步不能省因为端点处的敛散性和内部完全无关。经典例子∑xⁿ/n 的 R1x1 时是调和级数发散x−1 时是交错调和级数收敛。所以收敛域是 [−1,1)。如果你只写 |x|1就漏掉了一半信息。5.2 先导后积还是先积后导一个实用的判断准则幂级数求和的两把刀逐项求导和逐项积分都是利用求导/积分后系数变简单这一点。判断用哪把看系数在分母还是分子系数在分母先求导把它消掉系数在分子先积分把它压下去。这是我在纸上写了无数遍的口诀几乎没失手过。举个系数在分子的例子∑n xⁿ。系数 n 在分子直接求和没戏。设 S(x)∑_{n≥1}nxⁿ先积分∫₀^x S(t)dt ∑x^(n1) x²/(1−x)再求导回来S(x) d/dx[x²/(1−x)] x(2−x)/(1−x)²。整理得 S(x)x/(1−x)²。代 x1/2得 ∑n/2ⁿ2和前面错位相减的结果对上。系数在分母的例子∑xⁿ/n。先求导S(x)∑x^(n−1)1/(1−x)再积分回去S(x)−ln(1−x)C。定常数 C代 x0左边 0右边 C所以 C0。于是 S(x)−ln(1−x)收敛域 [−1,1)。这里代 x−1 得 ∑(−1)ⁿ⁺¹/n ln2也就是 1−1/21/3−…ln2这条结果后面在阿贝尔定理那节还会用到。注意逐项求导和逐项积分不改变收敛半径但可能改变端点的敛散性。求导会让端点更容易发散积分会让端点更容易收敛。所以每次做完运算端点都要重新判一次不能直接沿用原来的结论。另外积分之后那个常数 C 必须通过代入特殊值通常是 x0来确定忘了这一步等于白算。再补一个常用的∑xⁿ/n² 的和是二重对数函数 Li₂(x)没有初等闭式但 x1 时等于 π²/6这正好和 p 级数的 ζ(2) 对上。这个例子说明幂级数求和不一定能给出初等形式遇到这种情况就别死磕了。6. 公式七与公式八傅里叶级数与阿贝尔定理6.1 傅里叶级数拿周期函数的展开式反推数值级数傅里叶级数在求和的语境里主要用途是反向作业先找一个合适的周期函数写出它的展开式再代入特定的 x 值逼出某个数项级数的和。这套操作的威力在于它能处理 ζ(2n) 这类幂级数搞不定的问题。系数公式得记牢对周期 2π 的函数 fa₀/2 ∑[aₙcos(nx)bₙsin(nx)]其中 aₙ(1/π)∫_{−π}^{π}f(x)cos(nx)dxbₙ 同理换 sin。那个 a₀/2 里除以 2 特别容易漏务必小心。三个经典结论值得背下来。第一把 f(x)x² 在 [−π,π] 上展开得 x²π²/34∑(−1)ⁿcos(nx)/n²代 xπ得 ∑1/n²π²/6。第二把 f(x)x 展开得 2∑(−1)ⁿ⁺¹sin(nx)/n代 xπ/2得 ∑(−1)ⁿ⁺¹/(2n−1)π/4也就是莱布尼茨公式。第三把 f(x)|x| 展开代 x0得 ∑1/(2n−1)²π²/8。狄利克雷条件是使用前提函数在周期内连续或只有有限个第一类间断点且只有有限个极值点。间断点处的收敛值是左右极限的平均这一条经常被忽略代值的时候要挑连续点。帕塞瓦尔等式是另一件利器∫|f|²(a₀²/2)∑(aₙ²bₙ²)用它能把平方和的级数也算出来。6.2 阿贝尔定理端点处那临门一脚阿贝尔定理有两个层面的含义初学的时候容易混。第一个是收敛性传播如果 ∑aₙx₀ⁿ 在 x₀ 处收敛那么对一切 |x||x₀| 都绝对收敛。这条保证了幂级数的收敛域是一个以原点为中心的区间是收敛半径概念的基础。第二个是极限定理也叫阿贝尔第二定理如果 ∑aₙ 收敛那么 lim_{x→1⁻}∑aₙxⁿ ∑aₙ。也就是说和函数在端点处单侧连续。第二条才是求和的利器。它的用法是先在 |x|1 内求出和函数 S(x) 的闭式再令 x→1⁻ 取极限就得到端点级数的和。举例∑(−1)ⁿ⁺¹/n 在端点 x1 处对应 ∑(−1)ⁿ⁺¹/n但我们算的是 S(x)ln(1x) 在 x→1⁻ 的极限等于 ln2。同理∑(−1)ⁿ/(2n1) 由 arctan x 的展开式在 x1 处取极限得到 π/4。阿贝尔定理的价值在于它绕开了端点级数收敛性的直接判断。你不需要证明端点级数收敛只要幂级数在端点收敛这是条件极限就成立。但反过来如果端点级数发散这个极限可能仍然存在只是不再等于级数的和——这时候得到的值叫阿贝尔和属于广义求和的范畴。举个最著名的例子1−11−1… 在通常意义下发散但考虑 ∑(−1)ⁿxⁿ 1/(1x)令 x→1⁻ 得 1/2于是它的阿贝尔和是 1/2。这个 1/2 不是假装收敛而是解析延拓意义下的自然赋值在很多物理和组合问题里恰好是正确的答案。但要清楚阿贝尔和改变了求和的定义不能拿它去替代通常意义下的敛散性判断。还有一种技术叫阿贝尔分部求和分部求和公式本质是离散版的分部积分用于狄利克雷判别法如果部分和序列有界、另一个因子单调趋于零则级数收敛。处理 ∑sin(nx)/n 这类级数时这是标准手法。7. 数值验证与代码实现细节7.1 用 Python 做部分和、加速与高精度校验理论推完之后我习惯写几行代码交叉验证因为公式记错一个系数手算未必发现数值一跑就露馅。基础版本就是累加部分和看它是否趋于稳定进阶版本用加速手段比如欧拉变换处理交错级数或者 Kummer 变换处理收敛慢的正项级数。import math def partial_sum(term, n): return sum(term(k) for k in range(1, n 1)) # 交错调和级数理论值 ln2 for n in [100, 1000, 10000, 100000]: s partial_sum(lambda k: (-1)**(k-1) / k, n) print(n, s, abs(s - math.log(2)))n100000 时误差还有 1e-5 量级因为交错调和级数的误差量级是 1/n收敛很慢。这时候用欧拉变换能把它压到 1e-10 以内。加速的原理是交错级数的部分和序列本身有规律可以拟合成一个快速收敛的新级数。def abel_style_accel(term, n_terms30): # 对 sum_{k0} (-1)^k a_k 做欧拉变换 a [term(k) for k in range(n_terms)] s 0.0 for m in range(n_terms): # 差分表第 m 层首项 d a[m] for j in range(m): pass # 简化演示直接累加变换公式的一项 return s上面这段是骨架示意实际实现要先生成差分表。真要用现成工具mpmath里的nsum会自适应选择加速方法几十项就能给出 15 位有效数字比自己手写稳得多。我一般用mpmath.nsum做最终校验用自己写的循环做过程观察。import mpmath as mp mp.mp.dps 30 val mp.nsum(lambda k: (-1)**(k-1) / k, [1, mp.inf]) print(val, mp.log(2))7.2 浮点精度的三个隐形陷阱第一个陷阱是大数吃小数。累加 1/n² 时前面几项是 1、0.25、0.111…后面项是 1e-10 量级双精度只有约 16 位有效数字加到最后根本加不进去。解决办法是反向累加从大 n 往小 n 加让小的先积累起来。第二个陷阱是相消误差。交错级数尤其明显两个接近的大数相减会丢掉有效位。比如计算 1−10.5−0.333…中间过程的绝对值远大于最终结果相对误差被放大。第三个陷阱是判据误用。前面说过数值上看不出增长不等于收敛p 级数就是典型。我给自己定的规矩是任何收敛性结论必须先有解析证明数值只用于验证数量级不用于下结论。提示做级数数值实验时把mp.mp.dps设到 50 位然后用双精度和 50 位精度的结果对比如果两者差得很多说明你的算法在数值上不稳定需要换加速方法或者改用反向累加。8. 常见问题与排查技巧实录8.1 高频踩坑清单坑一含参数的公比不分类讨论。看到 ∑(2x)ⁿ 就直接写 1/(1−2x)忘了声明 |2x|1。正确写法是先给收敛条件 |x|1/2再给和函数。坑二裂项后余项没归零。前面详细说过这里再强调一次裂项完立刻算 lim f(n1)。坑三幂级数端点漏判。收敛域必须写完整区间[−1,1)、(−1,1]、[−1,1] 都不一样端点要单独代入判别。坑四积分常数 C 没定。逐项积分求出的和函数带一个 C必须代特殊值确定通常代 x0。坑五傅里叶系数漏了 1/2。a₀/2 的那个除二是常数项漏了整条式子的数值全错。坑六条件收敛级数随意重排。并行求和、分组求和之前先确认绝对收敛否则结果不可控。坑七把阿贝尔和当成通常和。1−11−… 的通常和不存在阿贝尔和是 1/2两者不能混为一谈。8.2 问题速查表现象可能原因排查动作结果比预期差一个常数错位相减端点项漏了重新对齐首末项和函数在端点值不对端点未单独判别代入 x±R 判敛散裂项结果偏大或偏小余项极限未减单独计算 lim f(n1)数值部分和不收敛级数本身发散回到通项判据积分后表达式多一项常数 C 未定代 x0 求 C傅里叶展开差常数倍系数公式漏 1/π 或 1/2逐项核对系数踩过的坑里我觉得最值得说的一条是别在没判收敛的情况下动手求和。我早年做过一个信号处理的近似计算把一个看起来收敛的级数截断求和结果差了百分之几回头一查级数本身是发散的只是前几十项在下降后面才慢慢抬起头。这件事之后我给自己立了规矩求和之前先跑三秒自查通项趋零、绝对值判据、p 值比对三步走完再动笔。这三步花不了半分钟但能省掉后面几个小时的返工。级数求和这事工具本身不难难的是在每个岔路口都选对工具并且守住适用边界剩下的就是熟练度问题。
阅读完成 · 觉得有帮助?