为何选用python进行科学计算.docVIP

  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文档。上传文档
查看更多
为何选用python进行科学计算.doc

为何选用python进行科学计算 说明:本篇为翻译文章,原文的题目为:Scientific Computing with Python 。从文中可以看出,作者对在科研活动中使用Python有着深刻的见解。而这一点在国内就差许多了,所以,翻译过来放到这里,为Python摇旗呐喊一下,希望能有更多的人加入到 Python 的行列。 摘要: 脚本语言已经为很多科学计算器的构建提供了很多强有力的工具,因为他们提供了其他解释型语言的接口。和很多用C,C++,Fortran,等编写的软件进行集成,也可以为他们提供框架单元构建。在这篇论文中,我主要描述脚本语言到科学计算工程中的进程,我强调的是使用python在科学动态研究中采用的大规模模块动态代码,实验在在洛斯阿拉莫斯国家实验室进行的。虽然这个应用程序和天文数据分析,问题,解决方案和经验教训等不想关,但是可能感兴趣的研究人员正在考虑在自己的项目中使用脚本语言。 1. 简介 作为科学的软件开发,最大的障碍之一是如何使科学软件灵活,使用方便,维护简单,易于适应规模扩大和复杂性增高的新问题。当然,是有很多原因希望这些高品质,其中很重要的一点是,他们允许科学家花费更少的时间争取更多的时间去亚牛软件,投入更多的时间在科学上。 很不幸的事,当前科学计算软件的现状很不理想。首先,增加的计算能力已使科学家解决了空前的规模和复杂性的问题。但是,有一个副作用,就是需要执行这些任务的软件也已成为庞大而复杂的。二是科学家们普遍使用各种各样的系统,从模拟代码,数据分析软件包,数据库,可视化工具,到与每一个代表不同的接口和文件格式的本土软件。因此,科学家可能会花费大量的时间,只是想把所有这些组件以某种方式共同工作。最后,努力运用现代科学软件工程原理去重写软件,充其量只能产生不同的结果。第一,科学家不愿意去抛弃原有的软件。其次,这种努力对第二系统的影响也是很脆弱的,设计者想建造一个足够庞大的系统以至于不可能去实施,也不可能去满足特定问题的需要。 尽管存在这些困难,较有前景的技术之一,是近年来出现的常见的脚本语言,如Python,Perl和Tcl(Python, 1999; Perl, 1999; Tcl, 1999).,它们作为一种工具,能创造更好的科研软件。在这篇文章中,我要重点强调脚本语言,尤其是python,源于我对一种特定的应用新程序4年的跟踪研究。我特别希望来说明脚本语言是多么适合的科学软件项目,以及它们可提供的开发方式去解决重要的软件工程问题,如可靠性,元器件,重用和项目管理工程。尽管讨论将集中在Python中,我想强调这些原则适用于一般的脚本语言。 2. 科学软件开发的特点 考虑到科学软件主流派别。一方面有诸如IDL和MATLAB等封装包。另一方面也有一些特定软件去解决特定问题(多数是研究人员自己写的)。即使是封装包更精致,对于更有意思的科学内容来说,更有可能被本土软件包含。例如,一个特殊用途的程序可能被写入为了解决偏微分方程,而像IDL这样的包可能会错误百出。大多数新的科学软件创建都是一个研究小组决定的,以解决新的计算问题。最初,他们的目标只是要解决一个非常具体的问 题,由一组特定的方程,初始条件,边界条件和数值技术定义。在许多情况下,这个问题可以通过编写C或Fortran与一些数值方法和一些编程库援助的小程序就可以搞定。 刚开始时,程序很小。但是一旦它们成功了,就会被扩大去解决一些类似的问题。为了处理这些差异,额外的灵活性通常被添加到一个的用户界面,无论是用户查询各种问题参数或要求用户提供一个系列的命令行选项的形式系统。不幸的是,随着更多的功能以这种方式被添加到工程中,科学家会在众多命令行和神秘的输入脚本中崩溃。当程序到达这个阶段,开发者可能会决定彻底改革其结构和用户界面。很多时候,往往会导致本土的命令解释器,它允许用户设置参数和执行简单的命令。当然,这并不是一个惊奇。其一,实施一个简单的命令解释器对有能力的程序员来说并不是十分艰巨。其次,这种界面可以模仿那些更精美得科学软件。不幸的是,这通常代表了许多项目开发的最后阶段。其一,超越了简单的解释器将涉及广泛的编程技能,而这正是很多编程者不具备的技能。例如,把一个完整的编程语言的命令解释器都需要一些语言解析器的设计施工和技术知识。例如,把一个命令行解释器变为整个编程语言,需要解释器构造技术和一些语言设计技巧。同样,建设一个图形用户界面需要一个同样复杂的编程技能。然而更可能的情况是,科学家们没有看到这些功能被加入所获得收益是佛值得开发。因此,科学家的工具箱全部充满了各种各样的程序,每个都是他们自己写的奇怪的语言。然而,糟糕的用户界面只是问题的一部分。相反,关键的一点是,最有用的科学软件开始时比较小,在一个相对长一段时间后变得比较零散。此外,这些项目在开始

文档评论(0)

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

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

1亿VIP精品文档

相关文档