符号计算系统MATHEMATICA电子教案_第1页
符号计算系统MATHEMATICA电子教案_第2页
符号计算系统MATHEMATICA电子教案_第3页
符号计算系统MATHEMATICA电子教案_第4页
符号计算系统MATHEMATICA电子教案_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

符号计算系统Mathematica

及其应用

众所周知,高等数学中许多重要方法,如求极限、

求导数、求不定积分、求定积分、解常微分方程、向量

运算、求偏导数、计算重积分、级数展开等,只靠笔算

难以完成.为提高读者用高等数学解决实际问题的能

力,本章将对符号计算系统Mathematica及其在上述运

算中的应用进行简单介绍.

第一节初识符号计算系统Mathematica

第二节用Mathematica做高等数学

W回EC

第一节初识符号计算系统Mathematica

、舁术运舁七、自定义函数

—、代数运算八、表

三、系统的帮助九、解方程

四、Notebook与Cell一、Which语句

五、常用函数----、Print语句

六、变量

第一节初识符号计算系统Mathematica

大家知道,计算机是应数值计算的需要而诞生的.今

天,计算机已从单纯的数值计算功能发展到文字处理、

数学推理与图形变换等功能,正在不断改变着我们的工

作及生活方式,使人类的劳动效率及生活水平都在不断

提高.随着计算机的逐步普及,人们对计算机的依赖程

度越来越高.数学软件包就是为方便广大工程技术人员、

大专院校师生及科学技术人员用计算机处理数学问题而

提供的软件工作平台.数学软件包不仅能方便的进行数

值计算,而且能方便的进行数学表达式的化简、因式分

解、多项式的四则运算等数学推理工作,一般称后者为

符号计算.因此,数学软件包又称为符号计算系统.

Mathematica系统是目前世界上应用最广泛的符号

计算系统,它是由美国伊利诺大学复杂系统研究中心主

任、物理学、数学和计算机科学教授StephenWolfram

负责研制的.该系统用C语言编写,博采众长,具有简

单易学的交互式操作方式、强大的数值计算功能及符号

计算功能、人工智能列表处理功能以及像C和Pascal

语言那样的结构化程序设计功能.它有Dos环境下及

Windos环境下的几种版本.这里主要介绍Windos环境

下的2.21版本在高等数学中的应用,其他版本类似.

一、用Mathematica作算术运算

双击Mathematica之图标,启动Mathematica

系统,计算机屏幕出现Mathematica的工作窗口(见下

图),此时可以通过键盘输入要计算的表达式.

1.<MathematicaforWindows-[Newnb-l]

-FileEditCell①-aphActionStyleOptionsWindowHelp

Inpul□m回司同国rnrwinrm向mi

」1」二-ll-jjjl」1-1一』一」一」-«Jl-l^-t」J-i^」^Jl」J-l^」.Jl」Jji」《^Jl」J」i」-Jl」J-li」^Jl「l」一」iJl」lJ-l1」>?jl«Jj-i«^^l-ij

>1

ticaFrontEndReady32276KBytesFree

刈奂"七力caforWin.《国1:03

例1计算100!

解在主工作窗口用户区(见下页图)中,输入100!

AMathematicaforWindows-[Newnb-l]HEIS

FileE.ditCellGt-aphActionStyleOptionsWindowHelp一国x|

