此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

1.12.3 Mathematica 的算法

Mathematica 的内部函数实现计算机学科和数学中的大量算法.基中一些算法 是很老的.但大多数算法必须被创建或至少被专门修改才能用于 Mathematica . 在 Mathematica 中更多的数学算法最终进行在过去的某些 时间被手工执行的运算.然而,在几乎所有的情形,这些算法使用的方法 完全不同于那些平常在手工计算中的方法.
符号积分提供了一个例子.在手工计算中,符号积分通过大量的涉及变量替换 等的技巧来进行.
但在 Mathematica 中,符号积分由相当少的非常系统化的程序来进行. 对于不定积分,这些程序的思想是找出积分的最一般形式,然后对其 微分求出待定的系数.
这个程序常常在中间阶段产生大量复杂的代数表达式,有时是非常复杂类型的 数学函数.但这个程序的优点是它是完全系统化的,其运算不需要特殊的 只有人类才能提供的智慧.
因此,在 Mathematica 做积分时,可以相信它将规则地获得结果,但不能期望 导出这些结果的方法与手工导出它们的方法非常相同.对于 Mathematica 中的 大多数数学算法这同样是对的,一个显著的特征是即使对描述起来很简单的运算, 在 Mathematica 中执行该运算的系统算法也涉及到相当高深的数学或计算 上的概念.例如,对 x 的多项式进行因式分解,首先以一个质数为模,找出 通过按该模化简 x 的高次幂得到的矩阵和最初的多项式的零空间,然后, 使用代数和分析中错综复杂的定理,按该质数的幂依次 "移动" 模获得整数 的因子.
强有力的系统化算法的使用在使 Mathematica 的内部函数能处理困难的和一 般的情况中是重要的. 但对于实际问题中相当常见的简单情况,常常可能使用更简单、 更有效的算法.
因此,Mathematica 内部函数常常有大量的处理各种特殊情况的附加部分. 这些附加部分可能使内部代码的复杂度增加了许多,常常把本来可能是 5 页 的算法导成数百页长.
Mathematica 中的大多数算法,包括所有特殊的情形,由手工明确构造, 但一些算法由计算机自动地创建.许多数学函数的机器精度的数值计算就是例子. 这种算法的主要部分是尽可能短的但产生最好的数值近似的公式. 使用在 Mathematica 中的大多数这仲公式实际上由 Mathematica 自己导出. 导出 公式的运算常常需要几个月的时间,但结果是能被用来以最优的方式计算函数 的短小公式.