Mathematica 的算法

Mathematica 的内部函数实现计算机学科和数学中的大量算法. 其中一些算法是很老的. 但大多数算法必须被创建或至少被专门修改才能用于 Mathematica. 在 Mathematica 中更多的数学算法最终进行以往的手工运算. 然而,在几乎所有的情形,这些算法使用的方法完全不同于那些平常在手工计算中的方法.

符号积分提供了一个例子. 在手工计算中,符号积分通过大量的涉及变量替换等的技巧来进行.

但在 Mathematica 中,符号积分由相当少的非常系统化的程序来进行. 对于不定积分,这些程序的思想是找出积分的最一般形式,然后对其微分求出待定系数.

这个程序常常在中间阶段产生大量复杂的代数表达式,有时是非常复杂类型的数学函数. 但这个程序的优点是它是完全系统化的,其运算不需要特殊的只有人类才能提供的智慧.

因此,在 Mathematica 做积分时,可以相信它将规则地获得结果,但不能期望导出这些结果的方法与手工导出它们的方法非常相同.

对于 Mathematica 中的大多数数学算法这同样是对的. 一个显著的特征是即使对描述起来很简单的运算,在 Mathematica 中执行该运算的系统算法也涉及到相当高深的数学或者计算上的概念.

例如,对 的多项式进行因式分解,首先以一个质数如 17 为模,找出通过按该模化简 的高次幂得到的矩阵和最初的多项式的零空间. 然后,使用代数和分析中错综复杂的定理,按该质数的幂依次"移动"模获得整数的因子.

强有力的系统化算法的使用在使 Mathematica 的内部函数能处理困难和一般的情况中是重要的. 但是对于实际问题中相当常见的简单情况,常常可能使用更简单、更有效的算法.

因此,Mathematica 的内部函数常常有大量的处理各种特殊情况的附加部分. 这些附件部分可能使内部代码的复杂性增加了许多,常常把本来可能是5页的算法导成数百页长.

Mathematica 中的大多数算法,包括所有特殊的情况,都是人为构建的. 但一些算法由计算机自动地创建.

许多数学函数的机器精度的数值计算就是例子. 这种算法的主要部分是尽可能短的但产生最好的数值近似的公式.

使用在 Mathematica 中的大多数这种公式实际上由 Mathematica 自己导出. 导出公式的运算常常需要几个月的时间,但结果是能被用来以最优的方式计算函数的短小公式.

New to Mathematica? Find your learning path »
Have a question? Ask support »