📄 8_2_1.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.math.sjtu.edu.cn/mathematica教程/8.2.1.htm -->
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2802" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY background=8_2_1.files/0532.jpg topMargin=0>
<TABLE borderColor=#c0c0c0 borderColorDark=#008080 width="100%" bgColor=#c0c0c0
borderColorLight=#c0c0c0 background=8_2_1.files/0713.jpg border=1>
<TBODY>
<TR>
<TD width="100%"><B><FONT color=#ff0000>8.2.1
条件结构
<A href="http://www.math.sjtu.edu.cn/mathematica教程/index.htm"><IMG
height=61 src="8_2_1.files/0009.gif" width=65 border=0></A></FONT></B>
</TD></TR></TBODY></TABLE>
<P style="LINE-HEIGHT: 150%"><FONT color=#808000 size=2>
我们在用计算机语言进行编程时,常用到条件语句。在Mathematica中也提供了多种设置条件的方法,并规定只有在该条件满足时才计算表达式。</FONT></P>
<P><FONT color=#0000ff size=2>下面条件结构的常用形式。</FONT></P>
<DIV align=center>
<CENTER>
<TABLE borderColorDark=#ffffff width=661 borderColorLight=#ff00ff
background=8_2_1.files/0522.gif border=1>
<TBODY>
<TR>
<TD width=335>
<P><FONT color=#0000ff size=2>lhs:=rhsl/:test</FONT></P></TD>
<TD width=310>
<P><FONT color=#0000ff size=2>当test为真时使用定义</FONT></P></TD></TR>
<TR>
<TD width=335>
<P><FONT color=#0000ff size=2>If[test,then,else]</FONT></P></TD>
<TD width=310>
<P><FONT color=#0000ff size=2>如test为真计算then,反之计算else</FONT></P></TD></TR>
<TR>
<TD width=335>
<P><FONT color=#0000ff size=2>which[test1,value1,test2,...]</FONT></P></TD>
<TD width=310>
<P><FONT color=#0000ff size=2>依次计算testl,给出对应的第一个为真的值</FONT></P></TD></TR>
<TR>
<TD width=335>
<P><FONT color=#0000ff
size=2>Switch[expr,forml,value1,form2,...]</FONT></P></TD>
<TD width=310>
<P><FONT color=#0000ff size=2>expr与每一个formi相比较,给出第一个相匹配的值</FONT></P></TD></TR>
<TR>
<TD width=335>
<P><FONT color=#0000ff size=2>Switch[expr,form1,
value1,form2,…,_,def]</FONT></P></TD>
<TD width=310>
<P><FONT color=#0000ff
size=2>用def为系统默认值</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV><FONT
color=#0000ff size=3><FONT color=#000080>
<P><B>1.If命令</B></P></FONT></FONT>
<P><FONT color=#808000 size=2>下面的test为真,故返回第一表达式的值:</FONT></P><FONT
color=#0000ff size=3><B><FONT size=2>
<DIV align=center>
<CENTER>
<TABLE width="56%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><FONT color=#0000ff size=3><B><FONT
size=2>ln[1]:=If [1>0,1+2,2+3]</FONT></B></FONT>
<P><FONT color=#0000ff size=3><B><FONT
size=2>Out[1]=3</FONT></B></FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></FONT></B></FONT>
<P style="LINE-HEIGHT: 150%" align=justify><FONT color=#008000
size=2>用Mathematica编程时,不可避免的要在单个或多个定义之间进行选择。单个定义的右边包含多个由If函数控制的分支,多个定义是用/;condition来表示的。运用多个定义进行编程你常能得到结构很好的程序。下面定义了一个阶跃函数,即当x>O时值为1,反之值为-1:</FONT>
<B><FONT color=#000000
size=3> </FONT></P>
<DIV align=center>
<CENTER>
<TABLE width="45%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><B><FONT color=#000000
size=2>ln[2]:=If[x>0,1,-1]</FONT></B></TD></TR></TBODY></TABLE></CENTER></DIV></B>
<P><FONT color=#008000 size=2>下面运用/;condition形式分别定义阶跃函数的正数和负数部分:</FONT><FONT
color=#0000ff size=3> </FONT> <B></P>
<DIV align=center>
<CENTER>
<TABLE borderColor=#ffffff width="48%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><B><FONT
size=3>ln[3]:g=1/:x>0</FONT></B>
<P><B><FONT size=3>ln[4]:g=-1/:x<0
</FONT></B></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#000000 size=3> </FONT></B><FONT color=#008000
size=2>用“?”显示用/:condition定义的函数g的完整信息:</FONT></P>
<DIV align=center>
<CENTER>
<TABLE borderColor=#ffffff height=77 width="48%" border=1>
<TBODY>
<TR><B>
<TD width="100%" bgColor=#ffffff height=71><FONT color=#0000ff
size=3><B><FONT color=#000000 size=3>
<P style="LINE-HEIGHT: 100%">ln[5]:=?g</P>
<P style="LINE-HEIGHT: 100%">Global`g</P>
<P style="LINE-HEIGHT: 100%">g[x_]:=1/:x>O</P>
<P
style="LINE-HEIGHT: 100%">g[x_]:=-1/:x<O</P></FONT></B></FONT></TD></B></TR></TBODY></TABLE></CENTER></DIV><FONT
color=#008000 size=3></FONT>
<P style="LINE-HEIGHT: 150%"><FONT color=#008000
size=2>我们用函数If时,还可以用if(test,expr)结构,即当test真时,计算表达式expr,表达式expr的值就是整个If结构的值,反之返回空值。</FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT color=#0000ff size=3><FONT color=#000080
size=3><B>2.Which命令</B></P></FONT></FONT>
<P style="LINE-HEIGHT: 150%"><FONT color=#008000 size=2>
对于一般情况函数If提供一个两者择一的方法。然而,有时条件多于两个,在这种情况下可用If函数的嵌套方式来处理,但在这种情况下使用Whitch或Switch函数将更合适。下面用Which定义具有三个条件的函数,调用这个函数:</FONT></P><FONT
color=#008000 size=3><FONT color=#0000ff size=3><B><FONT size=2>
<P align=center><IMG height=159 src="8_2_1.files/Image148.gif"
width=441></P></FONT></B><FONT color=#008000 size=2>
<P></FONT></FONT></FONT><FONT color=#008000
size=2>用Switch定义一个与模的余数有关的函数:</FONT></P><FONT color=#0000ff size=3><FONT
color=#008000 size=3><FONT lang=ZH-CN face=宋体 size=2>
<P align=center><IMG height=159 src="8_2_1.files/Image149.gif"
width=441></P></FONT></FONT></FONT>
<P><FONT color=#808000 size=2>Mod[17,3]=2,因此运用了Switch中的第三种情况:</FONT></P><FONT
color=#0000ff size=3><FONT color=#008000 size=3><FONT color=#000080 size=3>
<P><B>3 符号条件</B></P></FONT><FONT size=2>
<P style="LINE-HEIGHT: 150%"></FONT></FONT></FONT><FONT color=#008000
size=2>在Mathemahca中,有一种可能的情况就是你给出的条件结果既不是真也不为假。下面测试的结果既不是真也不是假,因此If的两个分支保持不变:</FONT></P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><FONT color=#0000ff size=3>
<P><B><FONT size=3>ln[1]:=If[x==y,a,b]</P>
<P>Out[1]:If[x==y,a,b]</P></FONT></B></FONT></TD></TR></TBODY></TABLE></CENTER></DIV><FONT
color=#0000ff size=3>
<P></FONT><FONT color=#008000
size=2>你可以给If加上第三个条件结果,这允许你测试的结果既不是真也不是假的情况下使用它:</FONT></P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><FONT color=#0000ff size=3><B><FONT
size=2>
<P>ln[2]:=If[x==y,a,b,c]</P>
<P>Out[2]=c</FONT></B> </P></FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000 size=2>下面给出处理符号条件的函数。因x=x,故Mathematica给出结果为真:</FONT></P>
<P><FONT color=#008000 size=2>但Mathematica在下面情况下以符号等式输出: </FONT></P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><FONT color=#0000ff size=3><B><FONT
size=2>
<P><FONT color=#008000 size=2>ln[4]:=x==y </FONT></P>
<P><FONT color=#008000 size=2>Out[4]:=x==y
</FONT></P></FONT></B></FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000 size=2>除非表达式能得出真,否则都被假设为假: </FONT></P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><FONT color=#0000ff size=3><B><FONT
size=2></FONT></B></FONT><B>
<P><FONT color=#008000 size=2>ln[5]:=TrueQ[x==x] </FONT></P>
<P><FONT color=#008000 size=2>Out[5]=True </FONT></P>
<P><FONT color=#008000 size=2>ln[6]:=TrueQ[x==y] </FONT></P>
<P><FONT color=#008000 size=2>Out[6]=false
</FONT></P></B></TD></TR></TBODY></TABLE></CENTER></DIV><B></B>
<P><FONT color=#008000 size=2>我们用“===”可直接测试两个表达式的等同性:</FONT> </P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff><B>
<P><FONT color=#008000 size=2>In[7]:x===y </FONT></P>
<P><FONT color=#008000 size=2>Out[7]:=False
</FONT></P></B></TD></TR></TBODY></TABLE></CENTER></DIV>
<P style="LINE-HEIGHT: 150%"><FONT color=#008000
size=2>一般情况下,“===”返回值为真(Truee)或假(False),而“==”为符号形式输出,表示一个符号等式。在特殊情况下可用“===”测试一个表达式的结构,而用“==”测试数学上的等同性。</FONT><FONT
color=#000080 size=2>下例用“===”来测试表达式的结构: </FONT></P>
<P><FONT color=#0000ff size=2>下面给出一个无用结果:</FONT> </P>
<P style="LINE-HEIGHT: 150%"><FONT color=#008000
size=2>在建立条件时,你常需要运用组合条件,如testl&&test2&&…。对于这些组合条件,如果其中有一个为假,则最后结果为假。,Mathematica依次对test进行计算,直到其中有一个为假为止。</FONT></P>
<P><FONT color=#000080 size=3><B>4.是逻辑表达式的运算形式。</B></FONT></P>
<P><FONT color=#008000 size=2>逻辑表达式 </FONT></P>
<DIV align=center>
<CENTER>
<TABLE width=499 bgColor=#ffffff border=1>
<TBODY>
<TR>
<TD width=263>
<P><FONT color=#0000ff size=2>expr1&&expr2&&expr3
</FONT></P></TD>
<TD width=220>
<P><FONT color=#0000ff size=2>计算expri,直到其中有一个为假为止 </FONT></P></TD></TR>
<TR>
<TD width=263>
<P><FONT color=#0000ff size=2>exprl||expr2||expr3 </FONT></P></TD>
<TD width=220>
<P><FONT color=#0000ff size=2>计算expri,直到其中有一个为真为止
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000 size=2>下面的函数包括两个组合条件:</FONT></P>
<P align=center><B><FONT color=#000000
size=2>In[l0]:=t[x_]:=(x!=0&&1/x<3) </FONT></P></B>
<P><FONT color=#008000 size=2>对这两个测试条件进行计算,</FONT><FONT color=#008000
size=2>下面的第一次测试得出为假,因此不进行第二个条件的测试,第二测试结果可能为1或0,因此</FONT> </P>
<P><FONT color=#008000 size=2>输出结果为假:</FONT> </P>
<DIV align=center>
<CENTER>
<TABLE width="53%" border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#ffffff>
<P><B><FONT color=#008000 size=2>ln[12]:=t[0] </FONT></P>
<P><FONT color=#008000 size=2>Out[12]=False
</FONT></P></B></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000
size=2> Mathematica处理逻辑表达式的方法允许你组合一系列的测试条件,且只有当前面条件满足时才处理后面的条件。</FONT> </P><FONT
color=#0000ff size=3>
<P align=right><A
href="http://www.math.sjtu.edu.cn/mathematica教程/8.1.1.htm"><IMG height=15
src="8_2_1.files/0171.gif" width=20 border=0></A> <A
href="http://www.math.sjtu.edu.cn/mathematica教程/8.3.1.htm"><IMG height=15
src="8_2_1.files/0173.gif" width=20 border=0></A></P></FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -