绪 论 
0.1 符号计算系统简介 
  数值计算与符号计算 
1946 年世界 上 第 一台计 算 机 ENIAC  (The  Electronic  Numerical  Integrator  and 
Computer)  是为数值积分服务的。 
一提起计算机求解人们立刻想到的是数值求解,这是因为计算机的早期应用范围主
要是数值求解。其实数值求解是计算机求解的一个方面,计算机进行计算的另一方面即
对数学表示式的处理已形成一门新的科学分支,称为符号计算或计算机代数,它是一门
研究使用计算机进行数学公式推导的理论和方法,演算数学公式的理论和算法是它研究
的中心课题。 
数值计算: 
常量、变量、函数、运算符    --〉数值、字符、逻辑量 
表达式    一个值            多      一 
近似计算 
例:计算  y=sin10+ln10。其结果是 1.75856。 
在高级语言中,算术表达式由常量、变量、函数和运算符等组成,算术表达式的
值为某一精度范围内的数值。计算各类表达式的值是高级语言的主要工作。 
符号计算(计算机代数): 
常量、变量值、函数值    --〉数值、字符、逻辑量 
表达式    表达式          多    多 
准确计算 
x
2 sin
xdx
= -(-2 + x 2 )cos x + 2 x sin x 
∫
与数值计算相比,符号计算对计算机硬件和软件提出了更高的要求。 
 
  符号计算系统 
符号计算系统是一个表示数学知识和数学工具的系统, 
一个集成化的计算机数学软件系统。 
  数值计算、 
  符号计算、 
  图形演示   
  程序设计 
 
公式推导、数值计算和图形可视化操作一致性和连贯性。 
符号计算系统的对象从初等数学到高等数学,几乎涉及所有数学学科。包括各种数
学表达式的化简、多项式的四则运算、求最大公因式、因式分解、常微分方程和偏微分
方程的解函数。各种特殊函数的推导、函数的级数展开、矩阵和行列式的各种运算和线
性方程组的符号解等。 
和数值计算一样,算法也是符号计算的核心。就算法而言,符号计算比数值计算能
继承更多的更丰富的数学遗产,古典数学家许多算法仍然是核心算法的成员,近代数学
 
1
的算法成果也在不断地充实到符号计算中。 
 
符号计算已成功地应用于几乎所有的科学技术和工程领域,其中包括数学理论领
域。由于它和数值计算一样,能够正确地完成人在短时间内无法完成的公式推导计算,
使得不少研究领域的前沿向前推移。 
 
  符号计算的应用 
  验证公式的工具 
在十九世纪,法国文学家 Charles Delaunay  计算月亮的位置作为时间函数。从 1847
年到 1867 年用了 20 年的时间,完成并发表了长达数百页的计算方面的文章,推导了近
四万个公式。到 1970 年 MIT 的一个研究小组以 Drprit 为首用符号计算软件对于 Delaunay
的计算公式进行复算,只用了 20 小时的 CPU 便完成了。复算表明原先的计算只有 3 个
错误,其中一个错误是某项的系数是 3 而不是 2,另外两个错误是由此而引起的。这是
一个很有代表性的例子。 
例如:一个七个自由度行走的机器人,从运动方程求解加速度时,包括大量的多维
转换公式推导,可以有上百项,甚至上千项。这时只能用符号计算系统才能迅速、准确
的求解,在推导有限元的刚度矩阵中,在计算行列式展开和合并中,都可以用任何一个
符号计算系统来完成公式演算。 
用符号计算系统进行公式推导,简单、正确和快速。它帮助科研人员摆脱了理论推
导中繁琐的一面,将精力更多的放在创造性的思维中。 
  理论研究中的实验方法 
在物理、化学和生物学等许多自然科学领域中,实验是科学研究的一个手段。符号
计算系统的出现为数学领域和一些理论研究领域提供了“实验”工具。部分高校的“数
学实验室”应运而生。数学的创造大多来自直觉,用符号计算系统对设想的定理结论直
接验证,将待研究的方程绘出图形以观察变化趋势,会给科研人员带来不同程度的灵感
和启发,甚至会得到意想不到的收获。再将结果进行理论深化并加以严格证明。如今数
学实验已被一些数学工作者所接受。数学实验课程已列入国家教委 21 世纪教学改革的
重点课程之一。 
 
  符号计算系统软件简介 
