
无穷级数这个系列写到第三篇前面两回我们把判敛的工具箱翻了个遍比较判别法、比值判别法、根值判别法、莱布尼茨判别法基本够应付这个级数收不收敛的是非题。但真正卡住人的地方往往出现在判敛之后收敛我知道了可这个和到底等于几收敛半径怎么算一个函数凭什么能被拆成一串幂次相加这些问题在教材里散落在不同章节学的时候一条一条过用的时候串不起来。这篇就专门补这一段断层。核心话题是幂级数与收敛半径、逐项求导与逐项积分、泰勒展开的工程化用法以及怎么把一个收敛的级数真正算成数字顺带把误差控制在能接受的范围里。如果你是正在啃高数或者数学分析的学生这篇能帮你把判敛和求值两件事接上如果你是想把级数当工具用的人比如做数值近似、做信号展开、写代码算常数那第三篇大概率比前两篇更实用。1. 判敛之后的真空地带光知道收敛到底能干嘛1.1 判别法回答的是存在问题不是求值问题我先把一个很多人心里有、但不太说出口的疑问摆到台面上辛辛苦苦背了一堆判别法做了一两百道题好像除了收敛和发散两个词什么也没捞着。这不是错觉而是判别法本身的定位决定的。它回答的是级数有没有极限这个是非题压根不负责告诉你极限是多少。它更像一台只亮红绿灯的检测仪你拿着它只能判断这条路走不走得通走到底通向哪里它不关心。最能说明问题的是 Σ 1/n² 1 1/4 1/9 1/16 …。用比较判别法两行就能证明它收敛因为 1/n² 1/(n(n-1)) 而后者可以裂项求和。可它的真实和是 π²/6 ≈ 1.644934判别法一个数字都给不出来。更要命的是这个结果在历史上让欧拉折腾了很久才拿下说明收敛和求和之间隔着的不是一步两步。所以第一篇第二篇把判敛讲完其实只完成了任务的一半。剩下的一半要回答两个更具体的问题一是这个和能不能表示成某种我们熟悉的封闭形式二是如果表示不出来能不能算到足够精确。这两个问题正好对应本文后面两块内容——幂级数求和函数以及数值近似与误差估计。1.2 从一串数到一族级数幂级数带来的参数化思路既然直接对着一串数求和这么难能不能换个角度幂级数就是那个换角度的产物。它把固定的系数挂到一个变量 x 的幂上写成 Σ aₙxⁿ。这么一改性质立刻变了它不再是一个数项级数而是一族数项级数x 每取一个值就退化成你熟悉的一元级数。这个思路的价值在于信息密度。给定 Σ aₙxⁿ只要我算出一个收敛区间就能在这个区间里取任意 x得到无穷多个具体的和。比如 Σ xⁿ 的和是 1/(1-x)这一句顶得上无穷多道题x 1/2 时和是 2x 1/3 时和是 3/2x 取多少都能直接代。而如果只盯着数项级数 Σ (1/2)ⁿ你就只能得到 2 这一个答案。这也解释了为什么教材要在数项级数之后马上引入幂级数。它不是难度的升级而是工具的升级。前面学的所有判别法都能迁移过来只是把常数通项换成了带 x 的通项而对 x 的处理方式是整体性的——先求出收敛半径再分别判断两个端点最后得到一整段收敛区间。这个流程我在下一篇会反复用到因为后面所有求和、展开、近似第一步都是先确认我在哪个范围内玩。2. 收敛半径一场关于距离的博弈2.1 收敛半径到底在描述什么收敛半径这个词第一次出现的时候很多人会以为它是个纯粹的代数记号其实它的几何含义非常直白。把 x 看成复平面上的点幂级数 Σ aₙxⁿ 的收敛区域就是一个以原点为中心、半径 R 的开圆盘。圆盘内部绝对收敛外部发散圆周边界上情况不确定需要单独检验。R 就是这个圆盘的半径。这件事的严格表述叫阿贝尔定理如果级数在某点 x₀ 收敛那么对所有满足 |x| |x₀| 的 x 都绝对收敛如果它在 x₀ 发散那么对所有 |x| |x₀| 的 x 都发散。注意这两个结论的方向是相反的收敛点往内推发散点往外推。两边一夹中间必然存在一个临界值这个临界值就是 R。理解了这层几何意义很多操作就顺了。比如为什么收敛区间一定是以 0 为中心的对称区间端点可能一个收一个散但对称中心的地位动摇不了为什么复平面上函数有奇点时收敛半径会被限制在奇点的模长以内这些在实轴上看起来莫名其妙的规律放到复平面上一眼就通。后面讲 1/(1x²) 的展开时会用到一个非常漂亮的例子。2.2 求半径的两个主力公式与实操细节工程上最常用的两个公式是比值版和根值版。比值版若 lim |aₙ₊₁/aₙ| L 存在则 R 1/L。等价写法是 R lim |aₙ/aₙ₊₁|。这两种写法都对但用的时候千万别只背一个我见过太多人因为把分子分母写反而把答案算成倒数。根值版柯西-阿达马公式R 1 / lim sup |aₙ|^(1/n)。这个版本适用范围更广因为上极限总是存在的不像比值版要求极限必须存在。如果系数有缺项比如只有偶数次幂比值法会直接卡住这时候必须换根值法。来看几个必须记住的典型Σ xⁿ/n!aₙ 1/n!|aₙ/aₙ₊₁| (n1)!/n! n1 → ∞所以 R ∞整个实轴收敛。这就是 eˣ 展开式的来源。Σ n!xⁿaₙ n!|aₙ₊₁/aₙ| n1 → ∞所以 R 0除了 x 0 到处发散。系数长得太快级数活不下来。Σ xⁿ/naₙ 1/n|aₙ/aₙ₊₁| (n1)/n → 1所以 R 1。Σ x^(2n)/2ⁿ系数有缺项用根值法|aₙ|^(1/n) (1/2ⁿ)^(1/n) 对应到 x^(2n) 项的系数是 1/2ⁿ所以 |x|²/2 1R √2。这里有个新手极容易忽略的点缺项级数不能硬套比值公式。因为比值公式是给标准形式 Σ aₙxⁿ 准备的缺项时很多 aₙ 等于 0比值要么算不出来要么算出来是 0 或者无穷直接套就是错的。遇到 x 的指数不是 n 而是 2n、3n 这类情况老老实实用根值法把 x 的指数也一起塞进去算。2.3 端点为什么必须单独验算求出 R 之后收敛区间暂时只能确定是 (-R, R)两个端点是悬案。原因很直接比值法和根值法本质上都是拿通项的衰减速度去和几何衰减比而端点上 |x| 正好等于 R衰减速度刚好处于临界状态判别法失效那时候就是老老实实把 x R 和 x -R 代进去还原成数项级数单独判。举个用烂了但确实经典的例子Σ xⁿ/nR 1。x 1变成 Σ 1/n调和级数发散。x -1变成 Σ (-1)ⁿ/n交错调和级数由莱布尼茨判别法收敛。所以收敛域是 [-1, 1)左边闭右边开。这种一收一散的端点组合非常常见做题时如果两个端点都收敛或者都发散反而要警惕是不是算错了。幂级数收敛半径 R收敛域端点说明Σ xⁿ/n!∞(-∞, ∞)无端点问题Σ n!xⁿ0{0}只在原点收敛Σ xⁿ/n1[-1, 1)x-1 收敛x1 发散Σ xⁿ/n²1[-1, 1]两端均绝对收敛Σ xⁿ1(-1, 1)两端均发散把这张表背下来基本能覆盖大一期末卷子上八成的端点讨论题。真正的实操心得是端点讨论不是可选项是不做就要扣分的步骤。我当年考试就在这里栽过半径算对了区间顺手写成 [-1, 1]x 1 那一端直接错因为 Σ 1/n 明明是发散的。3. 逐项求导与逐项积分幂级数最好用的两个开关3.1 凭什么可以把求和和求导换位置有限个函数相加先求和再求导和先求导再求和结果一样这是微积分基本性质。但无穷多个函数相加这个顺序能不能换答案是不一定需要额外条件保证。幂级数的好处就在于这个条件天然满足在收敛区间内部任取一个闭子区间幂级数都一致收敛而一致收敛正是交换求导、积分与求和顺序的通行证。结论可以放心用幂级数在它的收敛区间内部可以逐项求导也可以逐项积分并且求导或积分之后得到的新幂级数收敛半径和原来完全一样。注意是半径不变不是收敛域不变。区间内部照旧端点可能因为操作而发生收敛性变化这一点后面踩坑章节会专门讲。这条性质用一句话总结就是幂级数是可操作的。你可以对一个无穷和动手把它当作一个整体函数来求导、积分、代值不用担心破坏它本身的收敛性。正因为有这个保障下面两节讲的两类求和技巧才能成立。3.2 用求导法把带 n 的系数打出来最经典的起点是几何级数Σ xⁿ 1/(1-x)|x| 1。两边对 x 求导左边逐项求导得到 Σ n x^(n-1)右边得到 1/(1-x)²。于是Σ n x^(n-1) 1/(1-x)²|x| 1。这一步的威力在于它凭空造出了一个带因子 n 的求和公式。凡是通项里出现 n、n²、甚至 n³ 的幂级数都可以通过反复求导把它打出来。比如 Σ n² xⁿ可以先把 Σ n x^(n-1) 再乘以 x 得到 Σ n xⁿ然后对这个式子再求一次导就能凑出 Σ n² x^(n-1)再乘 x 得到 Σ n² xⁿ 的封闭形式。我这里想强调一个操作技巧比死记公式有用得多。遇到 Σ n²xⁿ 这种不要试图硬背答案用算子写法先把整个级数看成 x · (d/dx) 反复作用在 Σ xⁿ 上。第一次 x·d/dx 给出 Σ n xⁿ第二次再作用给出 Σ n² xⁿ。算子清楚的写法能避免系数移位错误尤其是幂次和 n 的对应关系一不小心就会差一个 x。举一个具体能算的数项级数求 Σ_{n1}^∞ n/2ⁿ。这是 x 1/2 代入 Σ n xⁿ 的结果。由 Σ n xⁿ x/(1-x)²代入 x 1/2 得 (1/2)/(1/2)² (1/2)/(1/4) 2。所以这个级数的和就是 2。用判别法你只能知道它收敛用求导法你两行就拿到确切值。3.3 用积分法逼近 ln 和 arctan求导是造出系数里的 n积分则相反它会消化掉分母里的 n。最漂亮的用法是从 1/(1x) 出发1/(1x) Σ (-1)ⁿ xⁿ|x| 1。两边在 [0, x] 上逐项积分左边得到 ln(1x)右边得到 Σ (-1)ⁿ x^(n1)/(n1)整理一下就是ln(1x) Σ (-1)^(n1) xⁿ/n-1 x ≤ 1。同理从 1/(1x²) Σ (-1)ⁿ x^(2n) 出发积分得到arctan x Σ (-1)ⁿ x^(2n1)/(2n1)-1 ≤ x ≤ 1。这里有意思的地方在于端点的变化。1/(1x) 的展开在 x 1 处是发散的但它的积分结果 ln(1x) 在 x 1 处恰好收敛等于 ln 2 1 - 1/2 1/3 - 1/4 …。这就是前面强调半径不变但端点可能变的活例子逐项积分之后收敛域可以向外扩一个端点。反过来逐项求导也可能让收敛域向内收缩。顺便说一句这两个式子不只是理论玩具。arctan 的级数在 x 接近 1 时收敛极慢直接拿它算 π 需要几百项才能有几位精度这也是为什么历史上用这种级数算 π 的人后来都去搞加速收敛了。4. 把函数拆成级数泰勒展开的工程化用法4.1 泰勒级数凭什么长成那个样子泰勒级数的构造逻辑其实很简单我想用一个多项式去逼近一个函数 f(x)希望这个多项式在某个点 a 附近和 f 长得像。长得像的标准是各阶导数都相等。假设多项式写成 Σ cₙ(x-a)ⁿ要求它和 f 在 a 处的值、一阶导、二阶导……全都一致逐项比较就能反推出 cₙ f⁽ⁿ⁾(a)/n!。n! 是从哪来的它来自对 (x-a)ⁿ 反复求导。第 n 次求导会把 n(n-1)(n-2)…2·1 这个连乘因子甩出来正好是 n!为了让剩下的系数正好等于 f 的第 n 阶导数值就必须先除掉这个 n!。理解了这一点你就再也不会把公式里的 n! 记成 1/n 或者其他东西了。特别地a 0 时叫麦克劳林级数这是实际计算里用得最多的版本。原因很现实展开点越靠近要计算的位置误差越小而大部分数值计算场景恰好就在 0 附近活动。4.2 常用展开清单与记忆方法函数展开式收敛域eˣΣ xⁿ/n!(-∞, ∞)sin xΣ (-1)ⁿ x^(2n1)/(2n1)!(-∞, ∞)cos xΣ (-1)ⁿ x^(2n)/(2n)!(-∞, ∞)1/(1-x)Σ xⁿ(-1, 1)1/(1x)Σ (-1)ⁿ xⁿ(-1, 1)ln(1x)Σ (-1)^(n1) xⁿ/n(-1, 1]arctan xΣ (-1)ⁿ x^(2n1)/(2n1)[-1, 1](1x)^α1 Σ α(α-1)…(α-n1)xⁿ/n!(-1, 1)视 α 端点而定这张表建议手抄一遍。记忆的窍门是按类来记指数、正弦余弦是一组特点是分母带阶乘、全轴收敛因为阶乘增长得比任何指数都快任何 x 都压不住几何类和它的积分类ln、arctan是另一组共同点是分母只带一次方或一次形式所以收敛被限制在 |x| 1 附近因为 1/(1-x) 在 x 1 处爆炸收敛半径就被这个奇点卡在了 1。说到奇点卡半径有个例子值得单独拎出来1/(1x²) 的展开是 Σ (-1)ⁿx^(2n)收敛半径是 1。可是 1/(1x²) 在实轴上处处有定义、处处光滑没有任何毛病凭什么只能展开到 |x| 1答案是它在复平面上 x ±i 处有极点模长恰好是 1。实轴上看不出问题的地方复平面上给你挖了坑。这就是为什么我前面说收敛半径在复平面上才看得清楚。4.3 间接法展开代换、求导、积分的组合拳真正做题和做工程的时候很少直接从定义出发一层层求导算 cₙ那玩意算到四阶导就能把人逼疯。主流做法是间接法也就是拿已经背下来的基本展开做代换、求导、积分、四则运算拼出目标函数。三种最常用的操作第一代换。要展开 e^(-x²)没必要去求它的一阶二阶导直接把 e^t Σ tⁿ/n! 里的 t 换成 -x²得到 e^(-x²) Σ (-1)ⁿx^(2n)/n!。这个展开在正态分布相关的积分里天天用误差函数 erf(x) 的级数就是这么来的。第二逐项求导或积分。要展开 arctan x从它导数 1/(1x²) 的展开积分得到这是最省力的路径。要展开 ln(1x)从 1/(1x) 积分得到同样省事。第三四则运算与组合。要展开 sinx/x把 sin 的展开除以 x 就行得到 1 - x²/3! x⁴/5! - …顺带还能看出 x→0 时极限是 1。这个式子在计算 sinc 函数、做信号处理的时候用得很频繁。实操提醒间接法展开时最终写的是等号还是约等号取决于你有没有把余项写出来。做理论上证明函数等于它的级数要讨论余项是否趋于 0做数值近似通常写约等号并说明保留了几阶。在一份严谨的报告里把约等号写成了等号是很常见的扣分点。5. 算和与近似级数真正落地的地方5.1 裂项、错位相减与幂级数法幂级数法之外还有几把老刀也很锋利工程上按情况挑。裂项相消适合通项能拆成两项差的情形。最典型的是 Σ 1/(n(n1))因为 1/(n(n1)) 1/n - 1/(n1)部分和中间项全消只剩下 1 - 1/(N1)取极限得 1。凡是分母是相邻两项或隔项乘积的先试试能不能裂。错位相减适合通项是多项式乘几何的结构比如 Σ n/2ⁿ、Σ n²/3ⁿ。做法是设部分和 S_N两边乘公比后与原式相减中间大部分项消掉最后取极限。这个方法步骤固定但乘法项多的时候容易错我更推荐用幂级数法因为它把整个结构一次性处理掉出错概率更低。幂级数法就是前面第 3 节的思路把数和认成某个幂级数在特定点的取值用求导/积分造出封闭形式再代值。它的适用范围和错位相减重叠但更干净尤其在通项里出现 n、n²、n³ 的时候优势明显。5.2 余项估计误差到底控制在多少求出和只是第一步实际用的时候必须回答我算了前 N 项误差有多大。这里分三种情况方法完全不同混用就错了。交错级数用莱布尼茨余项估计最省事。若 uₙ 单调递减趋于 0则交错级数的余项满足 |R_N| ≤ u_{N1}。意思是你只要看下一项的大小就知道误差上界。比如用 1 - 1/2 1/3 - … 算 ln 2想保证误差小于 10⁻⁶只要找到第一个小于 10⁻⁶ 的项后面就不用算了大概算到一百万项。这也顺带说明了这个级数有多慢。正项级数用积分余项估计。对 Σ f(n)当 f 单调递减时尾巴 Σ_{nN1}^∞ f(n) 被夹在 ∫_{N1}^∞ f(x)dx 和 ∫_N^∞ f(x)dx 之间。用 Σ 1/n² 算 π²/6 举例积分估计给出 R_N ≈ 1/N要达到 10⁻⁶ 精度需要一千万项左右还是慢。泰勒级数用拉格朗日余项形式是 Rₙ(x) f⁽ⁿ⁺¹⁾(ξ)xⁿ⁺¹/(n1)!其中 ξ 在 0 和 x 之间。估计的时候通常不去精确求 ξ而是找 f⁽ⁿ⁺¹⁾ 在区间上的最大绝对值给一个保守上界。这也是为什么很多人算 eˣ 到 10 项就能很精确因为 xⁿ⁺¹/(n1)! 衰减得太快了。级数类型余项估计方法关键公式交错级数莱布尼茨判别法配套|R_N| ≤ u_{N1}正项级数积分判别法配套∫_{N1}^∞ f ≤ R_N ≤ ∫_N^∞ f幂级数/泰勒拉格朗日余项Rₙ f⁽ⁿ⁺¹⁾(ξ)xⁿ⁺¹/(n1)!5.3 号称算得准和真的算得准之间差了什么这部分是纯干货教材基本不讲但写代码算级数的人都踩过。第一个坑是浮点精度。你从第一项开始往后加加到一百万项的时候每一项已经小到 10⁻⁷ 量级而你前面的累加和已经到 1.64 左右有效数字只有十来位小项加到和大项比已经接近机器精度极限会被吃掉。解决办法是从小项往大项加或者用 Kahan 求和算法专门保留舍入误差。这个细节在算高精度 π、ζ 函数值的时候是决定性的。第二个坑是收敛速度。交错调和级数收敛慢到让人绝望这时候要用加速技巧。最简单粗暴的是欧拉变换或者用积分估计先加上尾巴的近似项再逐项修正。以 Σ 1/n² 为例算到第 N 项后加上 1/N - 1/(2N²) 1/(6N³) 这样的渐近修正精度能提升好几个数量级N 取几千就能达到 10⁻⁸ 级别比硬加到一千万项快得多。第三个坑是忽略了端点和定义域。用幂级数近似一个函数的时候取的 x 越靠近收敛半径边界收敛越慢误差越大。arctan 的级数在 x 1 附近要几千项才有像样的精度而如果先用 arctan 的加法公式把角度折半让 x 降到 0.1 以内几十项就够了。这是做数值库的人常用的技巧先约化再展开。下面这段 Python 代码演示了尾项修正算法算 π²/6 到 10⁻¹² 级别import math def zeta2(n_terms20): s sum(1.0 / (k * k) for k in range(1, n_terms 1)) N n_terms # 渐近尾修正sum_{kN} 1/k^2 ≈ 1/N - 1/(2N^2) 1/(6N^3) - 1/(30N^5) tail (1.0 / N) - 1.0 / (2 * N * N) 1.0 / (6 * N ** 3) - 1.0 / (30 * N ** 5) return s tail print(zeta2(20)) print(math.pi ** 2 / 6)二十项加上尾修正就能把 π²/6 算到小数点后十几位。这个对比非常直观地说明了算级数的核心难点从来不是加法本身而是怎么理解它的收敛结构然后用结构去省计算量。6. 亲手踩过的几个坑条件收敛、逐项操作与收敛域错位6.1 条件收敛的级数不能随便重排这是所有坑里最能坑人的。绝对收敛的级数你可以随便交换各项顺序和不变条件收敛的级数不行重排之后和会变甚至可以重排成任意你想要的数或者直接重排成发散。这个结论叫黎曼重排定理听起来反直觉但构造起来并不难。实操上的教训是如果你在处理一个条件收敛级数任何涉及重新排列各项顺序的操作都必须停下想一想。比如把交错调和级数 1 - 1/2 1/3 - 1/4 … 按正项、负项分开重新组合得到的和会变成 (1/2)·ln 2和原来不一样了。这不是算错是这个级数本身不具备那种自由。判断标准很简单看 Σ |aₙ| 收不收敛。收敛就是绝对收敛可以放心重排发散就是条件收敛动之前先掂量一下。6.2 逐项求导在端点失效的典型现场前面说逐项求导保持收敛半径不变但端点会变。有个很典型的例子Σ xⁿ 的收敛域是 (-1, 1)和函数是 1/(1-x)。对它逐项求导得到 Σ n x^(n-1)和函数是 1/(1-x)²。看收敛域Σ n x^(n-1) 的半径还是 1但两个端点 x ±1 上通项 n 根本不趋于 0所以求导后的级数在两个端点都发散收敛域缩成了 (-1, 1)。反向的例子是逐项积分收敛域可能向外扩前文 ln(1x) 在 x 1 收敛就是明证。所以在做逐项操作的时候端点一定要重新验一遍不能想当然沿用原来的结论。我在写一段数值近似代码时就用过这个错函数的级数展开在端点上本来收敛求了一次导之后端点其实发散了但代码没检查结果在边界附近给出了完全错误的数。6.3 函数自身收敛不等于展开式到处收敛1/(1x²) 那个例子值得再啰嗦一次。函数本身在整个实轴上光滑、有界、没有任何问题但是它的麦克劳林展开 Σ (-1)ⁿx^(2n) 只在 |x| 1 内成立在 x 2 处代入会得到一个明显发散的级数。如果你不知道收敛半径是被复平面上的极点卡住的很容易误以为函数有定义的地方级数就能展开这是错的。另一个经常被忽略的点是即使函数在展开点附近无限可导也不一定等于它的泰勒级数。经典反例是 e^(-1/x²) 在 x 0 处的所有导数都为 0泰勒级数是恒等于 0 的多项式但它本身不是零。要保证函数等于它的泰勒级数必须额外验证余项趋于 0这一步在数值计算里看着多余在理论推导里是命门。6.4 把通项趋于 0当成收敛的判据最后一个坑是概念性的但杀伤力很大。通项趋于 0 是级数收敛的必要条件不是充分条件。违反它必定发散满足它也不能断定收敛。Σ 1/n 就是活生生的反例通项清清楚楚趋于 0级数照样发散。这个误区会让人在面对一个还没判断题型的级数时直接下错结论。正确顺序永远是先看通项是否趋于 0如果不趋于直接判发散如果趋于 0再拿比较、比值、根值这套工具接着上。以我自己的经验来说学无穷级数最费劲的阶段其实不是背判别法而是把判敛和求值这两套思维打通。判别法训练的是当你面对一个陌生级数时的第一反应幂级数、逐项操作、泰勒展开训练的是你怎么把它变成一个能计算的封闭形式。这两件事在教材里往往隔了好几章但真正用起来是连在一起的。我建议的做法是每遇见一个收敛的级数都顺手问一句它的和能不能用幂级数法算出来练上二十道题这个链条就固化了。再补一个小技巧把常用展开表和典型收敛半径整理成一张手写卡片贴在书桌前做题时不要翻书想不起来就盯着卡片推。推的过程本身就是对收敛半径、逐项求导、端点讨论这几件事的复习比直接背答案有效得多。至于数值计算那些坑等你真用代码算过一两次高精度常数就再也忘不掉了。