Mathematica教程4(2)

2018-11-21 23:07

在Mathematica中编制程序时,必须使程序中的各个部分尽可能

的独立,这样程序才便于读懂、维护和修改。确保程序各部分不相干的主要方法是设置具有一定作用域的变量。在Mathematica中有两种限制变量作用域的基本方法:模块(Module)和块(Block)。我们在书写实际程序中,模块比块更具普遍性。然而在交互式计算中需要定义作用域时,块更实用。

Module[vars,body]所要做的是把执行模块时表达式body的形

式看成Mathematica程序的“代码”。然而当“代码”中直接出现变量vats时,这些vars都将被看作局部的。Block[vats,body]并不查看表达式body的形式,而在整个计算Body的过程中,实用vars的局部值。

下例中我们根据i定义m:

ln[12]:=m=i^2 ’ Out[12]:=i

2

在计算i+m的整个过程中使用块中i的局部值:

h[13]:=BlockI(i;a),!+m]

Out[13]=a+a2

而对于下面的例子,只有直接出现在i+m中的i,才被看作局部变量:

In[14]:=Module[{i=a},i+m]

Out[14]=a+i‘

8.2.1 条件结构 我们在用计算机语言进行编程时,常用到条件语句。在Mathematica中也提供了多种设置条件的方法,并规定只有在该条件满足时才计算表达式。 下面条件结构的常用形式。 lhs:=rhsl/:test If[test,then,else] 当test为真时使用定义 如test为真计算then,反之计算else 依次计算testl,给出对应的第一个为which[test1,value1,test2,...] 真的值 expr与每一个formi相比较,给出第Switch[expr,forml,value1,form2,...] 一个相匹配的值 Switch[expr,form1, value1,form2,?,用def为系统默认值 _,def] 1.If命令

下面的test为真,故返回第一表达式的值:

ln[1]:=If [1>0,1+2,2+3] Out[1]=3 用Mathematica编程时,不可避免的要在单个或多个定义之间进行选择。单个定义的右边包含多个由If函数控制的分支,多个定义是用/;condition来表示的。运用多个定义进行编程你常能得到结构很好的程序。下面定义了一个阶跃函数,即当x>O时值为1,反之值为-1:

ln[2]:=If[x>0,1,-1] 下面运用/;condition形式分别定义阶跃函数的正数和负数部分:

ln[3]:g=1/:x>0 ln[4]:g=-1/:x<0 用“?”显示用/:condition定义的函数g的完整信息:

ln[5]:=?g Global`g g[x_]:=1/:x>O g[x_]:=-1/:x

2.Which命令

对于一般情况函数If提供一个两者择一的方法。然而,有时条件多于两个,在这种情况下可用If函数的嵌套方式来处理,但在这种情

况下使用Whitch或Switch函数将更合适。下面用Which定义具有三个条件的函数,调用这个函数:

用Switch定义一个与模的余数有关的函数:

Mod[17,3]=2,因此运用了Switch中的第三种情况:

3 符号条件

在Mathemahca中,有一种可能的情况就是你给出的条件结果既不是真也不为假。下面测试的结果既不是真也不是假,因此If的两个分支保持不变:

ln[1]:=If[x==y,a,b] Out[1]:If[x==y,a,b] 你可以给If加上第三个条件结果,这允许你测试的结果既不是真也不是假的情况下使用它:

ln[2]:=If[x==y,a,b,c] Out[2]=c 下面给出处理符号条件的函数。因x=x,故Mathematica给出结果为真:

但Mathematica在下面情况下以符号等式输出:

ln[4]:=x==y Out[4]:=x==y 除非表达式能得出真,否则都被假设为假:

ln[5]:=TrueQ[x==x] Out[5]=True ln[6]:=TrueQ[x==y] Out[6]=false 我们用“===”可直接测试两个表达式的等同性:

In[7]:x===y Out[7]:=False 一般情况下,“===”返回值为真(Truee)或假(False),而“==”为符号形式输出,表示一个符号等式。在特殊情况下可用“===”测试一个


Mathematica教程4(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:物理化学课件及考试习题 试卷 答案第6章 相平衡习题及解答

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: