资源描述:
《BMathematica编程语句与例题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章Mathematica编程语句与例题北京交通大学8.1全局变量、局部变量、过程8.1.1全局变量在Mathematica中键入的各种命令或在Mathematica的程序语句中,变量被赋值后,必须用Mathematica清除变量的命令才能使其还原为符号的变量,称为全局变量。察看某变量是否为全局变量,可以键入命令:?变量名Global`变量名…说明该变量是全局变量,否则,就不是全局变量。例如:要知道变量w是否为全局变量,可以键入:?w键入执行命令后,显示结果Global`ww=2说明w是全局变量,且有数值2。8.1.2局部变量在Mathematic
2、a的命令或程序中出现的任何合法的变量名符号,如果该变量名所代表的变量没有被赋值,则它就作为数学算式中的符号参与数学的公式推导和运算;如果该变量被赋值了,则用该变量所赋的值参与对应的数学公式推导和运算。因此,当用户在做符号运算时使用的符号含有被赋了值的变量名,则就会出现察觉不到的错误。为克服这种错误,可以在使用Mathematica的命令之前,先用Clear[变量1,变量2,…]将要使用的所有变量名做清除处理,就可以避免上述错误。不同于全局变量,称变量的赋值效果只在某一模块内有效的变量为局部变量。Mathematica中Module模块的命令为:Mod
3、ule[{变量表},表达式]例如:在Mathematica键入In[4]:=u=5;In[5]:=s=Module[{u,v=1},u=1;v=u+v+3]Out[5]=5In[6]:=Print[u,"",v,"",s]Out[6]=5v5在Mathematica中使用局部变量很简单,只要把涉及到的局部变量用大括弧{}括起来,放在Module模块命令的{变量表}位置,并把相应的语句写成语句序列放在Module模块命令的表达式位置即可。例如:Mathematica中有如下命令In[7]:=s=Sin[x];In[8]:=u=Cos[x];In[9]:
4、=D[s*u,x]Out[9]=Cos2[x]-Sin2[x]命令中的变量s,u的值将会影响随后的命令,如果写成In[10]:=Module[{s,u,x},s=Sin[x];u=Cos[x];D[s*u,x]]Out[10]=Cos2[x$1]-Sin2[x$1]此时命令中的变量s,u就是局部变量,它们的值将不会影响随后的命令。8.1.3过程在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式,它也称为一个过程。例如:In[11]:=s=1;u=s+3;u*uOut[11]=16★Mathematica的过程可以作为Module
5、模块命令的表达式,如果不关心局部变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小括号括起来的过程来定义一个函数。例如:已知有n个元素的一个数表x={a1,a2,…,an},定义一个计算此类数表最大数与最小数平方差的函数,用过程来定义可以写为:In[12]:=g[x_]:=(m=Max[x];n=Min[x];m*m-n*n)如果不用小括号括起来,而是写为In[13]:=g[x_]:=m=Max[x];n=Min[x];m*m-n*n则In[13]定义的g[x]实际上是Max[x],不是数表最大数与最小数平方差函数,应该注意过程加小括
6、号与不加括号的区别。本例题还可以用模块来定义函数:In[14]:=g[x_]:=Module[{m,n},m=Max[x];n=Min[x];m*m-n*n]8.2条件控制语句Mathematica涉及条件选择的语句有好几种,这里介绍常用的三种语句:if语句,Which语句,Switch语句。8.2.1If语句If语句的一般形式为:If[条件,语句或语句列]具体形式有命令形式1:If[条件,语句1]功能:如果条件成立,则执行对应的语句1,并将语句执行结果作为If语句的值,如果条件不成立,不执行语句1。命令形式2:If[条件,语句1,语句2]功能:根据
7、条件的成立与否确定执行哪一个语句,具体执行为:条件成立时,执行语句1,否则,执行语句2,并将语句执行结果作为If语句的值。命令形式3:If[条件,语句1,语句2,语句3]功能:根据条件的成立与否确定执行哪一个语句,具体执行为:条件成立时,执行语句1,条件不成立时,执行语句2,否则,执行语句3,并将语句执行结果作为If语句的值。例1:用Mathematica命令描述下面问题:先产生一个函数[0,1]内的随机实数,再判断该随机数是否小于0.5,如果小于0.5,则将此随机数显示出来,否则显示”***”。解:Mathematica命令为:In[1]:=p=R
8、andom[];If[p<0.5,p,“***”]Out[1]=0.202857In[2]:=If[(p=R