mathematica软件包介绍(10秋)(精)
- 格式:ppt
- 大小:712.00 KB
- 文档页数:68
实验一Mathematica软件简介实验目的: 1.掌握软件的基本功能,为数学实验提供工具。
2.掌握用Mathematica软件作函数图形的语句或作图方法。
实验过程与要求:教师利用多媒体组织教学,边讲边操作示范。
实验的内容:Mathematica系统是目前世界上应用最广泛的符号计算系统,它是由美国伊利诺大学复杂系统研究中心主任、物理学、数学和计算机科学教授Stephen Wolfram负责研制的,能够完成符号运算,数学图形绘制,甚至动画制作等多种操作.这里主要介绍Windows环境下的4. 1版本在高等数学等领域的应用,其它版本类似.一、Mathematica软件功能简介(1)作函数的图像:用作图程序,当输入被作函数时,计算机直接作出该函数的图像.(2)数值计算:可简单地计算函数值,积分值等,可求微分方程的数值解等.(3)符号运算:可计算函数的极限,导数,不定积分,求微分方程的通解等.在这以前,计算机只能作数值计算,不能作符号运算.二、Mathematica的启动与基本操作(1)启动:系统安装好以后,在Windows98中,用鼠标点击开始—程序—Mathematica 4.1—Mathematica 4.1菜单即可进入系统.计算机屏幕出现Mathematica的主工作窗口(图1).(2)基本操作:进入系统后,出现Mathematica的主工作窗口,即可键入指令.如键入1+2,然后同时按下Shift+Enter,即可得到结果.窗口显示如图2,其中In[1]为第一输入行的标志,Out[1] 为第一输出行的标志(注意:输入行的标志In[1]:=,In[2]:=,……;输出行的标志Out[1]=,Out[2]=,……均是计算机自动给出的).如果输入的语句和表达式不能在一行显示完,可以按Enter键后在下一行继续输入,但一个命令或表达式在没写完需换行则要加“\”,在后面接着按Enter后继续输入.图1图2三、Mathematica中的数、运算符、变量与表达式1.数Mathematica的数据分为两大类:一类是我们平常写出的数,叫普通数,另一类是系统内部的常数,有固定的写法.Mathematica中的普通数有整数、有理数、实数、复数四种类型,见表1Mathematica的系统内部常数是指用特定的字符串表示的数学常数,如:Pi—表示π,E—表示自然对数的底e,Degree—表示角度制单位的度,I—表示虚数单位i,Infinity表示∞.要注意这些数书写时必须以大写字母开头.2.运算符(1)算术运算符+、-、*、/、^分别表示加、减,乘、除、乘方的运算,其中在不引起混淆的情况下乘法运算符“*”也可省略不写,另外开方可以表示成分数指数,上述运算的优先顺序同数学运算完全一致.(2)关系运算符= =、!=、>、>=、<、<=分别表示等于、不等于、大于、大于等于、小于、小于等于.(3)逻辑运算符逻辑运算符及其意义见表2表23.变量Mathematica中变量的名称是以小写字母(不能以数字开头)开头的字符或字符串,但不能有空格和标点符号,例如:abc和g2均是合法的变量名.在Mathematica中,变量即取即用,不需先说明变量的类型后再使用.在Mathematica中变量不仅可存放一个整数或复数,还可存放一个多项式或复杂的算式.4.表达式表达式是以变量、常量、运算符构成的式子、表、甚至是图形,例如3*x^3-2*x+5和x<=0分别是算术表达式和关系表达式.写表达式时,要注意以下几点:(1)所有表达式必须以线性形式写出.因此分子、分母、指数、下标等都必须写在同一行上.(2)只能使用合法的标识符(字符或字符串).(3)为了指定运算的次序可以利用括号.括号必须成对出现,且只有一种括号“(”与“)”,除了特定符号外不得使用方括号“[”与“]”及花括号“{”与“}”.变量的赋值,格式为:变量名=表达式或变量名1=变量名2=表达式.例如:a=3*5^2y=2*x^2-1代数式中的变量也可以用另一个变量(或代数式)替换,如把上例中变量y中的x用Pi-x 替换,可表述为y=2*x^2-1;y/.x->Pi-xx->Pi-x中的“->”是由键盘上的减号及大于号组成的,以后各节中不在说明.变量的清除,当一个变量a无用时,可以用命令Clear[a]加以清除,以免影响后面计算的结果.注意在Mathematica中,内部函数或命令都是以大写字母开头的标识符(字符或字符串).四、用Mathematica作算术运算与代数运算1.算术运算进入系统后,出现Mathematica的主工作窗口(图1),此时可以通过键盘输入要计算的表达式,再按Shift+Enter键得运算结果.实验1计算80!.解在主工作窗口用户区输入80!.按下Shift+Enter键得运算结果(图3).图3实验2 先求表达式)41(10532+÷-⨯的值,再求该表达式的平方.解 在主工作窗口用户区输入表达式3*5^2-10/(1+4)后按下Shift+Enter 键得该表达式运算结果,然后输入%^2按下Shift+Enter 键得该表达式平方运算结果(图4).其中%代表上一输出结果,该例中指73;如果输入行的标志In[1]:=, In[2]:=,……;输出行的标志Out[1]=,Out[2]=,……代表的表达式是唯一的,则可将其写入以后的运算表达式中代表其对应的表达式参与运算.例如上例中求表达式的平方还可输入为In[1]^2或Out[1]^2后按下Shift+Enter 键得该表达式平方运算结果.图42.代数运算Mathematica 的一个重要的功能是进行代数公式演算,即符号运算.实验3 设有多项式1232---x x x 和. (1)求二者的和,差,积; (2)将二者的积分解因式;(3)将二者的积展开成单项式的和. 解 In[1]:=p 1=x ^2-x -2Out[1]=-2-x In[2]:=p 2=x ^3-1 Out[2]=1 In[3]:=p 1+p 2 Out[3]=-3-x +x In[4]:=p 1-p 2Out[4]=-1-x +x In[5]:=p 1*p 2 Out[5]=In[6]:=Factor[p 1*p 2] Out[6]=In[7]:=Expand[p 1*p 2]Out[7]=2+x -x 2-2x 3-x 其中Factor[多项式]表示将其括号内的多项式分解因式;Expand[多项式] 表示将其括号内的多项式展开成按升幂排列的单项式之和的形式.值得注意的是,上面提到的Factor[多项式]和 Expand[多项式]均是Mathematica 系统中的函数,其中Factor 和 Expand 分别为其函数名(函数名的第一个字母必须大写).事实上Mathematica 系统中含有丰富的函数,后面将结合具体内容介绍有关函数命令.课后实验一1.计算下列各式:!90)3(169)2((1)61152.将多项式.5623分解因式x x x +-3.设有多项式152222343-+-+--x x x x x 和,求二者的和、差、积.五、函数运算 (一)常用函数Mathematica 系统中的数学函数是根据定义规则命名的.就大多数函数而言,其名字通常是英文单词的全写.对于一些非常通用的函数,系统使用传统的缩写.下面给出一些常用函数的函数名及功能.1.数值函数N[x ,k ] 求出表达式的近似值,其中k 为可选项,它指有效数字的位数Round[x] 舍入取整Abs[x] 取绝对值Max[x1,x2,…] 取x1,x2,…中的最大值Min[x1,x2,…] 取x1,x2,…中的最小值x+I y复数x+i yRe[z] 复数z的实部Im[z] 复数z的虚部Abs[z] 复数z的模Arg[z] 复数z的辐角PrimeQ[n] n为素数时为真,否则为假Mod[m,n] m被n除的正余数GCD[n1,n2,…] n1,n2…的最大公约数LCM[n1,n2,…] n1,n2…的最小公倍数Sqrt[x] 求平方根2.基本初等函数Exp[x] 以e为底的指数函数Log[a,x] 以a为底的对数函数Log[x] 以e为底的对数函数Sin[x] 正弦函数Cos[x] 余弦函数Tan[x] 正切函数Cot[x] 余切函数Sec[x] 正割函数Csc[x] 余割函数ArcSin[x] 反正弦函数ArcCos[x] 反余弦函数ArcTan[x] 反正切函数ArcCot[x] 反余切函数使用Mathematica系统中的数学函数要注意以下几点:(1)Mathematica系统中的函数都以大写字母开头.如果用户输入的函数没有用大写字母开头,Mathematica将不能识别,并提出警告信息;(2)Mathematica系统中的函数的自变量都应放在方括号内;(3)这些函数的自变量可以是数值,也可以是算术表达式;(4)计算三角函数时,要注意使用弧度制,如果要使用角度制,不妨把角度制先乘以Degree常数(Degree=π/180),转换为弧度制.实验4求表达式lg2+ln3的值.解In[1]:=Log[10,2]+Log[3]In[2]:=N[Log[10,2]+Log[3],6]Out[2]= 1.3In[3]:=Log[10.0,2]+Log[3.]Out[3]= 1.3实验4中,对应于输入语句In[1],输出语句Out[1]并没有给出lg2及ln3的“数值结果”,这是由于Mathematica符号计算系统的“对于只含有准确数的输入表达式也只进行完全准确的运算并输出相应的准确结果”的特性所决定的.在In[2]中用数值转换函数N[Log[10,2]+Log[3],6],将对表达式Log[10,2]+Log[3]的运算转换成了计算结果具有6位有效数字的实数形式运算,所以输出结果Out[2]=1.3.在In[3]:=Log[10.0,2]+Log[3.]中,用实数10.0代替整数10,用实数3.代替整数3,这里10.0及3.都是实数的表示法,两种表示可以任选其一.计算时欲得“数值结果”输入数时用实数形式. 实验5 求sin90o .解 In[4]:=Sin[90Pi/180] (二)自定义函数1.不带附加条件的自定义函数在Mathematica 系统中,所有的输入都是表达式,所有的操作都是调用转化规则对表达式求值.一个函数就是一条规则,定义一个函数就是定义一条规则.定义一个一元函数的规则是:f [x _ ]:=表达式其中表达式是以x 为自变量的,x _称为形式参数,f 是函数名,函数名的命名规则同变量名的命名规则.调用自定义函数f [x _ ],只需用实在参数(变量或数值等)代替其中的形式参数x _即可. 在运行中,可用“f [x _ ]:=.”清除函数f [x _ ]的定义,用Clear[f ]清除所有以f 为函数名的函数定义.实验6 定义函数x x x x f sin 2)(3++=,先分别求2,1.5,1π=x 时的函数值,再求)(2x f .解 In[5]:=f [x _]:=x ^3+2Sqrt[x ]+Sin[x ]In[6]:=f [1.]Out[6]=3.8In[7]:=f [5.1]Out[7]=136In[8]:=f [N[Pi]/2.] Out[8]=7.3In[9]:=f [x ^2]在Out[9]中,由于系统不知道变量x 的符号,所以没有对2x 进行开方运算. 2. 带附加条件的自定义函数在使用“f [x _ ]:=表达式”定义规则时,可以给规则附加条件,附加条件放在定义规则表达式后面,通过“/;”与表达式连接.规则的附加条件形式为:f [x _ ]:=表达式/;条件在调用上述规则时,实在参数必须满足附加条件,系统才调用规则.“附加条件”经常写成用关系运算符连接着的两个表达式,即关系表达式.用一个关系表达式只能表示一个条件,如表示多个条件的组合,必须用逻辑运算符将多个关系表达式组合到一起.实验7 设有分段函数).100()2(),5.1(),100(0ln 0sin )(f f f f ex xe x xx x e x f x 及求-⎪⎩⎪⎨⎧>≤<≤=解 In[10]:=f [x _]:=Exp[x ]Sin[x ]/;x <=0In[11]:=f [x _]:=Log[x ]/;(x >0)&&(x <=E) In[12]:=f [x _]:=Sqrt[x ]/;x >E In[13]:=f [-100.0]Out[13]=1.88372´ In[14]:=f [1.5]Out[14]=0.40In[15]:=f [2.0] Out[15]=0.69 In[16]:=f [100.0] Out[16]=课后实验二1.求表达式lg100+lne-lg5的值.2.求sin30o .3.求复数3+2i 的模,辐角,实部及虚部.4.设f(x)=sin2x -5ln x -e x ,求f (1.3),f (2)及f (100).5.设函数⎩⎨⎧≥+<+=0)1ln(01)(2x x x x x f ,求f (-1.5)及f (2).六、方程与方程组的解法Solve 是解方程或方程组的函数,其格式为: Solve[eqns,vars]其中eqns 可以是单个方程,也可以是方程组,单个方程用exp==0的形式(其中exp 为关于未知元的表达式);方程组写成用大括号括起来的中间逗号分割的若干个单个方程的集合;vars 为未知元表,其形式为{x 1,x 2,…,x n }.实验1 解方程0652=+-x x . 解 In[17]:=Solve[x ^2-5x +6==0,x ] 其中方程中的等号应连输2个“=”. 实验2 解方程050)5(2352=--x x . 解 In[18]:=Solve[5^(2x )-23(5^x )-50==0,x ]Out[18]={{x →2}}实验3 解方程组⎩⎨⎧=-=+13122yxy x .解 In[19]:=Solve[{x +y ==1,3x ^2-y ^2==0},{x ,y }] 七、不等式与不等式组的解法在Mathematica 系统中解不等式 格式为:<<Algebra`InequalitySolve`InequalitySolve[ineq, x ]其中“<”为键盘上的小于号,“`”为数字键1的左侧的`,<<Algebra`InequalitySolve`是装载程序包, ineq 可以是单个不等式,也可以是不等式组,不等式组写成用大括号括起来的中间逗号分割的若干个单个不等式的集合.注意前面简介的Mathematica 函数,都可以通过输入函数和适当的参数而直接使用,这些函数我们称之为系统的内部函数.还有一些系统扩展的功能不是作为系统的内部函数的,而这些功能是以文件的形式存储在磁盘上的,要使用它们,必须用一定的方式来调用这些文件,这些文件我们称之为程序包.此处InequalitySolve 及后面要学习的Rsolve 、FourierTrigSeries 等都属于这种情况.实验4 解不等式组⎪⎩⎪⎨⎧>-<--0101222x x x .解 In[20]:= <<Algebra`InequalitySolve`In[21]:=InequalitySolve[{x ^2-5x -6<0,x ^2-1>0}, x ] Out[21]= 1< 实验5 解不等式3)3(12>--x x .解 In[22]:= <<Algebra`InequalitySolve`In[23]:=InequalitySolve[Abs[x -1](x ^2-3) > 3, x ] Out[23]=即不等式的解为x <-2 或x >)131(21+.八、由递推式求数列的通项公式在Mathematica 系统中由递推式求数列的通项公式 格式为:<<DiscreteMath`RSolve` RSolve[{eqn, a [1]==k }, a [n ], n ]其中“<”为键盘上的小于号,“`”为数字键1的左侧的`,<<DiscreteMath`RSolve`是装载程序包,eqn 为递推式, a [1]==k 为数列的第一项.实验6 设.,1,11求数列的通项公式==-a na a n n解 In[24]:=<<DiscreteMath`RSolve`In[25]:=RSolve[{a [n ]==n a [n -1], a [1]==1}, a [n ], n ]实验一1.解下列方程:(1) 0122=--x x (2) 03241=-++x x2. 解方程组⎩⎨⎧=-=+1231y x y x .3. 解不等式0232>+-x x .4. 设.,1,31021求数列的通项公式==+=--a a a a a n n n九、作函数图像1、作图函数与输入格式在Mathematica 系统中用函数Plot 可以很方便地作出一元函数的静态图像,基本格式为:Plot[{f 1,f 2,…},{x ,xmin ,xmax },可选参数]其中表{f 1,f 2,…}的fi (i =1,2,3,…)是绘制图形的函数名,表{x ,xmin ,xmax }中x 为函数fi (i =1,2,3,…)的自变量,xmin 和xmax 是自变量的取值区间的左端点和右端点.实验7 作y =x 2-1在[-2,2]内的图像和作y =lg x 在[0.3,4]内的图像,其输入和输出如图7-5.图7-52、作图时的可选参数1)参数AspectRatio(面貌比)平时我们作图时,两个坐标轴的单位长度应该一致,即1:1.但在Mathematica系统中根据美学原理系统默认的纵横之比为1:0.618,而将参数AspectRatio的值设置为Automatic(自动的)时可使纵横比为1:1.实验8(1)作y=sin x和y=cos x在[0,2π]内的图像,且两坐标轴上的单位比为0.618.(2)作y=sin x和y=cos x在[0,2π]内的图像,且两坐标轴上的单位比为1:1.其输入和输出如图7-6.图7-62)参数PlotStyle(画图风格)PlotStyle的值是一个表,它决定画线的虚实、宽度、色彩等.(1)取值RGBColor[r,g,b]—决定画线的色彩.r,g,b分别表示红,绿,蓝色的强度,其值为[0,1]之间的数.实验9作y=sin x在[0,2π]内的图像,线条用红色.输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->{RGBColor[1,0,0]}]表示画出的曲线为红色.(2) 取值Thickness[t](厚度,浓度)—决定画线的宽度.t是一个介于0,1之间的数,且远远小于1,因为整个图形的宽度为1.实验10 作y=sin x在[0,2π]内的图像,线条厚度t=0.02.输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->Thickness[0.02]]输出如图7-7图7-7(3) 取值Dashing[{d1,d2,…}]—决定画线的虚实,其中表{d1,d2,…}确定线的虚实分段方式,di(i=1,2,…)的取值介于0,1之间.实验11作y=sin x在[0,2π]内的图像,线条用虚线.输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->Dashing[{0.03,0.07}]]输出如图7-8图7-8实验12 作y=sin x和y=cos x在[0,2π]内的图像,且两坐标轴上的单位比为1:1,线条用蓝色虚线.输入:Plot[{Sin[x],Cos[x]},{x,0,2Pi},AspectRatio->Automatic,PlotStyle->{{RGBColor[0,0,1],Dashing[{0.02,0.05}]}}]输出如图7-9图7-93)参数DisplayFunction(显示函数)该参数决定图形的显示与否,当取值为Identity 时,图形不显示出来.当取值为$DisplayFunction时恢复图形的显示.1、图形的组合显示函数ShowPlot的作用可以同时在同一坐标系的同一区间内作出不同函数的图像,但有时需要在同一坐标系的不同区间作出不同函数的图像,或者在同一坐标系作一个函数而要求函数的各个部分具有不同的形态(像分段函数),这个时候就需要使用Show 函数.实验13 在同一坐标系中作出y =e x 和y =ln x 的图像,并说明它们的图像关于直线y =x 对称.输入:a =Plot[Exp[x ],{x ,-2,2},AspectRatio->Automatic,PlotStyle->RGBColor[0,1,0], DisplayFunction->Identity]b =Plot[Log[x ],{x ,0.3,3},AspectRatio->Automatic,PlotStyle->RGBColor[1,0,0], DisplayFunction->Identity]c =Plot[x ,{x ,-2,2},AspectRatio->Automatic,PlotStyle->Dashing[{0.09,0.04}], DisplayFunction->Identity]Show[a ,b ,c,DisplayFunction →$DisplayFunction]输出如图7-10.实验二.0ln 01.5.)42sin(3.4.log .3.)21(.2..122141的图像作分段函数在一个周期内的图像作函数的图像作函数的图像作函数的图像作函数⎩⎨⎧>≤+=+====x xx x y x y x y y x y x π6.在同一坐标系中作出y=x,y=sin x,x∈[-π/2,π/2]和y=arcsin x, x∈[-1,1]的图像, 且要求两坐标轴上的单位比为1:1, y=x用虚线和红色,y=sin x用绿色,y=arcsin x用蓝色.本次课小结:Mathematica软件是一个集成化的软件系统,正是由于它的主要功能的三个方面,即符号演算,数值计算和图形功能,使它成为我们学习数学知识解决实际问题中困难的助手和工具.该功能有自身的规定.我们在学习中一定要按规定执行,对基本的指令和语法等要熟记。
第四单元数学实验第10章 Mathematica使用简介10.1 Mathematica概述1 .1 Mathematica简介Mathematica是由位于美国伊利诺州的Wolfram Research公司开发的一套专门进行数学计算的软件。
广泛的应用在工程、应用数学、计算机科学、财经、生物、药学、生命科学及太空科学等领域。
1999年发表的Mathematica 4.0及其以后的版本,提供了强大的数学计算功能,除了数值处理与绘图的功能外,还具有符号计算的能力,而且能够处理多项式的各种运算、函数的微分、积分、解微分方程、统计,甚至还可以制作电脑动画及音效等等。
目前普遍使用的是Mathematica7.0及其以后的版本。
1.2 运行Mathematica双击Mathematica的快捷方式即可运行Mathematica7.0的主程序。
如下图所示,主程序会同时打开一个新的工作窗口和一个基本输入工具栏。
每个工作窗口代表一个文件,文件名显示在工作窗口的标题栏上,默认的文件名为Untitled-1.nb,即Mathematica文件的扩展名为*.nb。
1.3 Mathematica 基本操作Mahtematica 操作方法有四点要求:(1) Mathematica 所有命令的首字母需大写。
(2) 用[ ]括起要计算的内容。
(3) 用{ }括起任何列表和范围。
(4) 同时按下shift+enter 键执行命令。
例如要做2y x 的图像,在工作窗口输入Plot[x^2,{x,-1,1}],然后同时按shift+enter (先按住shift 键不放,再按enter 键)即可在工作窗口显示函数的图像,如下图所示:工作窗口基本输入工具栏上图中的In[1]=与Out[1]=是Mathematica自动产生的,而In[x]与Out[x]中的数字x表示本次计算是运行Mathematica之后的第x次计算。
输入时不能输入这些序号,否则系统会提示错误信息。
Mathematica介绍Mathematica 5.0使⽤简介Mathematica是美国Wolfram Research公司研制的⼀种数学软件, 集⽂本编辑、符号运算、数值计算、逻辑分析、图形、动画、声⾳于⼀体, 与Matlab、Maple⼀起被称为⽬前国际上最流⾏的三⼤数学软件. 它以符号运算见长, 同时具有强⼤的图形功能和⾼精度的数值计算功能. 在Mathematica中可以进⾏各种符号和数值运算, 包括微积分、线性代数、概率论和数理统计等数学各个分⽀中公式的推演、数值求解⾮线性⽅程、最优化问题等,可以绘制各种复杂的⼆维图形和三维图形,并能产⽣动画和声⾳.Mathematica系统与常见的⾼级程序设计语⾔相似, 都是通过⼤量的函数和命令来实现其功能的. 要灵活使⽤Mathematica, 就必须尽可能熟悉各种内部函数(包括内置函数和软件包函数). 由于篇幅限制, 本附录以2003年发布的Mathematica 5.0为基础, 简单分类介绍软件系统的基本功能, 及与微积分有关的函数(命令)的使⽤, 其他功能请读者⾃⾏查阅帮助或有关参考⽂献. 另外, 为节省篇幅, 本附录有时也将键盘输⼊和系统输出尽可能写在同⼀⾏, 并省略某些输出, 读者可上机演⽰观看结果1 启动与运⾏Mathematica是⼀个交互式的计算系统, 计算是在⽤户和Mathematica互相交互、传递信息数据的过程中完成的. Mathematica 系统所接受的命令都被称作表达式, 系统在接受了⼀个表达式之后就对它进⾏处理(即表达式求值), 然后再把计算结果返回. 1.1 启动假设在Windows环境下已安装好Mathematica 5.0, 那么进⼊系统的⽅法是: 在桌⾯上双击Mathematica图标(图1-1)或从“开始”菜单的“程序”下的“Mathematica 5”联级菜单下单击Mathematica图标(图1-2)均可.图1-1 图1-2启动了Mathematica后, 即进⼊Mathematica的⼯作环境----Notebook窗⼝(图1-3), 它像⼀张长长的草稿纸, ⽤户可以在上⾯输⼊⼀⾏或多⾏的表达式, 并可像处理其他计算机⽂件⼀样, 对它进⾏创建、打开、保存、修改和打印等操作.第⼀个打开的Notebook⼯作窗⼝, 系统暂时取名Untitled-1, 直到⽤户保存时重新命名为⽌, 必要时⽤户可同时打开多个⼯作窗⼝, 系统会依次暂时取名为Untitled-2、Untitled-3 .图1-3 Mathematica的⼯作窗⼝在⼯作窗⼝中, 你就可键⼊想计算的东西, ⽐如键⼊2+3, 然后同时按下Shift键和Enter键或者只按下数字键盘区(右⼩键盘区)的Enter键, 这时系统开始计算并输出计算结果5, 同时⾃动给输⼊和输出附上次序标识In[1]:=和Out[1]= ;若再输⼊第⼆个表达式a=1+Abs[-3]-2*Sin[Pi/2]后, 按Shift+Enter输出结果, 系统也会作类似处理, 窗⼝变化如图1-4.图1-4 完成运算后的Mathematica的窗⼝1.2 基本命令Mathematica的基本命令有如下两种形式:(1)表达式/ 执⾏表达式运算, 显⽰结果, 并将结果保存在Out[x]中;(2)变量=表达式/ 除(1)的功能外, 还对变量进⾏赋值.注意:命令⾏后⾯如果加上分号“;”, 那么就不显⽰运算结果.1.3 退出要退出Mathematica, 可单击关闭窗⼝按钮或从菜单“File”中选择“Exit”(或“Close”)或按Ctrl (或Alt)+F4, 这时如果窗⼝中还有未保留的内容, 系统会显⽰⼀对话框, 询问是否保存. 单击“否(N)”,则关闭窗⼝;单击“是(Y)”,则调出“SaveNotebook”对话框,等待你输⼊⽂件名, 保存“Notebook”的内容后再退出. 所保存的内容是以“.nb”为扩展名的Mathematica⽂件, 以后需要时, 可通过菜单“File”中的“Open”调⼊使⽤.1.4 使⽤联机帮助系统在使⽤Mathematica的过程中, 常常需要了解⼀个命令的详细⽤法, 或者想知道系统中是否有完成某⼀计算的命令, 联机帮助系统是最详细、最⽅便的资料库. 通常可使⽤如下两种求助⽅法:(1) 获取函数和命令的帮助在Notebook界⾯下, ⽤? 或?? 可向系统查询运算符、函数和命令的定义和⽤法. 例如查询函数Abs的⽤法可⽤Abs / 系统将给出调⽤Abs的格式及Abs命令的功能(如果⽤两个问号“??”, 则信息会更详细些);Abs* / 给出所有以Abs这三个字母开头的命令.(2) 使⽤Help菜单任何时候都可以通过按F1键或点击菜单项Help, 选择Help Browser调出帮助菜单, 供你选择浏览各种类的命令格式及功能.1.5 说明在输⼊时要注意如下⼏个规则:(1) 输⼊的字母严格区分⼤⼩写. 系统预定义变量和函数名第⼀字母⼀定要⽤⼤写(可参见表1-1和表1-2);(2) 变量名不能以数字开头, 当中也不能出现空格, 否则数字与字母之间或空格之间系统会默认是相乘关系, 例如x2可作变量名,但2x表⽰2*x;(3) 严格区分花括号、⽅括号与圆括号, 函数后⾯的表达式⼀定要放在⽅括号内, ⽽算术表达式中的括号只允许⽤圆括号(⽆论有多少层);(4) 数值计算时, 输出的结果将尽量保持精确值, 即结果中有时会含有分式、根式或函数的原形式. 例如In[1]:=1/2+1/3 Out[1]= 5 6In[2]:=Sqrt[4+8] Out[2]=In[3]:=Sin[1+2] Out[3]= Sin[3]这时, 若要得到⼩数表⽰的结果(近似数), 可在命令⾏后⾯加上“//N”或引⽤N函数, 函数格式为N[表达式, 有效数位]. 例如In[1]:=1/2+1/3 //N Out[1]= 0.833333In[2]:=N[Sqrt[4+8],10] Out[2]=3.464101615(5) 特殊字母、符号的输⼊,可使⽤热键(见表1-3), 当然也可利⽤符号输⼊平台: 先从菜单“File”中的“Palettes”打开基本输⼊⾯板“4 BasicInput”窗⼝(见图1-5), 点击相应的符号即可实现数学运算的输⼊.符号输⼊平台(菜单项“File→Palettes”)中含有9种输⼊⾯板, 利⽤它们可⼤⼤⽅便字符、命令、函数的输⼊, 尤其是“3 BasicCalculation”窗⼝(“基本计算⾯板”,可见图1-5), 其中含有常⽤的7⼤类函数的输⼊⾯板, 需要应⽤某类函数的栏⽬时, 只须点击相应栏⽬的左端折叠标志符号“ ”, 即变成展开标志符号“?”, 同时打开它所含下级的函数(类)输⼊⾯板, 最后找到所需的命令单击选定. 例如要输⼊⼀个2阶⽅阵, 可点击“File→Palettes→3 BasicCalculation →Lists andMatrices →Creating Lists and Matrices”,再点击选定“??”即可.图1-5 Mathematica的符号输⼊平台(6) 前⾯旧的命令⾏In[x], 可通过光标的上、下移动,对它进⾏编辑、修改再利⽤;对前⾯计算好的结果Out[x], 也可使⽤如下的⽅式调⽤:% / 代表上⾯最后⼀个输出结果;%% / 代表上⾯倒数第⼆个输出结果;%n / 代表上⾯第n个输出结果, 即Out[n].2 变量与函数变量和函数是Mathematica中⼴泛应⽤的重要概念, 对它们的操作命令⾮常丰富, 这⾥仅介绍⼏种基本的操作⽅法, 其它功能请读者随着学习的深⼊, ⾃⼰逐步去体会.2.1 变量赋值在Mathematica中, 运算符号“=”起赋值作⽤, 此处的“=”应理解为给它左边的变量赋⼀个值, 这个值可以是⼀个数值、⼀个数组、⼀个表达式,也可以是⼀个图形. 赋值有如下的基本形式:(1) 变量名=值/ 给⼀个变量赋值(2) 变量名1=变量名2=值/ 给⼆个变量赋相同值(3) {变量名1, 变量名2,…}={值1, 值2,…} / 给多个变量赋不同的值注意:变量⼀旦赋值后, 那么这个值将⼀直保留, 此后, ⽆论变量出现在何处, 都会⽤该值替代它, 直到你清除或再次定义它为⽌.对于已定义的变量, 当你不再使⽤它的时候, 为防⽌它影响以后的运算, 最好及时清除它的值.清除变量值命令有如下两种形式:(1)变量名=.(2)Clear[变量名列表] /列表中列出的是要清值的变量名,之间⽤逗号分开例如In[1]:= x=y=2 Out[1]= 2In[2]:= s=2x+3y Out[2]= 10In[3]:= x=.In[4]:= s=2x+3y Out[4]= 6+2x2.2 变量替换表达式中的变量名(未赋值)就像⼀个符号, 必要时我们可⽤新的内容替换它. 变量替换格式如下:(1) 表达式/.变量名->值(2) 表达式/.{变量名1->值1, 变量名2->值2,…}例如In[1]:= 1+2x+3y/.{x->2,y->s+1} Out[1]= 5+3(1+s)注意: 变量替换与变量赋值的差异在于, 变量替换是暂时性的, ⽽变量赋值是长久性的.2.3 定义函数Mathematica系统提供了⼤量的内部函数让⽤户选⽤(可参见表1-2), ⽤户若有需要也可以⾃⼰定义新函数, 这些⾃定义的函数会加⼊到当前的系统中, 如同内部函数⼀样可被随时调⽤. ⾃定义函数的⼀般形式是:函数名[⾃变量名_]=表达式或函数名[⾃变量名_]:=表达式注意:下划线“_”是在⾃变量名的右边, 它表⽰左边的⾃变量是形式参数. 类似地, 可定义不少于两个⾃变量(多元)函数. 如⼆元函数定义为函数名[⾃变量名1_, ⾃变量名2_]=表达式In[1]:= f[x_]=x+3;{f[x],f[y],f[2]} Out[1]= {3+x,3+y,5} In[2]:= g[x_,y_]=x^2-y^2;In[3]:= g[1,2] Out[3]= 43 表与矩阵表是指形式上由花括号括起来的若⼲个元素, 元素之间⽤逗号分隔. 在运算中可对表作整体操作, 也可对表中的单个元素操作. 表可以表⽰数学中的集合、向量和矩阵, 也可以表⽰数据库中的⼀组记录. 表中的元素可以是任何数据类型的数值、表达式,甚⾄是图形或表格.3.1 表的基本操作(1) 建表: 表中元素较少时, 可在给出表名时⼜定义表中元素, 格式如下表名(变量名)={元素1,元素2, …}这⾥, 元素可以是不同类型的数据.经常地, 使⽤建表函数快速建表:表名=Table[通项公式, {循环变量,循环初值,循环终值,步长}]其中, 当循环初值或步长是1时可以省略, 循环范围还可多重设置.例如In[1]:= A={1,2,3};2+3A Out[1]= {5,8,11}In[2]:= t=Table[i+j,{i,2},{j,3}] Out[2]={{2,3,4},{3,4,5}}(2) 元素处理: 处理表元素常⽤的格式(函数)有A[[i]] \ 取表A中的第i个元素Part[A{i,j,…}] 或A[[{i,j,…}]] \ 取表A中的第i,j,..元素组成新表Part[A,i]=值或A[[i]]=值\ 给表A的第i个元素重新赋值3.2 矩阵的基本操作矩阵是表的特殊形式(⼆维表), 所有标准的表操作都可⽤于矩阵操作, 除此⽽外, 它具有很多特殊的运算函数, 下⾯就简单介绍⼏类常⽤的函数.(1) 创建特殊矩阵函数(表3-1)(2) 截取矩阵块函数(表3-2)(3) 矩阵的基本运算函数(表3-3)注意:[1] 向量也是表的特殊形式(⼀维表), 对它的操作命令很多是与矩阵操作相类似的, 这⾥就不在另列. 且在Mathematica的实际应⽤中, 是不区分⾏向量还是列向量的.[2] 矩阵(向量)间的相乘要⽤点乘符号“.”表3-1 创建特殊矩阵4 符号运算Mathematica是在⼀个完全集成环境下的符号运算系统, 它具有强⼤的处理符号表达式的能⼒, 代数运算、微分、积分和微分⽅程求解等都是很典型的例⼦.4.1 代数运算(1) 展开格式: Expand[表达式]注: 对多项式按幂次展开; 对分式展开分⼦, 各项除以分母.(2) 分解因式格式: Factor[表达式]注: 对多项式进⾏因式分解; 对分式分⼦、分母各⾃因式分解.(3) 化简格式: Simplify[表达式]例如In[1]:= Expand[(1+2x)^2] Out[1]= 1+4x+4x2In[2]:= Factor[%] Out[2]= (1+2x)2In[3]:= Simplify[1/(1+1/(1+x))+1/(2(1-x))] Out[3]=11 222xx x++-+说明:代数运算还有很多操作函数, 读者必要时可从“File→Palettes→2 AlgebraicManipulation ”的窗⼝⾯板中选⽤.4.2 微分(1) ⼀阶导数格式: D[函数,⾃变量] / 函数关于指定⾃变量的导数(2) ⾼阶导数格式: D[函数,{⾃变量,n}] / 函数关于指定⾃变量的n阶导数(3) 混合偏导数格式: D[函数, x , y,…] / 函数关于⾃变量x , y,…的混合偏导数(4) 全微分格式: Dt[函数] / 函数关于各变量的全微分例如In[1]:= D[Sin[x],x] Out[1]= Cos[x]In[2]:= D[Sin[2x],{x,2}] Out[2]= -4Sin[2x]In[3]:= D[Sin[x*y],x,,y] Out[3]= Cos[xy]-xySin[xy]In[3]:= Dt[Sin[x*y],x,y] Out[3]= Cos[xy](yDt[x]+xDt[y])4.3 积分(1) 不定积分格式: Integrate[函数,⾃变量](2) 多重不定积分格式: Integrate [函数,⾃变量1,⾃变量2]或Integrate [函数,⾃变量1,⾃变量2,⾃变量3](3) 定积分格式: Integrate[函数,{⾃变量,下限,上限}]或NIntegrate[函数,{⾃变量,下限,上限}] / 数值积分(4) 多重定积分格式: Integrate[函数,{⾃变量1,下限1,上限1},…]或NIntegrate[函数,{⾃变量,下限,上限},…] / 数值积分例如In[1]:= Integrate[Sin[x]+1,x] Out[1]= x-Cos[x]In[2]:= Integrate[4x*y+1,x,y] Out[2]= xy+x2y2In[3]:= Integrate[Sin[x]+1,{x,0,1}] Out[3]= 2-Cos[1]In[4]:= NIntegrate[Sin[x]+1,{x,0,1}] Out[4]= 1.4597In[5]:= Integrate[4x*y+1,{x,0,1},{y,0,1}] Out[2]= 24.4 常微分⽅程的准确解在Mathematica中, 使⽤函数DSolve[]可以求解线性和⾮线性的常微分⽅程(组). 求特解时, 可将定解的条件作为⽅程的⼀部分.格式: DSolve[⽅程,未知函数,⾃变量]例如In[1]:= DSolve[y’[x]==2x,y[x],x] Out[1]={{y[x]->x2+C[1]}} In[2]:= DSolve[{y’[x]==2y[x],y[0]==3},y[x],x] Out[2]={{y[x]->3e2x }}In[3]:= DSolve[{y’[x]==z[x],z’[x]== -y[x]},{y[x],z[x]},x]Out[3]={{y[x]->C[1]Cos[x]+C[2]Sin[x], z[x]->C[2]Cos[x] -C[1]Sin[x]}}注: ⼤多数情况, 微分⽅程的精确解是不能⽤初等函数表⽰出来的, 这时, 只能求其数值解, 并结合作图功能画出解的⼤致图形, 这些内容后⾯再作介绍.4.5 幂级数展开格式: Series[函数表达式,{变量,展开点x0,阶数n}]例如In[1]:= Series [Sin[x],{x,0,5}] Out[1]=3560[] 6120x xx x -++注:去掉表达式中的误差项O[x]n 可调⽤Normal[] 函数.5 数值计算Mathematica的优势在于符号运算, 但对于数值问题, 它也提供了丰富的数值计算功能, 例如求和(有限或⽆限)、求极限值、解代数⽅程、求⾮线性⽅程数值解和求微分⽅程数值解等。
MATHEMATICA用法简介前言Mathematica是美国Wolfram Research公司开发的数学软件。
它的主要使用者是从事理论研究的数学工作者和其它科学工作者、从事实际工作的工程技术人员、学校里的学生和教师。
Mathematica可以用于解决各种领域的涉及复杂的符号计算和数值计算的问题。
它可以完成许多复杂的工作,如求不定积分、做多项式的因式分解等等。
它代替了许多以前仅仅只能靠纸和笔解决的工作,这种思维和解题工具的革新可能对各种研究领域和工程领域产生深远的影响。
Mathematica可以做许多符号演算工作:它能做多项式的计算、因式分解、展开等,做各种有理式计算,求多项式、有理式方程和超越方程的精确解和近似解,做数值的或一般代数式的向量、矩阵的各种计算,求极限、导数、积分,做幂级数展开,求解某些微分方程等。
Mathematica还可以做任意位数的整数或分子分母为任意大整数的有理数的精确计算,做具有任意位精度的数值(实、复数值)的计算。
所有Mathematica系统内部定义的整函数、实(复)函数也具有这样的性质。
使用Mathematica可以很方便地画出用各种方式表示的一元和二元函数的图形。
通过这样的图形,我们常可以立即形象地把握住函数的某些特性,而这些特征一般很难从函数的符号表达式中看清楚。
Mathematica的能力不仅仅在于上面说的这些功能,更重要的在于它把这些功能有机地结合在一个系统里。
在使用这个系统时,人们可以根据自己的需要,一会儿从符号演算转去画图形,一会又转去做数值计算。
这种灵活性能带来极大的方便,常使一些看起来非常复杂的问题变得易如反掌。
在学习和使用Mathematica的过程中读者会逐步体会这些。
Mathematica还是一个很容易扩充和修改的系统,它提供了一套描述方法,相当于一个编程语言,用这个语言可以写程序,解决各种特殊问题。
第一节 Mathematica基本使用方法1.1 Mathematica的使用方法Mathematica系统已经被移植到许多不同的计算机和运行环境上。
数学软件Mathematica简介本文简要介绍该软件的基本使用方法,通过学习,初步了解Mathematica的功能及其使用方法.Mathematica是美国Wolfram Research公司开发的数学软件,主要用于解决科学研究、数学教学、工程技术等领域的符号运算、数值计算、程序设计、函数图形绘制等方面的问题.Mathematica是目前世界上最流行的数学软件之一,它是从事数学和其它科学研究的科研人员、高校师生,以及工程技术人员的得力助手和不可缺少的计算工具.一、算术运算进入Mathematica 系统后,显示在面前的是如图1-1所示的窗口,右边是基本工具板,我们立即可以在空白的窗口内进行预想的数学计算了.图1-1Mathematica中,空白窗口称为Notebook(记事本),窗口上端“Untitled-1”表示当前的记事本尚无标题,我们可以像使用普通计算器一样来进行数学运算. 计算结束后,执行File/Save as 命令,指定文件名称(扩展名为 *.nb)和路径将此记事本文件保存.算术与代数运算是数学中最基本的运算,我们先从最简单的算术运算做起.做数学计算,离不开加、减、乘、除和乘方,单击键盘上“+”、“-”、“*”、“/”和“^”输入这些运算符,其中乘号“*”可以用空格代替.如果要计算图1-1所示的工具板上提供的某种数学运算,可用鼠标左键单击相应的按钮,便可将该运算符输入到窗口中,例如25+34*525+34*5然后用组合键Shift + Enter 或直接按小键盘上的Enter键(本书中,我们一律称这一操作为“执行”),便可输出计算结果. 屏幕上显示为In[1]:=25+34*5Out[1]=195这里“In[1]:=”和“Out[1]=”是由系统自动加上去的,表示输入和输出的编号. 此后的输入和输出,系统都会按照执行顺序自动加上“In[n]:=”和“Out[n]=”.本书中一般不再显示这些编号,而使用灰色底纹突出输入命令行,接在该行下面的式子、数值等则表示执行命令后的输出结果,并将二者用边框线框住. 输出的图形考虑到印刷的便利,一般予以编号.如果要计算较复杂的式子,需要按照运算顺序添加括号,例如计算3314(3523)23521+⋅+-⋅⎡⎤+⋅⎢⎥-⎣⎦,在窗口内输入(输入的式子中用乘号用空格代替):2+(18/5) (1+4 (3+5-2 3))/(2^3-1) 输出计算结果为23235又如计算(103.54+12.25)*1.2-3.3^5/5.263.68765(a+3)^3/(b-1)^2325 (3+a)(-1+b)对每一输入行和输出行,系统在Notebook 窗口的右边缘分别添加一个形如“”和“”的标记(图1-1),它随着输入行和输出结果行的宽度扩展,它标记的行称之为“Cell ”,即“细胞”或“单元”. 系统根据输入和相应输出的关系将有关的“细胞”组合起来形成多级细胞单元显示运算的层次.Mathematica 可以做任意位数的整数或分子分母为任意大整数的有理数的精确计算,也可以做具有任意位精度的数值(实、复数值)的近似计算. 一般使用 N[expr] 命令输出表达式expr 的近似值,用N[expr ,n]命令输出表达式expr 的n 位近似值,例如计算圆周率π的近似值,顺次输入Pi N[Pi] N[Pi,50]输出结果依次为π的精确值、近似值和精确到50位的近似值Pi3.141593.1415926535897932384626433832795028841971693993751也可以使用后缀格式“expr//N ”求表达式expr 的近似值,如求Sqrt[5]//N2.23607复数运算与实数运算一样,只需在输入复数时,虚数单位“i ”必须使用大写字母I ,输出结果中,显示为 ™ . 例如要计算复数123z i =-+⋅与复数232z i =--⋅的积、商以及1z 的3次方,则应输入(-2+3 I)(-3-2 I) (-2+3 I)/(-3-2 I) (-2+3 I)^312 -5 ™ -™ 46 +9 ™二、常数、变量和函数1.系统常数Mathematica系统中的数学常数列于表1-1.表1-1 数学常数∞2.变量和函数名Mathematica系统中,定义变量和函数名应遵从如下规则:变量或函数名必须以英文字母起头,后面接任意长度的字符或数字,各字符间不得有空格和其他运算符,如x、x1、xy2、T2x、data、Alpha、delta都是合法变量.系统区分变量中的大小写,X和x、xy1和Xy1视为不同的变量.系统内置函数名都以表示函数意义的完整英文单词为名,且起头的第一个字符必为大写字母,其余为小写字符,例如Sin[x]为x的正弦,Expand[expr]表示将表达式expr展开.如果函数名是几个英文单词复合而成,各单词的每个词头要大写,例如,FindRoot[eq1==eq2,{x,x0}]表示求方程式“eq1==eq2”的根. 用完整意义的单词作为函数名定义函数,常使用户能够“望文生义”,根据函数名就大致明确函数的意义. 不过,自定义函数时尽量不要与系统内置函数同名,因为系统内置函数的名称是受保护的.函数必须表示为“函数名[x]”的形式,自变量放在方括号内.3.系统内置函数Mathematica系统中的内置函数(Built-in Function),包括基本初等函数、特殊函数,还有众多旨在完成某项特定数学运算的功能函数,有时也称这类函数为“命令”.表1-2列出了常用的初等函数,它们与普通数学中的形式基本相同,只不过函数名的首字必须大写.表1-2 Mathematica的部分内置初等函数表1-2 续读者要了解更多的内置函数,可参阅书末的附录.4.自定义函数大量的数学问题还需要根据问题的具体意义,借助软件提供的运算功能自行定义函数加以解决,Mathematica 提供了两种自定义函数的方法:立即定义和延迟定义.立即定义,格式为:f[x_]=expr . 延迟定义,格式为:f[x_]:=expr .这里自变量x 右边的下划线“_”是非常重要的,称之为“空白”(blank ),x _表示定义的函数中的自变量,称为哑变量,可以用任何形式的参数或表达式去替代它.使用等号“=”和延迟赋值号“:=”定义的函数是不同的,二者的区别主要在于何时对表达式expr 进行计算,前者在定义f[x_ ]的同时就计算了expr ,而后者则是在需要计算函数 f 的值时才进行计算. 定义多元函数的方法也是相同的.我们用下面的例子来比较二者的区别,输入 f[x_]=Expand[(x +1)^3] 1+3 x+3 x 2 +x 3 f[x^2+1]1+3(1+x 2)+3(1+x 2)2+(1+x 2)3用立即定义法定义一个将多项式展开的函数:f[x_]=Expand[(x +1)^3],执行后,系统会立即输出(x+1)^3的展开式.而再输入f[x^2+1]时,输出的是1+3(1+x 2)+3(1+x 2)2+3(1+x 2)3.接下来用延迟定义法定义:g[x_]:=Expand[(x+1)^3],执行后,系统则不输出任何结果,只有再次调用g[x]时,系统才输出展开式.g[x_]:=Expand[(x+1)^3] g[x]1+3 x +3 x 2+x 3g[x^2+1]8+12 x 2+6 x 4+x 6g[2 a -3 b]1+6 a +12 a 2+8 a 3-9 b -36 a b-36 a 2 b +27 b 2+54 a b 2-27 b 35. 变量赋值、变量值的清除Mathematica 中,用等号“=”给变量赋值,也可以将一个表达式赋予一个变量,格式为 x = value 将值value 赋予变量x x = y = value 将值valu e 同时赋予变量x ,y x =.或 Clear[x]清除x 的值例1 使用一元二次方程求根公式求22230x x +-=的根.解 输入和输出结果为a =b =2;c =-3; Delta=b^2-4 a cx1 =(-b +Sqrt[Delta])/2/a x2 =(-b -Sqrt[Delta])/2/a 输出结果为28142142这里,把2、2、-3分别赋予变量a 、b 、c ,后面用“;”隔开,Mathematica 中,如果一个完整的输入语句之后面接分号“;”,该表达式的运算结果屏幕将不予显示. 把表达式b^2-4 a c 赋予变量Delta ,把计算根的表达式分别赋予变量x1和x2,执行后输出并显示出Delta 的值为28,两个根分别为1(24-±,而变量a 、b 、c 的值却没有显示出来. 如果接着输入 -b /2a Delta 则输出28对于赋了值的变量,如果在接下来的运算中不再使用,可以使用命令:“Clear[变量名]”或“变量=.”将它们清除,以免影响后续的数学运算. 例如,输入Clear[a ,B ,C ,Delta,x1,x2]执行后,这些变量便被清除了. 不再使用的自定义函数可使用同样的方法加以清除:Clear[f ,g]. 在Mathematica 运行期间,将不使用的变量及时加以清除,对保证后续运算结果的准确性是至关重要的,初学者应给予足够的重视.6. 括号的使用Mathematica 中,可以使用四种括号:方括号“[ ]”:仅用在函数表达式中,如f[x]、Sin[Pi/3]、Sqrt[3] 等; 圆括号“()”:用来表示运算项的结合顺序,例如,数学表达式223{5[2(2)]sin()}yx x x y x y⋅⋅++++⋅-应输入成如下形式:3(5(2 x + y /(x -y )+(2+x )^2)+Sin[x ^2] y)此外,在语句行的任何地方可以加入形如 (* …… *)”的括号,其中两星号之间可以输入一段注释语句意义的文字或其他, 其内容系统是不执行的.花括号“{ }”:用于定义一个“表”,如{a ,b ,c}; 双方括号“[[ ]]”:用于提取表中元素. 7. 变量替换Mathematica 提供了变量替换运算,其基本格式为:expr/.x →value以value 替代expr 中的xexpr/.{x →value1,y →value2,…} 以value 1和value 2等替代expr 中的x 、y Replace [expr,rules ] 按规则rules 替代expr例如x ^2+2x +3/.x →211x +y /.y →S in[x ]/.x →π/2Replace[x ^2+b ^2,x →a ]a ^2+b ^2{a ,b ,c }/.a →b /.b →d /.d →c{c ,c ,c }以上输入中的箭头“→”可以依次输入减号键“-”和大于号键“>”得到. 8. 先前变量值的调用在计算过程中,我们常常需要使用先前已经计算出来的结果,使用“%”、“%%”、“%...%”等分别来调出最后一个、倒数第二个和倒数第k 个计算结果. 例如,x +y /.{x →a ,y →b }a +b%+ca +b +c{%+d ,%%+d }{a +b +c +d ,a +b +d }三、 符号运算代数运算,即对使用字符代表数值的代数式进行运算,各种形式的代数式,在Mathematica 中,统称为表达式,如计算33()()a b a b +--,在计算机里做这种运算,称为“符号运算”. Mathematica 强大的符号运算功能,可以完成从初等数学到高等数学中众多的运算,如各种代数式运算、三角函数变换、函数求导、不定积分、级数展开、函数变换、向量矩阵运算等等. 在Mathematica 中,符号运算可以像普通数学运算一样进行,例如将代数式33232322a a a b ab b -++-化简,可以输入2 a^3-a ^3-a ^2 b ^3+a b ^2-b ^3 输出为a 3-3 a 2b +3 a b 2-b 3在Notebook 中作符号运算时,有一点必须加以注意,参与运算的表达式中使用的字母符号(实际上,都是所谓的“变量”)必须是没有赋过值的,否则系统将把它当作数值对待,运算后,输出的将是表达式的值,而非预想的运算结果.为了保证不出错误,应该在符号运算之前,先执行清除命令Clear[a ,x ,...].在大多数场合下,要完成代数运算,需要使用执行符号运算的命令,如表达式化简(Simplify )、分解因式(Factor)等等. 表1-3列出了几个常用的处理符号运算的命令(或称为函数).表1-3 处理符号运算的函数例如下面几个代数式的运算: Expand[(2 x +3 y-1)^2]1+4 x+4 x 2-6 y+12 x y+9 y 22 x^2+x -1//Factor(1+x )(-1+2 x)Together[x ^2/(x +2)-(x ^2-3)/(3x +1)] (*通分合并*)236+3 x -x +2 x (2+x) (1+3 x)Apart[(3 x^2-1)/(x^2+3 x +2)]321又如下列三角式的展开和化简: Sin[α-2β]//TrigExpandCos[β]2 Sin[α]-2 Cos[α] Cos[β] Sin[β]-Sin[α] Sin[β]2TrigReduce[%]Sin [α-2 β]将sin z 转化为指数型函数: TrigToExp[Sin[z]]12z将ln(/)m n a b 展开:PowerExpand[Log[a ^m /b ^n ]]m Log[a]-n Log[b]四、表与表的操作1. 表的概念“表”(List)是Mathematica中一个灵活、独特而重要的数据结构,它可以表示数学中点的坐标、向量、矩阵、集合、自变量取值范围、方程组等,其基本结构是{a,b,c,...},其中a,b,c,...称为表的元素,它们可以是数字、字符、表达式、函数、图形命令,甚至是表(子表),这时的表称为嵌套的表. Mathematica 中众多运算的输出结果也以表的形式给出.可以使用“表名[[num]]”提取该表中的第num个元素.对于嵌套表,用“表名[[num1,num2]]”提取该表中的第num1个子表中的第num2个元素,多层嵌套表也称为多维表.2. 建表方法Mathematica中有多种方法建表方法,可以直接定义法,输入一个花括号,将元素放在括号内,各元素之间用逗号分开即可.例如a={1,2,3}{1,2,3}a[[2]]2如下定义的嵌套表b代表一个23阶矩阵:b={{1,2,-2},{3,4,1}}; (* 定义表b,不做屏幕显示 *){b[[1]], b[[1,3]]} (* 输出表b的第一个子表,和第一个自表中的第三个元素 *){{1,2,-2},-2}b[[1]]相当于b的第一个元素,即矩阵的第一行. b[[1,3]]相当于13b.表作为一个整体可以参与相关的运算,也可以对表的元素进行相关的运算,例如a={1,2,3,4,5};a^2(* a的各元素平方组成的表 *){1,4,9,16,25}%+2a(* 上一个表加上a的各元素的2倍组成的表 *){3,8,18,24,35}10+a(* 将数10加到a的各个元素上去 *){11,12,13,14,15}Sum[a[[i]]^2,{i,5}] (* 计算a中各元素的平方和 *)55Sin[{Pi/6,Pi/3,Pi/2}] (* 将正弦函数作用到表的每个元素上 *)1 2,2使用建表函数Table、Range、Array等,可以建立元素具有某种规则的表,它们的最简单的使用格式为Table[expr,range] 产生一个指定范围内,元素按表达式expr计算出的表.Range[n] 产生一个从1到n的整数组成的表.Array[f,{m,n}] 产生一个以f[i,j]为元素的m n⨯阶数组.Table[ ]是一个非常有用的函数,在生成函数表、作图、制作动画等都会用到它. 例如a=Table[x^i,{i,5}](* 产生以函数i x为元素的表 *){x,x2,x3,x4,x5}Table[{i,Log[10,i]},{i,1,5}]//N(* 产生1-5的常用对数表 *){{1.,0.},{2.,0.30103},{3.,0.477121},{4.,0.60206},{5.,0.69897}}例2利用Table函数输出九九表.Table[i j,{i,9},{j,9}]{{1,2,3,4,5,6,7,8,9},{2,4,6,8,10,12,14,16,18},...,{9,18,27,36,45,54,63,72,81}} (注:此处略去部分输出结果)Range[n]函数的用法.例如,要产生一个从1到10的整数集合,输入b=Range[10]{1,2,3,4,5,6,7,8,9,10}Array[ ]函数的用法. 例如,要产生一个23⨯阶数组,输入Array[a,{2,3}]{{a[1,1],a[1,2],a[1,3]},{a[2,1],a[2,2],a[2,3]}}输出一个两行三列的数组a[i,j].例3用Array[]函数输出一个九九表.f[x_,y_]:=x y; c=Array[f,{9,9}]输出结果与例2的结果相同.有关表的更多的用法和操作,我们将在以后的相关章节中详细介绍.五、图形函数Mathematica有很多图形函数,利用它们可以方便地绘制各种数学函数的图形.其中,最常用的图形函数是产生平面曲线图形的函数命令为Plot[expr,{var,min,max},options]这里expr为函数表达式,var为自变量,min,max分别为自变量取值的下限和上限,它确定作图的自变量取值范围,options为针对输出图形或图元给出的各种控制选项. 也可以使用如下命令把几个函数图形在同一张图中显示出来,Plot[{expr1,expr2,...},{var,min,max},options]例4 做出函数sin()xf xx=的图形,可以输入f[x_]:=Sin[x]/xPlot[f[x],{x,-Pi,Pi},AspectRatio →0.4,PlotStyle →{RGBColor[0,0,1],Thickness[.01]}]Graphics 这里选项AspectRatio→0.4,表示图形的高和宽的比例为0.4 ,即高为宽的40%. 一般地,如果不输入这个选项,则系统默认图形的高和宽之比为黄金分割比,即1/GoldenRatio=0.618. 图形风格选项PlotStyle→{RGBColor[0, 0,1], Thickness[.01]}中,RGBColor[0, 0, 1] 表示图形中曲线的颜色为蓝色,RGBColor[1,0,0]和RGBColor[0,1,0]则分别表示颜色为红和绿,方括号中的三个数取0与1之间的数值.在Mathematica5.1以上的版本中,它们分别可以用Blue,Red和Green取代,Thickness[.01]表示曲线的粗细,方括号中的数值越大,曲线越粗.Mathematica中,凡是输出图形的下方,系统将输出一个字符串“ Graphics ”,如果在图形命令末尾加上分号“;”,则该字符串将不再显示.当函数图形绘制出来以后,用鼠标单击图形,它就被一个矩形框框住,鼠标指向该框内,鼠标变成一个纵横交叉的十字丝,这时按住Ctrl键,移动鼠标,跟踪平面上点的位置,在屏幕左下方的花括号内显示十字丝位置上点的坐标.不妨用这个函数并选择有关选项做出你所熟悉的一元函数的图形. 输出函数图形可用选项有很多,可以查阅帮助文件,也可以在Notebook中使用Option[]函数来了解:Options[Plot]执行后输出所有可用选项,由于选项太多,这里略去.要产生三维空间的曲面图形,最常用的函数为Plot3D[expr,{x,xmin,xmax},{y,ymin,ymax},options]Mathematica还提供了产生由参数方程确定的平面曲线、空间曲线、空间曲面的图形函数,产生极坐标系下曲线的图形函数等等. 图形函数以及它们的具体使用方法,这里不再介绍.此外,Mathematica也提供了利用一些基本图元作图的函数,其中,最常用的命令格式为Graphics[primitives,options]基本图元(primitives)包括: 点(Point)、线段(Line)、圆(Circle)、圆盘(Disk)、多边形(Polygon)、矩形(Rectangle)等,这样的图形需要调用如下的Show函数才将它显示出来.Show[plot,options]例 5 绘制单位圆和以圆与坐标轴的交点为顶点的内接正方形. 输入p=Graphics[{Thickness[0.01],Circle[{0,0},1]}];r=Graphics[{Thickness[0.01],Line[{{0,-1},{1,0},{0,1},{-1,0},{0,-1}}]}];Show[{p,r},Axes→True,AspectRatio→ Automatic];Show函数中,设置选项Axes→True,表示显示坐标轴,图形的显示比例为“自动”. 执行后输出的图形如图1-2所示.例6 利用图元“Circle ”绘制一幅奥林匹克五环标志图,并选取适当选项,显示“Beijing 2008”字样. 可以使用多种方法绘制出五环标志图,下面我们给出如下的命令,执行后输出如图1-3所示的五环标志. Apply[Circle,{{{0,0},1},{{2.4,0},1},{{4.8,0},1},{{1.2,-1.0},1},{{3.6,-1.0},1}},{1}];Show[Graphics[Table[{Blue,Thickness[0.03],%[[i ]]},{i ,5}]],AspectRatio → Automatic,PlotRange →{-3,2},PlotLabel →StyleForm["Beijing 2008",FontFamily →"Times", FontSize →28,FontWeight →"Bold",FontColor →Blue]];这里,使用Apply(应用)函数将Circle 命令作用到五个位置不同上去,产生包含五个圆环的表. 再用Table 函数将画圆的选项“Blue,Thickness[0.03]”分配给五圆表的每个元素,最后使用Show 函数将这五个圆环显示出来. 选择的选项中有:PlotRange →{-3,2}表示图形纵向范围,PlotLabel →StyleForm[]指出图形标签的风格形式,方括号内依次列出:字样“Beijing 2008”、字体、字号、字形和字体颜色等.作业:利用Mathematica 绘制一个尽量真实的奥林匹克五环标志图图1-2图1-3六、程序与编程Mathematica提供了众多可以解决各种数学问题的功能函数,但是,大量的数学问题仅靠这些函数来解决,还是远远不够的,需要自己编写计算机程序来解决. Mathematica系统为用户提供了一个功能非常强大的编程平台和编程语言,其语言结构简单、灵活,凡学过计算机语言(如C、Fortran等)的用户都能很快地掌握它.同任何程序语言的结构一样,Mathematica程序流程也分成顺序结构、循环结构、条件分支结构.1. 关系运算与逻辑运算在程序流程的控制中,需要用到关系运算和逻辑运算. 这些运算由相应的关系运算符和逻辑运算符完成,如果关系表达式和逻辑表达式成立,其输出结果为True,否则为False.关系运算符和逻辑运算符列于表1-4和表1-5中.表1-4 关系运算符及运算结果表1-5 逻辑运算符及运算结果2. 全局变量与局部变量当Mathematica开启并首次执行一个运算后,系统立即启动一个叫做“Mathematica Kernel”程序,它负责变量和函数的计算,并将计算结果暂时存储在这里.凡先前定义的变量的值,在Mathematica运行期间,该变量的值始终被保存,所以,在Mathematica中称这种变量为“全局(Global)变量”,全局变量的值只要没有及时地清除,很可能会影响后续的运算的结果.相对全局变量,Mathematica允许定义一种所谓的“局部(Local)变量”,不过这种变量必须放在一个由Module引起的模块中,用Module模块可以定义一个函数或者旨在完成某项具体任务的程序. 这个模块中定义的变量叫做局部变量. 局部变量的值仅在该模块内起作用,模块外的全局变量值与模块内定义的局部变量,即使它们同名也互不影响.Module模块的基本格式:Module[{x,y...},body],局部变量为x,y,...的模块.Module[{x=x0,y=y0,...},body],局部变量为x,y,...赋予初始值的模块.例如,输入x=10 (* x为全局变量,定义其值为 10*)f=Module[{x},x=(2 t-3 s)^2;x=Expand[x]](* Module中的变量x为局部变量*)不难看出,这里用Module模块定义的变量f,执行后输出结果为109 s2-12 s t+4 t2显然,输出的10为全局变量x的值,而模块内的变量x为局部变量,将(2 t-3 s)^2赋予x,再将它展开并输出展开式.这里须注意Module模块中最后一个语句为输出语句.3. 循环结构程序,实质上就是一系列有序的计算机指令组成的集合.大多数情况下,Mathematica程序,就是将一系列的命令组合在一起,按照先后顺序从前向后执行,当一个命令语句之后添加“;”时,计算结果不做屏幕显示,继续计算下一条命令,直到这组命令全部计算完备为止,这种程序结构,叫做顺序结构.但是,许多数学问题,需要利用计算机的高速运算多次循环计算才能得到结果,即需要编写一个循环结构的程序来完成. Mathematica中有多种建立循环结构程序的方法,我们仅介绍其中几种常用的方法.(1) Do循环Do循环的格式为Do[expr,{i,i min,i max}] 循环变量i从i min到i max,重复计算expr的值Do[expr,{i,i min,i max,di}] 循环变量i从i min到i max,以di为步长,重复计算expr的值.Do[expr,{i,i min,i max},{j,j min,j max}] 二重循环例7用Do循环计算前n个自然数的平方和,输出前15个自然数的平方和.Sqsum[n_Integer]:=Module[{s=0},Do[s+=k^2,{k,n}];s]Sqsum[15]1240输出结果为1240. 程序中k为循环变量,循环表达式“s+=k^2”,即“s=s+k^2”,循环变量的初值如果是1的话,可以省略.(2) For循环Fro循环的格式为For[start,test,incr,body] start为循环变量初值,test为检验条件,incr 为步进量,body为循环体.使用For循环作例6的问题:Sqsum1[n_]:=Module[{s=0},For[i=1,i<=n,i++,s+=i^2];s]Sqsum1[15]其中,循环变量i的初值为1,终值为n,i++表示步进量为1(它可以用i=i+1,或者i+=1代替),此程序的输出结果也是1240.(3) While循环While循环的格式为While[test, body]test为检验条件,body为循环体当检验条件满足,计算循环体,直到检验条件不满足为止.使用While循环作例6的问题,输入如下程序Sqsum2[n_]:=Module[{s=0,i=1},While[i<=n,s+=i^2;i+=1];s]Sqsum2[15]不难看出,这个程序的输出结果仍然是1240.4. 条件分支结构在数值或者非数值运算中,常常需要对给定的条件作逻辑判断,并根据判断结果控制程序的流向,这要用到分支结构.Mathematica中使用If、Which等命令控制程序的分支,下面简要介绍它们的用法.(1) If 语句格式If[cond,t,f],cond为检验条件,当cond为真时计算t,否则计算f.例8 编写程序从任意给出的3个数中挑选最大的数. 输入maxf[x_,y_,z_]:=Module[{m},If[x>y,m=x,m=y];If[z>m,m=z];Print[m,"i s the maximal number."]]程序中“Print”函数表示打印,其中引号中的字符串照原样打印.如果求ππee, 3,π中最大的数. 调用此程序并输出结果为maxf[E^Pi,3^Pi,Pi^E]π3is the maximal number.数学中的分段函数,常常要使用If命令来定义,我们将在实验1中详细讨论.,(2) Which 语句格式Which[cond1,expr1,cond2,expr2,...] 顺次检验条件cond i,当首次遇到某个条件cond k成立时,返回对应的表达式expr k的值.例9 用Which命令定义符号函数1 , 0 sgn[] 0 , 01 , 0xx xx-<⎧⎪==⎨⎪<⎩.sgn[x_]:=Which[x<0,-1,x==0,0,x>0,1]如果输入sgn[2.5],输出1,输入sgn[-3.1],则输出-1.为了解决复杂的问题,在计算机程序中,常常需要在适当的地方中改变程序的流向,例如在循环中,当循环结果符合要求以后,中断循环,跳出循环执行下面的语句,或控制程序转入下一轮循环. Mathematica 中提供了一些控制程序流程的命令函数,如Break[]、Continue[]、Return[expr]、Goto[name]等等. Mathematica 程序的语法与C语言语法基本相同,读者可以在所掌握的计算机语言的基础上,逐步熟悉程序的编写方法.例10 3N+1问题是数论中的一个有趣问题,任意给定一个正整数内 N ,如果它是偶数,则除以2,否则,将它乘以3再加上1,再将所得到的数当作新的N,重复上述计算步骤,经过有限次计算后,最后一定得到数1. 编写Mathematica程序验证这一事实.ThreeNPlus1[n_]:=Module[{m=n},For[i=1,i≤10^10,i++,{If[m==1,Break[],If[Mod[m,2]==0,m=m/2,m=3 m+1]]}]; Return[m]]程序里,对任意给定的正整数n,由于事前并不知道需要计算多少次,最后可以返回数1,故选取循环变量的终值为一个很大的数,这里取为1010.循环过程中,经过若干次计算后,一旦得到数1,程序执行到终止循环命令Break[](注:Break之后的方括号内不填任何值),则跳出循环,Return[m]表示返回到m的最后值. 可以验证,对于任何整数n调用这个函数,其返回值都是1.七、帮助与查询查阅软件提供的帮助是迅速掌握软件功能的重要途径,选择Help菜单下的Help Browser...菜单项(可单击F1) 打开帮助浏览器,其中介绍系统内置函数(Build-in Functions)、学习教科书(The Mathematica Book)、功能演示(Demos)、索引(Master Index)等内容,从中了解系统功能、函数与基本使用方法.Mathematica还提供了获取帮助的简便方法,要了解某个具体函数或者命令的意义,可以在Notebook中先输入“? 函数名”,例如,输入?Expand执行此命令,系统输出该函数的简要信息.Expand[expr] expands out products and positive integerpowers in expr. Expand[expr, patt] leaves unexpanded anyparts of expr that are free of the pattern patt. More...要了解更多的信息,可以单击上面这段文字末尾的“More...”按钮. 如果输入“??Expand”,执行后则输出该函数的详尽信息.如果忘记了某个函数或命令的英文拼写,可以输入?Ex*则会输出系统中所有以“Ex”起头的Mathematica命令的名称.八、加载程序包Mathematica提供的内置函数中,有一部分可以直接调用.还有些功能相对专业的函数,Mathematica将它们集中在一个个的程序包中,要使用这些函数首先必须调入包含着该函数的程序包,否则,若直接输入这些函数,系统并不能识别.加载程序包的方法是输入:<<程序包`子程序包名称` (或者Get[“程序包`子程序包名称`”])或者输入Needs[“程序包`子程序包名称`”]例如我们要做统计中线性回归方面的计算,就需要调入统计(Statistics)程序包中的线性回归子程序包,输入<<Statistics`LinearRegression`执行后就可以使用该程序包中的有关函数或命令做线性回归了. 注意,上面的命令中,要输入单引号“`”,需单击数字键1左边的那个键.Mathematica系统提供了代数、几何、微积分、数论、图形、统计等领域中的许多程序包,要了解这些程序包,从帮助浏览器的“Add-Ones&Link”卡中的标准程序包(Standard Packages)去查找.除了做数学的程序包外,有一个特殊的杂项(Miscellaneous)程序包,其中包括可以输出化学元素、物理常数、日历、城市数据等方面资料的子程序包. 例如,要想知道某年某月是星期几,需要加载中的日历(Calendar)子程序包,输入<<Miscellaneous`Calendar`执行后,比如要想知道2016奥运会的开幕日是星期几,输入DayOfWeek[{2016,8,5}]Friday即当天是星期五. 要想知道从2014年3月1日到2016奥运会开幕还有多少天,输入并执行后得到DaysBetween[{2014, 3, 1}, {2016, 8, 5}]888。