Mathematica编程语句与例题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8.2.2 Which 语句
命令形式1: 条件1,语句 条件2,语句 条件n,语 命令形式 :Which[条件 语句 条件 语句 ... ,条件 语 条件 语句1,条件 语句2, 条件 句n] 功能:由条件1开始按顺序依次判断相应的条件是否成立,若第 功能 一个成立的条件为条件k,则执行对应的语句k。 命令形式2: 条件1,语句 条件2,语句 条件n,语 命令形式 :Which[条件 语句 条件 语句 ... ,条件 语 条件 语句1,条件 语句2, 条件 字符串"] 句n,True,"字符串 字符串 功能:由条件1开始按顺序依次判断相应的条件是否成立,若第 功能 一个成立的条件为条件k,则执行对应的语句k,若直到条件n 都不成立时,则返回符号字符串。
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]
命令描述下面问题:先产生一个函数 例1:用Mathematica命令描述下面问题 先产生一个函数 用 命令描述下面问题 先产生一个函数[0,1]内的 内的 随机实数,再判断该随机数是否小于 再判断该随机数是否小于0.5, 如果小于 如果小于0.5, 则将此 随机实数 再判断该随机数是否小于 随机数显示出来,否则显示”***”。 随机数显示出来 否则显示” ” 否则显示 解: Mathematica 命令为: In[1]:= p= Random[]; If[p<0.5, p, “***”] Out[1]=0.202857 In[2]:= If[(p=Random[])<0.5, p, “***”]) Out[2]= *** 例2: 写出分段函数
第八章 Mathematica编程语句与例题 编程语句与例题
北京交通大学
8.1全局变量、局部变量、过程 全局变量、局部变量、 全局变量
8.1.1全局变量 全局变量
在Mathematica中键入的各种命令或在Mathematica的程序语句 中, 变量被赋值后, 必须用Mathematica清除变量的命令才能使其 还原为符号的变量, 称为全局变量 全局变量。察看某变量是否为全局变量, 全局变量 可以键入命令: ?变量名 变量名 Global`变量名 变量名… 变量名 说明该变量是全局变量,否则,就不是全局变量。 例如:要知道变量w是否为全局变量,可以键入: 例如 ?w 键入执行命令后,显示结果 Global`w w=2 说明w是全局变量,且有数值2。
x + sin x f ( x) = x cos x x <1 x ≤1
的Mathematica自定义函数形式,并画出其在[3,3]上的图形
解: 因此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}]
例3 定义一个函数描述下面问题:任给一个函数y(x),如果 y(x)的一阶导数为零,则输出符号###,否则,输出y′ (x)+ 5
解: 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.3 Switch 语句
命令形式: 表达式, 语句1,模式 命令形式:Switch[表达式 模式 语句 模式 语句 表达式 模式1,语句 模式2,语句 2, ... 模式 语句 ] 模式n,语句 语句n 功能: 功能 先计算表达式,然后按模式1,模式2,…,的顺序依 次比较与表达式结果相同的模式,找到的第一个相同的 模式,则将此模式对应的语句计算计算结果作为Switch 语句的结果。 Switch语句是根据表达式的执行结果 来选择对应的执行语句,它类似于一般计算机语言的 Case语句
例4:写出一元二次方程ax2 + bx + c = 0判 : 别根的类型的Mathematica自定义函数形式。 解:一元二次方程根的判别式为 =b2 -4ac, 当>0时方程有两个实根; 当<0时方程有 两个复根; 当=0时方程有两个实重根, 它 有多于两种的选择,故可以用Which语句表 示。 Mathematica命令为 Mathematica命令为 c_]:=(w=b^2In[8]:=g[a_, b_, c_]:=(w=b^24*a*c;Which[w>0,"two real roots", w<0,"two complex roots",w == 0,"duplicate roots" ]) In[9]:=g[0,1,2] Out[9]= two real roots In[10]:=g[3,1,2] Out[10]= two complex roots In[11]:=g[3,0,0] Out[11]=duplicate roots
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
8.2条件控制语句 条件控制语句
Mathematica涉及条件选择的语句有好几种,这里介绍常用的三种语 句: if 语句 Which 语句 语句, 语句,Switch 语句 语句。 8.2.1 If 语句 If 语句的一般形式为 语句的一般形式为: If[ 条件 语句或语句列 条件, 语句或语句列] 具体形式有 命令形式1: 条件 语句1] 条件, 命令形式 :If [条件 语句 功能: 功能:如果条件成立,则执行对应的语句1,并将语句执行结果作为If 语句的值,如果条件不成立,不执行语句1。 命令形式2: 条件 语句1, 语句2] 条件, 命令形式 :If [条件 语句 语句 功能: 功能:根据条件的成立与否确定执行哪一个语句,具体执行为:条件 成立时,执行语句1,否则,执行语句2,并将语句执行结果作为If 语句的值。 命令形式3: 条件 语句1, 语句2, 语句3] 条件, 命令形式 :If [条件 语句 语句 语句 功能: 功能:根据条件的成立与否确定执行哪一个语句, 具体执行为:条件成 立时,执行语句1,条件不成立时,执行语句2,否则,执行语句3, 并将语 句执行结果作为If语句的值。
8.1.2 局部变量
在Mathematica的命令或程序中出现的任何合法的变量 的命令或程序中出现的任何合法的变量 名符号,如果该变量名所代表的变量没有被赋值, 名符号,如果该变量名所代表的变量没有被赋值,则它就作 为数学算式中的符号参与数学的公式推导和运算; 为数学算式中的符号参与数学的公式推导和运算;如果该变 量被赋值了, 量被赋值了,则用该变量所赋的值参与对应的数学公式推导 和运算。因此, 和运算。因此,当用户在做符号运算时使用的符号含有被赋 了值的变量名,则就会出现察觉不到的错误。为克服这种错 了值的变量名,则就会出现察觉不到的错误。 可以在使用Mathematica的命令之前 先用 的命令之前, 误,可以在使用 的命令之前 Clear[ 变量 变量 变量1,变量 变量2,…]将要使用的所有变量名做清除处 将要使用的所有变量名做清除处 就可以避免上述错误。 理, 就可以避免上述错误。 不同于全局变量, 不同于全局变量 称变量的赋值效果只在某一模块内有效的 变量为局部变量 局部变量。 变量为局部变量。
此时命令中的变量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]
例6: 写出分段函数
0 10 + 2 x 30 f ( x) = 30 ( x 20) / 2 20 20 2( x 50) 0
x≤0 0 < x ≤ 10 10 < x ≤ 20 20 < x ≤ 40 40 < x ≤ 50 50 < x ≤ 60 x > 60
的Mathematica自定义函数形式,并画出其在[0,60]上的图形。 解: 因此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 ] In[18]:= Plot[f[x],{x,0,60}]
中使用局部变量很简单, 在Mathematica中使用局部变量很简单 只要把涉及到的局部 中使用局部变量很简单 变量用大括弧{ 括起来 放在Module模块命令的 变量表 括起来, 模块命令的{变量表 变量用大括弧 }括起来 放在 模块命令的 变量表} 位置, 并把相应的语句写成语句序列放在Module模块命令的 位置 并把相应的语句写成语句序列放在 模块命令的 表达式位置即可。 表达式位置即可。 例如: 例如 Mathematica中有如下命令 中有如下命令
例7: 用函数描述如下结果:任给一个整数x, 显示它被3除的余数。
例5 任给向量x=(x1,x2,…,xn),定义一个可以计算如下三中向量范数 的函数: 2
x 1 = ∑ xi
i =1 n
x2=
wk.baidu.com∑x
i =1
n
i
x

= Max xi
解: 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
相关文档
最新文档