- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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[w0,two real roots, w0,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 例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 例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 例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 * 模块化(Module)Moudule[{x,y,…}, body] 具有局部变量x, y, …的模块 * 对局部变量赋初值Module[{x=x0,y=y0,…},body] 在使用局部变量时可以利用条件 * 模块工作的基本原理 模块每使用一次,就产生一个新符号代替局部变量,新符号的名字被唯一给定,它不与任何其他名字冲突。命名的方法是给定局部变量后加$,并给出唯一序号。这些符号具有临时性 Unique[x] 产生形如x$nnn唯一名称的新符号 Unique[{x,y,…}] 产生一个新符号表 $MouduleNumber为当前临时符号的序号,$SessionID为当前进程的进程号,巧妙设定可以避免不同进程临时序号相同产生的冲突。例如 $ModuleNuber=10^10 $SessionID * 数学中的哑元 * Block块 Module变量具有局部性,Block变量名是全局的,值是局部的,退出Block后变量值自动恢复 * With块使用局部常数 With[{x=x0,y=y0,…},body]定义局部常数x,y,…。可以认为它是/.的推广 * 产生编译后的函数 Compile[{x1,x2,…}, expr] 产生编译后的函数,对xi的值计算expr。编译后的函数会快很多,适合多次使用的函数 * 标准的计算过程 计算表达式的头部(Head[]或者[[0]]都能获得头部,Level[expr,
文档评论(0)