找回密码
 注册
Simdroid-非首页
查看: 174|回复: 2

[MathCAD] 【还是篇儿博客】做Project Euler时偶然发现的

[复制链接]
发表于 2013-2-28 00:37:24 | 显示全部楼层 |阅读模式 来自 北京
本帖最后由 朱老剑客 于 2013-2-28 11:52 编辑

原文网址:http://blog.163.com/zhu_xinyan@yeah/blog/static/106916534201312791237314/

  为了锻炼自己的MC编程水平,我也玩儿上了Project Euler,国内有不少网站将这些很著名的数学或者编程趣题翻译过来的网页,也有几个PE小组,我就不多介绍了。我本发了宏愿想用MC把里面所有的题都做一遍,然后打成包展示在博客里的,嗯,我已经攒了20道题了,然后我就放弃了。PE的题目有意思是有意思,而且动动脑筋优化程序确实很锻炼人的,只是大部分都是数论的问题,这就不在我的兴趣范围之内了。
  我是想说PE的第16题和第20题,分别是求100!和2^1000的各位数字之和的,数论吧!我就说PE的所有题目都没有超出“具体数学”的范畴么。嗯,这个时候MC无力了,它的精度只到10^17,然后只能给出数的位数,再细的就没有了。如下图。
  用Excel一样,也只有17位的精度。而Windows自带的计算器竟没问题!作为一个数学软件,MC你难道不觉得耻辱么?微软的Microsoft Math【Microsoft Student(微软的百科全书产品)自带的计算器】,也没问题,只可惜不能编程,否则说不定它的能力都要比MC强。
  比较了一下几个M系列软件对大数的可操作性,包括MC,Maxima,MuPAD和Maple,Mathematica、Matlab等等是怪兽,就不试了。
  100!和2^1000,MC只能显示前17位,后面全是0,Maxima、Maple、MuPAD没问题;
  1000!和2^10000,MC报堆栈溢出,它最大能计算10^307的数字,大于这个数目就没戏;
Maxima、Maple、MuPAD没问题,其中Maxima隐藏了中间显示不出来的数;
  10000!和2^100000,MC不讨论了,MuPAD表示不计算,看到也到它的极限了;Maple和Maxima没问题,只是都隐藏了中间显示不出来的数,貌似是为了节省页面空间。

  这些说明了什么?MC失败了?好吧,直说了吧,MC本来就不是个数学软件。MC的全称是“Mathematical Computor Aided Design System”——数学计算机辅助设计系统,在MathCAD的wiki网页中说到,一开始MC主要是用来做到“带有工程单位的数值的即时计算”的,之后才被加进了一些“计算机代数系统”的功能(“Mathcad is now owned by PTC and is generally accepted as the first computer application to automatically compute and check consistency of engineering units such as the International System of Units (SI), throughout the entire set of calculations. Mathcad today includes some of the capabilities of a computer algebra system, but remains oriented towards ease of use and simultaneous documentation of numerical engineering applications.”)。嗯,而我们现在使用MC的主要方向却恰恰是它的数学功能,至少我就是这样的。
  不要看名字里有个“math”就断定它肯定是搞数学的。
  MC从定位到功能到运行方式,处处都说明它本来就是为了写计算书用的。所以前几天有个写计算书的朋友问我MC怎么使用,我就回答说你把“帮助文件”里的“入门”和“教程”里的“初学者入门”这两章看完了,基本上就等于得到了MC的精髓,完全占有了它。这两份文件,就我所知的,从MC2001一直到MP2.0,除了标明各版本都增删了哪些功能之外差不多是完全一样的。其他的绝大部分“帮助”“教程”“快速模板”都是在讲“计算机代数系统”的使用方法,对于作计算书来说,没什么大用处了。
  另外,MathSoft公司在2006年被PTC收购之前,全称里面还有一个“cambridge”,嗯,MC是剑桥软件系列的一部分,和ChemOffice一样,部分用于学术的展示和交流,而不全是在科学研究上。如果要进行化学方面的建模计算,Gaussian或者Accelrys或许更专业一些。另外,MC和CO还有一个共同点,都是典型的“WYSIWYG”软件,what you see is what you get(所见即所得)的开头字母缩写,这是剑桥交流展示类软件的特点之一。注意这个字符串,“WYSIWYG”,这就是解释语言的标识,所有你看到的都是已经编译好了的东西,如果要进行计算,还要反编译为计算机的文本命令行之后再执行——这串字儿表明它明显不是个编译语言软件——这个字符串决定了MC与其他M系列软件的所有不同之处——计算机需要留出一部分内存或者CPU来即时解释你打在屏幕上的每一个字符,并让它即时计算——没错,“WYSIWYG”的性质决定了它必须是个“即时计算”的软件。
  虽然MP对MC推倒重来了,但MC的定位没有变,首先要满足工程需要,然后再是数学。在工程计算里10^17的精度已经足够奢侈了,大部分都是使用科学计数法,*.**x10^**。在工程师的世界里,没有100!或者2^1000,他们需要的是能够马上看到某一个参数的变化对整个系统的影响规律,而且是直观的,就像是个活的算草纸,像MathCAD那样的就好。
  失望了么各位?如果我说前好几年出的那些《MathCAD与数学实验》之类的书就是纯扯淡,你现在能接受了么?上网查查“数学建模”吧,各种建模大赛,学校里的建模小组,大部分都是披了现实外衣的“具体数学”,和Project Euler是差不多的,不管国内还是国外,都是这样。你用你的那套数学建模的本事给我模拟一套生产聚氯乙烯的化工流程出来?或者你用数学建模给我仿真一个IC的运行过程?别说都有专用软件了,有Modelica了,不属于数学建模的范畴之类的话。实际上MathCAD就是干这些用的,尤其是2001年它集成了“计算机代数系统”之后,可以做到完全的实时的数字化仿真,只是没有3D模型什么的让人看着不够热闹而已。
  嗯哼,这才是我的兴趣所在,通过代数的应用给出一个有用而且甚至可以是完整的工业系统。
  别再讨论MC和其他M系列软件孰优孰劣了,好吗?我建议只对纯数学感兴趣的朋友,干脆把MC卸载了吧,用Windows计算器可能更靠谱点儿。我还建议你的工程涉及到了天文数字的精确计算(当然还有“泛代数”之类的20/21世纪妖孽)的朋友,最好在电脑上再安装一个其他M系列软件并学会使用它。当你用MC仿真的时候,通过Windows的ODBC和SQL在这两个程序之间进行数据交换,你会发现原来“势不两立”的两个M系列软件结合起来用,竟然成了一个加百利大天使,怒目金刚,横扫千军,无往不利。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2013-3-7 19:13:53 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
鄙人最初只是用MathCAD代替草稿纸,后来才发现这家伙竟然能做计算书!
回复 不支持

使用道具 举报

发表于 2013-3-13 13:44:13 | 显示全部楼层 来自 四川成都
选择Mathcad 的最大原因就是它比其他M(比如Matlab)简单易用,而且是“WYSIWYG”软件。在计算精度上有所牺牲,也可以理解。希望Mathcad在以后的版本中有所改善。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 11:19 , Processed in 0.041856 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表