[input06闻;刃

一‘1」一」一」^J.u二q」出一」二」一」.

100!

Out[i]=

93326215443944152681699238856266700490715968264381621\

4685929638952175999932299156089414639761565182862536\

97920827223758251185210916864000000000000000000000000

1U

:芨I开始|过分寸:切I

注意:在上图中,=与Out[l]=均是在运算

后由系统自动给出的,用户不能自己输入.

例2求表达式2X42-104-(4+1)的值.

解在工作窗口输入表达式2^2-10/(4+1)后,

单击运算按钮的,得运算结果30(见下图).由上例不

难看出+、-、*、/、C分别为Mathematica系统中的加、

减、乘、除及乘方的运算符号,其运算规律与初等数学

中的规定是一致的.下图中,%代表上一个语句的输出结

果,该例中指30.

例3分别求面积为60c/的圆盘的半径与直径(保

留10位有效数字)

解In[l]:=N[(60/Pi厂(1/2),10]

Out[1]=4.370193722

In[2]:=N[2*0ut[1],10]

Out[2]=8.740387445

田(60加1广(1/2),20]中的?1代表圆周率",

它是Mathematica系统中提供的数学常数,系统中

的数学常数还有E(自然对数的底)、I(虚单位二I)

等.

N[(60/Pi)^(l/2),10]表示在计算表达式

(60/Pi)Y1/2)的值时保留10位有效数字.N[表达

式,m]为Mathematica系统中的求值函数,它表示对

给定的表达式求出具有m位有效数字的数值结果.

W曰E][

二、代数运算

Mathematica的一个重要的功能是进行代数公式

演算,即符号运算.

例4设有多项式3丁+2和

(1)求二者的和、差、积、商;

(2)将二者的积展开成单项式之和;

(3)将二者的积进行分解因式.

解In[1]:=p1=3*12+2xT

Out[1]=-l+2x+3x2

In[2]:=p2=x2-l

Out[2]=-1+x"

In[3]:=pl+p2

2

Out[3]=-2+2x+4x

In[4]:=pl-p2

Out[4]=2x+2x

In[5]:=pl*p2

Out[5]=(-l+x2)(-l+2x+3x2)

In[6]:=pl/p2

(—l+2x+3x2)

Out[6]=---------------

2

-l+x

In[7]:=Factor[pl*p2]

Out[7]=(-1+x)(1+x)2(-l+3x)

In[8]:=Expand[pl*p2]

Out[8]=1-2X-4X2+2X'+3X1

由例4可以看出多项式间的加、减、乘、除运算符

号分别为+、-、X、+;Factor[多项式]表示将其中括

号内的多项式分解因式;Expand[多项式]表示将其中括

号内的多项式展开成按升幕排列的单项式之和的形式.

值得注意的是,上面提到的N[表达式,血、

Factor[多项式]、Expand[多项式]均是Mathematica系

统中的函数,其中N,Factor,Expand分别为其函数名

(函数名的第一个字母必须大写).

事实上,Mathematica系统中含有丰富的函数.后

面将结合具体内容介绍有关函数命令.

三、系统的帮助

单击帮助按钮或在“Help”菜单中选择

uSearchforHelpon”则调出与下页图类似的帮助

对话框,然后在第一个文本框内输入要查询的函数(或

命令)的前几个字符,则在第二个文本框内显示以输

入字符开头的函数(或命令)列表,选择要查找的函

数(或命令),单击“显示”命令按钮便调出该函数

(或命令)的使用规则说明.

ica

i键入要查找的单词的前几个字母

2单击所需的索引项.然后单击“显示”也).

$Aborted

$BatchInput

$BatchOutput

$CommandLine

$Context

$ContextPath

$CreationDate

$De£aultFont

$Display

$DisplayFunction

$DumpDates

$DwnpSupported

$Echo

$Epilog

$Failed

SignoreEOF

Notebook与CeI

Notebook是Mathematica系统提供给用户的最基

本的工作环境.它就像字处理软件中的文档.Notebook

上方有主菜单(下图1)及工具按钮条(下图2).借助于

主菜单或工具按钮条可进行编辑、保存、打印及打开等

操作.

FileEditCellGraphActionStyleOptionsWindowHelp

图1

图2

Cell是组成Notebook的基本单元,也称为单元.一

个输入、一个输出或一个图形都是一个单元(Cell),—

个Cell的全部内容由靠窗口右边的方括号括起来,这个

方括号就像Cell的手柄,单击这个方括号就选定了这个

Cell,然后就可以对这个Cell进行移动、复制、剪切、

计算的按钮操作或执行菜单命令.

若干个Cell可以组织成一个组(Cells),组的标志是

一个外层大括号括着几个小括号.通过在“Cell”主菜单

中选择“GroupCell"命令实现对若干个选定的单元

(Cell)进行组“组”操作;通过先单击“组”括号,

再在“Cell”主菜单中选定“UnGroupCellv命令实现

对选定的“组”进行解散一个组的操作.

关于菜单命令及键盘命令请分别参见表1及表2:

表1

菜单命令键盘命令意义

FormattedCtrl+T设定Cen的格式

GroupCellsCtrl+G将多个Cell组成

一个组

UngroupCellsCtrl+U解散一个组

表2

菜单命令键盘命令意义

EvaluateShift+Enter计算当前选定

Selection的单元

EvaluateNextCtrl+Enter计算下一个输

Input入

InterruptAlt+.中断____

另外,要想在同一个单元(Cell)中进行换行操作,

只需在需要换行的地方打回车键(Enter)即可.

五、常用函数

Mathematica中的数学函数是根据定义规则命名

的.就大多数函数而言,其名字通常是英文单词的全

写.对于一些非常通用的函数,系统使用传统的缩写.如

“积分”用其全名Integrate,而“微分”则用其缩写

名D(这两个函数在本章第二节中要专门介绍).下面给

出些常用函数的函数名.

Exp[z]自然数e为底的指数函数

Log[z]自然数e为底的对数函数

Log[b,z]自然数b为底的对数函数

Sin[z],Cos[z]正弦函数与余弦函数

Tan[z],Cot[z]正切与余切函数

Sec[z],Csc[z]正割与余割函数

ArcSin[z],ArcCos[z]反正弦函数与反余弦函数

ArcTan[z],ArcCot[z]反正切与反余切函数

ArcSec[z],ArcCsc[z]反正割与反余割函数

如上三角函数与反三角函数中的参量为弧度.

Sqrt[z]求z的2次方根

z八(1/n)求z的n次方根

当z>0时,如上两个函数均有惟一的值;当z<0时、

函数值不唯一(属复变函数范畴).

例1求表达式Ig2+ln3的值.

解In[l]:=Log[10,2]+Log[3]

..「Logl2]