符号计算已有几十个软件系统,一般有专用系统和通用系统两类。通用符号计算系
统都具有数值计算、符号计算和图形功能。都有适合于从工作站到微机使用的多种版本。
符号计算语言是这种算法在计算机上的工具。符号计算系统由符号计算语言和若干软件
包组成。目前,典型的通用符号计算系统有:(按字母顺序排列)   
Axiom        Macsyma        Maple        Mathematica 
Reduce        Derive 
符号计算系统通常都有两种运行方式:一种是交互式,每发一个命令,就执行一种
相应的数学计算。 
另一种方式是写一段程序,执行一系列的命令,就想用 Fortran 或 C 写程序一样。
每个符号计算系统都有自己的程序设计语言,这些语言与通用的高级语言大同小异。请
看 C 语言和 Mathematica 中的几个语句形式: 
 
2
C  语  言 
Mathematica 
if(表达式)语句 1 else  语句 2 
If [表达式,语句 1,  语句 2] 
while  (表达式)语句 
While [表达式,语句] 
for (初值;终值条件;增量)语句 
For [初值,终值条件,增量,语句] 
0.2 Mathematica 简介 
Mathematica  是 美 国 Wolfram 研 究 公 司 开 发 的 符 号 计 算 系 统 。1988 年 发 布
Mathematica  系统的 1.0 版,因系统精致的结构和强大的计算能力而广为流传,经不断
扩充和修改后,在 1991 年和 1997 年推出了功能更加充实和完善的 Mathematica 2.0 版和
Mathematica 3.0 版,在 1999 年推出了 Mathematica 4.0 版。 
Mathematica 是最大的单应用程序之一,它内容丰富功能强大的函数覆盖了初等数
学、微积分和线性代数等众多的数学领域,它包含了数学多方向的新方法和新技术;它
包含的近百个作图函数是数据可视化的最好工具;它的编辑功能完备的工作平台
Notebooks 已成为许多报告和论文的通用标准;在给用户最大自由限度的集成环境和优
良的系统开放性前题下,吸引了各领域和各行各业的用户。 
现在 Mathematica  在世界上拥有超过一百万的用户,已在工程领域、计算机科学、
生物医学、金融和经济、数学、物理、化学和社会科学等范围得到应用。尤其在科研院
所和高等院校流行。 
目前,至少有 14 种语言写成的 200 多册书籍和几种专门介绍 Mathematica  的期刊。
在英国和日本都有大学将 Mathematica  作为理工科学生入校必修的计算机课程之一。它
也是“数学模型”和“数学实验”课程最好的工具之一。世界各地的大学和高等教育工
作者已开发基于 Mathematica 的多门课程。 
Mathematica 是用 C 语言编写的,Mathematica  1.2 版大约有 150,000 行长。它吸取
了不同类型的软件的特点。 
·具有 BASIC 语言的简单易学的交户式操作方式 
·具有 MathCAD, Matlab 那样强的数值计算功能 
·具有  Maccsyma,Maple,Reduce 和 SMP 那样的符号计算功能 
·具有 APL 和 LISP 那样的人工智能列表处理功能 
·像 C 与 PASCAL 那样的结构化程序设计语言 
  Mathematica 的开发者 
Stephen  Wolfram  是 Mathematica  的创始人,并公认是当今科学计算的先驱。
Wolfram 1959 年生于伦敦。他在 Eton(伊顿公学),  Oxford(牛津大学)和 Caltech(加
州理工学院)受教育。他在 15 岁发表了第一篇科技论文,于 1979 年 20 岁时在加州理
工学院获理论物理学博士学位。 
从 1973 年开始使用计算机,1981 年主持开发了第一个计算机代数系统 SMP。 
Wolfram 的研究范围包括了物理学、数学和计算机的许多领域。他早期的工作主要
在能物理、量子场论和宇宙学方面。由于他在物理和计算方面的成绩,1981 年成为最年
轻的麦克阿   (MacArthur)奖学金获奖者。Wolfram 所做的元细胞自动机(cellular automata)
的计算模型应用到数学和物理出现的复杂系统。Wolfram 关于元细胞自动机的工作已在
 
