WOLFRAM 语言教程

将表达式化为标准形式

Wolfram 语言的内部函数以多种方式计算. 但许多数学函数有重要的共性:将各类表达式化为标准形式.

例如,Plus 函数就把求和化简为无括号的标准形式. 加法的结合律意味着 等价. 但由于多种原因,将它们化为标准形式 更方便. 内部函数 Plus 就可以完成此项任务.

用内部函数 Plus 将表达式化简为无括号的形式.
In[1]:=
Click for copyable input
Out[1]=

当 Wolfram 语言知道一个函数有结合律时,它就会去掉括号使其成为标准的被压平了的形式.

像加法一样的函数不仅有结合律,而且有交换律,即 相等. Wolfram 语言将它们化为标准形式,即按字母顺序排列.

Wolfram 语言将和式的各项整理为标准形式.
In[2]:=
Click for copyable input
Out[2]=
flat (结合律) 等价.
orderless (交换律) 等价.

Wolfram 语言所用的化函数为标准形式的两个重要特性.

将一个表达式化为标准形式的理由很多. 最重要的是在标准形式下,很容易看出两个表达式是否相等.

将两个和式写为标准形式时,立即看到它们相等,故其两个 相消,结果为 .
In[3]:=
Click for copyable input
Out[3]=

可以想象通过测试 所有的顺序来判断它们是否相等. 显然将其化为标准形式后很容易判断.

可以设想让 Wolfram 语言自动地将所有 表达式化简为单一的标准形式. 但通过一些简单表达式可以看出,由于各种目的,不需要将它们化为相同 的单一形式.

以多项式为例,有两种不同的标准形式,第一种形式是用 Expand 函数产生的和式,它适宜于进行多项式的加减运算.

另一种形式是用 Factor 函数产生的不可约因子的乘积. 这种形式适宜于作除法.

展开形式和因子形式都是多项式非常好的标准式. 可根据需要选择它们. 结果,Wolfram 语言不自动将多项式化为某一种标准形式. 而是提供了 ExpandFactor 函数让用户选用.

数学上相等的两个多项式.
In[4]:=
Click for copyable input
Out[4]=
Expand 将它们化为展开形式就容易看出其相等.
In[5]:=
Click for copyable input
Out[5]=
也可以通过因子形式看出它们相等.
In[6]:=
Click for copyable input
Out[6]=

尽管不希望总是将表达式化简为相同 的标准形式,但会猜想将表达式化为某些 形式.

在计算数学理论中有一个基本结论,它表明无法在任何情况下将表达式化为一些标准形式. 无法保证有限变换序列将两个任意表达式化为一个标准形式.

这结论并不奇怪,如果能将所有的数学表达式化为一个标准形式时,就很容易判断两个表达式是否相等. 许多困难的数学问题都可以表述为表达式是否相等这一事实表明这是十分困难的.