主流 CAS 全景 · 从 Macsyma 到 Mathematica

计算机代数系统有一整个生态:商业的 Mathematica、Maple,开源的 SymPy、SageMath、Maxima,以及一批专用利器。这一章带你俯瞰全景,理清各家所长,并回溯它们共同的起点——1968 年 MIT 那个用 Lisp 写的 Macsyma。

作者 David更新于 第 15 篇(共 18 篇)

主流 CAS 全景 · 从 Macsyma 到 Mathematica

我们全程用 SymPy 讲原理,但计算机代数系统(CAS)是一整个生态。这一章退后一步,俯瞰业内主流工具:它们各擅胜场,却共享同一个「重写符号」的内核和同一段历史。

一段共同的起点:Lisp 与 Macsyma

先讲历史,因为它揭示了符号计算的基因。上世纪 60 年代,符号计算诞生于人工智能的摇篮:

1968 年,MIT 的 Macsyma 是最早的计算机代数系统之一——它用 Lisp 写成。 这绝非偶然:我们说过,Lisp 里「代码和数据都是树(S-表达式)」,而符号计算的本质就是「重写树」——Lisp 是为它量身定做的土壤。同期还有 Reduce(1968,也是 Lisp)。这些系统把「让机器做代数」从梦想变成现实。

Macsyma 后来衍生出开源的 Maxima,至今仍在维护——你今天还能用上这个「活化石」。符号计算与 AI、与 Lisp 的血缘,是理解它的一把钥匙:它从一开始,就是「机器能否像人一样操作符号、进行推理」这个宏大问题的一部分。

商业双雄: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,内核都是「重写符号树」,只是方言不同。

工具再强,符号计算都有一个绕不过的软肋——它可能又慢又吃内存,慢到让一个看起来不大的问题彻底卡死。下一章直面这个「阿喀琉斯之踵」:表达式膨胀。👉 表达式膨胀。

参考文献

本页目录