3
许多不同的邻域得到广泛的应用,它导致生物学和物理学中图样生成的新模型,以及研
究混沌和随机性的新方法。Wolfram 发明了基于元细胞自动机的快速加密系统。1986 年,
他创办了杂志 Comliex Systems  。担任过伊里诺大学复杂系统研究中心的主任,物理学、
数学和计算机科学教授。 
从 Wolfram  Research  公司创办开始,Stephen  Wolfram 就担任公司的总裁并致力于
Mathematica 的发展,Wolfram 负责 Mathematica 的总体设计,他写了 Mathematica 大部
分的基本核心代码。 
DanielR.Grayson 是伊里诺大学的数学教授。他于 1976 年在麻省理工获得数学博士
学位,曾在哥伦比亚大学和高等研究所工作。他写了 Mathematica 的数学部分的许多内
容,包括任意精度的算术运算、解方程、矩阵演算、幂级数和椭圆函数。Grayson 主要
的研究兴趣是代数 K 理论,这个数学分支把代数几何、线性代数和数论的概念结合在一
起。Grayson 广泛地使用计算机研究数论中的猜想。在参加 Mathematica 工作以前,
Grayson 开发了一种用于数论研究的交互式计算机系统。 
Roman E.Maeder  负责 Mathematica 的符号积分、多项式因式分解和其它多项式运
算。Maeder 于 1986 年在苏黎世高等工艺学院获得博士学位,其论文是关于程序设计语
言的数学理论。从 1983 年起,Maeder 的工作领域是计算机代数及其对数学教育的应用。
他给计算数学研究生开设了“数学实验室”课程。 
Stephen M.Omobundro 写了 Mathematica 的三维图形程序代码。Omobundro 于 1985
年在伯克力加州大学获数学物理学博士学位。1985 至 1986 年他曾在 Think Machines  公
司从事大规模并行计算的算法方面的工作。他是 Connection  Machine  计算机用的 LISP
语言设计者之一。 
0.3 初识 Mathematica  
Mathematica 是什么? 
Mathematica 能做什么? 
希望 Mathematica 会成为你工作和学习中的好伙伴! 
 
  进入 math4.0 
在“开始”菜单中的“程序”中单击
,进入 Mathematica 4.0
之后,得到如下的 Notebook 窗口,并给 Notebook 暂时取名 Untitled-1,直到用户保存时
另命名为止。     
假定用户已经掌握 windows 中下列常规操作: 
  单击:单击鼠标左键;双击:快速地连续击两次鼠标左键; 
       拖放:按住鼠标左键拖动鼠标。 
  在文件菜单中保存、打开关闭文件等操作。       
                                      图  0 -1 Mathematic 4.0 窗口 
 
 
4
  退出 math4.0 
在“File”菜单中选择“Exit”命令或按“Alt + F4”。如果窗口中还有内容没有保存到 Notebook
中,这时会出现一个对话框,系统要问你是否保存 Notebook,单击对话框上的“否(N)”
按钮则关闭窗口;单击“是(Y)”按钮,则保存 Notebooks 后退出窗口。退出后返回到调
入 Mathematica 以前的状态。 
 
  输入和计算表达式 
In[1]:= 12345*23456 
Out[1]=289564320   (*  像在用一个计算器  *) 
运行命令方式:按 Shift+Enter   
对 x 3 −12 x 2 −145x+1716    因式分解; 
In[2]:= Factor[x^3 -12x^2-145x+1716]   
Out[2]= (-13 + x) (-11 + x) (12 + x)   
In[3]:= Expand[(x-3)(y^2-x+6)]         (*  展开多项式  *) 
Out[3]= −18 + 9 x − x − 3 y 2 + x 2 y 2  
计算  391,561,357 的最大公约数; 
In[4]:= GCD[391,561,357]               
Out[4]= 17 
In[5]:= LCM[21,29,35]   ( *  计算 21,29,35 的最小公倍数  *) 
Out[5]= 3045 
3
⎧
⎨
⎩
y
5
=
−
5
+ =
解方程组 
2
y
x
x
 
