资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八章 Mathematica编程语句与例题 北京交通大学8.1全局变量、局部变量、过程8.1.1全局变量在Mathematica中键入的各种命令或在Mathematica的程序语句 中, 变量被赋值后, 必须用Mathematica清除变量的命令才能使其 还原为符号的变量, 称为全局变量。察看某变量是否为全局变量, 可以键入命令: ?变量名 Global变量名说明该变量是全局变量,否则,就不是全局变量。 例如:要知道变量w是否为全局变量,可以键入: ? w 键入执行命令后,显示结果Globalww = 2 说明w是全局变量,且有数值2。8.1.2 局部变量o在Mathematica的命令或程序中出现的任何合法的变量名 符号,如果该变量名所代表的变量没有被赋值,则它就作为 数学算式中的符号参与数学的公式推导和运算;如果该变量 被赋值了,则用该变量所赋的值参与对应的数学公式推导和 运算。因此,当用户在做符号运算时使用的符号含有被赋了 值的变量名,则就会出现察觉不到的错误。为克服这种错误 ,可以在使用Mathematica的命令之前, 先用Clear 变 量1,变量2,将要使用的所有变量名做清除处理, 就可以 避免上述错误。o不同于全局变量, 称变量的赋值效果只在某一模块内有效的 变量为局部变量。8.1.3 过程在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式,它 也称为一个过程。例如:In11:=s=1;u=s+3;u*u Out11=16 Mathematica的过程可以作为Module模块命令的表达式,如果不关心局部 变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小 括号括起来的过程来定义一个函数。例如:已知有n个元素的一个数表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涉及条件选择的语句有好几种,这里介绍常用的三种 语句: 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 功能:根据条件的成立与否确定执行哪一个语句, 具体执行为:条件 成立时,执行语句1,条件不成立时,执行语句2,否则,执行语句3, 并 将语句执行结果作为If语句的值。例1:用Mathematica命令描述下面问题:先产生一个函数0,1内 的随机实数,再判断该随机数是否小于0.5, 如果小于0.5, 则将 此随机数显示出来,否则显示”*”。n解: Mathematica 命令为: In1:= p= Random; Ifp0时方程有两个实根; 当0,“two real roots“,w60,0 nIn18:= Plotfx,x,0,608.2.3 Switch 语句l命令形式:Switch表达式, 模式1,语句1,模式2,语句 2, . 模式n,语句n l功能: 先计算表达式,然后按模式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 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 3 lIn21:= f346 lOut21= 1 is the remainder on division of 346 by 3 lIn22:= f599 lOut22= 2 is the remainder on division of 599 by 38.3循环控制语句lMathematica的循环控制语句有三种语句: 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,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 +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 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 1 2 68.3.2 For 语句l命令形式:Forstat,test,incr,bodyl功能:以stat为初值,重复计算incr和body直到test为 False终止 。这里start为初始值,test为条件,incr为循 环变量修正式,body为循环体,通常由incr项控制test的 变化。l注意: 上述命令形式中的start可以是由复合表达式提 供的多个初值,如果循环体生成 Break 语句,则退出 For循环; 如果循环体生成Continue 语句,则由incr 的增量进入For语句的下一次循环。l n例11 指出语句For i=1;t=x,i*i10不满足条件i*i10-12,x2=x1-(x1- x0)*fx1/(fx1-fx0);x0=x1;x1=x2lIn29:= Nx1,12lOut29= -0.487120155928例13 编制20以内整数加法自测程序 解:In30:=For i=1,i file 时,Mathematica 把新表达式加 在文件之后,而用 expr file 时,Mathematica 清除文件中所有内容,然后把 expr 写入文件. 当用 或 向文件写入表达式时,这些表达 式一般是用输入形式,以便再将他们读入 Mathematica. 有时需要用别的形式保存表达式, 这可以通过将这些表达式包含在 OutputForm 等 格式指令中来实现.l这是按输出形式将一个表达式写入文件 tmplIn8:= l此时 tmp 文件中的表达式是输出形式lIn9:= l使用文件的最常用目的是保存 Mathematica 对象的定义,以便在随后的 Mathematica 对话中再读入它们. 算符 和 将表达式保存在文件中. 也可以用函 数 Save 按适当的形式去保存 Mathematica 对象的完整定义以便在随后 的 Mathematica 对话中执行. 写出定义 l给符号 a 指定一个值 lIn10:=lOut10=l用 Save 将a的定义写入文件lIn11:= l这是在文件中保存的定义lIn12:= l在 Mathematica 中定义一个对象时,该定义常常依赖于 前面定义的其它对象. 如果要在后面的 Mathematica 对话 中重新构造这个对象的定义,这就需要保存该定义 本身 和与它有关的其它对象的定义. 函数 Save 检查要保存的 定义,自动地保存 与它们有关的定义. 但为了不存入太多 不必要的内容,Save 不包含属性为 Protected 的符号的 定义.它认为这些符号的定义是内部给出的. 为了照顾 这些 定义,在一个新的 Mathematica 对话中读入从 Save 产 生的输出时, 必须保证对象的定义与以前的完全一致. l函数 Save 利用输出形式 Definition 和 FullDefinition,它 们显示 Mathematica 符号的定义. 有时直接用这些输出形 式是很方便的.输出形式 Definitionf 是 f 的定义序列l建立 Mathematica 输入文件时,通常文件 仅包含可直接阅读和修改的文
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号