Out[rl]=Log[3]+-------

Log[10]

In[2]:=N[Log[10,2]+Log[3],10]

0ut[2]=l.399642284

In[3]:=Log[10.0,2]+Log[3.]

Out⑶=L39964

在本例中,对应于输入语句输出语句Out[l]

并没有给出lg2(Log[10,2])及ln3(Log[3])的“数值结

果”,这是由于Mathematica符号计算系统的“对于只含准

确数的输入表达式也只进行完全准确的运算并输出相应的

准确结果”的特性所决定的.在In[2]中用数值转换函数

N[P,10],将对表达式Log[10,2]+Log[3]的运算转换成了计

算结果具有10位有效数字的实数形式运算,所以有输出结

果0ut[2]=l.399642284.在In[3]:=Log[10.0,2]+Log[3.]

中,用实数10.0代替整数10;用实数3.代替整数3,这里

10.0和3.都是实数的表示方法.Mathematica符号计算系

统中数值类型有整数、有理数、实数、复数四种类型.

六、变量

1.变量名

为了方便计算或保存中间计算结果,常常需要引进

变量.在Mathematica中,内部函数或命令都是以大写

字母开头的标识符.为了避免混淆,Mathematica中的

变量名通常以小写字母开头,后跟字母或数字,变量名

字符的长度不限.例如,abcdefghijk,x3都是合法的

变量名;而uv(u与v之间有一个空格)不能作为变量

名.英文字母的大小写意义是不同的,因此A与a表示

两个不同的变量.

在Mathematica中,变量即取即用,不需要先说明

变量的类型后再使用.在Mathematica中,变量不仅可

存放一个整数或复数,还可存放一个多项式或复杂的算

式.

数值有类型,变量也有类型.通常,在运算中不需

要对变量进行类型说明,系统根据对变量所赋的值会作

出正确的处理.在定义函数和进行程序设计时,也可以

对变量进行类型说明.

2.给变量赋值

(1)变量的全局赋值

在Mathematica中,运算符号“二”或“:=”起赋

值作用,一般形式为:

变量二表达式

变量1二变量2二表达式

其执行步骤为:先计算赋值号右边的表达式,再将计算

结果送到变量中.

在Mathematica中,“二”应理解为给变量一个

值.在使用“二”定义规则时,定义式右边的表达式立即

被求值;而在使用“:二”定义规则时,系统不做运算,

也就没有相应的输出,定义式右边的表达式不被立即求

值,直到被调用时才被求值.因此,“:二”被称为延迟

赋值号,“二”被称为立即赋值号.一般的高级语言没有

符号运算功能,因此,在C和Pascal等语言中,一个变

量只能表示一个数值、字符串或逻辑值.而在

Mathematica中,一■个变量可以代表一^个数值、一*个表

达式、一个数组或一个图形.例如:

In[l]:=u=v=l(*与c语言类似,可以对变量

连续赋值*)

Out[1]=1

In[2]:=r:=u+1(定义r的一个延迟赋值)

In[3](*计算r*)

Out[3]=2

In[4]:=u=.(清除变量u的值)

In[5]:=2*u+v

Out[5]=l+2u(u以未赋值的形式出现)

In[6]:=?u(查询变量u的值)

Out[6]=Globalu

在编程运算中,经常用?U询问变量U的值,以保运算结果

的正确.这里对应于输入语句In[6]:=?u的输出语句

Out[6]=Global'说明了u是一个未被赋值的全局变量.事

实上在语句In[4]:=u=.中,已经清除了变量u的值.注意:

给变量所赋的值在Mathematica的一个工作期(从进入

Mathematica系统到退出Mathematica系统)内有效.因此,

在Mathematica同一工作期内计算不同问题时,要随时对新

引用的变量的值进行清零.

(2)变量的临时赋值

变量的临时赋值格式为:f[x]/.x->a.注意x->a中

的箭头是由键盘上的减号及大于号组成的.

该语句给函数f凶中的变量x临时赋予数值a.用临

时赋值语句给变量赋的值,只在该语句有效.

七、自定义函数

在Mathematica中,所有的输入都是表达式,所有

的操作都是调用转化规则对表达式求值.一个函数就是

一条规则,定义一个函数就是定义一条规则.定义一个一

