众所周知,高等数学中许多重要方法,如求极限、
求导数、求不定积分、求定积分、解常微分方程、向量
运算、求偏导数、计算重积分、级数展开等,只靠笔算
难以完成, 为提高读者用高等数学解决实际问题的能
力,本章将对 符号计算系统 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 分别求面积为 6 0 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/Pi ) ^ ( 1 /2),10 ] 表示在计算表达式
( 6 0 / P i )^( 1/2 ) 的值时保留 10 位有效数字,N[ 表达
式,m] 为 M ath e m a t ica 系统中的 求值函数,它表示对
给定的表达式求出具有 m 位有效数字的数值结果,
M ath ema t 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[ 多项式 ], E x pan d [ 多项式 ] 均是 M athem a t i ca 系
统中的函数,其中 N, Factor, E xpa n d 分别为其函数名
(函数名的第一个字母必须大写),
事实上,Ma themati ca 系统中含有丰富的函数.后
面将结合具体内容介绍有关函数命令,
单击帮助按 钮或在,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 athe mati ca 系统提供给用户的最基
本的工作环境.它就像字处理软件中的文档,N ot e b oo k
上方有主菜单(下图 1 )及工具按钮条 ( 下图 2 ),借助于
主菜单或工具按钮条可进行编辑、保存、打印及打开等
操作,
图 1
图 2
四,Notebook与 Cell
Cell 是组成 No t e book 的基本单元,也称为单元.一
个输入、一个输出或一个图形都是一个单元( Cell ),一
个 Cell 的全部内容由靠窗口右边的方括号括起来,这个
方括号就像 Cell 的手柄,单击这个方括号就选定了这个
Cell,然后就可以对这个 Cell 进行移动、复制、剪切、
计算的按钮操作或执行菜单命令,
若干个 C el l 可以组织成一个组 (C ell s ),组的标志是
一个外层大括号括着几个小括号.通过在,C e ll,主菜单
中选择,G r ou p C ell,命令实现对若干个选定的单元
( C ell )进行组“组”操作;通过先单击“组” 括号,
再在,C el l,主菜单中选定,U nGr ou p C ell, 命令实现
对选定的“组” 进行解散一个组的操作,
关于菜单命令及键盘命令请分别参见表 1 及表 2,
菜单命令 键盘命令 意义
Fo rmatted C trl +T 设定 C el l 的格式
Gr ou p C ell s C trl +G 将多个 C el l 组成
一个组
U ng r ou p C ell s 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 ati ca 中,变量即取即用,不需要先说明
变量的类型后再使用.在 Ma th em ati ca 中,变量不仅可
存放一个整数或复数,还可存放一个多项式或复杂的算
式,
六、变量
数值有类型,变量也有类型.通常,在运算中不需
要对变量进行类型说明,系统根据对变量所赋的值会作
出正确的处理.在定义函数和进行程序设计时,也可以
对变量进行类型说明,
2, 给变量赋值
(1) 变量的全局赋值
在 M a t he m at i c a 中,运算符号,=” 或,, =” 起赋
值作用,一般形式为,
变量 = 表达式
或
变量 1= 变量 2= 表达式
其执行步骤为:先计算赋值号右边的表达式,再将计算
结果送到变量中,
在 M a t h e ma t i c a 中,“=, 应理解为给变量一个
值.在使用,=, 定义规则时,定义式右边的表达式立即
被求值;而在使用,, =” 定义规则时,系统不做运算,
也就没有相应的输出,定义式右边的表达式不被立即求
值,直到被调用时才被求值.因此,,,=” 被称为延迟
赋值号,“=, 被称为立即赋值号.一般的高级语言没有
符号运算功能,因此,在 C 和 P a sc a l 等语言中,一个变
量只能表示一个数值、字符串或逻辑值.而在
M a t h e m at i 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]=G lob al`u 说明 了 u 是一个未被赋值的全局变量.事
实上在语句 In[4],=u=,中,已经 清除了变量 u 的值,注意:
给变量所 赋 的值在 Mathe ma tica 的一个工作期(从进入
Mat hemat ica 系统到退出 M athem ati ca 系统)内有效.因此,
在 Ma thema tic 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]] 或 Part[b,i ] 表示它的第 i
个元素 ( 分量 ); 对于二维表 b, b[ [i]] 或 Pa rt[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[eqn s,vars],其中 eqn s 可以是单个程也可以是方
程组,单个方程用 exp = =0 ( 其中 exp 为关于未知元的表
达式 ) 的形式; 方程组写成用大括号括起来的中间用逗
号分割的若干个单个方程的集合,如由两个方程组成的
方程组应写成 { exp 1= = 0,ex p2 = =0 } ; vars 为未知元表,
其形式为 },2,1{ xnxx ?, 如,
In [ 1 ],= S olv e[x^ 2 - 1= =0,x ] ( * 解方程 012 ??x * )
Ou t[ 1 ]= {{x ? - 1},{x ? 1} } ( * 方程 012 ??x 的两
个解 * )
九、解方程
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 语句把所求方程的根先赋给未
知元后再连同未知元及赋值号 ? 用花括弧括起来作为
表的一个元素放在表中,如 Ou t[ 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 rint 语句,依次输出表达式 1,表达式 2 ?,等
表达式,两表达式之间不留空格,输出完成后换行.通常
P rint 语句先计算出表达式的值,再将表达式的值输
出.若想原样输出某个表达式或字符,需要对其加引号,
参见下例中的 P rint 语句,
十一,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*b 3
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 thematica 做导数应用题的过程中,经常使
用 Mathema ti ca 系统中的 Solve,W ich,Print 这三个函
数,例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 a t h e m a t 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 i c a 中,用函数 D S ol ve 可以解线性与非
线性常微分方程,以及联立常微分方程组.在没有给定方
程的初始条件的情况下,所得的解包括了待定常数
C [ 1],C [ 2],C [ 3],… 等等,
D S ol ve 函数求得的是常微分方程的准确解(解析解),
其调用格式及意义如下,
D s ol ve [ e q n, y [ x],x] 解 y [ x] 的微分方程 e q n,x
为自变量,
D S ol ve [ { 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 ol ve [ { 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] 为任意常数 * )
本节我们用 Mathm atica 做向量运算和三维图形
Mathma t ica 用表来表示向量.任何不是向量的量都作为
标量.下面结合具体问题介绍向量间的加法( + )、减法
( - )、点积( · )、叉积等运算以及向量的模、向量夹角的
求法,以及函数 P l o t 3D, P a r amet r i c P lot 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 用行、列相同的二维表 {{ … },…,{ … } }
表示,二维表从左到右依次表示方阵的第一行,第二
行,…,直至最后一行.注意:在使用函数 Det 时,必须
保证每一个子表所含元素个数相同(即行列式的每行所
含元素个数相同),必须保证子表个数与每一个子表所含
元素个数相同(即行列式的每列所含元素个数相同),
例 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 tr i cP l o t 3 D 描述的是含 2 个参数的三维空
间曲面.其调用格式为,
P a r a m e tr i cP l 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 ma t i c a 编程求值时,用
Clear [ s1,s2,… ] 语句先清除所用变量的值是非常好的
习惯,
M a t h m a t i c 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 l e 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 ol ve [ { 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 i c h [ p 1> 0,P r i n t [ " ( 0,0) 不 是 极 值 点
" ],p 1< 0& & A [ 0,0] < 0,
P r i n t [ " f [ 0,0] = ",f [ 0,0]," 是极大值 " ],p 1< 0& & A [ 0,0 ] > 0,
P r i n t [ " f [ 0,0] = ",f [ 0,0]," 是极小值 " ],p 1= 0,P r i n t [ " 失效
" ] ]
I n [ 13], = Wh i c h [ p 2> 0,P r i n t [ " ( 1,1) 不 是 极 值 点
" ],p 2< 0& & A [ 1,1] < 0,
P r i n 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 i n t [ " 失效
" ] ]
Ou t [ 12] = ( 0,0) 不是极值点
Ou t [ 13] = f [ 1,1] = - 1 是极小值
在 Ma thm atica 系统中,与求定积分类似,仍用函数
In tegra te 计算重积分,其调用格式如下,
In tegra te[f,{x,xmin,xma x},{ y,ymin,yma x}]
例 1 3 计算二重积分 e d dxy
D
x x y??, D, 10 ?? x,
01 ??? y,
解
In[1], = C lear[x,y]
In[2], = Integrate[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*S qrt[y],{x,0,1},{y,x^2,Sq rt[ x]}]
Out[2] =
55
6
用 M at h e m a t i c a 能对幂级数进行加、减、乘、除、乘
方、微分、积分等多种运算, 这里重点介绍函数的幂级数
展开, 在 M at h e m at i c a 系统中,用 S e r i e s 将一个函数 f( x )
展开成为 x 的幂级数, 其调用格式有如下两种,
S e r i e s [ f,{ x,x0,n } ] 把函数 f 在点 x0 处展开到 x 的 n 次
幂,
S e r i e 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],=Cle ar[ a,b,x]
In[2],=a=Seri es[ Sin[x],{x,0,5}]
In[3],=b=Seri es[ 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 teg ra te,其调用格式为,
N In teg ra te[f,{ x,x m in,x m a x }]
例 16 计算 xxx d410 2? ?,
解
In[1], = N Integra te[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.0998334,0.198669,0.29552,0.389418,
0.479426,
0.564642,0.644218,0.717356,0.783327,0.841471,
0.891207,0.932039,0.963558,0.98545,0.997495}
Out[ 2] = – 0.1037 95 + 0.102963 x – 0.000254029 x
2
– 0.0001 1779 x
3
3, 插值多项式
求插值多项式的函数为 In terp ol ating Po lyn o mial,
其调用格式为,
In terp olatin gP 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=Inte rpolati ngP olynomi al[ data,x]
In[3], = f=Expa nd[% ]
In[4], = f/,x → 2.5
Out[ 1]= {{1,16},{2,25},{3,46},{4,8 5}}
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,14 15 9}
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]= =2 0},y,{x,0,2}]
In[2], = p=y/.First[% ] (* 取出近似函数的头部 *)
In[3], = p[0.4] (* 计算 y(0.4)*)
Out[ 1]= {{y – > Interpolat ingFun cti on[{0.,2.},◇ ]}}
Out[ 2]= Interpol ati ngF unction[{0.,2.},◇ ]
Out[ 3]= 0.188619
学到这里,你一定会发现 Mathem atica 对我们应
用数学解决实际问题有非常大的帮助.要想知道
Mathema t i ca 更多的功能,借助于 Mathe m atica 的帮
助功能上机练习即可,在学习数学的过程中,一定要善
于运用计算机及数学软件包来完成一些典型的习题,一
方面可以逐步培养我们用计算机和数学软件包处理数
学问题的能力 ;
另一方面,可以提高对有关问题的感性认识,加深
对数学概念及方法的理解, 因此,在学习高等数学的基
本概念及方法的同时,要特别注意数学软件包的学习
及使用,
本章仅介绍了 M athemati ca 的一些基本知识和用
M at hem ati ca 作高等数学的基本方法, 在本书所配的光
盘《高等数学学习系统》中,对用 M ath ema tic a 求解
数学问题有较深入的介绍, 建议同学们在学习本书的
过程中,要尽量用 M ath ema tic a 系统求解所遇到的数
学问题, 实践证明:只要你这样做了,你用高等数学解
决实际问题的能力将会大大的提高,
思考题
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 ol ve 的计算结果中,通解中的任意常数是
如何表示的?
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 中的几个级数,
求导数、求不定积分、求定积分、解常微分方程、向量
运算、求偏导数、计算重积分、级数展开等,只靠笔算
难以完成, 为提高读者用高等数学解决实际问题的能
力,本章将对 符号计算系统 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 分别求面积为 6 0 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/Pi ) ^ ( 1 /2),10 ] 表示在计算表达式
( 6 0 / P i )^( 1/2 ) 的值时保留 10 位有效数字,N[ 表达
式,m] 为 M ath e m a t ica 系统中的 求值函数,它表示对
给定的表达式求出具有 m 位有效数字的数值结果,
M ath ema t 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[ 多项式 ], E x pan d [ 多项式 ] 均是 M athem a t i ca 系
统中的函数,其中 N, Factor, E xpa n d 分别为其函数名
(函数名的第一个字母必须大写),
事实上,Ma themati ca 系统中含有丰富的函数.后
面将结合具体内容介绍有关函数命令,
单击帮助按 钮或在,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 athe mati ca 系统提供给用户的最基
本的工作环境.它就像字处理软件中的文档,N ot e b oo k
上方有主菜单(下图 1 )及工具按钮条 ( 下图 2 ),借助于
主菜单或工具按钮条可进行编辑、保存、打印及打开等
操作,
图 1
图 2
四,Notebook与 Cell
Cell 是组成 No t e book 的基本单元,也称为单元.一
个输入、一个输出或一个图形都是一个单元( Cell ),一
个 Cell 的全部内容由靠窗口右边的方括号括起来,这个
方括号就像 Cell 的手柄,单击这个方括号就选定了这个
Cell,然后就可以对这个 Cell 进行移动、复制、剪切、
计算的按钮操作或执行菜单命令,
若干个 C el l 可以组织成一个组 (C ell s ),组的标志是
一个外层大括号括着几个小括号.通过在,C e ll,主菜单
中选择,G r ou p C ell,命令实现对若干个选定的单元
( C ell )进行组“组”操作;通过先单击“组” 括号,
再在,C el l,主菜单中选定,U nGr ou p C ell, 命令实现
对选定的“组” 进行解散一个组的操作,
关于菜单命令及键盘命令请分别参见表 1 及表 2,
菜单命令 键盘命令 意义
Fo rmatted C trl +T 设定 C el l 的格式
Gr ou p C ell s C trl +G 将多个 C el l 组成
一个组
U ng r ou p C ell s 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 ati ca 中,变量即取即用,不需要先说明
变量的类型后再使用.在 Ma th em ati ca 中,变量不仅可
存放一个整数或复数,还可存放一个多项式或复杂的算
式,
六、变量
数值有类型,变量也有类型.通常,在运算中不需
要对变量进行类型说明,系统根据对变量所赋的值会作
出正确的处理.在定义函数和进行程序设计时,也可以
对变量进行类型说明,
2, 给变量赋值
(1) 变量的全局赋值
在 M a t he m at i c a 中,运算符号,=” 或,, =” 起赋
值作用,一般形式为,
变量 = 表达式
或
变量 1= 变量 2= 表达式
其执行步骤为:先计算赋值号右边的表达式,再将计算
结果送到变量中,
在 M a t h e ma t i c a 中,“=, 应理解为给变量一个
值.在使用,=, 定义规则时,定义式右边的表达式立即
被求值;而在使用,, =” 定义规则时,系统不做运算,
也就没有相应的输出,定义式右边的表达式不被立即求
值,直到被调用时才被求值.因此,,,=” 被称为延迟
赋值号,“=, 被称为立即赋值号.一般的高级语言没有
符号运算功能,因此,在 C 和 P a sc a l 等语言中,一个变
量只能表示一个数值、字符串或逻辑值.而在
M a t h e m at i 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]=G lob al`u 说明 了 u 是一个未被赋值的全局变量.事
实上在语句 In[4],=u=,中,已经 清除了变量 u 的值,注意:
给变量所 赋 的值在 Mathe ma tica 的一个工作期(从进入
Mat hemat ica 系统到退出 M athem ati ca 系统)内有效.因此,
在 Ma thema tic 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]] 或 Part[b,i ] 表示它的第 i
个元素 ( 分量 ); 对于二维表 b, b[ [i]] 或 Pa rt[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[eqn s,vars],其中 eqn s 可以是单个程也可以是方
程组,单个方程用 exp = =0 ( 其中 exp 为关于未知元的表
达式 ) 的形式; 方程组写成用大括号括起来的中间用逗
号分割的若干个单个方程的集合,如由两个方程组成的
方程组应写成 { exp 1= = 0,ex p2 = =0 } ; vars 为未知元表,
其形式为 },2,1{ xnxx ?, 如,
In [ 1 ],= S olv e[x^ 2 - 1= =0,x ] ( * 解方程 012 ??x * )
Ou t[ 1 ]= {{x ? - 1},{x ? 1} } ( * 方程 012 ??x 的两
个解 * )
九、解方程
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 语句把所求方程的根先赋给未
知元后再连同未知元及赋值号 ? 用花括弧括起来作为
表的一个元素放在表中,如 Ou t[ 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 rint 语句,依次输出表达式 1,表达式 2 ?,等
表达式,两表达式之间不留空格,输出完成后换行.通常
P rint 语句先计算出表达式的值,再将表达式的值输
出.若想原样输出某个表达式或字符,需要对其加引号,
参见下例中的 P rint 语句,
十一,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*b 3
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 thematica 做导数应用题的过程中,经常使
用 Mathema ti ca 系统中的 Solve,W ich,Print 这三个函
数,例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 a t h e m a t 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 i c a 中,用函数 D S ol ve 可以解线性与非
线性常微分方程,以及联立常微分方程组.在没有给定方
程的初始条件的情况下,所得的解包括了待定常数
C [ 1],C [ 2],C [ 3],… 等等,
D S ol ve 函数求得的是常微分方程的准确解(解析解),
其调用格式及意义如下,
D s ol ve [ e q n, y [ x],x] 解 y [ x] 的微分方程 e q n,x
为自变量,
D S ol ve [ { 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 ol ve [ { 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] 为任意常数 * )
本节我们用 Mathm atica 做向量运算和三维图形
Mathma t ica 用表来表示向量.任何不是向量的量都作为
标量.下面结合具体问题介绍向量间的加法( + )、减法
( - )、点积( · )、叉积等运算以及向量的模、向量夹角的
求法,以及函数 P l o t 3D, P a r amet r i c P lot 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 用行、列相同的二维表 {{ … },…,{ … } }
表示,二维表从左到右依次表示方阵的第一行,第二
行,…,直至最后一行.注意:在使用函数 Det 时,必须
保证每一个子表所含元素个数相同(即行列式的每行所
含元素个数相同),必须保证子表个数与每一个子表所含
元素个数相同(即行列式的每列所含元素个数相同),
例 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 tr i cP l o t 3 D 描述的是含 2 个参数的三维空
间曲面.其调用格式为,
P a r a m e tr i cP l 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 ma t i c a 编程求值时,用
Clear [ s1,s2,… ] 语句先清除所用变量的值是非常好的
习惯,
M a t h m a t i c 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 l e 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 ol ve [ { 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 i c h [ p 1> 0,P r i n t [ " ( 0,0) 不 是 极 值 点
" ],p 1< 0& & A [ 0,0] < 0,
P r i n t [ " f [ 0,0] = ",f [ 0,0]," 是极大值 " ],p 1< 0& & A [ 0,0 ] > 0,
P r i n t [ " f [ 0,0] = ",f [ 0,0]," 是极小值 " ],p 1= 0,P r i n t [ " 失效
" ] ]
I n [ 13], = Wh i c h [ p 2> 0,P r i n t [ " ( 1,1) 不 是 极 值 点
" ],p 2< 0& & A [ 1,1] < 0,
P r i n 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 i n t [ " 失效
" ] ]
Ou t [ 12] = ( 0,0) 不是极值点
Ou t [ 13] = f [ 1,1] = - 1 是极小值
在 Ma thm atica 系统中,与求定积分类似,仍用函数
In tegra te 计算重积分,其调用格式如下,
In tegra te[f,{x,xmin,xma x},{ y,ymin,yma x}]
例 1 3 计算二重积分 e d dxy
D
x x y??, D, 10 ?? x,
01 ??? y,
解
In[1], = C lear[x,y]
In[2], = Integrate[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*S qrt[y],{x,0,1},{y,x^2,Sq rt[ x]}]
Out[2] =
55
6
用 M at h e m a t i c a 能对幂级数进行加、减、乘、除、乘
方、微分、积分等多种运算, 这里重点介绍函数的幂级数
展开, 在 M at h e m at i c a 系统中,用 S e r i e s 将一个函数 f( x )
展开成为 x 的幂级数, 其调用格式有如下两种,
S e r i e s [ f,{ x,x0,n } ] 把函数 f 在点 x0 处展开到 x 的 n 次
幂,
S e r i e 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],=Cle ar[ a,b,x]
In[2],=a=Seri es[ Sin[x],{x,0,5}]
In[3],=b=Seri es[ 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 teg ra te,其调用格式为,
N In teg ra te[f,{ x,x m in,x m a x }]
例 16 计算 xxx d410 2? ?,
解
In[1], = N Integra te[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.0998334,0.198669,0.29552,0.389418,
0.479426,
0.564642,0.644218,0.717356,0.783327,0.841471,
0.891207,0.932039,0.963558,0.98545,0.997495}
Out[ 2] = – 0.1037 95 + 0.102963 x – 0.000254029 x
2
– 0.0001 1779 x
3
3, 插值多项式
求插值多项式的函数为 In terp ol ating Po lyn o mial,
其调用格式为,
In terp olatin gP 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=Inte rpolati ngP olynomi al[ data,x]
In[3], = f=Expa nd[% ]
In[4], = f/,x → 2.5
Out[ 1]= {{1,16},{2,25},{3,46},{4,8 5}}
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,14 15 9}
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]= =2 0},y,{x,0,2}]
In[2], = p=y/.First[% ] (* 取出近似函数的头部 *)
In[3], = p[0.4] (* 计算 y(0.4)*)
Out[ 1]= {{y – > Interpolat ingFun cti on[{0.,2.},◇ ]}}
Out[ 2]= Interpol ati ngF unction[{0.,2.},◇ ]
Out[ 3]= 0.188619
学到这里,你一定会发现 Mathem atica 对我们应
用数学解决实际问题有非常大的帮助.要想知道
Mathema t i ca 更多的功能,借助于 Mathe m atica 的帮
助功能上机练习即可,在学习数学的过程中,一定要善
于运用计算机及数学软件包来完成一些典型的习题,一
方面可以逐步培养我们用计算机和数学软件包处理数
学问题的能力 ;
另一方面,可以提高对有关问题的感性认识,加深
对数学概念及方法的理解, 因此,在学习高等数学的基
本概念及方法的同时,要特别注意数学软件包的学习
及使用,
本章仅介绍了 M athemati ca 的一些基本知识和用
M at hem ati ca 作高等数学的基本方法, 在本书所配的光
盘《高等数学学习系统》中,对用 M ath ema tic a 求解
数学问题有较深入的介绍, 建议同学们在学习本书的
过程中,要尽量用 M ath ema tic a 系统求解所遇到的数
学问题, 实践证明:只要你这样做了,你用高等数学解
决实际问题的能力将会大大的提高,
思考题
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 ol ve 的计算结果中,通解中的任意常数是
如何表示的?
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 中的几个级数,