资源描述
Mathematica表达式及其运算规则,在本节中,我们将主要介绍Mathematica进行数学运算的基本工作原理及特殊符号的输入方式。,、西腊字母及命令的直观输入在Notebook中,有两种输入西腊字母的方法,一种是调用FilePalettesBasicInput、BaiscTypesetting或CompleteCharactersLettersGreek菜单,此时会弹出一个含有西腊字母的数学工具面板,单击此面板的符号即可;另一种是直接通过键盘输入西腊字母所代表的标准名称,其格式为Greek_name,例如,在Notebook中输入Beta后(注意大小写),将会显示,下面是一些常用西腊字母的标准名称表。,另外,在刚开始使用Mathematica时,一般对有关数学运算命令及数学公式的输入都不是太熟悉,这时可以通过菜单FilePalettes的各个下级子菜单输入相关命令及公式,不过这种输入方法效率不高,建议还是少用为好。,、表达式与表结构Mathematica能够处理多种类型的数据形式:数学公式、集合、图形等等,Mathematica将它们都称为表达式。使用函数及运算符(+,-,*,/,等)可组成各种表达式。,FullForm可显示出表达式在系统内部存贮的标准格式,而Head可得到某个表达式的头部,这对我们确定表达式的类型很有用处。上面的1,2,3,4称为表(List),表是Mathematica中非常有用的结构。首先,表可以理解成数学意义下的集合,例如对集合1,2,3,4,5,6,7,8,9,它是含有6个元素的子集合,其中2,3及5,6,7此集合的子集合。,作为集合,有下面的各种集合运算。,Appendlist,element在集合list的末尾加入元素elementApplyPlus,list将集合list中的所有元素加在一起ApplyTimes,list将集合list中的所有元素乘在一起Complementlist1,list2求在list1中而不在list2中元素集合Deletelist,i,j删除集合第i,j处的元素Deletelist,i删除集合list的第i个元素Flattenlist展开集合list中的各个子集,形成一个一维表,FlattenAtlist,n展开集合list中的第n级子集Insertlist,element,i,j插入第i个子集合的第j个元素处Insertlist,element,i在list第i个元素的前面插入elementIntersectionlist1,list2,这是数学意义下的求交集命令Joinlist1,list2,将集合首尾相连,形成一个新的集合Lengthlist集合list中元素的个数listi,j集合list中第i个子集合的第j个元素,listi集合list中第i个元素Partitionlist,n将集合list分成n个元素一组Prependlist,element在集合list的开头加入元素elementReplacePartlist,element,i,j替换list中的第i,j处的元素ReplacePartlist,element,i替换集合list中的第i个元素Reverselist翻转集合list中的元素Sortlist将集合list中的元素按升序排序,Tablef,i,imin,imax,j,jmin,jmax建立二维表或矩阵Tablef,i,imin,imax建立一个一维表或向量Takelist,m,n给出list中从m到n之间的所有元素Takelist,n给出前n个,Takelist,-n给出后n个Unionlist合并集合list中的重复元素Unionlist1,list2,这是数学意义下的求集合的并集命令下面是有关集合方面的一些运算:,其次,对于一维表,可以理解成数学意义下的向量,对于二维表,可以理解成矩阵,因此,有如下的矩阵函数,其中a,b为向量,p,q为常量,M为方阵,A,B为同阶普通矩阵,具体例子参见下一节。Dota,b或a.b向量a与b的数量积Crossa,b向量a与b的矢量积P*A+q*B矩阵与数的乘法运算A*BA与B的对应元素相乘M2将矩阵M中的每个元素平方P.Q矩阵乘法运算,其中P为mk阶矩阵,Q为kn阶矩阵,DetM求方阵M的行列式MatrixFormA以矩阵的形式显示MatrixPowerM,n矩阵M的n次幂TransposeA矩阵A的转置矩阵EigenvaluesM求矩阵M的特征值EigenvectorsM求矩阵M的特征向量EigensystemM求矩阵M的特征值与特征向量IdentityMatrixn建立一个nn的单位阵DiagonalMatrixlist建立一个对角阵,其对角线元素为表list,InverseM求方阵M的逆矩阵LinearSolveA,b求线性方程组AX=b的解NullSpaceA求满足方程AX=0的基本向量组,即零解空间RowReduceA将矩阵A进行行变换QRDecompositionM矩阵M的QR分解SchurDecompositionM矩阵M的Schur分解JordanDecompositionM矩阵M的Jordan分解LUDecompositionM矩阵M的LU分解,、Mathematica中数的类型与精度在Mathematica中,进行数学运算的“数”有四种类型,它们分别是Integer(整数)、Rational(有理数)、Real(实数)、Complex(复数)。不带有小数点的数,系统都认为是整数,而带有小数点的数,系统则认为是实数。对两个整数的比,如12/13,系统认为是有理数,而a+b*I形式的数,系统认为是复数。Mathematica可表示任意大的数和任意小的数,其它计算机语言比如C、Basic是做不到这一点的,例如,其中/N表示取表达式的数值解,默认精度为16位,它等价于Nexpr,一般形式为Nexpr,n,即取表达式n位精度的数值解。如,使用Rationalizeexpr,error命令可将表达式转换为有理数,其中error表示转换后误差的控制范围。例如,Mathematica中的变量以字母开头,变量中不能含有空格及下划线,因此,上面的2I表示2*I(I为虚数),乘号可用空格代替,在很多情况下,乘号可以省略,如(1+I)(1+2I)中的两个乘号。如果某个表达式的结果为复数,Mathematica就会给出复数的结果。对下面的次方程,上面的行列式|A|的计算结果,系统给出的是一个分数值,在Mathematica中,不同类型的数进行运算,其结果是高一级的数,如有理数与实数运算的结果是实数,复数与实数的运算结果是复数,依此类推。由于整数与有理数的运算级别最低,因此,在进行数学计算中,如果可能的话,就尽量用精确数,即整数或有理数。另外,“=”称为逻辑等号,定义一个等式要用逻辑等号。,其中Inverse是求逆矩阵命令。在Mathematica中,一行中可以输入多个命令,各命令间用分号分隔。另外,分号还有一个作用是通知Mathematica,只在内存中计算以分号结尾的命令,但不输出此命令的计算结果。,如果表达式太长,一行写不下,可以分行写,系统会自动判断一个表达式是否输入完毕。对于需要多行输入的表达式,建议每行用运算符结尾。下面我们简要说明一下Mathematica的赋值符号及相关命令。在Mathematica中,对变量赋值,有两种方法。A:=expr的意思是将表达式expr的值赋给A,但Mathematica并不立即执行此项操作,一直到用到A的值时,Mathematica才真正的将expr的值赋给A,即所谓的延迟赋值。在大部分情况下,我们都采用延迟赋值的形式为表达式赋值。另一种赋值方法是我们所熟悉的赋值形式,即A=expr或A=B=expr的形式,一般称为立即赋值。只要一执行该命令,Mathematica将expr的值赋给A。,另外,对于变量,Mathematica不像C语言那样,需要申请后再使用,也不用事先确定变量的类型,这些问题都由Mathematica来自动处理。对于不需要的变量,可以使用Clear命令将变量从内存中清除出去,以节省内存空间,例如ClearA清除变量A,其简写形式是A=.ClearA,B,W清除变量A、B、WClear“A*”,”B*”清除以A、B开头的所有变量可以使用Precisionexpr或Accuracyexpr返回表达式的精度,其中,在系统中是一个内部常数,其完整的命令是Infinity,这样的常数有:Pi()、(实数e)、ComplexInfinity(复数的无穷大)、I(复数i)、Degree(1。=/180)、(不定积分的任意常数),另外,(导数运算符),(取精度运算符)、O(泰勒展开的高阶无穷小量)。,上面Print命令的功能是打印表达式或者字符串,其格式为Printexpr1,expr2,expr1,expr2,可以为任意合法的Mathematica表达式,如果为字符串,则需要双引号将字符串括起来。在实际计算过程中,可能得到的结果中含有很小的数,为了以后计算上的方便,我们如果想去掉这样的数,可以使用命令Chopexpr,dx若expr中的某个数小于dx,则用0来代替该数Chopexpr若expr中的数小于10-10,则用0来代替该数,下面是一个多项式曲线拟合问题的实际例子,可以用下面的几个函数来判断表达式运算结果的类型,其中True和False是系统内部的布尔常量。NumberQexpr判断表达式是否为一个数,返回True或FalseIntegerQexpr判断表达式是否为整数,返回True或False,EvenQexpr判断表达式是否为偶数,返回True或FalseOddQexpr判断表达式是否为奇数,返回True或FalsePrimeQexpr判断表达式是否为素数,返回True或FalseHeadexpr判断表达式的类型,、常用数学函数Mathematica的数学运算,主要是依靠其内部的大量数学函数完成的,下面我们依次列出常用的数学函数,其中x、y、a、b代表实数,z代表复数,m、n、k为整数。所有的函数或者是它的英文全名,或者是其它计算机语言约定俗成的名称,函数的参数表用方括号括起来,而不是用圆括号。另外,Mathematica对大小写敏感。,数值函数Roundx最接近x的整数Floorx不大于x的最大整数Celingx不小于x的最小整数Signx符号函数Absz若z为实数,则求绝对值,为复数,则取模Maxx1,x2,或Maxx1,x2,求最大值Minx1,x2,或Minx1,x2,求最小值x+Iy,Rez,Imz,Conjugatez,Argz关于复数的基本运算,随机函数Random返回一个区间0,1内的一个随机数RandomReal,xmin,xmax返回一个区间xmin,xmax内的随机数RandomInteger以1/2的概率返回0或1RandomInteger,imin,imax返回位于imin,imax间的一个整数RandomComplex模为1的随机复数RandomComplex,zmin,zmax复平面上的随机复数SeedRandom使用系统时间作为随机种子SeedRandomn使用整数n作为随机种子,整数函数及组合函数Modm,n,Quotientm,nm/n的余数及商GCDn1,n2,LCMn1,n2,最大公约数及最小公倍数FactorIntegern返回整数n的所有质数因子表PrimePix,Primek返回小于x的质数个数及第k个质数n!,n!整数n的阶乘及双阶乘Binomialn,m计算排列组合数Signaturei1,i2,排列的正负符号,初等超越函数这些函数的名称一目了然,我们不多加解释。它们是:Sqrtz、z1z2、Expz、Logz、Logb,z、Sinz、Cosz、Tanz、Cotz、Cscz、Secz、ArcSinz、ArcCosz、ArcCscz、ArcSecz、ArcTanz、ArcCotz、Sinhz、Coshz、Tanhz、Cothz、Cschz、Sechz、ArcSinhz、ArcCoshz、ArcTanhz、ArcCothz、ArcCschz、ArcSechz。,正交多项式LegendrePn,x,LegendrePn,m,x勒让德多项式ChebyshevTn,x,ChebyshevUn,x切比雪夫多项式HermiteHn,xHermite多项式LaguerreLn,xLaguerreln,a,x拉盖尔多项式JacobiPn,a,b,x雅可比多项式,特殊函数此处我们将不给出特殊函数的具体表达式,读者可查阅相关资料。Betaa,b,Betaz,a,bBata函数及不完全Beta函数Gammaz,Gammaa,zGamma函数及不完全Gamma函数Erfz,Erfz0,z1误差函数及广义误差函数BesselJn,z,BesselYn,z贝赛尔函数BesselIn,z,BesselKn,z修正的贝赛尔函数ExpIntegralEn,z,LogIntegralz指数积分与对数积分,数学软件包的读入方法:在讲义上的此部分,提供了一种数学软件包的读入mathematica中的方法,下面是一种更为简单的方法我们下面要读入软件包:,目录:C:ProgramFilesWolframResearchMathematica5.0AddOnsStandardPackagesLinearAlgebra,文件名:Orthogonalization.M,执行以下的mathematica菜单:,在弹出的文件打开框中,一直找到上面的文件为止.,在此文件框中打开此文件,则mathematica并没有真正打开文件,而是返回了文件所在的路径,最后,在此返回路径的前面加上2个“Comp对两个连续的结果运用比较关系comp,比较结果为真时停止运算下面以利用牛顿迭代法求开平方根为例,说明其用法,FoldListf,x,a,b,构成集合x,fx,a,ffx,a,b,Foldf,x,a,b,给出函数FoldList的最后一个元素,Applyf,a,b,c,对集合运用f,得到fa,b,c,Applyf,expr对表达式的最高层应用fApplyf,expr,level对表达式的指定层应用f,Mapf,expr将函数f作用到表达式第一层的每个部件上Mapf,expr,level将f作用到表达式第n层的每个部件上MapAllf,expr对表达式expr的所有部件应用fMapThreadf,expr1,expr2,对expr1及expr2的相应元素运用fMapThreadf,expr1,expr2,lev对给定层的表达式运用f,Scanf,expr依次计算对expr中的每个元素运用f的值Scanf,expr,level同上,但在指定层上计算,Arrayf,n生成表f1,f2,fnArrayf,n1,n2同上,但生成一个二维表,Seclectexpr,f在expr中挑选出函数f为True的元素Seclectexpr,f,n同上,但只选出前n个使f为True的元素,Operatep,fx算子函数,给出pfxOperatep,fx,n同上,但在函数的第n层应用p,
展开阅读全文