众所周知,高等数学中许多重要方法,如求极限、
求导数、求不定积分、求定积分、解常微分方程、向量运算、求偏导数、计算重积分、级数展开等,只靠笔算难以完成,为提高读者用高等数学解决实际问题的能力,本章将对 符号计算系统 Mat he mat ic a 及其在上述运算中的应用进行简单介绍,
第一节 初识符号计算系统 Mathematica
第二节 用 Mathematica做高等数学第十四章 符号计算系统 Mathematica
及其应用第一节 初识符号计算系统 Mathematica
一,算术运算二,代数运算四,Notebook与 Cell
三,系统的帮助五,常用函数六,变量七,自定义函数八,表九,解方程十,Which语句十一,Print语句第一节 初识符号计算系统 Mathematica
大家知道,计算机是应数值计算的需要而诞生的.今天,计算机已从单纯的数值计算功能发展到文字处理、
数学推理与图形变换等功能,正在不断改变着我们的工作及生活方式,使人类的劳动效率及生活水平都在不断提高.随着计算机的逐步普及,人们对计算机的依赖程度越来越高.数学软件包就是为方便广大工程技术人员、
大专院校师生及科学技术人员用计算机处理数学问题而提供的软件工作平台.数学软件包不仅能方便的进行数值计算,而且能方便的进行数学表达式的化简、因式分解、多项式的四则运算等数学推理工作,一般称后者为符号计算.因此,数学软件包又称为 符号计算系统,
Mathematica系统是目前世界上应用最广泛的符号计算系统,它是由美国伊利诺大学复杂系统研究中心主任,物理学,数学和计算机科学教授 Stephen Wolfram
负责研制的,该系统用C语言编写,博采众长,具有简单易学的交互式操作方式,强大的数值计算功能及符号计算功能,人工智能列表处理功能以及像C和P ascal
语言那样的结构化程序设计功能,它有 Dos环境下及
Windos环境下的几种版本,这里主要介绍 Windos环境下的 2.21版本在高等数学中的应用,其他版本类似,
双击 M ath em ati ca 之图标,启动 M ath e m atica
系统,计算机屏幕出现 M ath em atica 的工作窗口( 见下图 ),此时可以通过键盘输入要计算的表达式,
一、用M athematica作算术运算例 1 计算 100 !
解 在主工作窗口用户区( 见下 页 图 )中,输入 100 !
注意:在上图中,In [1 ],= 与 O u t[ 1 ]= 均是在运算后由系统自动给出的,用户不能自己输入,
例 2 求表达式 2 × 4 2 - 10 ÷( 4+1 )的值,
解 在工作窗口输入表达式 2 * 4 ^2 - 1 0 / ( 4 + 1 ) 后,
单击运算按钮,得运算结果 30 (见下图),由上例不难看出 +,-,*,/,^ 分别为 M a t h e m a t i c a 系统中的加、
减、乘、除及乘方的运算符号,其运算规律与初等数学中的规定是一致的.下图中,% 代表上一个语句的输出结果,该例中指 30,
例 3 分别求面积为 60 c m 2 的圆盘的半径与直径(保留 10 位有效数字)
解 In[1]:=N[( 60 / Pi)^(1/2),10 ]
Out[1]= 4.370193722
In[2]:= N[ 2* Out [1],10]
Out[2]= 8.740387445
N [ ( 6 0 / Pi) ^(1 / 2 ),20 ] 中的 P i 代表圆周率 π,
它是 M a them a t i c a 系统中提供的 数学常数,系统中的数学常数还有E(自然对数的底),I(虚单位 1? )
等,
N [ ( 6 0/ P i ) ^ ( 1 /2),10 ] 表示在计算表达式
( 6 0 / P i )^( 1/2 ) 的值时保留 10 位有效数字,N[ 表达式,m] 为 M ath e m a t ica 系统中的 求值函数,它表示对给定的表达式求出具有 m 位有效数字的数值结果,
M athe mat i ca 的一个重要的功能是进行代数公式演算,即符号运算,
例 4 设有多项式 3 x 2 +2 x - 1 和 x 2 - 1,
(1) 求二者的和、差、积、商;
(2) 将二者的积展开成单项式之和;
(3) 将二者的积进行分解因式,
解 In[1]:= p1=3*x^2+2x - 1
Out[1]= - 1+2x+3x
2
In[2]:= p2=x^2 - 1
Out[2]= - 1+x
2
In[3]:= p1+p2
Out[3]= - 2+2x+4x
2
二、代数运算
In[4],=p1 - p2
Out[4]= 2x+2x
2
In[5],=p1*p2
Out[5]= ( - 1+x
2
)( - 1+2x+3x
2
)
In[6],=p1/p2
( - 1+2 x+3x
2

Out[6]= --------------
- 1+x
2
In[7]:= Factor[p1*p2]
Out[7]= ( - 1+x)(1+x)
2
( - 1+ 3x)
In[8]:= Expand[p1*p2]
Out[8]= 1 - 2x - 4x
2
+2x
3
+3x
4
由例 4 可以看出多项式间的加、减、乘、除运算符号分别为 +,-,×、÷; F a c t o r[ 多项式 ] 表示将其中括号内的多项式分解因式; Expand[ 多项式 ] 表示将其中括号内的多项式展开成按升幂排列的单项式之和的形式,
值得注意的是,上面提到的 N[ 表达式,m ],
Factor[ 多项式 ],Ex pan d[ 多项式 ] 均是 Mat hem at ica 系统中的函数,其中 N,Factor,Exp an d 分别为其函数名
(函数名的第一个字母必须大写),
事实上,Ma thematica 系统中含有丰富的函数.后面将结合具体内容介绍有关函数命令,
单击帮助按 钮或在,H e l p,菜单中选择
,S e a r c h f o r H e l p o n,则调出与 下页 图 类似的帮助对话框,然后在第一个文本框内输入要查询的函数(或命令)的前几个字符,则在第二个文本框内显示以输入字符开头的函数(或命令)列表,选择要查找的函数(或命令),单击“显示” 命令按钮便调出该函数
(或命令)的使用规则说明,
三、系统的帮助
N ot e b oo k 是 M a the m ati c a 系统提供给用户的最基本的工作环境.它就像字处理软件中的文档,N ot e b oo k
上方有主菜单(下图 1 )及工具按钮条 ( 下图 2 ),借助于主菜单或工具按钮条可进行编辑、保存、打印及打开等操作,
图 1
图 2
四,Notebook与 Cell
Cell 是组成 No t e boo k 的基本单元,也称为单元.一个输入、一个输出或一个图形都是一个单元( Cell ),一个 Cell 的全部内容由靠窗口右边的方括号括起来,这个方括号就像 Cell 的手柄,单击这个方括号就选定了这个
Cell,然后就可以对这个 Cell 进行移动、复制、剪切、
计算的按钮操作或执行菜单命令,
若干个 C el l 可以组织成一个组 (C ells),组的标志是一个外层大括号括着几个小括号.通过在,C e ll,主菜单中选择,G r ou p C ell,命令实现对若干个选定的单元
( C ell )进行组“组”操作;通过先单击“组” 括号,
再在,C el l,主菜单中选定,U nGr ou p C ell,命令实现对选定的“组” 进行解散一个组的操作,
关于菜单命令及键盘命令请分别参见表 1 及表 2,
菜单命令 键盘命令 意义
For matted C trl+T 设定 C el l 的格式
Gr ou p C ells C trl+G 将多个 C el l 组成一个组
U ng r ou p C ells C trl+U 解散一个组菜单命令 键盘命令 意义
E valu at e
S e le c t ion
S h if t + E n t e r 计算当前选定的单元
E valu at e N e xt
I n p u t
C t r l+ E n t e r 计算下一个输入
I n t e r r u p t A lt +,中断表 1
表 2
另外,要想在 同一个单元( C e ll )中进行换行操作,
只需在需要换行的地方打回车键( E nt e r )即可,
M a t h e m ati ca 中的数学函数是根据定义规则命名的.就大多数函数而言,其名字通常是英文单词 的全写.对于一些非常通用的函数,系统使用传统的缩写.如
,积分,用其全名 I n teg r a t e,而,微分,则用其缩写名 D (这两个函数 在本 章 第二 节中要专门介绍).下面给出些常用函数的函数名,Ex p[ z] 自然数 e 为底的指数函数
Lo g[ z] 自然数 e 为底的对数函数
Log[b,z] 自然数 b 为底的对数函数五、常用函数
Sin[z],C os [ z ] 正弦函数与余弦函数
Tan[z],Cot[z] 正切与余切函数
Sec[z],Csc[z] 正割与余割函数
A r c S i n [z ],A r c C os [ z] 反正弦函数与反余弦函数
A r c T a n [z ],A r c C ot [ z] 反正切与反余切函数
A r c S e c [z ],A r c C sc [ z] 反正割与反余割函数如上三角函数与反三角函数中的参量为弧度,
Sqrt[z] 求 z 的 2 次方根
z^(1/n) 求 z 的 n 次方根当 z>0 时,如上两个函数均有 惟 一的值;当 z<0 时,
函数值不唯一(属复变函数范畴),
例1 求表达式 lg2+ln3 的值,
解 In[1]:=Log[10,2]+Log[3]
Out[1]=Log[3]+
L o g [2 ]
L o g [1 0 ]
In[2]:=N[Log[10,2]+Log[3],10]
Out[2]=1.399642284
In[3]:=Log[10.0,2]+Log[3.]
Out[3]=1.39964
在本例中,对应于输入语句 I n [1 ]:,输出语句 O u t [1 ]
并没有给出 lg2 ( Log [ 1 0,2 ] )及 ln3 ( Log [ 3 ] )的,数值结果,,这是由于 M a t h em a t i c a 符号计算系统的,对于只含准确数的输入表达式也只进行完全准确的运算并输出相应的准确结果,的特性所决定的.在 I n [ 2] 中用数值转换函数
N[P,10],将对表达式 L o g [ 1 0,2 ] + L o g [3 ] 的运算转换成了计算结果具有 10 位有效数字的实数形式运算,所以有输出结果 O u t [ 2 ] =1,3 9 9 6 42 2 84,在 I n [ 3],= L o g [1 0,0,2 ] + L og [ 3,]
中,用实数 1 0,0 代替整数 10 ;用实数 3,代替整数 3,这里
10.0 和 3,都是实数的表示方法,M a t h e m at i ca 符号计算系统中数值类型有整数、有理数、实数、复数四种类型,
1,变量名为了方便计算或保存中间计算结果,常常需要引进变量.在 Ma t h e m a ti ca 中,内部函数或命令都是以大写字母开头的标识符.为了避免混淆,M a th e m a ti c a 中的变量名通常以小写字母开头,后跟字母或数字,变量名字符的长度不限.例如,abcdefgh ijk,x3 都是合法的变量名;而 u v ( u 与 v 之间有一个空格)不能作为变量名.英文字母的大小写意义 是 不同的,因此 A 与 a 表示两个不同的变量,
在 Ma th em atic a 中,变量即取即用,不需要先说明变量的类型后再使用.在 Ma th em atic a 中,变量不仅可存放一个整数或复数,还可存放一个多项式或复杂的算式,
六、变量数值有类型,变量也有类型.通常,在运算中不需要对变量进行类型说明,系统根据对变量所赋的值会作出正确的处理.在定义函数和进行程序设计时,也可以对变量进行类型说明,
2,给变量赋值
(1) 变量的全局赋值在 M a t he m at i c a 中,运算符号,=” 或,,=” 起赋值作用,一般形式为,
变量 = 表达式或变量 1= 变量 2= 表达式其执行步骤为:先计算赋值号右边的表达式,再将计算结果送到变量中,
在 M a t h e mat i c a 中,“=,应理解为给变量一个值.在使用,=,定义规则时,定义式右边的表达式立即被求值;而在使用,,=” 定义规则时,系统不做运算,
也就没有相应的输出,定义式右边的表达式不被立即求值,直到被调用时才被求值.因此,,,=” 被称为延迟赋值号,“=” 被称为立即赋值号.一般的高级语言没有符号运算功能,因此,在 C 和 P a sca l 等语言中,一个变量只能表示一个数值、字符串或逻辑值.而在
M a t h e m ati ca 中,一个变量可以代表一个数值、一个表达式、一个数组或一个图形.例如,In [1 ],=u=v=1 ( * 与 c 语言类似,可以对变量连续赋值 * )
Out[1]=1
In[2]:=r:=u+1 ( 定义 r 的一个延迟赋值 )
In[3]:=r (* 计算 r*)
Out[3]=2
In[4]:=u=,( 清除变量 u 的值 )
In[5]:=2*u+v
Out[5]=1+2u (u 以未赋值的形式出现 )
In[6]:=?u ( 查询变量 u 的值 )
Out[6]=Global`u
在编程运算中,经常用?u 询问变量 u 的值,以保运算结果的正确.这里对应于输入语句 In[6]:=?u 的输出语句
Out [6]=Glo b al`u 说明 了 u 是一个未被赋值的全局变量.事实上在语句 In[4],=u=,中,已经 清除了变量 u 的值,注意:
给变量所 赋 的值在 Mathema tica 的一个工作期(从进入
Mat hematic a 系统到退出 M athemat i ca 系统)内有效.因此,
在 Ma themati c a 同一工作期内计算不同问题时,要随时对新引用的变量的值进行清零,
(2) 变量的临时赋值 变量的临时赋值格式为,f[x ] /,x - >a,注意 x - >a 中的箭头,- >,是由键盘上的减号及大于号组成的,该语句给函数 f[x ] 中的变量x临时赋予数值a.用临时赋值语句给变量赋的值,只在该语句有效,
在 M a t h em at i c a 中,所有的输入都是表达式,所有的操作都是调用转化规则对表达式求值.一个函数就是一条规则,定义一个函数就是定义一条规则.定义一个一元函数的规则是 f [ x _ ],= 或 f [ x _]= 的后面紧跟一个以 x
为变量的表达式,其中 x_ 称为形式参数,
七、自定义函数调用自定义函数 f[x_] 时,只需用实在参数 ( 变量或数值等 ) 代替 其 中的形式参数 x_ 即可,
如果用" f[x]= 表达式"定义一个函数,那么这个规则只对x成立,既中 f[x] 中 的x不能用任何其他的东西取代.在运行中,可用" f[x_]:=,"清除函数 f[x_] 的定义,
用 Clear[f] 清除所有以 f 为函数名的函数定义,
例 2 定义函数 f= x 2 + x + c o s x,先分别求 x
=1,3.1,Pi/2 时的函数值 ; 再求 f( x 2 ),
解 In[1]:= f[x_]:=x^2+Sqrt[x]+Cos[x]
In[2]:=f[1.]
Out[2]=2.5403
In[3]:=f[3.1]
Out[3]=10.3715
In[4]:=f[N[Pi]/2.]
Out[4]=3.72072
In[5]:=f[x^2]
Out[5]=x
4
+Sqrt[x
2
]+Cos[x
2
]
在 Out[5] 中,由于系统不知到变量 x 的符号,所以没有对 x 进行开方运算,
1,表的生成 系统将表定义为有关联的元素组成的一个整体.用表可以表示数学中的集合、向量、矩阵,也可以表示数据库中的一组记录,
一维表的表示形式是用花括号括起来的且中间用逗号分开的若干元素.如,
{1,2,100,x,y}
表示由 1,2,100,x,y 这 5 个元素组成的一维表,
二维表的表示形式是用花括号括起来的且中间用逗号分开的若干个一维表,如,
{{1,2,5},{2,4,4},{3,6,8}},{{a,b},{1,2}}
均是二维表,二维表就是,表中表,,
八、表
2,表的元素对于一维表 b 用 b [[ i ] ] 或 Par t[b,i ] 表示它的第 i
个元素 ( 分量 ); 对于二维表 b,b [ [i] ] 或 P a r t[b,i ] 就表示它的第 i 个分表(分量),其第 i 个分表中的第 j 个元素用 b[[i,j]] 来描述,In[1],= b={3,6,9,11}
In[2],=b[[2]]
Out[2]=6
3,表的运算 设表 b1,b2 是结构完全相同的两个表.表 b1 与 b2
的和、差、积、商等于其对应元素间的相应运算(分母不能为零).如,
In[1]:=b1={1,2,3,4};
In[2]:=b2={2,4,6,8};
In[3]:=b1+b2
Out[3]={3,6,9,12}
In[4]:=b1 - b2
Out[4]={ - 1,- 2,- 3,- 4}
In[5]:=b1*b2
Out[5]={2,8,18,32}
In[6]:=b1/b2
Out[6]=
2
1
,
2
1
,
2
1
,
2
1
上面输入语句 In[ 1 ] 和 In[2] 均以分号 (;) 结尾,则不输出运算结果.此外,一个数或一个标量乘一个表等于这个数 ( 或这个标量 ) 分别乘表中每个元素,
1,S o l v e
So lve 是解方程或方程组的函数,其形式为
So lve[eqns,vars],其中 eqn s 可以是单个程也可以是方程组,单个方程用 exp = =0 ( 其中 exp 为关于未知元的表达式 ) 的形式; 方程组写成用大括号括起来的中间用逗号分割的若干个单个方程的集合,如由两个方程组成的方程组应写成 { exp 1= = 0,exp 2= = 0 } ; vars 为未知元表,
其形式为 },2,1{ xnxx?,如,
In [ 1 ],= S olv e[x^ 2 - 1= =0,x ] ( * 解方程 012x * )
Ou t[ 1 ]= {{x? - 1},{x? 1}} ( * 方程 012x 的两个解 * )
九、解方程
I n [ 2 ]:= S olve [ { 2x+ y = = 4,x+ y = = 3},{ x,y } ] ( * 解方程组


3
,42
yx
yx
* )
Ou t [ 2 ]= { { x - > 1,y - > 2 } } ( * 输出方程组


3
,42
yx
yx
的两个解 * )
值得注意的是 So lve 语句把所求方程的根先赋给未知元后再连同未知元及赋值号? 用花括弧括起来作为表的一个元素放在表中,如 Out[ 1 ]= {{ x? - 1},{ x
1}},若想在运算过程中直接引用 So lve 的输出结果,
可按变量替换形式( f[ x]/.x? a )把所需要的根赋给某一变元,
I n [ 3 ],= j = %
Ou t [ 3 ]= { { x - > 1,y - > 2} }
I n [ 4 ],= x1= x/,j [ [ 1,1 ] ] (* j [ [ 1,1] ] 等价于 x
- > 1 *)
Ou t [ 4 ] = 1 ( * 变量 x1 的值 *)
I n [ 5 ],= x2= y /,j [ [ 1,2 ] ] ( * j [ [ 1,2 ] ] 等价于 x - > 2
*)
Ou t [ 5 ] = 2 ( * 变量 x 2 的值 *)
W h ich 语句的一般形式为,
W h ich [ 条件 1,表达式 1,条件 2,表达式 2,,? 条件 n,表达式 n]
十,Which语句
W h ich 语句的执行过程:从计算条件 1 开始,依次计算条件 i (i=1,,? n ),直至计算出第一个条件为真时为止,
并将该条件所对应的表达式的值作为 W h ich 语句的值.用 W h ich 语句可以方便的定义分段函数,
P rin t 为输出命令,其形式为 ;
P rin t[ 表达式 1,表达式 2?,]
执行 P rin t 语句,依次输出表达式 1,表达式 2?,等表达式,两表达式之间不留空格,输出完成后换行.通常
P rin t 语句先计算出表达式的值,再将表达式的值输出.若想原样输出某个表达式或字符,需要对其加引号,
参见下例中的 P rin t 语句,
十一,Print语句思考题
1.Factor[ x^2+2x - 3 ] 的运行结果,
2,在 M athe matica 的主工作面中,表达式 Fa ctor
( x^2+x - 4 )的运行结果如何?
3,给出下列语句的运行结果,
In[1],=b1={2,4,6,8,10};
In[2],=b2=T able[ b1[[i ]] - b1[[i - 1]],{i,2,5} ]
In[3],=b3=Insert [b2,b1[[ 1]],1]
In[4],=b4=b1*b3
In[5],=Log[100,10000]
In[6],=Log[E^10]
In[7],=Log[100]
In[8],=Sqrt[ 2]+Sqrt[ 2,]
4,如何在一个语句中给出 xs in 在 x = 1 5 °,45 °,60 °,
75 °,90 ° 的值?
第二节 用 Mathematica做高等数学七,求偏导数一,求极限二,求导运算三,做导数应用题四,做一元函数的积分五,解常微分方程六,做三维图形八,计算重积分九,级数运算十,做数值计算第二节 用 Mathematica 做高等数学在 M a t h e m at i c a 系统中,求极限的函数为 Li m i t,
其形式如下,
Limit[f[x],x - >a],
其中 f[x] 是以 x 为自变量的函数或表达式,x - >a 中的箭头,- >,是由键盘上的减号及大于号组成的,求表达式的左极限和右极限时,分别用如下形式实现,
Limit[f[x],x - >a,Direction - >1 ] ( 左极限 )
Limit[f[x],x - >a,Direction - > - 1 ] ( 右极限 ) 一、用 Mathematica做高等数学例 1 求下列极限,
(1)
x
x
x
1e
lim
2
0
; (2) x
x
1
0
2lim
; (3)
x
x
2l i m
0
;
(4) x
x
a rc t a nl i m
; (5) x
x
a rc t a nlim

,
解 In[1]:= Limit[(E^(2*x) - 1)/x,x - >0]
(* 计算
x
e
x
x
1
lim
2
0
*)
Out[1]=2
In[ 2]:= Limi t[2^(1/ x),x - >0,Directi on - > - 1]
(* 计算
x
x
1
0
2lim
*)
Out [2]= Infi nity ( * I n f i n i t y 为正无穷大 *)
In[3]:= Limit[2^x,x - >0,Direction - >1]
(* 计算
x
x
2l i m
0
*)
Out[3]= 1
In[ 4]:= Limi t[ArcTa n[x],x - > Infinit y]
(* 计算 x
x
a r c t a nlim

*)
Out[4]=
2
Pi
In[5]:= Limit[ArcTan[x],x - > - Infinity]
(* 计算 x
x
a r c t a nlim

*)
Out[5]=
2
Pi?
注意:如上用( * * )括起来的内容为对其前面的输入语句 In[n] 的注释,
在 Ma them atica 系统中,用 D [f,x] 表示 f(x ) 对 x 的一阶导数,用 D [f,{x,n }] 表示 f(x) 对 x 的 n 阶导数,在一定范围内,也能使用微积分中的撇号(撇号为计算机键盘上的单引号)标记来定义导函数,其使用方法为:若 f[x ]
为一元函数,则 f ′ [x] 给出 f[x] 的一阶导函数,f ′ [x 0 ] 给出函数 f[x] 在 x= x 0 处的导数值,同样 f
''
[x] 给出 f [ x ] 的二阶导函数,f

[x] 给出 f[x] 的三阶导函数,
例 2 求下列函数的一阶导函数,
( 1 ) 8xy? ; ( 2 ) xxy s i n8?,
二、用 Mathematica进行求导运算解
In [ 1 ],= D [ x ^8,x ]
O u t [ 1 ] = 8x
7
In [ 2 ],= D [ x ^8 * S i n [ x ],x ]
O u t [ 2 ] = x
8
C o s[ x ] +8 x
7
S i n [ x ]
例3 求函数 xxy 28 e? 的 2 阶导函数,

In [3 ]:= D [ x ^ 8 * E ^ (2 * x ),{ x,2 }] (* 求 函 数
xxy 28 e? 的二阶导函数 *)
O u t[3 ]= 5 6 E 2x x 6 + 3 2 E 2x x 7 + 4 E 2x x 8
大家知道,导数应用指的是:用导数的性态来研究函数的性态,主要包括函数的单调性、凹向、极值与最值的求法以及一元函数图形的描绘,由于对函数单调性、凹向等问题的研究,不但需要进行求导运算而且还需要进行解方程及条件判断等工作.因此,本节在用 Ma them at ica 做导数应用题的过程中,经常使用 Mathematica 系统中的 Solve,W ich,Pri nt 这三个函数,例4 设函数 xbxxaxf 2ln)( 在 1
1?x,22?x
处都取得极值,试定出 a,b 的值,并问这时 )( xf 在
11?x,22?x 处是取得极大值还是极小值?
三、用 Mathematica做导数应用题解
In [ 1 ],= f [ x _ ],= a * L o g [ x ] + b * x^ 2 + x
In [ 2 ],= S o l v e [ { f ' [ 1 ] = = 0,f ' [ 2 ] = = 0 },{ a,b } ] ( * 解方程求驻点 * )
In [ 3 ],= c = % ; ( * 将方程组的解赋给变量 c * )
In [ 4 ],= a = a /,c [ [ 1,1 ] ] ; ( * 等价于 a = a /,a
2
3




* )
In [ 5 ],= b = b /,c [ [ 1,2 ] ] ; ( * 等价于 a = a /,a
1
6




* )
In [ 6 ],= e 1 = f ' ' [ 1 ] ;
In [ 7 ],= e 2 = f ' ' [ 2 ] ;
In [ 8 ],= W h i c h [ e 1 = = 0,P r i n t [ 失效 ],e 1 > 0,Pr i n t [ "f [ 1 ] "
极小值 ],e 1 < 0,Pr i n t [ "f [ 1 ] " 极大值 ]] ( * 判断 f ' ' [ 1 ] 的符号,
从而决定 f [ 1 ] 是极小值还是极大值 * )
In [ 9 ],= W h i ch[ e2 = = 0,Pr i n t [ 失效 ],e2 > 0,P ri n t [ " f [ 2 ] "
极小值 ],e2 < 0,Pr i n t [ " f [ 2 ] " 极大值 ]] ( * 判断 f ' ' [ 2 ] 的符号,
从而决定 f [ 2 ] 是极小值还是极大值 * )
O u t [ 2 ] = }}
6
1
,
3
2
{{?

ba
O u t [ 8 ] = f [ 1 ] 极小值
O u t [ 9 ] = f [ 2 ] 极大值另外,M at h e m at ic a 系统还提供了用逐步搜索法求函数极值的函数 F in d M in im u m,其使用方法请同学们上机练习,
在 M ath em atic a 系统中,用 In te gr ate 计算一元函数的积分,其格式与作用如下,
In teg ra te[f,x] 计算不定积分? xxf d)(
In teg ra te[f,{ x,a,b } ] 计算定积分?
b
a
xxf d)(
例5 求下列积分
( 1 ) xx d5? ; ( 2 )?
2
1
5 d xx,
解 I n [ 1],= I n t e gr at e [ x^ 5,x] ( * 计算 xx d
5
* )
Ou t [ 1] =
6
6
x
I n [ 2 ],= I n t e gr at e [ x^ 5,{ x,1,2} ] ( * 计算?
2
1
5
d xx * )
Ou t [ 2 ] =
2
21
四、用 Mathematica做一元函数的积分在 M a t h e m at ic a 中,用函数 D S olve 可以解线性与非线性常微分方程,以及联立常微分方程组.在没有给定方程的初始条件的情况下,所得的解包括了待定常数
C [ 1],C [ 2],C [ 3],… 等等,
D S olve 函数求得的是常微分方程的准确解(解析解),
其调用格式及意义如下,
D s olve [ e q n,y [ x],x] 解 y [ x] 的微分方程 e q n,x
为自变量,
D S olve [ { e q n 1,e q n 2,..,},{ y 1[ x],y 2 [ x],..,},x ] 解微分方程组 { e q n 1,e q n 2,..,},x 为自变量,
D s olve [ { e q n,y [ 0] = = x0 },y [ x],x] 求微分方程 e q n 满足初始条件 y [ 0] = = x0 的解,
五、用 Mathematica解常微分方程例6 求微分方程 xyy 满足初始条件 y [0 ]= 1 的特解,解
In [1]:= D S olv e[{y '[x]= =y [x]+ x,y[0 ]== 1},y[x ],x ]
Ou t[1]= {{y [x] - > - 1 + 2 E x - x }}
例7 求微分方程 02 yyy 的通解,

In[2]:= D So lve[y'' [x]+2*y'[x] +y[x]==0,y [x],x]
C [1] x C [2]
Out[2]= {{y[ x] - > - -- - -- - + -- -- - - ---- }} ( * C [ 1],
E
x
E
x
C [2] 为任意常数 * )
本节我们用 Math m atica 做向量运算和三维图形
Math mat ic a 用表来表示向量.任何不是向量的量都作为标量.下面结合具体问题介绍向量间的加法( + )、减法
( - )、点积( · )、叉积等运算以及向量的模、向量夹角的求法,以及函数 P l o t 3D,P a r amet r i c P lo t 3D 在描绘空间曲面的图形时的具体应用,例9 设向量,432,2 kjibkjia 求向量
,,baba,a 的模,b 的模及向量 a 与向量 b 的夹角余弦与夹角,解
In[1]:=a ={1,- 1,2} (* 输入向量 a *)
In[2]:= b={2,3,- 4} (* 输入向量 b *)
六、用 Mathematica做向量运算和三维图形
In[3]:= a+b ( * 计算向量 a 与 b 的和 * )
In[4]:= a - b ( * 计算向量 a 与 b 的差 * )
In[5]:= a.b ( * 计算向量 a 与 b 的点积 * )
In[6]:= D e t[ { { i,j,k },{ 1,- 1,2},{2,3,- 4 }} ]( * 计算向量
a
与 b 的叉积 * )
In[7]:= Sqrt[a.a] ( * 计算向量
a
的模 * )
In[8]:= Sqrt[b.b] ( * 计算向量 b 的模 * )
In[9]:= a,b/ ( S q r t [a,a] * S q r t [b,b] ) ( * 计算向量
a
与 b 的夹角余弦 * )
In[1 0 ],= A rc C o s [ N [% ] ] ( * 计算向量
a
与 b 的夹角 * )
Out[1] ={1,- 1,2}
Out[2]= {2,3,- 4}
Out[3] ={3,2,- 2}
Out[4]= { - 1,- 4,6}
Out[5]= - 9
Out[6]= - 2 i + 8 j + 5 k
Out[7]= Sqrt[6]
Out[8]= Sqrt[29]
Out[9]= - 3 Sqrt[
58
3
]
Out[10]= 2.32168
在 I n [ 6 ],= D e t [ { { i,j,k },{ 1,- 1,2},{ 2,3,- 4 }} ] 中,
Det 为计算行列式的函数.其调用格式为,Det[ m],其中
m 为一方阵,m 用行、列相同的二维表 {{ … },…,{ … } }
表示,二维表从左到右依次表示方阵的第一行,第二行,…,直至最后一行.注意:在使用函数 De t 时,必须保证每一个子表所含元素个数相同(即行列式的每行所含元素个数相同),必须保证子表个数与每一个子表所含元素个数相同(即行列式的每列所含元素个数相同),
例 10 做出曲面 22 yxz 的图形,

In[1]:= Clear[x,y,z,r,t]
In[ 2 ]:= x[r_,t_]:=r*Cos[t]
In[ 3 ]:= y[r_,t_]:=r*Sin[t]
In[ 4],= z[r_,t_]:=r^2
( * In[2],In[ 3 ],In [ 4 ] 定义了柱坐标系下抛物面
22
yxz 的参数方程 * )
In[ 5],= P a ra m e t r i cP l ot 3 D [ { x [r,t],y [ r,t],z[
r,t ] },{t,0,2 P i },{r,0,2 } ] ( * 描绘抛物面
22
yxz
的图形 * )
图形输出 见 下页,
P a r a m e tri cPl o t 3 D 描述的是含 2 个参数的三维空间曲面.其调用格式为,
P a r a m e tri cPl o t 3 D [{x [ t,u ],y[ t,u ],z[ t,u ] },{t,
tmin,max },{ u,umin,umax }],
其中 {x[ t,u ],y[ t,u ],z[ t,u ]} 为用参数表示的直角坐标系下的三个坐标 x,y,z 的表达式,{t,tmin,m ax }
和 { u,u m in,umax } 分别为参数 t 和 u 从小到大的变化范围,
在 I n [ 1 ]:= C l e a r[x,y,z,r,t] 中,函 数
Clear [ s1,s2,… ] 的作用是清 除 s1,s 2,… 的值.为了提高运算的准确度,在用 M a t h e mat i c a 编程求值时,用
Clear [ s1,s2,… ] 语句先清除所用变量的值是非常好的习惯,
Ma t hm at ic a 系统提供了非常丰富的作图函数.建议同学们通过阅读 Mathmati ca 手册及查阅在线帮助对系统的做图功能进行更多得了解,
与在 M a t h e m at ic a 系统中求一元函数的导数类似,
求多元函数 f 的偏导数仍用求导算子 D 完成.具体调用格式如下,
D [ f,x] 给出偏导数
D [ f,{x,n } ] 给出高阶偏导数
D [ f,x1,x2,...] 给出高阶混合偏导数例 11 求函数 z = s in x + x c o s y 的两个一阶偏导数和四个二阶偏导数,
七、用 Mathematica求偏导数与多元函数的极值解
In [ 1 ],=C l e a r [ x,y ]
In [ 2 ],= f [ x _,y _ ],=S i n [ x ] +x * C o s[ y ]
In [ 3 ],= D [ f [ x,y ],x ]
In [ 4 ],= D [ f [ x,y ],y ]
In [ 5 ],= D [ f [ x,y ],{ x,2 } ]
In [ 6 ],= D [ f [ x,y ],{ y,2 } ]
In [ 7 ],= D [ f [ x,y ],x,y ]
In [ 8 ],= D [ f [ x,y ],y,x ]
Ou t [ 3 ] = C o s[ x ] + C o s[ y ]
Ou t [ 4 ] =
S i n [ y ] )( x -
Ou t [ 5 ] =
S i n [ x ]-
Ou t [ 6 ] =
C o s [ y ] )( x -
Ou t [ 7 ] =
S i n [ y ]-
Ou t [ 8 ] =
S i n [ y ]-
例 12 求函数 xyyxz 333 的极值,

I n [ 1],= C le ar [ f,x,y,p,a,b,p 1,p 2,A,B,C 1]
I n [ 2],= f [ x_,y _],= x^ 3+ y ^ 3 - 3 * x*y
I n [ 3],= a= D [ f [ x,y ],x] ;
I n [ 4],= b = D [ f [ x,y ],y ] ;
I n [ 5],= A [ x_,y _] = D [ f [ x,y ],{ x,2} ]
I n [ 6],= B [ x_,y _] = D [ f [ x,y ],x,y ]
I n [ 7],= C 1[ x_,y _] = D [ f [ x,y ],{ y,2} ]
I n [ 8],= p [ x_,y _],= B [ x,y ] ^ 2 - A [ x,y ] *C 1[ x,y ]
I n [ 9 ],= S olve [ { a= = 0,b = = 0},{ x,y } ] ;
I n [ 10],= p 1= p [ x,y ] /.% [ [ 1] ] ;
I n [ 1 1],= p 2= p [ x,y ] /.% % [ [ 2] ] ;
I n [ 12],= Wh ic h [ p 1> 0,P r in t [ " ( 0,0) 不 是 极 值 点
" ],p 1< 0& & A [ 0,0] < 0,
P r in t [ " f [ 0,0] = ",f [ 0,0]," 是极大值 " ],p 1< 0& & A [ 0,0 ] > 0,
P r in t [ " f [ 0,0] = ",f [ 0,0]," 是极小值 " ],p 1= 0,P r in t [ " 失效
" ] ]
I n [ 13],= Wh ic h [ p 2> 0,P r in t [ " ( 1,1) 不 是 极 值 点
" ],p 2< 0& & A [ 1,1] < 0,
P r in t [ " f [ 1,1] = ",f [ 1,1]," 是极大值 " ],p 2< 0& & A [ 1,1 ] > 0,
P r i n t [ " f [ 1,1] = ",f [ 1,1]," 是极小值 " ],p 2= 0,P r in t [ " 失效
" ] ]
Ou t [ 12] = ( 0,0) 不是极值点
Ou t [ 13] = f [ 1,1] = - 1 是极小值在 Ma thm atica 系统中,与求定积分类似,仍用函数
In tegr ate 计算重积分,其调用格式如下,
In tegr ate[f,{x,xm in,xm ax },{y,y min,y ma x}]
例 1 3 计算二重积分 e d dxy
D
x x y,D,10 x,
01 y,

In[1],= C lear[x,y]
In[2],= Integra te[x*E xp [x*y],{x,0,1},{y,- 1,0}]
Out[2]=
E
1
八、用 Mathematica计算重积分例 14 算 二 重 积 分
D
yxyx dd,D 是由
2,xyxy 所围成的区域,

In[1],= Clear[x,y]
In[ 2 ],= Integrate[ x*Sq rt[ y],{x,0,1},{y,x^2,Sq rt[ x]}]
Out[ 2]=
55
6
用 M at h e m a t ic a 能对幂级数进行加、减、乘、除、乘方、微分、积分等多种运算,这里重点介绍函数的幂级数展开,在 M at h e m at ic a 系统中,用 S e r ie s 将一个函数 f( x )
展开成为 x 的幂级数,其调用格式有如下两种,
S e r ie s [ f,{ x,x0,n } ] 把函数 f 在点 x0 处展开到 x 的 n 次幂,
S e r ie s [ f,{ x,x0,n 1 },{ y,y 0,n 2} ] 把二元函数 f 在点 ( x0,y 0)
处展开到 x 的 n1 次幂,y 的 n2 次幂,
例 15 分别将 xs i n,xco s 在点 00?x 处展开到 x 的 5
次幂,并求其和、差、积,
九、用 Mathematica进行级数运算解
In[1],=C lear[ a,b,x]
In[2],=a=Series[ Sin[x],{x,0,5} ]
In[3],=b=S erie s[Cos[x],{x,0,5}]
In[4],=a+b
In[5],=a - b
In[ 6 ]:=a*b
Out[ 2]= x -
6
x
3
+
120
x
5
+O[x]
6
Out[ 3]= 1
2
x
2
+
24
x
4
+O[x]
6
Out[ 4] 至 Out[ 6] 输结果略,
例 2 将函数
x
y
3
1 在点 1
0?x 处展开到 1?x 的 3
次幂,

In [ 1 ],= S er i es[ 1 / ( 3 - x ),{ x,1,3 } ]
O u t [ 1 ] =
2
1
+
4
x1-?
+
8
x)( - 1
2
+
16
x)1(
3
-
+
O [ - 1 + x ]
4
Ma the ma t i ca 系统提供了非常丰富的的数值计算功能,这里,仅介绍与本章内容有关的一些数值计算函数,
如:数值积分,数据拟合,插值多项式,非线性方程求根,微分方程的数值解,1,数值积分数值积分函数为 N In te g ra te,其调用格式为,
N In te g ra te [f,{x,x m in,x m a x }]
例 16 计算 xxx d410 2,

In[1 ],= N Integ rate[x/(4+ x^ 2),{x,0,1 }]
Out[1 ]= 0.1 1 157 2
十、用 Mathematica做数值计算
2,数据拟合 数据拟合函数为 F it,其调用格式为,
F it[ 数据表,基函数表,变量 ] 例 17 在区间5.1,0 上,以 0,1 为 步长计算正弦函数表,对该数据表用三次多项式拟合,求出拟合函数,

In[1],= T able[Sin[x],{x,0,1.5,0,1}]
In[2],= Fit[ %,{1,x,x ^2,x ^3},x ]
Out[1] = {0,0.09 9833 4,0.19 8669,0.29 552,0.38 9418,
0.47 9426,
0.56 4642,0.6 4421 8,0,7173 56,0,783 327,0.84 1471,
0.89 1207,0.9 3203 9,0,9635 58,0,985 45,0,997 495}
Out[2]= – 0.10 37 95 + 0.10 2963 x – 0.00 0254 029 x
2
– 0.00 01 1779 x
3
3,插值多项式 求插值多项式的函数为 Interp ol ating P olyn o mial,
其调用格式为,
Interp olating P olyn omia l[ 数据表,变量 ]
例 18 已知自变量 x = 1,2,3,4 时,因变量 y = 1 6,25,
46,85,求一个三次插值多项式逼近该函数,并求 y (2,5 ),
解 In[1],= data={{1,16},{ 2,25},{3,46},{4,85} }
In[2],= f=Interpol ati ngPolynomial [data,x]
In[3],= f=Expan d[% ]
In[4],= f/,x → 2.5
Out[ 1]= {{1,16},{2,25},{3,46},{4,85}}
Out[ 2]= 16 + ( – 1 + x) (9 + ( – 2 + x) (3 + x))
Out[ 3]= 13 + 2 x + x
3
Out[ 4 ]= 33.625
4,非线性方程求根非线性方程求根可以用 Solve,N Solve,F indR oot 等函数,
它们之间的区别在于,Solve 主要用于求多项式方程或方程组的所有根,而 Find R o ot 则给出任意方程或任意方程组的一个数值解,
例 19 求方程 0s in?x 在 3?x 附近的一个根,解
In [1],= F ind R oo t[Sin [x]= =0,{x,3} ]
Ou t [1]= {x → 3.1 41 59 }
5,常微分方程的数值解求常微分方程的数值解用函数 N D S olve,其调用格式为,
N D S olve [ { e q n 1,e q n 2,.,.},y,{ x,x m in,xm ax} ]
其中 { e q n 1,e q n 2,.,,} 为微分方程组(含初始条件和微分方程),{ x,x m i n,xm ax} 为自变量的取值范围,y 为要求的未知函数,
例 20 求常微分方程 0107 yyyy 满足初始条件 6)0(?y,20)0(y,20)0(y 的,在 4.0?x 处的数值解,解
In[1 ],= N D So lve[{y'' ' [x]+y' '[x]+ 7 ﹡ y' [x]+ 10 ﹡
y[x]= =0,y[0]= =6,y'[0]= = – 20,y''[0]= =20 },y,{x,0,2 }]
In[2],= p= y/.First[% ] (* 取出近似函数的头部 *)
In[3],= p[0.4] (* 计算 y(0.4)*)
Out[1]= {{y – > In terpolati ngF un cti on[{0.,2,},◇ ]}}
Out[2]= InterpolatingFu nction[{0.,2.},◇ ]
Out[3]= 0.188619
学到这里,你一定会发现 Mathem atica 对我们应用数学解决实际问题有非常大的帮助.要想知道
Mathema t i ca 更多的功能,借助于 Mathe m atica 的帮助功能上机练习即可,在学习数学的过程中,一定要善于运用计算机及数学软件包来完成一些典型的习题,一方面可以逐步培养我们用计算机和数学软件包处理数学问题的能力 ;
另一方面,可以提高对有关问题的感性认识,加深对数学概念及方法的理解,因此,在学习高等数学的基本概念及方法的同时,要特别注意数学软件包的学习及使用,
本章仅介绍了 M athemati ca 的一些基本知识和用
M at hema tica 作高等数学的基本方法,在本书所配的光盘《高等数学学习系统》中,对用 M athe ma tica 求解数学问题有较深入的介绍,建议同学们在学习本书的过程中,要尽量用 M athe ma tica 系统求解所遇到的数学问题,实践证明:只要你这样做了,你用高等数学解决实际问题的能力将会大大的提高,
思考题
1,用 M a t h e m a t i c a 系统的函数 L i m i t,可以求出任 何形式的极限吗?
2,在用变量替换法( f [ x ] /,xa? )求表达式 f [ x ]
的值时,x
a 中的 x 与表达式 f [ x ] 的 x 可以用不同的变量名吗?
3,思考 D [ In t e g r a t e [ S i n [ x ],x ],x ] 的运算结果,并上机检验,
4,如何利用 In t e g r a t e 计算广义积分
0
ed
x
xx


并上机检验,
5,在 D S o l v e 语句中,未知函 数必须写成 y [ x ] 形式吗?微分方程中的双等号,==,可以用单等号,=,
代替吗?其微分方程的形式怎样?
6,在 D S olve 的计算结果中,通解中的任意常数是如何表示的?
7,向量 a 与 b 的点积 a.b 中的乘号可以换成 *
吗?上机检验,
8,语句 Parametr icPlot3D [{x[t],y[t],z[t ]},
{t,tmin,tma x }] 描绘出怎样的空间图形?给 x[t],
y[t ],z[t] 赋于具体的函数(仅是参数 t 的函数),
给 tmin,tmax 赋于具体的数值后,上机检验,
9,解释例 12 中,I n [ 10],= p 1= p [ x,y] /,% [ [ 1 ] ] 与
I n [ 1 1],= p 2= p [ x,y ] /,% % [ [ 2] ] 的意义,
10,在例 12 中,将 I n [ 8],= p [ x_,y _],
= B [ x,y ] ^ 2 - A [ x,y ] *C 1[ x,y ] 中的 B [ x,y ] ^ 2 - A [ x,y ] *C 1[ x,y ]
换成 B ^ 2 - A *C 1 后,运行结果怎样?
11 怎样用 Mathmatica 计算三重积分?
12,上机查询函数 No r ma l 的意义与用法,并应用于例 1,例 2 中的几个级数,