Mathematica表达式及其运算规则.ppt
《Mathematica表达式及其运算规则.ppt》由会员分享,可在线阅读,更多相关《Mathematica表达式及其运算规则.ppt(45页珍藏版)》请在装配图网上搜索。
Mathematica表达式及其运算规则,在本节中,我们将主要介绍Mathematica进行数学运算的基本工作原理及特殊符号的输入方式。,1、西腊字母及命令的直观输入在Notebook中,有两种输入西腊字母的方法,一种是调用File→Palettes→BasicInput、BaiscTypesetting或CompleteCharacters→Letters→Greek菜单,此时会弹出一个含有西腊字母的数学工具面板,单击此面板的符号即可;另一种是直接通过键盘输入西腊字母所代表的标准名称,其格式为\[Greek_name],例如,在Notebook中输入\[Beta]后(注意大小写),将会显示β,下面是一些常用西腊字母的标准名称表。,另外,在刚开始使用Mathematica时,一般对有关数学运算命令及数学公式的输入都不是太熟悉,这时可以通过菜单File→Palettes的各个下级子菜单输入相关命令及公式,不过这种输入方法效率不高,建议还是少用为好。,2、表达式与表结构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}此集合的子集合。,作为集合,有下面的各种集合运算。,Append[list,element]在集合list的末尾加入元素elementApply[Plus,list]将集合list中的所有元素加在一起Apply[Times,list]将集合list中的所有元素乘在一起Complement[list1,list2]求在list1中而不在list2中元素集合Delete[list,{i,j}]删除集合第i,j处的元素Delete[list,i]删除集合list的第i个元素Flatten[list]展开集合list中的各个子集,形成一个一维表,FlattenAt[list,n]展开集合list中的第n级子集Insert[list,element,{i,j}]插入第i个子集合的第j个元素处Insert[list,element,i]在list第i个元素的前面插入elementIntersection[list1,list2,…]这是数学意义下的求交集命令Join[list1,list2,…]将集合首尾相连,形成一个新的集合Length[list]集合list中元素的个数list[[i,j]]集合list中第i个子集合的第j个元素,list[[i]]集合list中第i个元素Partition[list,n]将集合list分成n个元素一组Prepend[list,element]在集合list的开头加入元素elementReplacePart[list,element,{i,j}]替换list中的第i,j处的元素ReplacePart[list,element,i]替换集合list中的第i个元素Reverse[list]翻转集合list中的元素Sort[list]将集合list中的元素按升序排序,Table[f,{i,imin,imax},{j,jmin,jmax}]建立二维表或矩阵Table[f,{i,imin,imax}]建立一个一维表或向量Take[list,{m,n}]给出list中从m到n之间的所有元素Take[list,n]给出前n个,Take[list,-n]给出后n个Union[list]合并集合list中的重复元素Union[list1,list2,…]这是数学意义下的求集合的并集命令下面是有关集合方面的一些运算:,,,,,,,,,,,,,,其次,对于一维表,可以理解成数学意义下的向量,对于二维表,可以理解成矩阵,因此,有如下的矩阵函数,其中a,b为向量,p,q为常量,M为方阵,A,B为同阶普通矩阵,具体例子参见下一节。Dot[a,b]或a.b向量a与b的数量积Cross[a,b]向量a与b的矢量积P*A+q*B矩阵与数的乘法运算A*BA与B的对应元素相乘M^2将矩阵M中的每个元素平方P.Q矩阵乘法运算,其中P为mk阶矩阵,Q为kn阶矩阵,Det[M]求方阵M的行列式MatrixForm[A]以矩阵的形式显示AMatrixPower[M,n]矩阵M的n次幂Transpose[A]矩阵A的转置矩阵Eigenvalues[M]求矩阵M的特征值Eigenvectors[M]求矩阵M的特征向量Eigensystem[M]求矩阵M的特征值与特征向量IdentityMatrix[n]建立一个nn的单位阵DiagonalMatrix[list]建立一个对角阵,其对角线元素为表list,Inverse[M]求方阵M的逆矩阵LinearSolve[A,b]求线性方程组AX=b的解NullSpace[A]求满足方程AX=0的基本向量组,即零解空间RowReduce[A]将矩阵A进行行变换QRDecomposition[M]矩阵M的QR分解SchurDecomposition[M]矩阵M的Schur分解JordanDecomposition[M]矩阵M的Jordan分解LUDecomposition[M]矩阵M的LU分解,3、Mathematica中数的类型与精度在Mathematica中,进行数学运算的“数”有四种类型,它们分别是Integer(整数)、Rational(有理数)、Real(实数)、Complex(复数)。不带有小数点的数,系统都认为是整数,而带有小数点的数,系统则认为是实数。对两个整数的比,如12/13,系统认为是有理数,而a+b*I形式的数,系统认为是复数。Mathematica可表示任意大的数和任意小的数,其它计算机语言比如C、Basic是做不到这一点的,例如,,,,,,,其中//N表示取表达式的数值解,默认精度为16位,它等价于N[expr],一般形式为N[expr,n],即取表达式n位精度的数值解。如,,,,,使用Rationalize[expr,error]命令可将表达式转换为有理数,其中error表示转换后误差的控制范围。例如,,,Mathematica中的变量以字母开头,变量中不能含有空格及下划线,因此,上面的2I表示2*I(I为虚数),乘号可用空格代替,在很多情况下,乘号可以省略,如(1+I)(1+2I)中的两个乘号。如果某个表达式的结果为复数,Mathematica就会给出复数的结果。对下面的3次方程,,,上面的行列式|A|的计算结果,系统给出的是一个分数值,在Mathematica中,不同类型的数进行运算,其结果是高一级的数,如有理数与实数运算的结果是实数,复数与实数的运算结果是复数,依此类推。由于整数与有理数的运算级别最低,,因此,在进行数学计算中,如果可能的话,就尽量用精确数,即整数或有理数。另外,“==”称为逻辑等号,定义一个等式要用逻辑等号。,,,,,其中Inverse[]是求逆矩阵命令。在Mathematica中,一行中可以输入多个命令,各命令间用分号分隔。另外,分号还有一个作用是通知Mathematica,只在内存中计算以分号结尾的命令,但不输出此命令的计算结果。,如果表达式太长,一行写不下,可以分2行写,系统会自动判断一个表达式是否输入完毕。对于需要多行输入的表达式,建议每行用运算符结尾。下面我们简要说明一下Mathematica的赋值符号及相关命令。在Mathematica中,对变量赋值,有两种方法。A:=expr的意思是将表达式expr的值赋给A,但Mathematica并不立即执行此项操作,一直到用到A的值时,Mathematica才真正的将expr的值赋给A,即所谓的延迟赋值。在大部分情况下,我们都采用延迟赋值的形式为表达式赋值。另一种赋值方法是我们所熟悉的赋值形式,即A=expr或A=B=expr的形式,一般称为立即赋值。只要一执行该命令,Mathematica将expr的值赋给A。,另外,对于变量,Mathematica不像C语言那样,需要申请后再使用,也不用事先确定变量的类型,这些问题都由Mathematica来自动处理。对于不需要的变量,可以使用Clear命令将变量从内存中清除出去,以节省内存空间,例如Clear[A]清除变量A,其简写形式是A=.Clear[A,B,W]清除变量A、B、WClear[“A*”,”B*”]清除以A、B开头的所有变量可以使用Precision[expr]或Accuracy[expr]返回表达式的精度,其中,∞在系统中是一个内部常数,其完整的命令是Infinity,这样的常数有:Pi(π)、E(实数e)、ComplexInfinity(复数的无穷大)、I(复数i)、Degree(1。=π/180)、C(不定积分的任意常数),另外,D(导数运算符),N(取精度运算符)、O(泰勒展开的高阶无穷小量)。,上面Print[]命令的功能是打印表达式或者字符串,其格式为Print[expr1,expr2,……]expr1,expr2,……可以为任意合法的Mathematica表达式,如果为字符串,则需要双引号将字符串括起来。在实际计算过程中,可能得到的结果中含有很小的数,为了以后计算上的方便,我们如果想去掉这样的数,可以使用命令Chop[expr,dx]若expr中的某个数小于dx,则用0来代替该数Chop[expr]若expr中的数小于10-10,则用0来代替该数,下面是一个多项式曲线拟合问题的实际例子,,,,,可以用下面的几个函数来判断表达式运算结果的类型,其中True和False是系统内部的布尔常量。NumberQ[expr]判断表达式是否为一个数,返回True或FalseIntegerQ[expr]判断表达式是否为整数,返回True或False,EvenQ[expr]判断表达式是否为偶数,返回True或FalseOddQ[expr]判断表达式是否为奇数,返回True或FalsePrimeQ[expr]判断表达式是否为素数,返回True或FalseHead[expr]判断表达式的类型,,,4、常用数学函数Mathematica的数学运算,主要是依靠其内部的大量数学函数完成的,下面我们依次列出常用的数学函数,其中x、y、a、b代表实数,z代表复数,m、n、k为整数。所有的函数或者是它的英文全名,或者是其它计算机语言约定俗成的名称,函数的参数表用方括号[]括起来,而不是用圆括号。另外,Mathematica对大小写敏感。,数值函数Round[x]最接近x的整数Floor[x]不大于x的最大整数Celing[x]不小于x的最小整数Sign[x]符号函数Abs[z]若z为实数,则求绝对值,为复数,则取模Max[x1,x2,…]或Max[{x1,x2,…},…]求最大值Min[x1,x2,…]或Min[{x1,x2,…},…]求最小值x+Iy,Re[z],Im[z],Conjugate[z],Arg[z]关于复数的基本运算,随机函数Random[]返回一个区间[0,1]内的一个随机数Random[Real,{xmin,xmax}]返回一个区间[xmin,xmax]内的随机数Random[Integer]以1/2的概率返回0或1Random[Integer,{imin,imax}]返回位于[imin,imax]间的一个整数Random[Complex]模为1的随机复数Random[Complex,{zmin,zmax}]复平面上的随机复数SeedRandom[]使用系统时间作为随机种子SeedRandom[n]使用整数n作为随机种子,整数函数及组合函数Mod[m,n],Quotient[m,n]m/n的余数及商GCD[n1,n2,…],LCM[n1,n2,…]最大公约数及最小公倍数FactorInteger[n]返回整数n的所有质数因子表PrimePi[x],Prime[k]返回小于x的质数个数及第k个质数n!,n!!整数n的阶乘及双阶乘Binomial[n,m]计算排列组合数Signature[{i1,i2,…}]排列的正负符号,,初等超越函数这些函数的名称一目了然,我们不多加解释。它们是:Sqrt[z]、z1^z2、Exp[z]、Log[z]、Log[b,z]、Sin[z]、Cos[z]、Tan[z]、Cot[z]、Csc[z]、Sec[z]、ArcSin[z]、ArcCos[z]、ArcCsc[z]、ArcSec[z]、ArcTan[z]、ArcCot[z]、Sinh[z]、Cosh[z]、Tanh[z]、Coth[z]、Csch[z]、Sech[z]、ArcSinh[z]、ArcCosh[z]、ArcTanh[z]、ArcCoth[z]、ArcCsch[z]、ArcSech[z]。,正交多项式LegendreP[n,x],LegendreP[n,m,x]勒让德多项式ChebyshevT[n,x],ChebyshevU[n,x]切比雪夫多项式HermiteH[n,x]Hermite多项式LaguerreL[n,x]Laguerrel[n,a,x]拉盖尔多项式JacobiP[n,a,b,x]雅可比多项式,特殊函数此处我们将不给出特殊函数的具体表达式,读者可查阅相关资料。Beta[a,b],Beta[z,a,b]Bata函数及不完全Beta函数Gamma[z],Gamma[a,z]Gamma函数及不完全Gamma函数Erf[z],Erf[z0,z1]误差函数及广义误差函数BesselJ[n,z],BesselY[n,z]贝赛尔函数BesselI[n,z],BesselK[n,z]修正的贝赛尔函数ExpIntegralE[n,z],LogIntegral[z]指数积分与对数积分,数学软件包的读入方法:在讲义上的此部分,提供了一种数学软件包的读入mathematica中的方法,下面是一种更为简单的方法我们下面要读入软件包:,目录:C:\ProgramFiles\WolframResearch\Mathematica\5.0\AddOns\StandardPackages\LinearAlgebra,,,文件名:Orthogonalization.M,,执行以下的mathematica菜单:,在弹出的文件打开框中,一直找到上面的文件为止.,在此文件框中打开此文件,则mathematica并没有真正打开文件,而是返回了文件所在的路径,最后,在此返回路径的前面加上2个“<”的结果。另外,如果变换条件只有一个,可以不用集合定界符{},例如,,,expr//.rules反复对expr使用rules,直到结果不变为,,,Nest[f,x,n]函数f以x为变量,进行n次复合运算实质上,f是函数的头,即Head[f],例如,,,,,,,NestList[f,x,n]同上,但形成一个复合函数序列的集合Compose[f,g,…,h,x]函数复合,生成f[g[…h[x]]]Composition[f,g,…,h]同上,但不带有自变量ComposeList[{f,g,…,h},x]生成复合序列{x,f[x],g[f[x]],…},,,,,,,,,,,FixedPoint[f,x]对x重复f运用,直到结果不变为止FixedPointList[f,x]同上,但列出所有中间计算结果FixedPointList[f,x,SameTest->Comp]对两个连续的结果运用比较关系comp,比较结果为真时停止运算下面以利用牛顿迭代法求5开平方根为例,说明其用法,,,,FoldList[f,x,{a,b,…}]构成集合{x,f[x,a],f[f[x,a],b],…}Fold[f,x,{a,b,…}]给出函数FoldList的最后一个元素,,,Apply[f,{a,b,c,…}]对集合运用f,得到f[a,b,c,…]Apply[f,expr]对表达式的最高层应用fApply[f,expr,level]对表达式的指定层应用f,,,Map[f,expr]将函数f作用到表达式第一层的每个部件上Map[f,expr,level]将f作用到表达式第n层的每个部件上MapAll[f,expr]对表达式expr的所有部件应用fMapThread[f,{expr1,expr2,…}]对expr1及expr2的相应元素运用fMapThread[f,{expr1,expr2,…},lev]对给定层的表达式运用f,,,,,,,Scan[f,expr]依次计算对expr中的每个元素运用f的值Scan[f,expr,level]同上,但在指定层上计算,,,,Array[f,n]生成表{f[1],f[2],…,f[n]}Array[f,{n1,n2}]同上,但生成一个二维表,,,,,Seclect[expr,f]在expr中挑选出函数f为True的元素Seclect[expr,f,n]同上,但只选出前n个使f为True的元素,,,Operate[p,f[x]]算子函数,给出p[f][x]Operate[p,f[x],n]同上,但在函数的第n层应用p,,,,,,,,,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mathematica 表达式 及其 运算 规则

链接地址:https://www.zhuangpeitu.com/p-11497096.html