元函数的规则是f[x」:=或f[x_]二的后面紧跟一个以x

为变量的表达式,其中x称为形式参数.

调用自定义函数f[X」时,只需用实在参数(变量或数值

等)代替其中的形式参数x_即可.

如果用"f[x]二表达式”定义一个函数,那么这个规则

只对X成立,既中f[x]中的X不能用任何其他的东西取

代.在运行中,可用"=."清除函数的定义,

用Clear[f]清除所有以f为函数名的函数定义.

例2定义函数f=x2+4x+cosx,先分别求x

=1,3.1,Pi/2时的函数值;再求f(一).

解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]=x4+Sqrt[x2]+Cos[x2]

在Out[5]中,由于系统不知到变量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用或Part[b,i]表示它的第i

个元素(分量);对于二维表b,或Part[b,i]就表

示它的第i个分表(分量),其第i个分表中的第j个

元素用b[[i,j]]来描述.

In[l]:=b={3,6,9,11}

In[2]:=b[[2]]

Out[2]=6

3.表的运算

设表bl>b2是结构完全相同的两个表.表bl与b2

的和、差、积、商等于其对应元素间的相应运算(分母不

能为零).如:

In[l]:=bl={1,2,3,4};

In[2]:=b2={2,4,6,8};

In[3]:=bl+b2

Out[3]={3,6,9,12)

In[4]:=bl-b2

Out[4]={一1,一2,—3,14}

In[5]:=bl*b2

Out[5]={2,8,18,32}

In[6]:=bl/b2

fl1111

Out[6]=<一,一,一,一>

[2222]

上面输入语句In[1]和In[2]均以分号(;)结尾,则不

输出运算结果.止匕外,一个数或一个标量乘一个表等于这

个数(或这个标量)分别乘表中每个元素.

W回HC

九、解方程

1.Solve

Solve是解方程或方程组的函数,其形式为

Solve[eqns,vars],其中eqns可以是单个程也可以是方

程组,单个方程用exp==0(其中exp为关于未知元的表

达式)的形式;方程组写成用大括号括起来的中间用逗

号分割的若干个单个方程的集合,如由两个方程组成的

方程组应写成{expl==0,exp2==0};vars为未知元表,

其形式为{xl,x2,…xn].如:

In[l]:=Solve[xA2-l==0,x](*解方程x2—1=0*)

Out[l]={{x{x-1}}(*方程——1=0的两

个解*)

In[2]:=Solve[{2x+y==4,x+y==3},{x,y}](*解方程组

2x-\-y=4,

V

、X+y=3

f2x+y=4

Out[2]={{x->ly->2}}(*输出方程组1'一'

5[、+y=3

的两个解央)

值得注意的是Solve语句把所求方程的根先赋给未

知元后再连同未知元及赋值号-用花括弧括起来作为

表的一个元素放在表中,女口Out[l]={{x>-1},{x

-1}}.若想在运算过程中直接引用Solve的输出结果,

可按变量替换形式(f[x]/.Xa)把所需要的根赋给某一

变元.

In[3|:=j=%

Out[3]={{x->l,y->2})

In[4]:=xl=x/.j[[l,l]](*等价于x

->1*)

Out[4]=l(*变量xl的值*)

In[5]:=x2=y/.j[[l,2]](*j[[l,2]J等价于x->2

*)

Out[5]=2(*变量x2的值*)

一、Which语句

Which语句的一般形式为:

Which[条件1,表达式1,条件2,表达式2,…,条

件n,表达式n]

Which语句的执行过程:从计算条件1开始,依次

计算条件i(i=l'•’!!),直至计算出第一个条件为真时为止,

并将该条件所对应的表达式的值作为Which语句的

值.用Which语句可以方便的定义分段函数.

H-----、Print语句

Print为输出命令,其形式为;

Print[表达式1,表达式2,­­•]

执行Print语句,依次输出表达式1,表达式2,…等

表达式,两表达式之间不留空格,输出完成后换行.通常

Print语句先计算出表达式的值,再将表达式的值输

出.若想原样输出某个表达式或字符,需要对其加引号,

参见下例中的Print语句.

思考题

1.Factor[x^2+2x-3]的运行结果.

2.在Mathematica的主工作面中,表达式Factor

(x-2+x-4)的运行结果如何?

3.给出下列语句的运行结果.

In[l]:=bl={2,4,6,8,10);

In[2]:=b2=Table[bl[[i]]-bl[[i-l]],{i92,5}]

In[3]:=b3=Insert[b2,bl[[l]],l]

In[4]:=b4=bl*b3

Inl5]:=Log[100,10000]

In[6]:=Log[EA10]

Inf7]:=Log[100]

In[8]:=Sqrt[2]+Sqrt[2.]

4.如何在一■个语句中给出sinx在x=15°,45°,60°,

75,90°的值?

第二节用Mathematica做高等数学

一、求极限六、做三维图形

二、求导运算七、求偏导数

三、做导数应用题八、计算重积分

四、做一元函数的积分九、级数运算

五、解常微分方程十、做数值it篁

第二节用Mathematica做高等数学

一、用Mathematica做高等数学

在Mathematica系统中,求极限的函数为Limit,

其形式如下:

Limit[f[x],x->a],

其中f[x]是以x为自变量的函数或表达式,x->a中的

箭头是由键盘上的减号及大于号组成的•求表达

式的左极限和右极限时,分别用如下形式实现:

Limit[f[x],x->a,Direction->l](左极限)

Limit[f[x],x->a,Direction->-l](右极限)

例1求下列极限:

2x]1

(1)lim-----;(2)lim2X;(3)lim2,;

X-。Xx-»0+x^Q一

(4)limarctanx;(5)limarctanx.

x—H-ooXf-oo

解[n[l]:=Limit[(E(2*x)-1)/x,x->0]

2x_]

(*计算lim-----*)

x—>0X

Out[1]=2

In[2]:二Limit[2-(1/x),x->0,Direction->-1]

(*计算lim2'*)

x—>0+

Out[2]=Infinity(*Infinity为正无

穷大*)

In[3]:=Limit[2x,x->0,Direction->1]

(*计算

Out[3]=1

In[4]:=Limit[ArcTan[x],x->Infinity]

(*计算limarctanx*)

.¥—>4-00

Out[「4]n=Pi

2

In[5]:=Limit[ArcTan[x],x->-Infinity]

(*计算limarctanx*)

x—>-W

「-Pi

Out[5]n=

2

注意:如上用(**)括起来的内容为对其前面

的输入语句In[n]的注释.

W目HH

二、用Mathematica进行求导运算

在Mathematica系统中,用D[f,x]表示f(x)对x的一*

阶导数,用D[f,{x,n}]表示f(x)对x的n阶导数.在一定范

围内,也能使用微积分中的撇号(撇号为计算机键盘上

的单引号)标记来定义导函数,其使用方法为:若f[x]

为一元函数,则f'[x]给出f[x]的一阶导函数f[Xo]给出

函数f[x]在X=Xo处的导数值.同样f''[x]给出f[x]的二阶

导函数,f”[x]给出f[x]的三阶导函数.

例2求下列函数的一阶导函数.

(1);(2)y=sinx.

In[l]:=D[xA8,x]

Out[l]=8x7

In[2]:=D[xA8*Sin[x],x]

Out[2]=x8Cos[x]+8x7Sin[x]

例3求函数夕=/©2]的2阶导函数.

In[3]:=D[xA8*EA(2^x),{x,2}l(女求函数

y=x8e2v的二阶导函数*)

Out[3]=56E2XX6+32E2XX7+4E2XX8

三、用Mathematica做导数应用题

大家知道,导数应用指的是:用导数的性态来研

究函数的性态,主要包括函数的单调性、凹向、极值

与最值的求法以及一元函数图形的描绘.由于对函数

单调性、凹向等问题的研究,不但需要进行求导运算

而且还需要进行解方程及条件判断等工作.因此,本

节在用Mathematica做导数应用题的过程中,经常使

用Mathematica系统中的Solve,Wich,Print这三个函

数.

例4设函数/(%)=«111%+法2+%在5=1,%2=2

处都取得极值,试定出6的值,并问这时/(X)在

玉=1,%2=2处是取得极大值还是极小值?

In|l]:=f[x_]:=a*Log[x]+b*xA2+x

In[2]:=Solve[{ff[l]==0,ff[2]=0},{a,b}](*解方程

求驻点*)

In[3]:=c=%;(*将方程组的解赋给变量c*)

In[4]:=a=a/.c[[l,l]];(*等价于a=a/.af—-*)

In[5]:=b=b/.c[[l,2]];(*等价于a=a/.a-—-*)

Inf6]:=el=fM[l];

In[7]:=e2=fM[2];

In[8J:=Which[el==0,Print[失效

极小值],elvO,Print[Fir'极大值1](*判断f”[1]的符号,

从而决定f[l]是极小值还是极大值*)

In[9]:=Which[e2==O,Print[失效],e2>0,Print『f[2]”

极小值],e2vO,Print[F2]”极大值]]行判断f[2]的符号,

从而决定f[2]是极小值还是极大值*)

Oiit[2]={{a—>——,b—>——j)

<3J

Out[8]=f[l]极小值

Out[9]=f[2]极大值

另外,Mathematica系统还提供了用逐步搜索法求

函数极值的函数FindMinimum,其使用方法请同学们

上机练习.

USEC

四、用Mathematica做一元函数的积分

在Mathematica系统中,用Integrate计算一■元函

数的积分,其格式与作用如下:

Integrate[f,x]计算不定积分J/(x)dx

Integrate[f,{x,a,b}]计算定积分J:/(x)dx

例5求下列积分

r2

(1)Jx5dx;(2)xdx.

角翠In11]:=Integrate[xA5,x](*计算Jx'dx*)

6

X

Out[l]=一

6

In|2|:=Integrate[xA5,{x,l,2}](*计算Jx5dx*)

21

Out[2]=——

2

W回HC

五、用Mathematica解常微分方程

在Mathematica中,用函数DSolve可以解线性与非

线性常微分方程,以及联立常微分方程组.在没有给定方

程的初始条件的情况下,所得的解包括了待定常数

C[1],C[2],C[3],…等等.

DSolve函数求得的是常微分方程的准确解(解析解),

其调用格式及意义如下:

Dsolvefeqn,y[x],x]解y[x]的微分方程eqn,x

为自变量.

DSolve[{eqnl,eqn2,...},{yl[x],y2[x],...},x]解微分

方程组{eqnl,eqn2,…},x为自变量.

Dsolve[{eqn,y[0]==x0},y[x],x]求微分方程eqn满足

初始条件y[O]==xO的解.

例6求微分方程y'=y+x满足初始条件y[O]=l的

特解.

In[l]:=DSolve[{yT[x]==y[x]+x,y[0]=l},y[x],x]

Out[l]={{y[x]->-1+2Ex-x}}

例7求微分方程y"+2j/+y=0的通解.

角翠

In[2]:=DSolve[y1![x]+2*yT[x]+y[x]==0,y(x],x]

C[l]xC[2]

Out[2]={{y[x]->-------+------------}},

EE

C[2]为任意常数*)

六、用Mathematica做向量运算和三维图形

本节我们用Mathmatica做向量运算和三维图形

Mathmatica用表来表示向量.任何不是向量的量都作为

标量.下面结合具体问题介绍向量间的加法(+)、减法

(-)、点积(•)、叉积等运算以及向量的模、向量夹角的

求法,以及函数PIot3D、ParametricPIot3D在描绘空

间曲面的图形时的具体应用.

例9设向量〃/+2m。=2,+3/—44,求向量

〃+仇。-仇,〃的模,〃的模及向量。与向量〃的夹角余

弦与夹角.

In[l]:=a={l,-1,2}(*输入向量a*)

In[2]:=b={2,3,-4}(*输入向量b*)

In[3]:=a+b(*计算向量a与6的和*)

In[4]:=a-b(*计算向量♦与6的差*)

In[5]:=a.b(*计算向量。与力的点积*)

In[6]:=Det[{{i,j,k},{1,-1,2},{2,3,-4}}](*计算

向量。与b的叉积*)

In[7]:=Sqrt[a.a](*计算向量♦的模*)

In[8]:=Sqrt[b.b](*计算向昼的模*)

In[9]:-a,b/(Sqrt[a.a]*Sqrt[b.b])(*计算向量

0与b的夹角余弦*)

In[10]:=ArcCos[N[%]](*计算向量"与的夹角*)

Out[l]={l,-1,2}

Out[2]={2,3,-4)

0ut[3>{3,2,-2)

Out[4]={-1,-4,6}

W回HC

Out[5]=-9

0ut[6]=-2i+8j+5k

Out[7]=Sqrt[6]

Out[8]=Sqrt[29]

3

Out[9]=_3Sqrt[

58

0ut[10]=2.32168

在ln[6]:=Det[{{i,j,k},{1,-1,2},{2,3,-4}}]中,

Det为计算行列式的函数.其调用格式为:其中

m为一方阵,m用行、列相同的二维表{{…},…,{…}}

表示,二维表从左到右依次表示方阵的第一行、第二

行,…,直至最后一行.注意:在使用函数Det时,必须

保证每一个子表所含元素个数相同(即行列式的每行所

含元素个数相同),必须保证子表个数与每一个子表所含

元素个数相同(即行列式的每列所含元素个数相同).

例10做出曲面Z=F+y2的图形:

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_]:2

(*In[2]、In[3]>In[4]定义了柱坐标系下抛物

面z=/+/的参数方程*)

In[5]:=ParametricPlot3D[{x[r,t],y[r,t],z[

r,t]},{t,0,2Pi},{r,0,2}](*描绘抛物面z=x

的图形*)

图形输出见下页.

ParametricPIot3D描述的是含2个参数的三维空

间曲面.其调用格式为:

ParametricPIot3D[{x[t,u],y[t,u],z[t,u]},{t,

tmin,max},{u,umin,umax}],

其中{x[t,u],z[t,u]}为用参数表示的直角坐

标系下的三个坐标x、v、z的表达式.{t,tmin,max)

和{u,umin,umax}分别为参数t和u从小到大的变化范

围.

在ln[1]:=Clear[x,y,z,r,t]中,函数

Clear[s1,s2,…]的作用是清除s1,s2,…的值.为了提高

运算的准确度,在用Mathematica编程求值时,用

Clear[s1,s2,…]语句先清除所用变量的值是非常好的

习惯.

Mathmatica系统提供了非常丰富的作图函数.建议同

学们通过阅读Mathmatica手册及查阅在线帮助对系统的

做图功能进行更多得了解.

七、用Mathematica求偏导数与多元函数的极值

与在Mathematica系统中求一元函数的导数类似,

求多元函数/的偏导数仍用求导算子D完成.具体调用格

式如下:

D[f,x]给出偏导数

D[f,{x,n}]给出高阶偏导数

D[f,xl,x2,・・・]给出高阶混合偏导数

例11求函数z=sinx+xcosj的两个一阶偏导数和四个

二阶偏导数.

In[l]:=Clear[x,y]

In[2]:=f[x_,y_J:=Sin[x]+x*Cos[y]

In[3]:=D[f[x,y],x]

In[4]:=D[f[x,y],y]

In[5]:=D[f[x,y],{x,2}]

In[6J:=D[f[x,y],{y,2}]

In[7]:=D[f[x,y],x,y]

In网:=D[f[x,y],y,x]

Outl3]=Cos[xJ+Cos[y]

Out[4]=-(xSiNyD

Out[5]=-Sin[xl

Out[6]=-(xC°s[y])

Out[7]="Sin[y]

Out[8]=-Sin[y]

回E

例12求函数Z=/+£_3q的极值.

In[l]:=Clear|f,x,y,p,a,b,pl,p2,A,B,Cl]

In[2]:=f[x_,y_]:=xA3+yA3-3*x*y

In[3]:=a=D[f[x,y],x];

In[4]:=b=D[f[x,y],y];

In[5]:=A[x_,yJ=D[f[x,y],{x,2}]

In[6]:=B[x_,y_]=D[f[x,y],x,y]

In17]:=Cl[x_,y_J=D[f[x,y],{y,2}]

In[8]:=p[x_,yj:=B[x,y]A2-A[x,y]*Cl[x,y]

In[9]:=Solve[{a==0,b==0},{x,y}];

In[10]:=pl=p[x,y]/.%[[1]];

In[ll]:=p2=p[x,y]/.%%[[2]];

In[12]:=Which[pl>0,Print[(0,0)不是极值点

n],pl<0&&A[0,0]<0,

Printr,f[0,0]=[f[0,0]J是极大值,lplv0&&A[0,0]X),

Print[F0,0]=1f[0,0]J是极小值T,pl=0,Printr,失效

In[13]:=Which[p2>0,Print[^(l,l)不是极值点

M],p2<0&&A[l,l]<0,

PriIlt厂f[lJ]=",f[l,l]J是极大值,lp2v0&&A[l,l]>0,

是极小值”],p2=0,Priiit[”失效

T1

Out[12]=(0,0)不是极值点

Out[13]=f[l,l]=-1是极小值

八、用Mathematica计算重积分

在Mathmatica系统中,与求定积分类似,仍用函数

Integrate计算重积分,其调用格式如下:

Integrate[f,{x,xmin,xmax},{y,ymin,ymax}]

例13计算二重积分JJxe町dxdy,D:0<x<l,

D

-1<j;<0.

角翠

In[l]:=Clear[x,yJ

In[2]:=Integrate[x*Exp[x*y],{x,0,l}9{y9-l90}]

1

Out[2]=-

W回HC

例14算二重积分J卜丹dx4y,O是由

D

y=^所围成的区域.

In[l]:=Clear[x9y]

In[21:=Integrate[x*Sqrt[y],{x,0,l},{y,xA2,Sqrt[x]}]

6

Out[2]=—

55

USEC

九、用Mathematica进行级数运算

用Mathematica能对幕级数进行加、减、乘、除、乘

方、微分、积分等多种运算.这里重点介绍函数的幕级数

展开.在Mathematica系统中,用Series将一■个函数f(x)

展开成为x的幕级数.其调用格式有如下两种:

Series[f,{x,xO,n}]把函数f在点xO处展开到x的n次

幕.

Series[f,{x,x0,nl},{y,y0,n2}]把二元函数f在点(xO,yO)

处展开到x的nl次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论