⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8_3_1.htm

📁 一本介绍mathmeitica的教材
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.math.sjtu.edu.cn/mathematica教程/8.3.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_3_1.files/0532.jpg topMargin=0>
<TABLE borderColor=#c0c0c0 borderColorDark=#008080 width="102%" bgColor=#c0c0c0 
borderColorLight=#c0c0c0 background=8_3_1.files/0713.jpg border=1>
  <TBODY>
  <TR>
    <TD width="100%"><B><FONT color=#ff0000>8.3 
      循环结构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <A href="http://www.math.sjtu.edu.cn/mathematica教程/index.htm"><IMG 
      height=61 src="8_3_1.files/0009.gif" width=65 
  border=0></A></FONT></B></TD></TR></TBODY></TABLE><FONT size=2>
<P style="LINE-HEIGHT: 150%"></FONT><FONT color=#008000 size=3>&nbsp; 
</FONT><FONT color=#008000 size=2>&nbsp;&nbsp; 
Mathematica程序的执行包括对一系列Mathematica表达式的计算。对简单程序, 
表达式的计算可用分号“;”来隔开,然后一个接一个地进行计算。然而,有时你需要对同一表达式进行多次计算,即循环计算。</FONT></P><B>
<P><FONT color=#000080 size=3>1 Do循环结构 </FONT></P></B><FONT color=#0000ff 
size=3>
<P>简单地Do循环结构形式: </P>
<DIV align=center>
<CENTER>
<TABLE width=573 border=1>
  <TBODY>
  <TR>
    <TD width=224 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>Do[expr,{i,imax}] </FONT></P></TD>
    <TD width=333 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>循环计算expr,以步长1,i从1增加到imax </FONT></P></TD></TR>
  <TR>
    <TD width=224 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>Do[expr,{i,imin,imax,di}] </FONT></P></TD>
    <TD width=333 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>循环计算expr,以步长di,i从imin增加到imax 
  </FONT></P></TD></TR>
  <TR>
    <TD width=224 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>Do[expr,{n}] </FONT></P></TD>
    <TD width=333 background=8_3_1.files/0522.gif>
      <P><FONT color=#0000ff size=3>循环计算expr n次 
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></FONT><FONT 
size=2></FONT><FONT color=#000080 size=3>
<P>计算Print[i+i^2],i从1增加到3:</P></FONT><FONT size=2>
<P align=center><IMG height=157 src="8_3_1.files/Image156.gif" width=391></P>
<P> </P></FONT>
<P style="LINE-HEIGHT: 150%"><FONT face=新宋体 color=#008000 
size=2>Do中的定义的循环方式与函数Table和Sum中的定义一样。在函数Do中,你同样能建立重循环。下面给出的i从1到4进行循环,而对于每个i,j又从1到i-1进行循环:</FONT></P><FONT 
size=2>
<P align=center><IMG height=236 src="8_3_1.files/Image157.gif" width=388></P>
<P></FONT><FONT color=#000080 size=2>我们还可把一个过程放入Do函数中:</FONT></P><FONT size=2>
<P align=center><IMG height=183 src="8_3_1.files/Image158.gif" 
width=392></P></FONT><B>
<P><FONT color=#000080 size=3>2 While与For结构 </FONT></P></B>
<P style="LINE-HEIGHT: 150%"><FONT color=#008000 
size=2>在Mathematica程序中,Do是以结构方式进行循环的,然而有时你需要生成非结构循环。此时,运用函数While和For是合适的。下面是While和For函数的循环结构形式:</FONT></P>
<DIV align=center>
<CENTER>
<TABLE width=556 background=8_3_1.files/0522.gif border=1>
  <TBODY>
  <TR>
    <TD width=185>
      <P><FONT color=#0000ff size=2>While[test,body]</FONT></P></TD>
    <TD width=355>
      <P><FONT color=#0000ff size=2>只要test为真,就重复计算body</FONT></P></TD></TR>
  <TR>
    <TD width=185>
      <P><FONT size=2><FONT 
      color=#0000ff>For[start,test,incr,body]</FONT></FONT></P></TD>
    <TD width=355>
      <P><FONT color=#0000ff size=2>以为start起始值,重复计算body和incr,直到test为假为止 
      </FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000 size=2>当条件满足时,While循环一直进行,因此为了防止死循环,在While 
