Mathematica编程语句与例题

上传人:宝路 文档编号:48323133 上传时间:2018-07-13 格式:PPT 页数:27 大小:957.09KB
返回 下载 相关 举报
Mathematica编程语句与例题_第1页
第1页 / 共27页
Mathematica编程语句与例题_第2页
第2页 / 共27页
Mathematica编程语句与例题_第3页
第3页 / 共27页
Mathematica编程语句与例题_第4页
第4页 / 共27页
Mathematica编程语句与例题_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Mathematica编程语句与例题》由会员分享,可在线阅读,更多相关《Mathematica编程语句与例题(27页珍藏版)》请在金锄头文库上搜索。

1、 Mathematica 编程8.1全局变量、局部变量、过程8.1.1全局变量在Mathematica中键入的各种命令或在Mathematica的程序语句 中, 变量被赋值后, 必须用Mathematica清除变量的命令才能使其 还原为符号的变量, 称为全局变量。察看某变量是否为全局变量, 可以键入命令: ?变量名 Global变量名说明该变量是全局变量,否则,就不是全局变量。 例如:要知道变量w是否为全局变量,可以键入: ? w 键入执行命令后,显示结果Globalww = 2 说明w是全局变量,且有数值2。8.1.2 局部变量o 在Mathematica的命令或程序中出现的任何合法的变量名

2、 符号,如果该变量名所代表的变量没有被赋值,则它就作为 数学算式中的符号参与数学的公式推导和运算;如果该变量 被赋值了,则用该变量所赋的值参与对应的数学公式推导和 运算。因此,当用户在做符号运算时使用的符号含有被赋了 值的变量名,则就会出现察觉不到的错误。为克服这种错误 ,可以在使用Mathematica的命令之前, 先用Clear 变 量1,变量2,将要使用的所有变量名做清除处理, 就可以 避免上述错误。o 不同于全局变量, 称变量的赋值效果只在某一模块内有效的 变量为局部变量。Mathematica 中Module模块的命令为: Module变量表, 表达式 例如: 在Mathematic

3、a键入In4:= u=5; In5: = s=Moduleu, v=1, u=1; v=u+v+3 Out5= 5 In6:= Printu, “ “, v, “ “ ,s Out6= 5 v 5在Mathematica中使用局部变量很简单, 只要把涉及到的局部变量用 大括弧 括起来, 放在Module模块命令的变量表位置, 并把相 应的语句写成语句序列放在Module模块命令的表达式位置即可。例如: Mathematica中有如下命令In7:=s=Sinx;In8:=u= Cosx;In9:=Ds*u, x Out9= Cosx2-Sinx2命令中的变量s, u的值将会影响随后的命令, 如果

4、写成In10:= Modules, u, x, s=Sinx;u= Cosx; Ds*u, x Out10= Cosx$12 - Sin x$12此时命令中的变量s, u就是局部变量, 它们的值将不会影响随后的命 令。8.1.3 过程在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式,它 也称为一个过程。例如:In11:=s=1;u=s+3;u*u Out11=16 Mathematica的过程可以作为Module模块命令的表达式,如果不关心局部 变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小 括号括起来的过程来定义一个函数。例如:已知有n个元素的一个

5、数表x=a1,a2,an,定义一个计算此类数表最 大数与最小数平方差的函数,用过程来定义可以写为:In12:=gx_:=(m =Maxx;n = Minx;m*m - n*n) 如果不用小括号括起来,而是写为In13:=gx_:=m =Maxx;n = Minx;m*m-n*n 则In13定义的gx实际上是Maxx,不是数表最大数与最小数平方差函数, 应该注意过程加小括号与不加括号的区别。本例题还可以用模块来定义函数: In14:=gx_:=Modulem, n, m =Maxx;n = Minx;m*m-n*n 8.2条件控制语句lMathematica涉及条件选择的语句有好几种,这里介绍常

6、用的三种语 句: if 语句, Which 语句,Switch 语句。8.2.1 If 语句lIf 语句的一般形式为: If 条件, 语句或语句列 具体形式有 l 命令形式1:If 条件, 语句1功能:如果条件成立,则执行对应的语句1,并将语句执行结果作为If 语句的值,如果条件不成立,不执行语句1。 l 命令形式2:If 条件, 语句1, 语句2功能:根据条件的成立与否确定执行哪一个语句,具体执行为:条件 成立时,执行语句1,否则,执行语句2,并将语句执行结果作为If 语句的值。 l 命令形式3:If 条件, 语句1, 语句2, 语句3功能:根据条件的成立与否确定执行哪一个语句, 具体执行为

7、:条件成 立时,执行语句1,条件不成立时,执行语句2,否则,执行语句3, 并将语 句执行结果作为If语句的值。例1:用Mathematica命令描述下面问题:先产生一个函数0,1内的 随机实数,再判断该随机数是否小于0.5, 如果小于0.5, 则将此 随机数显示出来,否则显示”*”。n解: Mathematica 命令为: In1:= If(p=Random)0时方程有两个实根; 当 0,“two real roots“,w60,0 In18:= Plotfx,x,0,608.2.3 Switch 语句l命令形式:Switch表达式, 模式1,语句1,模式2,语句 2, . 模式n,语句n l

