实例介绍
软件原理和思想论述很充分,学习效率事半功倍。
n[12J:=8 Ot[12]=18446744073709551616 你还可以使用out(i]标志或等价的%i来查找任何一个较早计算出的结果。 In[13]:=Outl Out[131=0.533646 In[14:=86 Cut[14=(-1+x)(1+x) 拥有一份由 Stephen Wolfram编写的参考手册[ Wolfram1991],或拥有一份列有 Mathematica中包含的几百种操作的缩编的参考手册([ Blachman 199或 WOlfram1992]), 那么,看来你就可以计算你想要计算的任何事情了。 但是,这一印象是错误的。还有更多类型的计算,它们也是完全有可能被写进一个单 程序中的。不管你是对计算保龄球得分感兴趣,还是求在一个环形圆纹曲面上进行的随 机游动的均方距离, Mathematica都没有提供给你某个内置函数去实现你的目的 Mathematica真正拥有的—也是真正使它成为用途惊人的工具的—是用户自己去定义 他们需要的函数的能力。这种能力被称作程序设计( progeannnning),其实它就是本书真正 要传授给你的东西。 为使你对自己能做什么有个初步认识,这里提供了一个程序来计算保龄球比赛得分 已知条件是一个由每一球所得分数构成的表。 In[15]: Bowlingscore pins ]: Module[score] score[ x十ytz 8c°re【10,y,z_,x}]:10+y+zsc。re【{y,z,x}] score[ix, y, z, J]:= xty+z+score[(z, r]]/i x+=10; c。Ee[{x }]:=x+y+器eore[{x]]/;x+Y<10; SC06[工[Pina【[-2]]+Pina[[-11]>10,Pins, end[pina,0】]]] 下面为“大满贯”—12次击球均为全中—得分的计算 In161:=Bow1 ngScore[10,10,10,10,10,10,10,1010,10,1010)1 t[16=300 第一章预备知识 你现在还看不懂这个程序——当然是这样,否则我们也就不写此书了!但有一点你应 记住,存在许多有用的计算问题, Mathematica并不知道如何去解决。所以,为了充分利 用 Mathematica提供的许多种能力,你有时需要进行程序设计。本书的目的就是指示你如 何去做。 另一目的是教会你基本的程序设计原理。这些原理—一与内置函数相结合,再使用条 件函数、递归和迭代——可应用于所有其他程序设计语言。(但要记住,具体情况却有很 大不同。) 12 Mathematica的使用 这是最首要的。在你做任何有用事情之前,你首先需要知道如何启动 Mathematica应 用程序,如何退出 Mathematica以及在遇到问题时如何解决它们。这些过程当然都与你正 在使用的计算机系统有关。你应该阅读下与你的 Mathematica一同提供给你的与系统有 关的具体说明;而如果我们在本书中所提供给你的指示并不适用于你的计算机系统时,你 就要请求当地 Mathematica专家的帮助了。 121进入 Mathematica和退出 Mathematica Mathematica有两种基本的用户操作界面类型:“文本”(或“命令行”)界面和“笔记 本”(或“图形”)界面。下面的14节将进行详细的讨论,但因与现在的论述多少有些相 关,故知道一下你用的是什么界面,对你是有好处的。在以后阅读了141和14.2,你将 能在启动 Mathematica之后立即说出你拥有的是什么界面。一般来说,如果你使用的是 Macintosh机、运行 Windows的PC机或大多数Unix工作站,你拥有的大概是笔记本界面 而奶果你使用的是不运行 Windows的PC机或VAⅹ工作站,你拥有的大概就是“文本 界面了 启动 Mathematica 如何在你的计算机上启动 Mathematica,将依赖于你拥有的是笔记本界面,还是需输 入命令的命令行界面 笔记本界面:选取 Mathematica像标(见14节),然后双击鼠标。 文本界面:在提示符后输入math命令。 输入并执行 内容的输入完全照本书给出的那样。为使 Mathematica计算你已输入的表达式 1.2 Mathematica的使用 笔记本界面时:在录入后,按 Shift-Retum或 Shift-Enter组合键。 文本界面时:按 Enter键。 注意,在文本界面时,每一行都将被计算,除非它不是一个完整的表达式(这将在下 面几页之后详加说明)。在笔记本界面时,你所输入的每一行在键入 Shift-enter组合键之 前都不会被计算;一但键入 Shift-Enter组合键,这些行就一起被执行 退出 Mathematica 笔记本界面:从Fie菜单中选择Qut选项。 文本界面:在提示符后输入Qui。 处理遇到的问题 每时每刻,你都有可能输入一些会使 Mathematica在某些方面操作失常的内容,也许 这种失常就是很长一段时间没有任何反应(比如,你不经心地要求 Mathematica做一些非 常困难的事情),也许,屏幕一页萸一页不停地显示你不会使用的信息。在这些情况下,你 可以试着“中断”正在进行的计算。如何做却要依赖于你所使用的计算机的类型 Macintosh或NeXT:按 Command-.组合键(即 Command和.的组合键),然后按a. 适行 windows的PC:按A[t-.(At和.组合键) 不运行 Windows的PC:按Crl- Break组合键。 Unix:按Crl-C组合键,然后按a,再按Reum键。 在笔记本界面情况下,这些试图中断计算的尝试有时并不奏效。如果在等待了相当长 一断时间后(比如,凡分钟之后), Mathematica看上去仍然阻塞不畅,你就只有“杀死核 心”( kill the kemel)0。这可以通过从 Action菜单中选择 Quit/Disconnect Kernel选项而 办到。如果是 Mathematica早于2,2版的版本,你就只能采取重新启动 Mathematica的方 法了。从22版本开始,核心本身可以在不杀死界面的前提下被重新启动,方法是先选择 Action菜单下的 Kerueis and task…,选项,然后在出现的对话框中选择 New Kernel 122寻求帮助 如果你知道一个函数的名称,但却不太确信它可做些什么,那么了解它可做些什么的 最容易的方法是输入? function并执行。例如,想要了解 ParametricPlot函数能做 些什么,你可以输入 In1:=? Parametric1°t ParametricPlot[ (fx, fy], [t, tmin, tmax)] produces a ①在试图杀死核心之前,一定要确信计算确实处于死循环之中,而不是确需很长时间才能完成的高 强度计算 第一章预备知识 parametric plot with x and y coordinates fx and fy cenerated as a function of t. ParametricPlot[ fx, fyi, [gx, gyh,,.h, It, tmin, tmax]plots several parametric curves 再有,如果你不能确定某个命令的正确拼法(比如 Integrate),你可以输入下面 的形式以显示所有以Int开头的内置函数 n[2:=?工nt Integer Interpolationorder IntegerDigits 工 nterrupt Integero Intersect⊥on Integrate Interval Interpolatingfunction IntervalIntersection InterpolatingPolynomial IntervalMemberQ Interpolation IntervalUnion 使用笔记本界面的读者可选择 Action菜单中的 Complete Selection选项。这会给出 同上面例子中相似的列表。这些读者还可以使用命令完成功能与模板功能来寻找你只了解 其一部分又想了解其更多情况的函数的信息。 从22版本开始, Mathematica具有笔记本界面的版本,在其帮助系统中增加了一个 名叫 Function browser(后改为 Help Browser)的很有用的功能。1.6.1中将详加讨论 123輪入内容的句法 当首次启动 Mathematica时,你会注意到它会为你提供In和out提示符,而你就不 必自己再输入它们了。具有笔记本界面的用户将在输入的内容被执行后才看得到这些提示 符,而具有命令行界面的用户, Mathematica自动提供这样的提示符,等待你的输入 In:-39/13 Out[1)=3 你对 Mathematica的输入由达式( expression)构成,这些表达式分为数值表达式和 非数值表达式。数值表达式的输入形式与通常数学中的一样,如前面所示。但是,既然你 不能占用多行来输入一个分式,你就不得不使用斜线号/代表除号,如上面我们所做的 那样。同样地,使用符号^代表取幂 1.2 Mathematica的使用 In[2J:=2^5 Out[2]=32 Mathematica允许你把两个表达式并置,以表示这两个表达式的相乘运算,如在数学 中那样,但 Mathematica还提供了使用星号*来达到同样目的的替代方法,即计算机程 序设计中常使用的比较传统的方法。 In3):=25 Out[37=10 in[47:=2*5 Out【4l=10 Mathematica的操作仍按照与数学中相同的运算先后次序 precedence)进行。具体来说, 乘法运算和除法运算比加法运算和减法运算有优先权,所以说,3+4*5等于23而不等于 35 函数的写法与数学书中的写法差不多,不同之处是这里的函数要以大写字母开头,且 函数的变元被括在一对方括号中 In[5: Factor[x 5-1 2 Out[5=(-1+x)(1+x+x+X+x) 几乎所有的内置函数都以全名方式写出,如上例所示。(例外情况包括一些熟知的缩 写形式,如进行微分操作的D,求平方根操作的Sqxt,取对数的操作Log及求矩阵的行 列式的操作Det,等等。)以全名方式写出函数名称这种做法在你并不特别确信一函数就 是执行某一特别操作时会变得非常有用。例如,如果我们想要 Mathematica计算一复数的 共轭复数,那么进行这一操作的函数应该怎样写,比较合理的猜测应是这样: In6:= Conjugate·[3+4工] ○ut[6}=3-4I 我们使用一对方括号[和]把函数的变元括起来,那么由一对大括号{和}括 起来的就表示一个表或值的分布范围; Mathematica拥有非常强大的表操作功能,这要在 下面第三章中介绍。表还可以作为变元的补充内容,出现在函数的变元序列之后,比如, 在PLOt函数和 Integrate函数中。 第一章预备知识 In[7]:= Plot[sin[ Sart[2] Sin[x]l, (*,-2Pi, 2Pi]I Out[7]=Graphics In!81:=工 negate【coB【x],{x,a,b}] Out[8]=-sin[a]+ sinb] 在上面的P1t函数例子中,表x,-2Pi,2Pi}指出函数six+√2sim(x)要在x从 2工到2的取值范围内绘制。而上面 ntegrate命令相当于数学表达式cos(x)dx 当你以分号“;”结束一表达式时, Mathematica计算这个表达式的值但却不显示结果。 这在结果可能很长且并不很值得一看的情况下非常有用。在下面的例子中,你首先创建 个由1到1000的所有整数构成的表,但用分号阻止结果的显示,然后,计算这些整数的 和及它们的平均数。 mn[9]:x=Rang[10000] In[10]: =Apply [Plus,x out[10=50005000 n[11]:=号/10000 10001 ut【1 个表达式可以在多行巾输入,但却只有在 Mathematica能辨别出第一行表达式并未 12 Mathematica的使用 结束的情况下才有效,例如,你可以在第一行中输入3*而在第二行中输入4 In121:=3★ t[12j=12 但3在第一行而*4在第二行则不行。 In[131:=3 Out/13= 3 In[14 Syntax: sntxb: Expression cannot begin with *4 如果你使用圆括号,你便可以避免这类问题。 In[15}:=(3 *4 ○ut[157=12 在笔记本界面情况下,你可以输入任意多行;在你键入 Shift-Enter后 Mathematica将 计算所有这些打,条件是对不完整的行,要满足上面所说的规则。 最后,你可以输入说明语句( comment)(一些不被计算的词语),方法是将它们放入 (*和*)之间 In[161:=D[Sin [xl, ★ differentiate sin【x]★ [, 13] ( with respact to x once Cut[16】=Cos[x] 后绿形式 如前所述, Mathematica中的一切函数都可以写成 head [arg1,amg2,…]的形式。有 时我们发现使用另种输入表达式的形式会很方便,这种形式叫做后缓形式 postfix form)。我们可以不把一个表达式写成标准的f[exp]的形式,而把它写成expr//f这种 后缀形式。这种形式特别是在表达式已经写得很好时非常有用,只需将//f加在表达式 后即可。下面,我们对前面曾使用 factor函数对其进行因式分解的表达式,再用这个 函数的后缀形式操作一次 笫一章预备知识 In[1:=x 5-1 //Factor Out[1}=(-1 X 上面这种形式与 Factor[x^5-1]是等价的 I24出错信息 在 Mathematica的使用和程序设计过程中,你会遇到各种各样的错误,这些错误有些 很明显,有些就比较微妙,有些容易纠正,有些却不太容易。我们已经(在12.1中提到 我们有可能使 Mathematica陷于无限循环之中(在此情况下,循环无限进行下去,不做任 何有用的事情),并且遇此情况我们可以中断这种循环。在本节我们要讨论的是 Mathematica 确实可以完成计算工作但却没有给出你所希望的结果的情况 也许,你最易造成的错误就是函数名的拼写错误。这里给出这种错误发生后会显示出 的信息的大致情况。 In{1]:=sine[1.5 General:: spell Possible spelling error: new symbol name "Sine is similar to existing symbols (Line, sin, Sinh k Out[l= Sine[1.5] 不管何时你输入一个与已存在的名称接近的名称, Mathematica就要给出类似上面那 样的一段警告信息。你可能常常是有意地使用这样的名称,但给出的警告信息着实有些 恼人。那么,最好把这种信息关掉 Tn[21:= off[General:: spell, General: spe111] 现在, Mathematica将不再报给你这个函数名称可能拼写错误的信息,但由于 Mathematica找不到由sine定义的函数,它就不进行任何计算而返回输入值。(你还可以 通过运行 n[ General:spe1L, Genera1::spel11k再次给出警告信息。) In[3:=sine[1.5] Out[3 Sine[1. 51 Mathematica将你的输入内容不加计算地返回—这看起来很正常—其实却是一个 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论