中应包括命令能改变test的值。</FONT></P><FONT size=2>
<P align=center><IMG height=176 src="8_3_1.files/Image159.gif" width=394></P>
<P><FONT color=#008000>下面给出For循环的例子,i++表示i的值加1(在本节的最后我们给出在编程时常会 
用到的赋值方法):</FONT></FONT></P><FONT size=2>
<P align=center><IMG height=176 src="8_3_1.files/Image160.gif" width=394></P>
<P></FONT><FONT color=#008000 
size=2>下面再给出一个较复杂的For循环的例子,一旦I^2&lt;lO不成立,就中止循环:</FONT></P><FONT size=2>
<P align=center><IMG height=190 src="8_3_1.files/Image161.gif" width=398></P>
<P style="LINE-HEIGHT: 150%"><FONT 
color=#008000>Mathematica中的函数While和For循环总是在执行循环体前对循环条件进行测试。 
一旦测试结果为假。就中止While和For循环。因此,循环体的计算总是在测试结果为真 的情况下进行的</FONT></FONT></P><B>
<P><FONT color=#000080 size=3>3.一些特殊的赋值方式 </FONT></P></B><FONT color=#008000 
size=2>
<P>一些赋值方式在循环结构中有时能带来一些方便。</P></FONT><FONT size=2></FONT><FONT color=#0000ff 
size=3>
<DIV align=center>
<CENTER>
<TABLE borderColorDark=#ffffff width=443 borderColorLight=#ff00ff 
background=8_3_1.files/0522.gif border=1>
  <TBODY>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>i++ </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>变量i加1 </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>i-- </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>变量i减1 </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>++i, </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>变量i先加1 </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>--i </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>变量i先减1 </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>i+=di </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>i加di </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>i-=di </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>i减di </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>x*=C </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>x乘以C </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>x/=c </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>x除以c </FONT></P></TD></TR>
  <TR>
    <TD width=189>
      <P><FONT color=#0000ff size=3>{x,y}={y,x} </FONT></P></TD>
    <TD width=238>
      <P><FONT color=#0000ff size=3>交换x和y值 
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></FONT><B>
<P><FONT color=#000080 size=3>4 重复运用函数 </FONT></P></B>
<P style="LINE-HEIGHT: 150%"><FONT color=#808000 
size=2>我们除了可用Do、While、For等进行循环计算外,我们还可以运用函数进行编程。运用函数编程结构你能得出非常有效的程序。例如Nest[f,x,n]允许你对某一表达式重复运用函数f</FONT></P>
<P><FONT lang=ZH-CN face=新宋体 color=#0000ff size=2>给出重复运用函数的方式。</FONT><FONT 
color=#0000ff size=2></P></FONT>
<DIV align=center>
<CENTER>
<TABLE borderColorDark=#ffffff width=545 borderColorLight=#ff00ff 
background=8_3_1.files/0522.gif border=1>
  <TBODY>
  <TR>
    <TD width=179>
      <P><FONT color=#0000ff size=2>Nest[expr,n]</FONT></P></TD>
    <TD width=350>
      <P><FONT color=#0000ff size=2>对表达式expr重复调用函数fn次</FONT></P></TD></TR>
  <TR>
    <TD width=179>
      <P><FONT color=#0000ff size=2>FixedPoint[y,expr]</FONT></P></TD>
    <TD width=350>
      <P><FONT color=#0000ff size=2>对表达式expr重复调用函数fn次,直到结果不变为止</FONT></P></TD></TR>
  <TR>
    <TD width=179>
      <P><FONT color=#0000ff size=2>NestWhile[f,expr,test]</FONT></P></TD>
    <TD width=350>
      <P><FONT color=#0000ff 
  size=2>对表达式expr重复调用函数f,直到产生的结果为假时为止</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT color=#008000 size=2>下面对函数f迭代5次:</FONT></P>
