Math 版 (精华区)
发信人: zjliu (fly), 信区: Math
标 题: Mathematica函数及使用方法<4> zz
发信站: 哈工大紫丁香 (Wed Jul 10 16:56:08 2002) , 转信
发信人: GzLi (苍鹰-文子), 信区: MathTools
标 题: Mathematica函数及使用方法<10> zz
发信站: 饮水思源 (2002年07月09日18:17:43 星期二), 站内信件
发信人: FangQ (骆驼·飞鸟·驴), 信区: MathTools
标 题: Mathematica函数及使用方法——流程控制
发信站: BBS 水木清华站 (Sat Dec 12 11:42:31 1998)
Mathematica函数及使用方法——流程控制
—————————————————————————————————————
十五、流程控制
分支
If[condition, t, f] 如果condition为True,执行t段,否则f段
If[condition, t, f, u] 同上,即非True又非False,则执行u段
Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki
Switch[expr,form1,block1,form2,block2..]
执行第一个expr所匹配的formi所对应的blocki
段
循环
Do[expr,{imax}] 重复执行expr imax次
Do[expr,{i,imin,imax}, {j,jmin,jmax},...]多重循环
While[test, body] 循环执行body直到test为False
For[start,test,incr,body]类似于C语言中的for,注意","与";"的用法相
反
examp: For[i=1;t =x,i^2<10,i++,t =t+i;Print[t]]
异常控制
Throw[value] 停止计算,把value返回给最近一个Catch处理
Throw[value, tag] 同上,
Catch[expr] 计算expr,遇到Throw返回的值则停止
Catch[expr, form] 当Throw[value, tag]中Tag匹配form时停止
其他控制
Return[expr] 从函数返回,返回值为expr
Return[ ] 返回值Null
Break[ ] 结束最近的一重循环
Continue[ ] 停止本次循环,进行下一次循环
Goto[tag] 无条件转向Label[Tag]处
Label[tag] 设置一个断点
Check[expr,failexpr] 计算expr,如果有出错信息产生,则返回failexpr
的值
Check[expr,failexpr,s1::t1,s2::t2,...]当特定信息产生时则返回failexpr
CheckAbort[expr,failexpr]当产生abort信息时放回failexpr
Interrupt[ ] 中断运行
Abort[ ] 中断运行
TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止
MemoryConstrained[expr,b]计算expr,当耗用内存超过b字节时终止运算
交互式控制
Print[expr1,expr2,...] 顺次输出expri的值
examp: Print[ "X=" , X//N , " " ,f[x+1]];
Input[ ] 产生一个输入对话框,返回所输入任意表达式
Input["prompt"] 同上,prompt为对话框的提示
Pause[n] 运行暂停n秒
--
这 是 最 后 的 斗 争
THIS IS THE FINAL CONFLICT
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.115.15.197]
上一篇 返回上一页 回到目录 回到页首 下一篇
--
发信人: GzLi (苍鹰-文子), 信区: MathTools
标 题: Mathematica函数及使用方法<11> zz
发信站: 饮水思源 (2002年07月09日18:17:51 星期二), 站内信件
发信人: FangQ (骆驼·飞鸟·驴), 信区: MathTools
标 题: Mathematica函数及使用方法——函数编程
发信站: BBS 水木清华站 (Sat Dec 12 11:44:33 1998)
Mathematica函数及使用方法——函数编程
—————————————————————————————————————
十六、函数编程
(*函数编程是Mathematica中很有特色也是最灵活的一部分,它充分体现了 *)
(*Mathematica的“一切都是表达式”的特点,如果你想使你的Mathematica程 *)
(*序快于高级语言,建议你把本部分搞通*)
纯函数
Function[body]或body& 一个纯函数,建立了一组对应法则,作用到后面
的表达式上
Function[x, body] 单自变量纯函数
Function[{x1,x2,...},body]多自变量纯函数
#,#n 纯函数的第一、第n个自变量
## 纯函数的所有自变量的序列
examp: #1^#2& [2,3] 返回第一个参数的第二个参数次方
映射
Map[f,expr]或f/@expr 将f分别作用到expr第一层的每一个元上得到的
列表
Map[f,expr,level] 将f分别作用到expr第level层的每一个元上
Apply[f,expr]或f@@expr 将expr的“头”换为f
Apply[f,expr,level] 将expr第level层的“头”换为f
MapAll[f,expr]或f//@expr把f作用到expr的每一层的每一个元上
MapAt[f,expr,n] 把f作用到expr的第n个元上
MapAt[f,expr,{i,j,...}] 把f作用到expr[[{i,j,...}]]元上
MapIndexed[f,expr] 类似MapAll,但都附加其映射元素的位置列表
Scan[f, expr] 按顺序分别将f作用于expr的每一个元
Scan[f,expr,levelspec] 同上,仅作用第level层的元素
复合映射
Nest[f,expr,n] 返回n重复合函数f[f[...f[expr]...]]
NestList[f,expr,n] 返回0重到n重复合函数的列表{expr,f[expr],f
[f[expr]]..}
FixedPoint[f, expr] 将f复合作用于expr直到结果不再改变,即找到其
不定点
FixedPoint[f, expr, n] 最多复合n次,如果不收敛则停止
FixedPointList[f, expr] 返回各次复合的结果列表
FoldList[f,x,{a,b,..}] 返回{x,f[x,a],f[f[x,a],b],..}
Fold[f, x, list] 返回FoldList[f,x,{a,b,..}]的最后一个元
ComposeList[{f1,f2,..},x]返回{x,f1[x],f2[f1[x]],..}的复合函数列表
Distribute[f[x1,x2,..]] f对加法的分配率
Distribute[expr, g] 对g的分配率
Identity[expr] expr的全等变换
Composition[f1,f2,..] 组成复合纯函数f1[f2[..fn[ ]..]
Operate[p,f[x,y]] 返回p[f][x, y]
Through[p[f1,f2][x]] 返回p[f1[x],f2[x]]
Compile[{x1,x2,..},expr]编译一个函数,编译后运行速度可以大大加快
Compile[{{x1,t1},{x2,t2}..},expr] 同上,可以制定函数参数类型
十七、替换规则
lhs->rhs 建立了一个规则,把lhs换为rhs,并求rhs的值
lhs:>rhs 同上,只是不立即求rhs的值,知道使用该规则时才求值
Replace[expr,rules] 把一组规则应用到expr上,只作用一次
expr /. rules 同上
expr //.rules 将规则rules不断作用到expr上,直到无法作用为止
Dispatch[{lhs1->rhs1,lhs2->rhs2,...}]综合各个规则,产生一组优化的
规则组
--
这 是 最 后 的 斗 争
THIS IS THE FINAL CONFLICT
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.115.15.197]
上一篇 返回上一页 回到目录 回到页首 下一篇
--
发信人: GzLi (苍鹰-文子), 信区: MathTools
标 题: Mathematica函数及使用方法<12> zz
发信站: 饮水思源 (2002年07月09日18:18:17 星期二), 站内信件
发信人: FangQ (骆驼·飞鸟·驴), 信区: MathTools
标 题: Mathematica函数及使用方法——查询函数、串函数
发信站: BBS 水木清华站 (Sat Dec 12 11:45:43 1998)
Mathematica函数及使用方法——查询函数、串函数
—————————————————————————————————————
十八、查询函数
(*查询函数一般是检验表达式是否满足某些特殊形式,并返回True或False*)
(*可以在Mathematica中用“?*Q”查询到 *)
ArgumentCountQ MatrixQ
AtomQ MemberQ
DigitQ NameQ
EllipticNomeQ NumberQ
EvenQ NumericQ
ExactNumberQ OddQ
FreeQ OptionQ
HypergeometricPFQ OrderedQ
InexactNumberQ PartitionsQ
IntegerQ PolynomialQ
IntervalMemberQ PrimeQ
InverseEllipticNomeQ SameQ
LegendreQ StringMatchQ
LetterQ StringQ
LinkConnectedQ SyntaxQ
LinkReadyQ TrueQ
ListQ UnsameQ
LowerCaseQ UpperCaseQ
MachineNumberQ ValueQ
MatchLocalNameQ VectorQ
MatchQ
十九、字符串函数
"text" 一个串,头为_String
"s1"<>"s2"<>..或StringJoin["s1","s2",..] 串的连接
StringLength["string"] 串长度
StringReverse["string"] 串反转
StringTake["string", n] 取串的前n个字符的子串,参数同Take[]
StringDrop["string", n] 参见Drop,串也就是一个表
StringInsert["string","snew",n] 插入,参见Insert[]
StringPosition["string", "sub"] 返回子串sub在string中起止字母位置
StringReplace["string",{"s1"->"p1",..}] 子串替换
StringReplacePart["string", "snew", {m, n}]
把string第m~n个字母之间的替换为snew
StringToStream["string"] 把串当作一个输入流赋予一个变量
Characters["string"] 把串"string"分解为每一个字符的表
ToCharacterCode["string"] 把串"string"分解为每一个字符ASCII值的表
FromCharacterCode[n] ToCharacterCode的逆函数
FromCharacterCode[{n1,n2,..}]ToCharacterCode的逆函数
ToUpperCase[string] 把串的大写形式
ToLowerCase[string] 把串的小写形式
CharacterRange["c1","c2"] 给出ASCII吗在c1到c2之间的字符列表
ToString[expr] 把表达式变为串的形式
ToExpression[input] 把一个串变为表达式
Names["string"] 与?string同,返回与string同名的变量列表
--
这 是 最 后 的 斗 争
THIS IS THE FINAL CONFLICT
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.115.15.197]
上一篇 返回上一页 回到目录 回到页首
--
--
※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:202.607毫秒