主流 CAS 全景 · 从 Macsyma 到 Mathematica
计算机代数系统有一整个生态:商业的 Mathematica、Maple,开源的 SymPy、SageMath、Maxima,以及一批专用利器。这一章带你俯瞰全景,理清各家所长,并回溯它们共同的起点——1968 年 MIT 那个用 Lisp 写的 Macsyma。
作者 David更新于 第 15 篇(共 18 篇)
主流 CAS 全景 · 从 Macsyma 到 Mathematica
我们全程用 SymPy 讲原理,但计算机代数系统(CAS)是一整个生态。这一章退后一步,俯瞰业内主流工具:它们各擅胜场,却共享同一个「重写符号」的内核和同一段历史。
一段共同的起点:Lisp 与 Macsyma
先讲历史,因为它揭示了符号计算的基因。上世纪 60 年代,符号计算诞生于人工智能的摇篮:
商业双雄:Mathematica 与 Maple
- Mathematica(Wolfram 语言):业内数一数二的 CAS,1988 年由 Stephen Wolfram 推出。它的语言本身就是一个项重写系统——一切皆
头[参数],/.应用规则。内置海量算法与「知识」(从积分表到物理常数、地理数据),背后是 Wolfram|Alpha 这样的知识引擎。功能全面、文档精良,代价是商业授权、价格不菲。 - Maple:另一商业老牌(1980 年代,滑铁卢大学起家),符号数学能力极强,在工程与教育领域用户众多,界面友好。
这两家适合愿意为更强的符号能力付费的场景。
开源阵营:SymPy、SageMath、Maxima
- SymPy:纯 Python的 CAS(2007 年起),就是本专栏一路用的。最大优点是免费、轻量、可嵌入——它就是个 Python 库,能无缝融进你的数据科学 / 工程脚本(还能
lambdify成快速数值函数)。代价是纯 Python 实现,速度不及编译型系统。 - SageMath:一个宏大的开源整合平台,口号是「做免费的 Mathematica 替代」。它用 Python 作「胶水」,把几十个专业系统(包括 SymPy、Maxima、以及下面的 Singular、PARI、GAP 等)整合到统一界面下——要开源全能,选它。
- Maxima:前述 Macsyma 的开源后裔,基于 Lisp,历史最悠久,符号能力依然可观,深受钟爱简洁与传统者青睐。
专用利器:各擅一域
除了「通用」CAS,还有一批深耕某一领域的系统,在自己的地盘上难以替代:
| 系统 | 专精领域 |
|---|---|
| Singular | 代数几何、交换代数、Gröbner 基 |
| PARI/GP | 数论(素性、椭圆曲线、模形式) |
| GAP | 群论与离散代数 |
| Magma(商业) | 代数、数论、几何,算法极强 |
| GiNaC(C++ 库) | 嵌入 C++ 的符号计算,常用于理论物理(如粒子物理的圈积分) |
做前沿研究时,这些专用系统往往比通用 CAS 快上几个数量级。
同一件事的不同方言
值得一提的是,尽管语法各异,这些系统做的是同一件事——重写符号树。同一个积分,在三家的写法:
SymPy(Python): integrate(1/(x**2 - 1), x)
Mathematica: Integrate[1/(x^2 - 1), x]
Maxima(Lisp 系): integrate(1/(x^2 - 1), x);方言不同,内核一致:把表达式树按规则变换成另一棵。学会一个,理解了原理,迁移到另一个只是查语法手册的事。
怎么选
- 学习原理、嵌入 Python 项目、免费:SymPy(本专栏之选)。
- 要更强的符号能力、且能付费:Mathematica 或 Maple。
- 要开源的全能平台:SageMath。
- 特定领域的硬核研究:对应的专用系统(Singular / PARI / GAP …)。
小结与下一章
CAS 生态:商业双雄 Mathematica(Wolfram 语言即项重写)与 Maple;开源阵营 SymPy(纯 Python、可嵌入)、SageMath(整合平台)、Maxima(Lisp、Macsyma 后裔);以及 Singular / PARI / GAP 等专用利器。它们同根同源——1968 年 MIT 用 Lisp 写的 Macsyma,内核都是「重写符号树」,只是方言不同。
工具再强,符号计算都有一个绕不过的软肋——它可能又慢又吃内存,慢到让一个看起来不大的问题彻底卡死。下一章直面这个「阿喀琉斯之踵」:表达式膨胀。👉 表达式膨胀。
参考文献
- [1] Joel Moses.「Macsyma: A Personal History.」J. Symbolic Computation, 2012. —— 第一个 CAS 的回忆。
- [2] Stephen Wolfram.《An Elementary Introduction to the Wolfram Language》—— Mathematica 的设计哲学。
- [3] SageMath / SymPy / Maxima 官方文档.https://www.sagemath.org/ · https://www.sympy.org/ · https://maxima.sourceforge.io/