把 Mathematica 当做一种编程语言.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
把 Mathematica 当做一种编程语言

杂谈:把 Mathematica 当做一种编程语言?公开?2013-07-31 14:26?|?(分类:默认分类)在很大一部分 Mathematica 用户眼中, Mathematica 只不过是一个兼有符号操作和数值计算功能、用户界面良好的计算软件而已,由于中文资料的相对缺乏,这一点在中文用户中尤其严重。稍微挑选基本在互联网上可见的中文本土教程,比如张韵华、王新茂教授等人编著的?Mathematica 7 实用教程,徐安农所编写的?Mathematica 数学实验?等等,基本上从软件教学的层面编写的。从编程语言、计算机科学角度编写的中文资料,即使有,也是相当贫瘠的。?实际上,尽管 Mathematica 脱胎于 Stephen Wolfram 最早的?SMP?符号操作程序,但却是作为一种编程语言被设计的。Mathematica 的底层解释器大部分由 C 语言写成,此外一些极端要求速度的基础计算函数也由 C 语言支持,而其他大量的实用函数以及包由则是由 Mathematica 编程语言来实现的。解释器和这些函数构成了所谓的 Mathematica Kernel。Mathematica 这个生态系统的另外一个重要组成部分是前端(Front End),大量美轮美奂的数学公式显示,图形绘制,文档排版功能都极大程度地依赖前端,而前端和 Kernel 之间通过MathLink进行交互。Front End 和 Kernel 被设计得相当独立,尽管并不普遍,但是Front End实际上是可以被当做独立的软件来使用的,用户可以在上面编辑文字公式,生成漂亮的文档、演示文稿,绘制图形等等。?个人感觉,学习 Mathematica 编程,至少有三点是一定需要了解的:“Everything is Expression” 的语言设计原则、“规则替换”的系统实现机理和“模式匹配”引擎的强大效用。从设计上来说,Mathematica 遵循 “Everything is Expression” 的哲学,这种哲学可以大大简化解释器的设计,也可以产生“统一”的数学美感。关于这一点,有些读者可能会知道对于任何公式函数以及符号,当我们用FullForm这个函数作用于其上的,就能求出该公式函数或符号的“完全形式”,而FullForm通常遵循这样的形式:head[arg1, arg2, ..., argn]. ? ?这就是一个 Mathematica 表达式,甚至对于?1, 2, 3?这样粗看和表达式并不相关的序列,也是表达式的一种,它的FullForm为 Sequence[1, 2, 3],不仅如此,连 Cell 、模式、甚至 notebook 本身都是某种形式的 Expression. 对于 Kernel 而言,只有FullForm是有意义的,其他的类如TraditionForm、InputForm都和表达式在前端的行为有关,而对 Kernel 的工作并没有太大作用。此处不深入,但是深入学习 Mathematica 后读者肯定会发现,了解这个设计哲学好处多多,在对 Mathematica 的对象进行操作时,脑子里有它完整的表达式形式能帮助你随心所欲地控制它。?而实际计算的时候,Mathematica 则是一个基于规则替换的系统(Rule-Based system)。规则替换系统是 Mathematica 能够进行计算的源动力。大家可能看到过类似x^y //. {x - 2, y - 3} 这样的代码,这里 {x - 2, y - 3} 就是一个关于规则的列表, //. 符号是ReplaceRepeated函数的简写,x^y是一个表达式,代码?x^y //. {x - 2, y - 3} 做的事情就是在规则表{x - 2, y - 3} 中挑选规则,对表达式x^y不断地进行变换,直到变到不能变化为止。Mathematica 整个系统的计算机制和这段简单的代码有的本质上的类似,它也不过是在维护一个规则库,利用规则库中的规则对出现的表达式按照某些规范进行不断地替换,直到表达式不再变动为止,这时候就说“计算出了结果”。“规则替换”这样简单的机制能够实现 Mathematica 这个复杂系统的绚丽多彩的系统的一个重要的后盾是 Mathematica 的模式匹配引擎。大家可能已经见到过类似 _ ,__ , ___ ,这样简单的模式(pattern),也有肯能见过稍微复杂的 Verbatim[Rule][_List, _Integer]。就像在正则表达式中的通配符等语法一样,他们用来定义一些模式用于匹配,只不过正则表达式用来匹配字符串,而 Mathematica 中的 Pattern 用来匹配 Expression。?除了上面的三点,还有一些话题也可以提一下,比如我认为 For、

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档