计算机代数(Computer Algebra)在很多时候又被广义地理解为“符号计算”(Symbolic Computation)、成为与所谓“数值计算”(Numerical Computation)相对的概念。“符号”的运算在这里代替了“数”的运算。这是一种智能化的计算,处理的是符号。符号可以代表整数,有理数,实数和复数,也可以代表多项式,函数,还可以代表数学结构如集合,群,环,代数等等。我们在学习和研究中用笔和纸进行的数学运算多为符号运算。
利用计算机代数,我们可以完成许多令人不可思议的事情,例如可以对代数方程组进行精确的求解,对多项式进行因子分解,对复杂代数表达式进行化简规约,对函数进行符号积分(求出原函数),对微分方程求出精确解等等。你可以在看这里的小例子和稍微大一些的例子。
传统的代数计算冗长繁杂,而现代的计算机技术为大型的符号计算提供了可能性。而关键的问题就在于如何把抽象的代数理论算法化,使其高效地处理形形色色的代数问题。与大多数的数学分支不同,计算机代数更讲究构造性而非存在性,一个优美的存在性定理或许在计算机代数系统的设计中起不了决定性的作用。不过话虽如此,强大的计算机代数系统不仅是各类工程技术的助手,对纯粹科学研究也起着不可忽略的推动作用。
计算机代数的算法是其研究的核心内容,时间和空间上高效的算法是大家所不懈追求的目标。
各种算法化的代数理论从Euclid时期就产生了。从计算机发明到现在的60多年时间里,用计算机进行的科学计算主要是数值计算,如天气预报,油藏模拟,航天等领域的大规模数值计算。用计算机进行代数运算的研究在国外发展非常迅速,涉及的数学领域也在不断地扩大,真正意义上的计算机代数系统(Computer Algebra System, CAS)大约产生在20世纪6、70年代,最初的CAS目的是致力于人工智能的研究。
早期著名CAS有Reduce,Derive,Axiom等等。
现在最广为人知的恐怕要数Wolfram Research的Mathematica(Mathematica的内部实现原理),和Maplesoft的Maple了,这两家都是巨型的商业公司,产品都价格不菲(一套软件在$2000上下),都提供着丰富的数学类资源,比如大名鼎鼎的MathWorld。
商业软件之外还有开源的Maxima和C++函数库GiNaC等等。
中科院数学机械化重点实验室的数学机械化自动推理平台MMP也以计算机代数系统作为支撑。
一个常见的计算机代数系统往往包含以下的基本功能:
实际上,一个广泛应用的计算机代数系统除了符号计算的支持以外,都或多或少的拥有以下的一些特性:
我们的maTHμ项目将首先实现计算机代数系统的基本功能。通过坚持后续的维护,将逐步完善其功能。
通过半年多的奋斗,大量文献的阅读,无数的讨论与争吵,最为艰辛的理论文档整理工作已取得阶段性成果(目前已修改到了第四稿)。
看看我们整理的理论结构图吧(不断完善中):
第二阶段核心系统已经完成1.0版,网络测试版也已上线。
系统各个部分仍在继续紧锣密鼓地继续开发、完善与增强过程中……
你对数学、计算机、软件工程或者其中之一感兴趣?
你一丝的兴趣就足以加入我们!
这个庞大的计划总有发挥你的才能之处!
我们要写出自己的 Mathematica 和 Maple !