好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第八章Mathematica编程语句与例题.ppt

44页
  • 卖家[上传人]:s9****2
  • 文档编号:577255566
  • 上传时间:2024-08-21
  • 文档格式:PPT
  • 文档大小:1.08MB
  • / 44 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第八章第八章 Mathematica编程语句与例题编程语句与例题 北京交通大学北京交通大学 8.1全局变量、局部变量、过程全局变量、局部变量、过程 8.1.1全局变量全局变量 在Mathematica中键入的各种命令或在Mathematica的程序语句中, 变量被赋值后, 必须用Mathematica清除变量的命令才能使其还原为符号的变量, 称为全局变量全局变量察看某变量是否为全局变量,可以键入命令:?变量名变量名Global`变量名变量名… 说明该变量是全局变量,否则,就不是全局变量 例如例如:要知道变量w是否为全局变量,可以键入: ? w键入执行命令后,显示结果 Global`w w = 2 说明w是全局变量,且有数值2 8.1.2 局部变量局部变量o在在Mathematica的命令或程序中出现的任何合法的变量名的命令或程序中出现的任何合法的变量名符号,如果该变量名所代表的变量没有被赋值,则它就作为符号,如果该变量名所代表的变量没有被赋值,则它就作为数学算式中的符号参与数学的公式推导和运算;如果该变量数学算式中的符号参与数学的公式推导和运算;如果该变量被赋值了,则用该变量所赋的值参与对应的数学公式推导和被赋值了,则用该变量所赋的值参与对应的数学公式推导和运算。

      因此,当用户在做符号运算时使用的符号含有被赋了运算因此,当用户在做符号运算时使用的符号含有被赋了值的变量名,则就会出现察觉不到的错误为克服这种错误,值的变量名,则就会出现察觉不到的错误为克服这种错误,可以在使用可以在使用Mathematica的命令之前的命令之前, 先用先用Clear[ 变量变量1,变量变量2,…]将要使用的所有变量名做清除处理将要使用的所有变量名做清除处理, 就可以避就可以避免上述错误免上述错误o不同于全局变量不同于全局变量, 称变量的赋值效果只在某一模块内有效的称变量的赋值效果只在某一模块内有效的变量为变量为局部变量局部变量 ¡Mathematica 中中Module模块的命令为模块的命令为:Module[{变量表变量表}, 表达式表达式 ]¡例如例如: 在Mathematica键入 In[4]:= u=5; In[5]: = s=Module[{u, v=1}, u=1; v=u+v+3] Out[5]= 5 In[6]:= Print[u, " ", v, " " ,s] Out[6]= 5 v 5 在在Mathematica中使用局部变量很简单中使用局部变量很简单, 只要把涉及到的局部只要把涉及到的局部变量用大括弧变量用大括弧{ }括起来括起来, 放在放在Module模块命令的模块命令的{变量表变量表}位置位置, 并把相应的语句写成语句序列放在并把相应的语句写成语句序列放在Module模块命令的模块命令的表达式位置即可。

      表达式位置即可¡例如例如: Mathematica中有如下命令中有如下命令 In[7]:=s=Sin[x]; In[8]:=u= Cos[x]; In[9]:=D[s*u, x] Out[9]= Cos2[x] - Sin2[x]¡命令中的变量命令中的变量s, u的值将会影响随后的命令的值将会影响随后的命令, 如果写成如果写成 In[10]:= Module[{s, u, x}, s=Sin[x];u= Cos[x]; D[s*u, x]] Out[10]= Cos2[x$1] - Sin2[x$1] 此时命令中的变量此时命令中的变量s, u就是局部变量就是局部变量, 它们的值将不会影响随它们的值将不会影响随后的命令后的命令 8.1.3 过程过程在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式复合表达式,它也称为一个过程过程例如例如: In[11]:=s=1;u=s+3;u*u Out[11]=16 ★Mathematica的过程可以作为Module模块命令的表达式,如果不关心局部变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小括号括起来的过程来定义一个函数。

      例如例如:已知有n个元素的一个数表x={a1,a2,…,an},定义一个计算此类数表最大数与最小数平方差的函数,用过程来定义可以写为: In[12]:=g[x_]:=(m =Max[x];n = Min[x];m*m - n*n) 如果不用小括号括起来,而是写为 In[13]:=g[x_]:=m =Max[x];n = Min[x];m*m-n*n则In[13]定义的g[x]实际上是Max[x],不是数表最大数与最小数平方差函数,应该注意过程加小括号与不加括号的区别本例题还可以用模块来定义函数: In[14]:=g[x_]:=Module[{m, n}, m =Max[x];n = Min[x];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 命令为: In[1]:= p= Random[]; If[p<0.5, p, “***”]Out[1]=0.202857In[2]:= If[(p=Random[])<0.5, p, “***”])Out[2]= ***例例2: 写出分段函数的Mathematica自定义函数形式,并画出其在[3,3]上的图形n解解: 因此Mathematica 命令为: In[3]:= f[x_]:=If[x<1, x+Sin[x], x*Cos[x]] (或或f[x_]:=If[x<1, x+Sin[x],x*Cos[x],”err”] )In[4]:= Plot[f[x],{x,-3, 3}] n例例3 定义一个函数描述下面问题:任给一个函数y(x),如果y(x)的一阶导数为零,则输出符号###,否则,输出y (x)+ 5n解解: Mathematica 命令为: In[5]:=f[y_,x_]:=Module[{s},s=D[y,x];If[s==0,Return[“###”]]; s =s+5;Return[s]]In[6]:= f[3,x]Out[6]= ###In[7]:= f[Tan[x],x]Out[7]=5 + Sec2[x] 8.2.2 Which 语句语句n命令形式命令形式1::Which[条件条件1,语句语句1,条件条件2,语句语句2, ... ,条件条件n,语语句句n]功能功能:由条件1开始按顺序依次判断相应的条件是否成立,若第一个成立的条件为条件k,则执行对应的语句k。

      n命令形式命令形式2::Which[条件条件1,语句语句1,条件条件2,语句语句2, ... ,条件条件n,语语句句n,True,"字符串字符串"]功能功能:由条件1开始按顺序依次判断相应的条件是否成立,若第一个成立的条件为条件k,则执行对应的语句k,若直到条件n都不成立时,则返回符号字符串 例例4::写出一元二次方程ax2 + bx + c = 0判别根的类型的Mathematica自定义函数形式解解:一元二次方程根的判别式为 =b2 -4ac,当>0时方程有两个实根; 当<0时方程有两个复根; 当=0时方程有两个实重根, 它有多于两种的选择,故可以用Which语句表示lMathematicaMathematica命令为命令为In[8]:=In[8]:=g[ag[a_, b_, c_]:=(w=b^2-_, b_, c_]:=(w=b^2-4*a*4*a*c;Which[wc;Which[w>0,"two real roots",>0,"two real roots", w<0,"two complex w<0,"two complex roots",wroots",w == 0,"duplicate roots" ]) == 0,"duplicate roots" ])In[9]:=g[0,1,2]In[9]:=g[0,1,2]Out[9]= two real rootsOut[9]= two real rootsIn[10]:=g[3,1,2]In[10]:=g[3,1,2]Out[10]= two complex rootsOut[10]= two complex rootsIn[11]:=g[3,0,0]In[11]:=g[3,0,0]Out[11]=duplicate rootsOut[11]=duplicate roots 例例5 任给向量x=(x1,x2,…,xn),定义一个可以计算如下三中向量范数的函数:n解解:n In[12]:= norm[x_,p_]:=Which[p==1,Sum[Abs[x][[i]],{i,1,Length[x]}], p==2,Sqrt[Sum[Abs[x][[i]]^2,{i,1, Length[x]}]], True,Max[Abs[x]]] In[13]:=x={3, -4, 0}; In[14]:= norm[x,1] Out[14]=7 In[15]:= norm[x,2] Out[15]=5 In[16]:= norm[x,0] Out[16]=4 例例6: 写出分段函数的Mathematica自定义函数形式,并画出其在[0,60]上的图形。

      n解解: 因此Mathematica 命令为: In[17]:=f[x_]:= Which[x<=0,0,x<=10,10+2x,x<=20,30,x<=40,30-(x-20)/2, x<=50,20,x<=60,20-(x-50)*2,x>60,0 ]nIn[18]:= Plot[f[x],{x,0,60}] 8.2.3 Switch 语句语句l命令形式:命令形式:Switch[表达式表达式, 模式模式1,语句语句1,模式模式2,语句语句2, ... 模式模式n,语句语句n ]l功能功能: 先计算表达式,然后按模式1,模式2,…,的顺序依次比较与表达式结果相同的模式,找到的第一个相同的模式,则将此模式对应的语句计算计算结果作为Switch语句的结果 Switch语句是根据表达式的执行结果来选择对应的执行语句,它类似于一般计算机语言的Case语句 例例7: 用函数描述如下结果:任给一个整数x, 显示它被3除的余数解解: : MathematicaMathematica自定义函数自定义函数: :lIn[19]:=In[19]:=f[xf[x_]:=Switch[Mod[x,3],_]:=Switch[Mod[x,3], 0, Print["0 is the remainder on division of" ,x ,"by 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"], 1, Print["1 is the remainder on division of" ,x ,"by 3"], 2, Print["2 is the remainder on division of" ,x ,"by 3"] ] 2, Print["2 is the remainder on division of" ,x ,"by 3"] ]lIn[20]:= f[126] In[20]:= f[126] lOut[20]= 0 is the remainder on division of 126 by 3Out[20]= 0 is the remainder on division of 126 by 3lIn[21]:= f[346] In[21]:= f[346] lOut[21]= 1 is the remainder on division of 346 by 3Out[21]= 1 is the remainder on division of 346 by 3lIn[22]:= f[599] In[22]:= f[599] lOut[22]= 2 is the remainder on division of 599 by 3Out[22]= 2 is the remainder on division of 599 by 3 8.3循环控制语句循环控制语句lMathematica的循环控制语句有三种语句的循环控制语句有三种语句: Do 语句语句,For语句语句,While语句语句。

      为处理有时需要中途退出循环语句的问题为处理有时需要中途退出循环语句的问题, Mathematica 还提供了在执还提供了在执行循环语句时退出循环体的语句行循环语句时退出循环体的语句:l Return[expr] 退出函数所有过程和循环退出函数所有过程和循环,返回返回expr值值l Break[] 结束本层循环结束本层循环l Continue[ ] 转向本层转向本层For语句或语句或While语句的下一次循环语句的下一次循环在在Mathematica的循环结构中的循环结构中,使用如下表示式使用如下表示式,可以达到简洁可以达到简洁,快速的目的快速的目的.lk++ 表示赋值关系表示赋值关系 k = k+1 , l++k 表示先处理表示先处理k的值的值,再做赋值再做赋值 k=k+1lk-- 表示赋值关系表示赋值关系 k = k-1l--k 表示先处理表示先处理k的值的值,再做赋值再做赋值 k=k-1 l{x,y}={y,x} 表示交换表示交换x与与y 值值lx+=k 表示表示 x = x + klx*=k 表示表示 x = x * k 8.3.1 Do 语句语句Do 语句的一般形式为 Do[循环体循环体,{循环范围循环范围}]具体形式有l命令形式命令形式1::Do[expr, {n}] 功能:功能:循环执行n次表达式expr 。

      l命令形式命令形式2::Do[expr, {i, imin, imax}] 功能:功能:按循环变量i 为imin,imin+1,imin+2,…,imax循环执行imax-imin+1次表达式exprl命令形式命令形式3::Do[expr, {i, imin, imax,d}] 功能:功能:按循环变量i 为imin,imin+d,imin+2d,…,imin+nd,循环执行(imax-imin)/d +1次表达式exprl命令形式命令形式4::Do[expr, {i, imin, imax}, {j, jmin, jmax}] 功能:功能:对循环变量i为imin,imin+1,imin+2,…,imax每个值, 再按循环变量j的循环执行表达式expr这是通常所说的二重循环命令,类似的,可以用在Do命令中再加循环范围的方法得到多重循环命令 例例8 找出300至500之间同时能被3和11整除的自然数n解解: Mathematica 命令为: In[23]:= Do[If[Mod[i,13]== 0 && Mod[i,3]== 0,Print[i]],{i,300,500}] 312 351 390 429 Out[23]= 468n例例9 找出方程在[0,100]内的整数解。

      n解解:nIn[24]:= Do[z =100 – x - y; If[5x+3y+z/3==100,Print["x= ",x," y=",y," z=",z]],, {x,0,100},{y,0,100}]n得解x= 0 y= 25 z= 75x= 4 y= 18 z= 78x= 8 y= 11 z= 81x= 12 y= 4 z= 84 •例例10 对自然数对自然数k从从1开始到开始到10,取取s=1做赋值做赋值s =s*k,并显示对应的值并显示对应的值,直到直到s的值的值>5终止•解解:•In[25]:= s=1;Do[s*=k;Print[s];If[s>5,Break[]], {k,1,10} ]• 1• 2• 6 8.3.2 For 语句语句 l命令形式:命令形式:For[stat,test,incr,body]l功能功能::以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*i<10,i++,t--;Print[t]]的初始值的初始值,条件条件,循环变量修正式和循环体循环变量修正式和循环体, 分析执行过分析执行过程和显示结果程和显示结果n解解: 初始值为初始值为i=1;t=x, i为循环变量;条件为为循环变量;条件为i*i<10;循;循环变量修正式为环变量修正式为i++;;n循环体为循环体为t--;Print[t];执行过程为;执行过程为:n 先把变量先把变量i赋初值赋初值1,变量变量t赋初值赋初值x, 因为因为1*1<10满足满足i*i<10,故执行故执行i++, t--;Print[t]的操作的操作, i++ 对对i做加做加1操操作作,使使i取值为取值为2, 执行循环体执行循环体t--后后,t值变为值变为x-1,Print[t]的显示结果为的显示结果为“-1+x”。

      进入第二次循环时进入第二次循环时,先判别条先判别条件是否成立件是否成立,因为有因为有2*2<10满足条件满足条件i*i<10,与前面类似与前面类似分析分析,有显示结果为有显示结果为“-2+x”, 第三次循环显示结果为第三次循环显示结果为“-3+x”,对对i=4, 因为4*4=16>10不满足条件i*i<10,故退出For循环 8.3.3 While 语句语句 l命令形式:命令形式:While[test,body]l功能:功能:当当test为True时,计算body,重复对test的判断和body的计算,直到test不为True时终止 这里test为条件, body为循环体,通常由body控制test值的变化如果test不为True,则循环体不做任何工作l注意注意: 上述命令中,如果循环体生成 Break[ ] 语句,则退出While循环 例例12:12: 用割线法求解方程x3-2x2+7x+4=0的根,要求误差|xk-xk-1|<10-12,割线法的计算公式为ll解解: : lIn[26]:= In[26]:= f[xf[x_]:=x^3-2x^2+7x+4_]:=x^3-2x^2+7x+4lIn[27]:= x0=-1;x1=1; In[27]:= x0=-1;x1=1; lIn[28]:= While[Abs[x0-x1]>10^-12,x2=x1-(x1-In[28]:= While[Abs[x0-x1]>10^-12,x2=x1-(x1-x0)*f[x1]/(f[x1]-f[x0]);x0=x1;x1=x2]x0)*f[x1]/(f[x1]-f[x0]);x0=x1;x1=x2]lIn[29]:= N[x1,12]In[29]:= N[x1,12]lOut[29]= -0.487120155928Out[29]= -0.487120155928 例例1313 编制编制2020以内整数加法自测程序以内整数加法自测程序解解: :In[30]:=For [i=1,i<=10,i++, In[30]:=For [i=1,i<=10,i++, t=Random[Integer,{0,10}]; t=Random[Integer,{0,10}]; s=Random[Integer,{0,10}]; s=Random[Integer,{0,10}]; Print[t,"+",sPrint[t,"+",s,"="]; ,"="]; y=Input[]; y=Input[]; While[yWhile[y!=!=t+st+s, , Print[t,"+",sPrint[t,"+",s,"=",y," Wong !Try again!"];,"=",y," Wong !Try again!"];Print[t,"+",sPrint[t,"+",s,"="]; y=Input[]] ;,"="]; y=Input[]] ;Print[t,"+",sPrint[t,"+",s,"=",y," Good"] ],"=",y," Good"] ]l执行结果为执行结果为3+0=3+0=3+0=3 Good3+0=3 Good7+3=12 7+3=12 Wong!TtryWong!Ttry again! again!7+3=10 Good7+3=10 Good 例例14 韦达(韦达(VieTa)在)在1593年首次给出了如下关于圆周率年首次给出了如下关于圆周率 的关系式(韦达公式)的关系式(韦达公式)n试用韦达公式来写出计算圆周率试用韦达公式来写出计算圆周率 近似值的近似值的Mathematica命令。

      命令解解: n利用利用Mathematica自定义函数命令可以输入自定义函数命令可以输入Mathematica命令为命令为:In[31]:= vieta[k_]:=Module[{u}, u=N[Product[Cos[Pi/2^(n+1)],{n,1,k}],20]; Return[2/u] ]In[32]:= Table[{n, v=vieta[n], N[Pi,20]- v },{n,1,10,2}] Out[32]= {{1, 3.0614674589207181738, 0.0801251946690750646}, {3, 3.1365484905459392638, 0.0050441630438539746}, {5, 3.1412772509327728681, 0.0003154026570203704}, {7, 3.1415729403670913841, 0. 0000197132227018543}, {9, 3.141591421511199974, 1.232078593264 10-6 }} 8.3.4 迭代语句迭代语句在数值计算中在数值计算中,经常遇到要进行迭代计算经常遇到要进行迭代计算,即利用迭代格式即利用迭代格式: xk+1= (x k), 已知已知x 0 来求出迭代序列来求出迭代序列x 1,x 2,…,这里迭代函数这里迭代函数 为已知函数为已知函数,Mathematica 有有如下几个命令处理这类问题如下几个命令处理这类问题:l命令形式命令形式1::Nest[迭代函数迭代函数 , 迭代初值迭代初值x0,迭代次数迭代次数n] 功能:根据迭代初值功能:根据迭代初值x0及迭代格式及迭代格式:xk+1= (xk), 计算出计算出xn ,并将此值作并将此值作为为 Nest语句的值。

      语句的值l命令形式命令形式2::NestList[迭代函数迭代函数 , 迭代初值迭代初值x0,迭代次数迭代次数n] 功能:根据迭代初值功能:根据迭代初值x0及迭代格式及迭代格式:xk+1= (xk), 计算出计算出x 1,x 2,…,xn ,并将并将{ x 0,x 1,x 2,…,xn }作为作为NestList语句的值语句的值 例例1515 根据迭代格式根据迭代格式:x:xk+1k+1=lg(x=lg(xk k+2),+2),及迭代初值及迭代初值x0=1.0,x0=1.0,(1)(1)计算出计算出x7 ,x7 ,(2)(2)显示显示{ x0,x1,x2,{ x0,x1,x2,……,x7 },x7 }(3)(3)显示显示lg(x+2)lg(x+2)的的1,21,2次自复合函数次自复合函数l解解: : MathematicaMathematica命令为命令为In[33]:=In[33]:=q[xq[x_]:=Log[10,x+2] _]:=Log[10,x+2] In[34]:=Nest[q,1.,7]In[34]:=Nest[q,1.,7]Out[34]=0.375816 Out[34]=0.375816 In[35]:==NestList[q,1.,7]In[35]:==NestList[q,1.,7]Out[35]={1.,0.477121, 0.393947, 0.379115, 0.376415, Out[35]={1.,0.477121, 0.393947, 0.379115, 0.376415, 0.375922, 0.375832, 0.375816}0.375922, 0.375832, 0.375816}In[36]:==In[36]:==NestList[qNestList[q, x, 2] , x, 2] Out[36]= Out[36]= 读写 Mathematica 文件 l当使用基于文本的 Mathematica 界面时,就需要经常读写含有定义和结果的文件. 读文件 l显示文件 factors 的内容 lIn[1]:= l读入一个文件,返回值是文件的最后一个表达式 lIn[2]:=lOut[2]= l当 Mathematica 找不到所要文件时,它显示一个信息,返回值为 $Failed lIn[3]:= lOut[3]= $Failed lMathematica 的输入文件可以包含任意数目的表达式. 每个表达式必须从新的一行开始,它 可以占有许多行. 在交互式的 Mathematica 对话中,当表达式完成后 就进行处理. 但是在一个文件中,可以在任何位置插入一个空行, 这不产生任何影响. l用 <>> file 时,Mathematica 把新表达式加在文件之后,而用 expr >> file 时,Mathematica 清除文件中所有内容,然后把 expr 写入文件.当用 >> 或 >>> 向文件写入表达式时,这些表达式一般是用输入形式,以便再将他们读入 Mathematica. 有时需要用别的形式保存表达式,这可以通过将这些表达式包含在 OutputForm 等格式指令中来实现. l这是按输出形式将一个表达式写入文件 tmplIn[8]:= l此时 tmp 文件中的表达式是输出形式lIn[9]:= l使用文件的最常用目的是保存 Mathematica 对象的定义,以便在随后的 Mathematica 对话中再读入它们. 算符 >> 和 >>> 将表达式保存在文件中. 也可以用函数 Save 按适当的形式去保存 Mathematica 对象的完整定义以便在随后 的 Mathematica 对话中执行. 写出定义 l给符号 a 指定一个值 lIn[10]:=lOut[10]=l用 Save 将a的定义写入文件lIn[11]:= l这是在文件中保存的定义lIn[12]:= l在 Mathematica 中定义一个对象时,该定义常常依赖于前面定义的其它对象. 如果要在后面的 Mathematica 对话中重新构造这个对象的定义,这就需要保存该定义 本身和与它有关的其它对象的定义. 函数 Save 检查要保存的定义,自动地保存 与它们有关的定义. 但为了不存入太多不必要的内容,Save 不包含属性为 Protected 的符号的定义.它认为这些符号的定义是内部给出的. 为了照顾 这些定义,在一个新的 Mathematica 对话中读入从 Save 产生的输出时, 必须保证对象的定义与以前的完全一致. l函数 Save 利用输出形式 Definition 和 FullDefinition,它们显示 Mathematica 符号的定义. 有时直接用这些输出形式是很方便的.输出形式 Definition[f] 是 f 的定义序列 l建立 Mathematica 输入文件时,通常文件仅包含可直接阅读和修改的文本, 有时还需要对文件编码,使得它们不能直接阅读和修改,但还要求此文件 能调入 Mathematica 内.这可以用 Mathematica 函数 Encode 实现. l产生和读入代码文件l将表达式按简明文本形式写入文件 tmplIn[18]:=l将文件 tmp 的代码形式写入文件 tmp.xlIn[19]:=l这里是代码文件的内容,能识别的部分仅是在开头的 Mathematica 注解lIn[20]:=l l即使代码文件,也可以用 << 读入 Mathematica lIn[21]:=lOut[21]= l按 Mathematica 内部格式保存定义l在必须读入很大或很复杂的定义时,按 Mathematica 内部格式保存比 按文本保存方便. 这可以用 DumpSave 实现.l按 Mathematica 内部格式保存f的定义lIn[22]:= lOut[22]= { f }l仍可用 << 去读入这个定义 l当一个文件含有 Mathematica 内部定义时,<< 能识别它并进行相应的操作. Mathematica 内部格式在不同的计算机系统有细微的差异. 于是在一个计算机上 产生的 .mx 一般不能在别的计算机上读入.用 DumpSave["package`", ... ] 时,Mathematica 就将定义写到名为 package.mx/system/package.mx 等文件中,其中 system 指明所使用的 计算机系统.l这里产生的文件名反映了所使用的计算机系统lIn[24]:= lOut[24]= { f } l<< 自动选择名称与所用计算机系统相关的文件lIn[25]:=l保存Mathematica的完整状态 •第8章结束•谢谢! 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.