In[6]:= Solve[{3x-2y == 5,x+y == 5},{x,y}] 
Out[6]= {{x->3, y->2}}             
dx
x
2 sin
dx
     
        计算 
In[7]:= D[x^2Sin[x],x] 
Out[7]= x 2 Cos[x] + 2 x Sin[x]       
计算不定积分 
x
2 sin
xdx
 
∫
In[8]:= Integrate[x^2Sin[x],x]                       
Out[8]= -(-2 + x 2 )Cos[x] + 2 x Sin[x] 
计算定积分 
3.1
∫
1.1
2
x
cos
sin
2
+
x
dx
 
In[9]:=Integrate[(Cos[x]+2)/Sin[x]^2, {x,1.1,1.3}] 
 
5
Out[9]=0.546958  
定义矩阵 AA,AB,AC; 
In[10]:=AA= {{1,2,3,4},{3,2,5,6},{1,2,-1,2},{0,2,5,7}}; 
 AB= {{7,6,5,4},{8,5,3,2},{9,6,1,8},{0,-3,-4,5}}; 
 AC= {{3,1,2,0},{4,5,0,8},{6,7,1,9},{7,8,2,3}} 
In[11]:= TableForm[AA.AB+AC]    (* 矩阵运算如此简单  ! *)   
In[12]:= Plot[x^5-3x+7,{x,-3,3}] 
15
12.5
10
7.5
5
2.5
            -3
-2
-1
1
2
3
    图  0- 3 
Out[12]= -Graphics-    (* 一个命令,一个图形呼之而出  *) 
In[13]:= 
ParametricPlot[{Sin[0.99t]- 0.7*Cos[3.01t],  
          Cos[1.01t]+0.1Sin[15.03t]}, {t,-150,150},  
       PlotStyle -> RGBColor[0.2, 0.5, 0.3], 
       PlotPoints -> 300, Axes -> None] 
 
z
2
x
=
画出马鞍面
In[14]:= Plot3D[x^2-y^2,{x,-5,5},{y,-5,5}, 
≤≤−≤≤−
−
y
5,2
5,5
x
y
5
 
BoxRatios -> {1,1,1}] 
 
6
   
 
画一副分形图。 
In[15]:= f[x_,y_,lim_]:=Module[{z, ct = 0}, 
        z = x + I y; While[Abs[z] < 2.0 && ct <= lim, 
         z = z^2 +Sin[ x]+ I y; ++ct]; ct] 
DensityPlot[f[x,y,50],{x,-2,1},{y,-1.5,1.5},  
       PlotPoints ->200,Mesh ->False,ColorFunction ->Hue]
 
 
打开与计算机相连的音响,运行下列命令后,你会听到 Sin 抑扬顿挫的声音和声
波的振幅数据图。 
In[16]:= Play[Sin[1599t ^3 - 75 Sin[59t]], {t,0,9}]   
 
 
7
 
0.4 获胜帮助 
  获取函数和命令的帮助 
 
在 Windows 和 DOS 下都用?或??可向系统简单而直接获取帮助信息。用?
或??可向系统查询运算符、函数和命令的定义和用法。 
    ?    name          显示有关 name  的信息 
    ?? name            显示有关 name  的详细信息 
    ?    A *            显示以字母 A 为开头的一切客体的名称 
例如,  向系统查询运算符  :=  的定义 
In[1]:= ?:= 
向系统查询求和函数  Sum  的用法  ; 
In[2]:= ?Sum 
显示所有以 Plot 为开头的函数。 
In[3]:=?Plot* 
                                                                                                                             
  Mathmatica 6.0 帮助文档中心 
 
8