8、功能: 先计算表达式,然后按模式1,模式2,的顺序依 次比较与表达式结果相同的模式,找到的第一个相同的 模式,则将此模式对应的语句计算计算结果作为Switch 语句的结果。 Switch语句是根据表达式的执行结果 来选择对应的执行语句,它类似于一般计算机语言的 Case语句 例7: 用函数描述如下结果:任给一个整数x, 显示它被3除的余数 。 解: Mathematica自定义函数:lIn19:=fx_:=SwitchModx,3,0, Print“0 is the remainder on division of“ ,x ,“by 3“,1, Print“1 is the remainder

9、 on division of“ ,x ,“by 3“,2, Print“2 is the remainder on division of“ ,x ,“by 3“ lIn20:= f126 lOut20= 0 is the remainder on division of 126 by 3lIn21:= f346 lOut21= 1 is the remainder on division of 346 by 3lIn22:= f599 lOut22= 2 is the remainder on division of 599 by 38.3循环控制语句lMathematica的循环控制语句

10、有三种语句: Do 语句,For语句,While语句 。为处理有时需要中途退出循环语句的问题, Mathematica 还提供了在执 行循环语句时退出循环体的语句: l Returnexpr 退出函数所有过程和循环,返回expr值 l Break 结束本层循环l Continue 转向本层For语句或While语句的下一次循环在Mathematica的循环结构中,使用如下表示式,可以达到简洁,快速的目的. lk+ 表示赋值关系 k = k+1 , l+k 表示先处理k的值,再做赋值 k=k+1 lk- 表示赋值关系 k = k-1 l-k 表示先处理k的值,再做赋值 k=k-1 lx,y=y,

11、x 表示交换x与y 值 lx+=k 表示 x = x + k lx*=k 表示 x = x * k8.3.1 Do 语句Do 语句的一般形式为Do循环体,循环范围 具体形式有 l命令形式1:Doexpr, n 功能:循环执行n次表达式expr 。l命令形式2:Doexpr, i, imin, imax 功能:按循环变量i 为imin,imin+1,imin+2,imax循环执行imax-imin+1次表 达式expr。l命令形式3:Doexpr, i, imin, imax,d 功能:按循环变量i 为imin,imin+d,imin+2d,imin+nd,循环执行(imax-imin)/d +

12、1次表达式expr。l命令形式4:Doexpr, i, imin, imax, j, jmin, jmax 功能:对循环变量i为imin,imin+1,imin+2,imax每个值, 再按循环变量j的循 环执行表达式expr。这是通常所说的二重循环命令,类似的,可以用在Do 命令中再加循环范围的方法得到多重循环命令。例8 找出300至500之间同时能被3和11整除的自然数。n解: Mathematica 命令为: In23:= DoIfModi,13= 0 If5x+3y+z/3=100,Print“x= “,x,“ y=“,y,“ z=“,z,x,0,100,y,0,100n得解 x= 0

13、y= 25 z= 75 x= 4 y= 18 z= 78 x= 8 y= 11 z= 81 x= 12 y= 4 z= 84例10 对自然数k从1开始到10,取s=1做赋值s =s*k,并显示对应的值,直到s的值5终止。 解: In25:= s=1;Dos*=k;Prints;Ifs5,Break, k,1,10 1268.3.2 For 语句l命令形式:Forstat,test,incr,bodyl功能:以stat为初值,重复计算incr和body直到test为 False终止 。这里start为初始值,test为条件,incr为循 环变量修正式,body为循环体,通常由incr项控制tes

14、t的 变化。l注意: 上述命令形式中的start可以是由复合表达式提 供的多个初值,如果循环体生成 Break 语句,则退出 For循环; 如果循环体生成Continue 语句,则由incr 的增量进入For语句的下一次循环。l 例11 指出语句For i=1;t=x,i*i10不满足条件i*i10(-12),x2=x1-(x1- x0)*fx1/(fx1-fx0);x0=x1;x1=x2 In29:= Nx1,12 Out29= -0.487120155928例13 编制20以内整数加法自测程序 解:In30:=For i=1,i=10,i+, t=RandomInteger,0,10; s

15、=RandomInteger,0,10; Printt,“+“,s,“=“; y=Input; Whiley!=t+s, Printt,“+“,s,“=“,y,“Wong !Try again!“; Printt,“+“,s,“=“; y=Input ; Printt,“+“,s,“=“,y,“Good“ l执行结果为 3+0= 3+0=3 Good 7+3=12 Wrong!Ttry again! 7+3=10 Good例14 韦达(VieTa)在1593年首次给出了如下关于圆周率的关系式(韦达公式)n试用韦达公式来写出计算圆周率近似值的Mathematica命令。 解: n利用Mathematica自定义函数命令可以输入Mathemati

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号