资源描述
软件介绍,第2讲Mathematica的基本量,2.1数在Mathematica里将数大致分为两类,一类是基本常数,包括整数、有理数、实数和复数;另一类是系统的内部常数,包括数学、物理中常见的某些常数。这些数的概念同数学中的概念完全一样,它们的表示方法同数学中的也基本一致。但要指出的是,如果计算机字长允许的话,在Mathematica系统里,这些数可以具有任意的长度和精确值。,在这些数之间常常需要进行加、减、乘、除以及乘方等算术运算,这些算术运算的运算符在Mathematica里分别用+、-、*、/、等来表示,与计算机编程语言中的符号基本一致;还可以使用模板进行输入。模板的调出可以选择菜单“File/Palettes/3BasicInput”。,2.1.1数的表示和计算1.整数在Mathematica系统中,整数由一串连续的数字组成,数字之间不允许有空格或其他字符。在系统里可以对任意大的整数进行计算,系统将保持输入的和计算后输出的整数永远是精确的,不会将大的整数转化为浮点数形式。例如,说明:(1)乘法符号“*”可以用空格代替,但不能省略;(2)算术运算的优先顺序:先乘方,再乘除,最后是加减,可以用括号改变优先顺序;(3)同级运算的顺序依顺序从左到右进行;(4)负号用减号表示,直接写在数的前面即可,同数学习惯完全一样;(5)如果参加运算的整数都是精确数,那么运算的结果也一定是精确数,Mathematica系统决不轻易丢失信息。,2.有理数Mathematica系统中任何有理数都可用两个整数的商来表示,并且对有理数将自动化简,约去分子与分母中的公因数,最后结果是精确的。例如,3.实数(浮点数)实数在Mathematica里用浮点数表示。浮点数是指含有一个小数点的数字串,它至少包含着一位有效数字,数字串的长度可以任意。因此用浮点数来表示实数可以具有任意的精度。然而在书写时,数字串的长度总是有限位的,这样就有必要引入实数在不同精度要求下的近似记法。在Mathematica里用符号Nx,n来表示实数x具有n位精度的近似值,当n16时只取6位有效数字,当n17时则取n位有效数字。例如,说明:当整数、有理数、实数进行混合运算时,如果参加运算的数都是精确的,那么在Mathematica系统中运行的结果也一定是精确数,决不轻易丢失信息。如果其中有一些是近似数,那么运算的结果也只能是近似数,但保持尽可能高的精度,仍然不轻易丢失信息。注:(*)为Mathematica系统的注释符号,两个*号之间为注释内容,注释部分可以放在程序的任何位置。,4.复数同数学中的复数表示法一样,在Mathematica里的每一个复数也表示为z=x+Iy,其中x与y为实数,I为虚数单位,即,运算规则与数学中的规则一样。,5.数学常数最常见的数学常数有:此外,还有欧拉常数、黄金分割常数、光速常数、万有引力常数等数学、物理中常见的常数.对这类常数,Mathematica将它们设置为系统的内部常数,用到时,可以利用Help命令到系统中查询。,2.1.2数的转换有时需要将不同类型的数进行转换。例如,将有理数转换为实数,将精确数转换为近似数等。前面在实数举例中用到的函数N就是这种转换函数之一。下面列出的是最常用的两个转换函数:Nx将x转换为实数形式Nx,n将x转换为最多具n个数字精度的近似实数Rationalizex给出x的近似有理数Rationalizex,dx给出误差在dx内x的近似有理数,【例1-7】数的转换。N1/3N1/3,20Rationalize%RationalizeNSqrt2RationalizeNSqrt2,10(-7)说明:符号%的含义如下:%表示上一次输出的结果%表示倒数第2次输出的结果%(共n个)表示倒数第n次输出的结果%n表示以n为序号的那次输出结果,2.1.3数的输出形式在Mathematica计算中,常用函数N将符号运算的结果转换为数值结果,或将有理数的准确值转换为近似数。如果参与计算的数都是准确值,则计算结果将按准确值的方式输出;如果参与计算的数有近似数,则计算的结果必是近似数,系统将会根据数值类型与数值大小给出合理的输出形式。,2.1.3数的输出形式如果你对输出形式有精度方面的特殊要求,则可利用下面科学记数形式进行输出。ScientificForm表达式以科学记数形式输出表达式例如,2.2变量在Mathematica系统中,变量名与函数名总是用标识符来书写的。2.2.1标识符标识符是由英文字母开头的字母数字串。字母与数字的长度可以不限,但不能包含空格或标点符号。例如a,bce,a12,Cij,ArcSinh等均为合法的标识符,而2ab,x*y,a12,Arc-Sinh等均为不合法的标识符。,2.2.2变量命名变量命名即用标识符给变量命名,给变量用标识符命名时必须严格依照标识符的有关规定进行。给函数命名时,除了要遵守标识符的规定外,还要遵守函数命名的一些规则,这将在下一节作介绍。标识符除了可给变量命名和给函数命名外,还可有别的用途,例如可以用它来表示计算中的单位:1.5Kg+2.3Kg3.8Kg,2.2.3变量赋值在Mathematica中运算符“=”的作用是赋值。常常用它来给变量赋一个值,这个值可以是一个数值、一个数组、一个表达式,甚至一个图形。例如x=2+3x=y=3变量x一旦被赋值,这个值将长期保留,直到它被清除或被重新赋值为止。保留期间,无论在何处使用这个变量x,它将被数值3代替。,2.2.3变量赋值变量x一旦被赋值,这个值将长期保留,直到它被清除或被重新赋值为止。例如p3=x3+3*x24*x+5在以后的运算中凡是用到p3的地方,也就相当于在那里写上了这个多项式。对于已经赋值的变量,当不再使用而且想要清除掉时,可随时用“=.”清除掉。在这个命令执行后,变量的值就不存在了。应当特别注意随时将以后不再使用的变量的值清除掉,以免影响后面某些计算结果的正确性。,2.2.4变量替换在数学运算中,经常需要将数学式子中的某些变量替换为另外的一些变量,Mathematica中将这种替换机制叫做变换规则,用记号“/.”来完成。例如p3=5-4y+3y2+y3p3/.y-t+1p3/.y-2对于多个变量的式子,这种替换同样可以进行。例如f=x2+xy+y2f/.x-u+1,y-v-1,2.3表在Mathematica中,常常将一些有关联的元素组合成一个整体,并将其称为表(List)。表中的元素可以是数,也可以是函数,还可以是表达式等;同一表中的元素可以有不同的数据类型。表常被用来表示数学中的向量、矩阵或集合。,2.3.1表的描述表在形式上是用花括号括起来的一组元素,元素之间用逗号分隔。例如1,23,0.5,x,Sint3,4,1,2,5,2.3.1表的描述表的元素又称为表的分量,表中分量一般表示为:tn或Partt,n表示表t中的第n个元素t-n或Partt,-n表示表t中的倒数第n个元素Firstt表示表t中的第一个元素Lastt表示表t中的最后一个元素tn1,n2,或Partt,n1,n2表示由表t中第n1,n2,元素组成的表ti,j表示表t中的第i个子表的第j个元素,【例1-8】已知t1=3,4,5,6,7,8,9,则有:t13t1-3Firstt1Lastt1t12,4,5,7,2.3.2表的建立当表中的元素较少时,可以采用直接输入的形式:表变量名=元素1,元素2,来生成表,即在给出表名的同时又给出了表中的元素,但在更多的时候是要利用建表函数Table、Range和Array来生成。,1.循环描述在利用建表函数时常常要用到循环描述。(1)循环描述的一般形式是:循环变量,循环初值,循环终值,步长其执行过程是:循环变量从初值开始,按照所给步长逐步递增(或递减),直至达到或超过终值的界限为止。循环变量、初值、终值和步长可为整数、有理数和实数。,1.循环描述常见的几种循环描述如下:j,min,max,stepj从min开始到max,按步长step增加j,min,maxj,max说明:当步长为1时可省略不写,初值min为1时可省略不写max重复max次,除了上面的单重循环外,有时还要用到多重循环。多重循环是在写循环描述的地方连续写几个上面形式的循环描述,它们之间用逗号分开。例如i,imin,imax,j,jmin,jmax表示一个关于变量i与j的二重循环描述,它表示i从imin开始到imax,且对每一个j值,j从jmin到jmax。,2.建表函数利用建表函数来生成表是十分方便的。(1)数值表建表函数Range,格式如下:Range正整数n生成表1,2,3,nRangem,n生成表m,m+1,m+2,n(mn)Rangem,n,d从m开始按步长d递增,直到n的界限为止【例1-9】建数值表。Range3,9Range1,2,0.31,(2)通项表建表函数Table,格式如下:Tablefi,i,min,max,step说明:依照通项fi的规律,i从min到max,step为步长,当步长为1时省略。Tablef,max说明:依照通项f的规律,给出max个元素的表。Tablefij,i,imin,imax,j,jmin,jmax,说明:生成一个多维表。,【例1-10】建通项表。Tablei2,i,1,7Table2n,n,3,12,2Tablex+1,5TablePrimek,k,10式中,Primek为产生第k个素数的函数。TableRandom,3式中,Random为产生一个0与1之间随机数的函数。TableSinx,x,0,1,0.3Tablem+n,m,3,n,5,(3)特殊表建表函数Array,格式如下:Array函数f,整数nArray函数f,n1,n2,【例1-11】建特殊表。ArraySin,4N%Arraya,2,3其中第一句等价于TableSinn,n,4第三句等价于Tableai,j,i,2,j,3,说明:凡能用函数Range与函数Array生成的表,都能用函数Table生成,Mathematica系统提供函数Range与Array的目的是为了使用户有更多的方便与选择余地,我们的重点是对函数Table的掌握与使用上。,2.3.3表的运算表的运算主要包括表的结构运算与表的集合运算两部分。1.表的结构运算在Mathematica系统中,当一个表t与一个标量a作四则运算时,表示将a与t中的每一个元素作一次运算,运算的结果仍然是一个表。当两个表t1与t2进行加减运算时,首先要求t1与t2的长度相同(即t1与t2中元素的个数一样多),然后将t1与t2对应元素相加减即可,运算的结果仍是一个表。,两个表的相乘、相除以及更一般的运算,我们将放到线性代数中去介绍。下面列出几个表的常见结构运算函数。Joint1,t2,将表tl,t2,连成一个表Uniont1,t2,合并几个表,去掉重复元素后对元素排序Sortt将表t中的元素排序Uniont去掉表中重复元素后对元素排序,两个表的相乘、相除以及更一般的运算,我们将放到线性代数中去介绍。下面列出几个表的常见结构运算函数。Reverset将表t中元素的顺序倒过来RotateLiftt,n将表t中元素向左转移n个位置RotateRightt,n将表t中元素向右转移n个位置ApplyPlus,t将表t中所有元素加在一起ApplyTimes,t将表t中所有元素乘在一起,【例1-12】已知t1=1,3,5,7,2,6,10;t2=Table2n-1,n,1,7,则Joint1,t2Uniont1,t2Sortt1Reverset1RotateLeftt2,3RotateRightt2,3ApplyPlus,t1ApplyTimes,t1,2.表的集合运算数学概念中的集合“并”、“交”、“补”运算,引伸到Mathematica里,是定义在几个表之间的“并”、“交”、“补”的运算,运算结果仍为表。其函数如下:Uniont1,t2,若干表之“并”,由表t1,t2,中所有不同元素组成Intersectiont1,t2,若干表的“交”,由表t1,t2,中公共元素组成Complementt1,t2表t1与表t2的“补”。由t1中有而t2中没有的元素组成,【例1-13】已知t1=1,3,5,7,2,6,10;t2=1,3,5,7,9,11,13,则Uniont1,t2Intersectiont1,t2Complementt1,t2Complementt2,t1,2.4函数Mathematica中的函数可以分为两大类:一类是在数学中常见的并且给出了明确定义的函数,比如三角函数、反三角函数等,可称之为数学函数;另一类是在Mathematica里给出定义的,具有计算和操作性质方面的函数,比如画图函数、方程求根函数等,可称之为操作函数。数学函数又可大致分为初等函数和非初等函数两种,下面将分别作简单介绍。,2.4.1基本初等函数与初等函数1.基本初等函数在Mathematica库函数里将它们作为最基本的函数供用户使用。,2.初等函数将常量、变量与基本初等函数经过有限次的四则运算以及有限次的函数复合(函数套函数),并且能用一个解析式子表示的函数,称为初等函数。例如:,均是初等函数;,所确定的函数均不是初等函数。显然,初等函数里包含了全部基本初等函数。在自然科学与工程技术中最常见的函数是初等函数,它占有十分重要的地位。,2.4.2非初等函数与特殊函数凡不满足初等函数定义要求的函数,均可称为非初等函数。比如上面所列举的后3个函数便是非初等函数,又如数学分析中讲过的Gamma函数(x)与Beta函数B(p,q),也都不是初等函数,再如由下面微分方程x2y+xy+(x2v2)y=0与(1x2)y2xy+n(n+1)y=0的解所确定的函数分别称为Bessel函数与Legender函数,也都不是初等函数。因此都可将它们归属到非初等函数中。,有些非初等函数,例如Bessel函数、Legender函数,由于它们在数学物理问题中具有特殊的意义,又将它们从非初等函数中划分出一小类,叫做特殊函数类。大致弄清初等函数与非初等函数的界限是必要的,因为它涉及到下面章节里一些问题的结果。比如某个不定积分是否可积,某个常微分方程是否有解等,对于这些问题的明确回答,将会起到关键性的作用。,2.4.3系统操作函数与运算函数由于处理和求解数学问题的需要,在Mathematica里专门设计了一大批具有求解和操作性质方面的函数。比如后面第2章中的各种绘图函数,第3章中的各种符号运算函数,第4章中的各种数值计算函数等,都可将它们归属到操作或运算函数类中。这类操作运算函数同前面介绍过的数学函数有着明显的区别,数学函数常被作为处理的对象,而操作运算函数常是处理的手段。,在一些计算机高级语言中,我们还常看到阶乘函数、取整函数、取余函数、随机函数等,也都是为了处理这些数学问题的需要而专门设计的,因此可以将它们归属到系统的运算函数类中,然而根据不同的需要,有时系统又将它们放入到数学函数类中。下面列出的是几个最常见的这类函数:,2.4.4函数名的书写规则通过上面的举例读者容易看到,在Mathematica中函数名的书写规则可以归纳如下:(1)函数名必须以大写字母开头,后面的字母小写,例如Sin,Tan等。当函数名可分成几个段时,每个段的开头字母都要大写,其后小写,例如ArcTan,FindRoot等。注:第8章介绍的自定义函数名的开头字母不必大写。(2)函数名是一个字符串,中间不允许有空格。,(3)函数中的参数表是用方括号括起来,而不是用圆括号,这一点与数学习惯写法很不一致,希望特别注意。参数表用方括号而不用圆括号是为了避免在数学中用圆括号有时的多义性引起的混淆例如k(z+y)的含义是什么?代表常数k与变量x+y相乘?或是代表以x+y为变量的一个二元函数k(x+y)?如果写成kx+y,那么可以肯定它代表Mathematica中的某一个函数。,(4)有多个参数的函数,参数之间用逗号隔开。【例1-13】在、e三个实数之中求出最小者:MinSqrt7,Pi,E容易看到,函数名书写的上述规定必须首先符合标识符规定的要求,即所有的函数名也总是用标识符来书写的。,2.4.5表达式的初步描述前面几节的讨论中已经涉及到表达式的概念,今后各章的介绍里还将继续涉及这一概念。在Mathematica里处理问题的任何一个工具,任何一个被处理的对象,以及任何一个完整的输入都将是表达式,可以说,在Mathematica里无处不遇到它。然而要给表达式下一个明确的定义却是十分困难的。为了后面的需要,我们不妨先给表达式一个初步的描述。,表达式可以分为两类,一类是简单表达式,另一类是复杂表达式。简单表达式没有内部结构,不能再分解为更简单的成分,例如数、变量名、字符串等。复杂表达式是具有一定结构的,能够分解为一些简单表达式的组合,例如a+b,c*Sinx等。因此可以将表达式初步描述如下:表达式是由常量、变量、函数、命令、运算符、标点以及括号按一定规则组成的实体。如表1-2中给出的几个例子就是常见的表达式。,
展开阅读全文