资源描述:
《mathematica 程序及编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章程序与编程10.1顺序语句在Mathematica中的顺序语句,就是复合表达式,亦即一串用分号隔开的表达式序列。10.2循环语句在Mathematica中有3种描述循环的语句,叙述如下。For[]While[]Do[]10.2.1For语句For循环语句的一般形式为:For[循环初值e1,终止条件e2,循环变量修改值e3,循环体e4]第11页共11页10.2.2While语句While循环语句的一般形式为:While[条件e1,循环体e2]第11页共11页10.2.3Do语句Do循环语句的一般形式为:Do[循环体e1,{循环范围e
2、2}]Zhouer10.3条件语句在Mathematica中提供有3种描述条件分支结构的语句,它们是:If[]Which[]Switch[]1.If语句If语句是最为常用的条件分支结构语句,它的一般形式是:If[逻辑表达式e,表达式s]它的具体形式有:If[逻辑表达式e,表达式s1]第11页共11页当e的值为真(成立)时,就执行s1一次,s1的值就是整个If结构的值,否则若e的值为假时,那么返回Null(没有结果显示)。If[逻辑表达式e,表达式s1,表达式s2]当e的值为真时,执行s1,并将s1的值作为整个结构的值,否则,执行s2,并将
3、s2的值作为整个结构的值。If[逻辑表达式e,表达式s1,表达式s2,表达式s3]当e的值为真时,执行s1,当e的值为假时,执行s2;当e的值不能判定为真或为假时执行s3,并将三者之一的结果作为整个If结构的值。2.Which语句Which语句的一般形式是:第11页共11页3.Switch语句Switch语句的一般形式是:10.4跳转语旬1.Return语句第11页共11页2.Goto语句3.Break和Continue语句第11页共11页10.5输入和输出在编程中经常要用到信息的输入输出,下面介绍常用的输入输出函数。10.5.1输入1.
4、等待键盘输入(交互式输入)2.调入一个文件如果需要输入的信息是大量的函数表达式等情况时,可以预先建立一个存放这些表达式的文件,并且取好相应的文件名,当需要这些信息时,直接调用这个文件即可,调用的格式如下:3.从文件读入数据如果需要输入的信息是大量的数据(例如大型矩阵)时,可以预先建立一个存放这些数据的文件,并且取好数据文件名,当需要这些数据时,直接从这个文件中读人数据即可,其调用的格式如下:第11页共11页Note:输入图文声像等信息。10.5.2输出1.屏幕输出系统的基本屏幕输出函数是Print,它的使用格式是:Note:不留空格,输出
5、完毕自动换行。强制换行插入""。2.文件输出第11页共11页10.6全局变量与局部变量本章开头我们已经强调指出,在编写Mathematica程序时不必预先声明变量的类型,用户所使用的变量自然都是全局变量,但这样做会隐藏着很多危险,一是常因忘记自己使用过的变量从而导致发生错误;二是调用他人编写的程序时,更难弄情哪些变量已经用过。尤其是在编写供别人使用的程序时,在程序内部更应使用局部变量而不是全局变量,因此有必要引入建立局部变量的方法。下面来介绍使用局部变量的一种简单方法,就是使用模块结构来建立并使用局部变量,其格式如下:10.7编程举例
6、第11页共11页Clear[f,x,g,x0]f[x_]:=x^5-5*x+1;g[x_]:=x-f[x]/f'[x];x0=0;n=10;For[i=1,i≤n,i++,x0=N[g[x0]]];Print[i,"",x0]f[x_,y_]:=2x^2+3y^2;x0=1;y0=1;z0=f[x0,y0];a=-3;b=3;g1=Plot3D[f[x,y],{x,a,b},{y,a,b}];fx=D[f[x,y],x]/.{x->x0,y->y0};fy=D[f[x,y],y]/.{x->x0,y->y0};p[x_,y_]:=z0+f
7、x(x-x0)+fy(y-y0);g2=Plot3D[p[x,y],{x,a,b},{y,a,b}];xx[t_]:=x0+fx*t;yy[t_]:=y0+fy*t;第11页共11页zz[t_]:=z0-t;g3=ParametricPlot3D[{xx[t],yy[t],zz[t]},{t,-0.5,0.0}];Show[g1,g2,g3,ViewPoint->{-1.2,-1.0,2.0}]练习:验证哥德巴赫猜想。即任何一个大于或者等于4的偶数均可分解为两个素数之和。试写出函数Goldbach[n]要求输出所有的分解式。例如:当调用G
8、oldbach[10]后,输出为:3+75+5Goldbach[n_]:=Module[{k},For[k=2,k<=n/2,k++,If[PrimeQ[k]&&PrimeQ[n-k],Pri