极限与级数 · 无穷的符号化
极限和 Taylor 级数是分析学的两块基石,符号计算把它们也变成了机械操作。这一章看 SymPy 怎么精确求极限(包括 0/0、∞ 这些棘手情形)、怎么把函数展成幂级数,以及这些能力在近似、渐近分析里的用处。
极限与级数 · 无穷的符号化
积分讲完,再看微积分符号版的另外两件利器——极限和级数。它们都和「无穷逼近」有关,是分析学的基石,而符号计算把它们也变成了能精确执行的操作。
极限:精确处理「趋近」
limit 求极限,连那些手算容易出错的 、、 型都能精确拿下:
from sympy import *
x = symbols('x')
print(limit(sin(x)/x, x, 0)) # 1 —— 经典的 0/0 型
print(limit((1 + 1/x)**x, x, oo)) # E —— 1^∞ 型,极限是自然常数 e
print(limit(1/x, x, 0, '+')) # oo —— 单侧极限(从右趋近) 在 时是 ,极限却精确是 ; 在 时精确趋于 。注意第三个的 '+'——它求单侧(从右)极限,得到 ;符号系统能精确区分左极限、右极限、双侧极限,以及 这些「值」。
计算机怎么求极限?不是「代一个很接近的数进去看看」——那是数值的做法,会被误差和振荡骗。 现代 CAS(含 SymPy)多用 Gruntz 算法:它把函数按「趋于无穷的快慢」分层(所谓渐近尺度),从而精确判定极限——即使遇到 这种「指数 vs 多项式」的较量,也能一眼看穿谁跑得快( 完胜,极限是 )。这是符号方法对数值方法的一个漂亮胜利:极限是关于「无穷」的精确断言,只有符号推理配得上它。
级数:把函数摊成幂级数
series 把函数在某点展成 Taylor(泰勒)级数——用多项式一项项逼近:
print(series(exp(x), x, 0, 5)) # 1 + x + x**2/2 + x**3/6 + x**4/24 + O(x**5)
print(sin(x).series(x, 0, 8)) # x - x**3/6 + x**5/120 - x**7/5040 + O(x**8)在 附近约等于 ,。末尾那个 是大 O 记号,诚实地标注「剩下的都是 及更高阶的项,这里略去」——它精确记录了截断到几阶。
级数展开用处极广:
- 近似计算: 很小时,用前几项就能高精度近似函数(计算器算 、 就靠它)。
- 渐近分析:看函数在某点附近的主导行为(最低阶项说了算)。
- 推导极限:很多极限,把分子分母各展成级数、比最低阶项,一眼就出来。
- 数值方法的理论:孪生专栏里数值微分 / 积分的误差阶(、),正是从 Taylor 级数推出来的。
符号级数 vs 数值近似,是一对互补。 符号级数给你精确的系数和明确的误差阶(),让你理解逼近的结构;而真要算某点的值,再把符号级数代入数值(lambdify)。「先符号推导出公式与阶、再数值求值」,是科学计算里极常见的高效套路。
小结与下一章
极限 limit 精确处理趋近(含 、、单侧、),靠的是 Gruntz 渐近算法而非数值代入——只有符号推理配得上「无穷」。级数 series 把函数摊成 Taylor 幂级数,O(xⁿ) 精确标注截断阶,用于近似、渐近分析、推极限,以及支撑数值方法的误差阶理论。符号与数值在这里互补:符号给公式与阶,数值给具体值。
微积分符号版还剩最后一块,也是应用最广的一块——微分方程。已知一个函数和它导数的关系,反求这个函数,能不能像解代数方程一样精确解出?下一章见分晓。👉 符号解微分方程。
参考文献
- [1] Dominik Gruntz.「On Computing Limits in a Symbolic Manipulation System.」(博士论文)1996. —— Gruntz 极限算法。
- [2] SymPy 文档.「Calculus: Limits, Series.」https://docs.sympy.org/latest/tutorials/intro-tutorial/calculus.html
- [3] Graham, Knuth & Patashnik.《Concrete Mathematics》, ch. 9 —— 渐近与级数。