21
1 Mathematica 编编编编编编 编编 5 编编

Mathematica 编程语言基础

  • Upload
    kayo

  • View
    276

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Mathematica 编程语言基础

1

Mathematica编程语言基础

专题 5:编程

Page 2: Mathematica 编程语言基础

20

条件命令条件命令If[ 条件,真操作,假操作,其它操作 ]

先判断条件 ;

如果是 true ,执行真操作 ;

如果是 false ,执行假操作 ;

如果两者都不是,执行其它操作

Page 3: Mathematica 编程语言基础

21

If[ 条件,真操作 ]

If[ 条件,真操作,假操作 ]

表达式 /; 条件 仅当条件为 True时 才执行表达式

Page 4: Mathematica 编程语言基础

22

Which[ 条件 1, 表达式 1, 条件 2, 表达式 2, …]

依次计算条件 i ,给出对应第一个条件为 True 的表达式的值;

若所有条件 i 的值都是 False ,则返回 Null

Page 5: Mathematica 编程语言基础

23

Switch[ 表达式 , 形式 1, 形 1 值 , 形式 2, 形 2 值 , …]

执行表达式,将结果依次与形式 i匹配,给出与第一个可匹配的形式的值 ;

若没有可匹配的形式,则返回 Null

Page 6: Mathematica 编程语言基础

24

循环命令循环命令 While[ 条件 , 表达式 ]

判断条件,如果为 true ,执行一次表达式 ;

如果为 flase ,退出循环。重复上边步骤,直致条件为 false

表达式可由多个语句组成 , 用“ ;” 隔开

Page 7: Mathematica 编程语言基础

25

For[ 初始化,条件,增量,表达式 ] 执行初始化 ( 只执行一次 ); 判断条件 , 如果为 true, 执行一次表达式 ;

如果为 flase ,退出循环 ; 计算增量 , 修改条件 ; 重复上边步骤 , 直致条件为 false

• 初始化、条件、增量、表达式都可由多个语句组成,用“ ;” 隔开

Page 8: Mathematica 编程语言基础

26

Do[ 表达式 , {i, imin, imax, di}]

按循环描述,重复求值表达式

Page 9: Mathematica 编程语言基础

27

Break[ ] 退出最里面的循环Continue[ ] 转入当前循环的下一步Return[expr] 退出所有循环,返回expr

循环控制命令循环控制命令

Page 10: Mathematica 编程语言基础

28

简单输出语句简单输出语句 循环控制函数自身不输出结果 Print[ 变量 or “ 字符串” ]

输出变量的值或字符串内容 不受句末“ ;” 影响

Page 11: Mathematica 编程语言基础

29

例 定义如下函数

2

0, 0

, 0 2

, 2

x

x x

x x

① 使用“ /;” 定义f [x_]:= 0 /;x<=0

f [x_]:= x /; x>0&&x<=2

f [x_]:= x^2 /; x>2

f(x)=

Page 12: Mathematica 编程语言基础

30

② 使用 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 ]

Page 13: Mathematica 编程语言基础

31

In[41]:= Fori 1; t x, i^2 20, i , t t^2 i;

Printt 1 x2

2 1 x22

3 2 1 x222

4 3 2 1 x2222

Page 14: Mathematica 编程语言基础

32

In[64]:= t 1; Dot k; Printt;Ift 3 && t 6, Continue ; t , k, 10

2

3

5

9

13

18

24

31

39

48

Page 15: Mathematica 编程语言基础

例 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 rootsIn[10]:=g[3,1,2]Out[10]= two complex rootsIn[11]:=g[3,0,0]Out[11]=duplicate roots

Page 16: Mathematica 编程语言基础

例 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= 75x= 4 y= 18 z= 78x= 8 y= 11 z= 81x= 12 y= 4 z= 84

1003

35

100z

yx

zyx

Page 17: Mathematica 编程语言基础

例 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 Good7+3=12 Wong!Ttry again!7+3=10 Good

Page 18: Mathematica 编程语言基础

例 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

)()()(

11

1

21

211

10

k

kk

kkkk

xfxfxf

xxxx

xx

Page 19: Mathematica 编程语言基础

49

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

Page 20: Mathematica 编程语言基础

50

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

文件

In[204]:= Export"out.dat", 5.7, 4.3, 1.2, 7.8 Import"out.dat", "Table"

Out[204]= out.dat

Out[205]= 5.7, 4.3, 1.2, 7.8

Page 21: Mathematica 编程语言基础

51

导入导出一般数据(按文件后缀区分)

• Import[“name.ext”]• Export[“name.ext”, expr]

• $ImportFormats 系统支持的导入格式• $ExportFormats 系统支持的导出格式• expr 可以放在 ToBox[] 中,可加 format 参数