1 / 21

Mathematica 编程语言基础

Mathematica 编程语言基础. 专题 5 :编程. 条件命令. If[ 条件,真操作,假操作,其它操作 ] 先判断条件 ; 如果是 true ,执行真操作 ; 如果是 false ,执行假操作 ; 如果两者都不是,执行其它操作. If[ 条件,真操作 ] If[ 条件,真操作,假操作 ]. 表达式 /; 条件 仅当条件为 True 时 才执行表达式. Which[ 条件1, 表达式 1 , 条件2, 表达式 2 , …] 依次计算 条件 i , 给出对应 第一个 条件为 True 的 表达式的 值;

kayo
Download Presentation

Mathematica 编程语言基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mathematica编程语言基础 专题5:编程

  2. 条件命令 • If[条件,真操作,假操作,其它操作] 先判断条件; 如果是true,执行真操作; 如果是false,执行假操作; 如果两者都不是,执行其它操作

  3. If[条件,真操作] • If[条件,真操作,假操作] • 表达式/;条件 仅当条件为True时 才执行表达式

  4. Which[条件1, 表达式1, 条件2, 表达式2,…] 依次计算条件i,给出对应第一个条件为True 的表达式的值; 若所有条件i的值都是False,则返回Null

  5. Switch[表达式, 形式1, 形1值,形式2, 形2值, …] 执行表达式,将结果依次与形式i匹配,给出与第一个可匹配的形式的值; 若没有可匹配的形式,则返回Null

  6. 循环命令 • While[条件, 表达式] 判断条件,如果为true,执行一次表达式; 如果为flase,退出循环。 重复上边步骤,直致条件为false • 表达式可由多个语句组成, 用“;”隔开

  7. For[初始化,条件,增量,表达式] • 执行初始化(只执行一次); • 判断条件, 如果为true, 执行一次表达式; 如果为flase,退出循环; • 计算增量, 修改条件; • 重复上边步骤, 直致条件为false • 初始化、条件、增量、表达式都可由多个语句组成,用“;”隔开

  8. Do[表达式, {i, imin, imax, di}] 按循环描述,重复求值表达式

  9. 循环控制命令 • Break[ ] 退出最里面的循环 • Continue[ ] 转入当前循环的下一步 • Return[expr] 退出所有循环,返回expr

  10. 简单输出语句 • 循环控制函数自身不输出结果 • Print[变量 or “字符串”] 输出变量的值或字符串内容 • 不受句末“;”影响

  11. 例 定义如下函数 f(x)= • 使用“ /;” 定义 • f [x_]:= 0/;x<=0 • f [x_]:= x /; x>0&&x<=2 • f [x_]:= x^2 /; x>2

  12. ② 使用 If 定义 f [x_]:= If [ x<=0, 0, If [x>2, x^2, x ] ] ③ 使用Which定义 f [x_]:= Which [ x<=0, 0, x>2, x^2, True, x ]

  13. 例1.写出一元二次方程ax2 + bx + c = 0判别根的类型的Mathematica自定义函数形式。 解:一元二次方程根的判别式为 =b2 -4ac,当>0时方程有两个实根; 当<0时方程有两个复根; 当=0时方程有两个实重根, 它有多于两种的选择,故可以用Which语句表示。 • Mathematica命令为 In[8]:=g[a_, b_, c_]:=(w=b^2-4*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

  14. 例2找出300至500之间同时能被3和11整除的自然数。例2找出300至500之间同时能被3和11整除的自然数。 • 解:Mathematica 命令为: In[23]:= Do[If[Mod[i,13]== 0 && Mod[i,3]== 0,Print[i]],{i,300,500}] 312 351 390 429 Out[23]= 468 • 例3找出方程在[0,100]内的整数解。 • 解: • In[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}] • 得解 x= 0 y= 25 z= 75 x= 4 y= 18 z= 78 x= 8 y= 11 z= 81 x= 12 y= 4 z= 84

  15. 例4编制20以内整数加法自测程序 解:In[30]:=For [i=1,i<=10,i++, t=Random[Integer,{0,10}]; s=Random[Integer,{0,10}]; Print[t,"+",s,"="]; y=Input[]; While[y!=t+s, Print[t,"+",s,"=",y," Wong !Try again!"]; Print[t,"+",s,"="]; y=Input[]] ; Print[t,"+",s,"=",y," Good"] ] • 执行结果为 3+0= 3+0=3 Good 7+3=12 Wong!Ttry again! 7+3=10 Good

  16. 例5:用割线法求解方程x3-2x2+7x+4=0的根,要求误差|xk-xk-1|<10^(-12),割线法的计算公式为例5:用割线法求解方程x3-2x2+7x+4=0的根,要求误差|xk-xk-1|<10^(-12),割线法的计算公式为 • 解: • In[26]:= f[x_]:=x^3-2x^2+7x+4 • In[27]:= x0=-1;x1=1; • In[28]:= While[Abs[x0-x1]>10^-12,x2=x1-(x1-x0)*f[x1]/(f[x1]-f[x0]);x0=x1;x1=x2] • In[29]:= N[x1,12] • Out[29]= -0.487120155928

  17. 文件和外部操作 • <<file 从文件中读取数据 • <<contentx` 从具有指定上下文文件读取 • expr>>file 把表达式输出到文件,参Save • expr>>>file 把表达式追加到文件 • FilePrint 显示文件内容 • Save[“file”, f,g,…] • Directory[], SetDirectory[“dir”] • FileName[], FileName[“form”] • CopyFile[“file1”, “file2”], DeleteFile[“file”]

  18. 文件和外部操作 • Import[“file”, “Table”] 导入数据表 • Export[“file”, list, “Table”]把list数据表导出到文件

  19. 导入导出一般数据(按文件后缀区分) • Import[“name.ext”] • Export[“name.ext”, expr] • $ImportFormats 系统支持的导入格式 • $ExportFormats 系统支持的导出格式 • expr可以放在ToBox[]中,可加format参数

More Related