<P align=center><FONT lang=ZH-CN face=宋体 color=#008000 size=2><IMG height=119 
src="8_3_1.files/Image162.gif" width=398> </FONT></P>
<P><FONT color=#008000 size=2>对纯函数进行迭代,你能得出与运用Do函数得出的结果一样:</FONT></P>
<P align=center><FONT lang=ZH-CN face=宋体 color=#008000 size=2><IMG height=149 
src="8_3_1.files/Image163.gif" width=433> </FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT color=#808000 
size=2>Nest函数允许你重复运用某函数。然而,有时你想在结果不再发生变化的情况下就中止对函数的使用,此时立刻使用函数FixPoint[f,x]。FixPoint函数重复运用某一函数直到结果不再发生变化:</FONT></P><FONT 
lang=ZH-CN face=宋体 size=2>
<P align=center><IMG height=256 src="8_3_1.files/Image164.gif" 
width=434></P></FONT><B>
<P><FONT size=3>8.3.5 流程控制</FONT></P>
<P style="LINE-HEIGHT: 150%"></B><FONT color=#008000 size=3>&nbsp;&nbsp;&nbsp; 
</FONT><FONT color=#008000 
size=2>函数程序结构的流程控制一般来说比较简单,但是在应用While或For等循环时就比较复杂了,这是因为他们的流程控制依赖于表达式的值。而且在这样的循环中,流程的控 
制并不依赖于循环体中表达式的值。有时你在编制Mathematica程序时,在该程序中,流程控制受某一过程或循环体执行结果的影响。这时,我们可用Ma~ematka提供的流程控制函数来控制流程。这些函数的 
工作过程与C语言中的很相似。</FONT></P>
<P><FONT color=#0000ff size=2>常用的流程控制函数。</FONT></P><FONT color=#0000ff size=2>
<DIV align=center>
<CENTER>
<TABLE borderColorDark=#ffffff width=472 borderColorLight=#ff00ff 
background=8_3_1.files/0522.gif border=1>
  <TBODY>
  <TR>
    <TD width=167>
      <P><FONT color=#0000ff size=2>Break[] </FONT></P></TD>
    <TD width=289>
      <P><FONT color=#0000ff size=2>退出本层的循环 </FONT></P></TD></TR>
  <TR>
    <TD width=167>
      <P><FONT color=#0000ff size=2>Continue[] </FONT></P></TD>
    <TD width=289>
      <P><FONT color=#0000ff size=2>转入当前循环的下一步 </FONT></P></TD></TR>
  <TR>
    <TD width=167>
      <P><FONT color=#0000ff size=2>Return[expr] </FONT></P></TD>
    <TD width=289>
      <P><FONT color=#0000ff size=2>退出函数中的所有过程及循环,并返回expr值 </FONT></P></TD></TR>
  <TR>
    <TD width=167>
      <P><FONT color=#0000ff size=2>Goto[name] </FONT></P></TD>
    <TD width=289>
      <P><FONT color=#0000ff size=2>转入当前过程中的元素Label[name] </FONT></P></TD></TR>
  <TR>
    <TD width=167>
      <P><FONT color=#0000ff size=2>Throw[value] </FONT></P></TD>
    <TD width=289>
      <P><FONT color=#0000ff size=2>返回expr值 
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></FONT><FONT size=2></FONT>
<P><FONT color=#000080 size=2>当t&gt;20时,Break[]就引起循环体的中断:</FONT></P><FONT 
size=2>
<P align=center><IMG height=229 src="8_3_1.files/Image165.gif" width=465></P>
<P> </P></FONT><FONT size=3>
<P></FONT><FONT color=#000080 size=2>当k&lt;3时,Continue[]继续执行循环:</FONT></P><FONT 
size=2>
<P align=center><IMG height=229 src="8_3_1.files/Image166.gif" 
width=418></P></FONT><FONT size=3>
<P> </P></FONT><FONT color=#000080 size=3>
<P>下面给出Return的一个例子:</P></FONT><FONT size=3>
<P><IMG height=173 src="8_3_1.files/Image167.gif" width=447></P>
<P> </P>
<P style="LINE-HEIGHT: 150%"></FONT><FONT size=2><FONT 
color=#008000>Return[]允许你退出一函数,并返回一个值。Mathematica可以进行局部返回,这可 
允许你退出一列迭代函数。非局部返回在错误处理时是很有用的。</FONT><FONT 
color=#333399>下面给出的例子中如函数变量小于0则输出error~ </FONT></FONT></P><FONT size=3>
<P align=center><IMG height=222 src="8_3_1.files/Image168.gif" 
width=450></P></FONT>
<P><FONT color=#008000 size=2>ln[6]不产生error,且出示Catch的结果无效: 
当变量小于0时输出error</FONT></P>
<P><FONT color=#008000 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</FONT></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -