20070524

Matlab, maple, matlab, matcad等数学工具的对比(转载)

我搞计算物理的,说说我机子上常用的东东吧(有些不是GNU的,呵呵)
1.Mathematica 5.0
从大三见到它开始就喜欢上了,以前学高数的时候怎么没见到这个软件呢?Maxima可以
代替Mathematica的部分功能,不过习惯了Mathematica,也就不想再学新的东西了。
Mathematica现在在功能与界面上都要比Maxima要强,至少我觉得是这样的。
现在Mathematica 5.0 for linux的盗版已经有了,用linux还要盗版,hehe;
2.PGI 4.0
Fortran & C 的编译器,据说有些程序它编译出来的比g77快好几倍。做计算的对计算
效率可是很挑剔的,所以一直在用它而没用g77;
3.Emacs
终于有了GNU软件了,Emacs可以同时编译很多的文件,还能对算出来的数据做后期加工
(以前我曾经要取出一个数据文件的奇数行,Emacs轻松搞定)。Emacs是很灵活的东东,
习惯了以后就会发现是个极好用的工具;
4.Xmgr(grace)
xmgr 2.0以后就叫grace了,基本可以代替Origin的功能,一般的数据拟合,变换都
都可以胜任,我们实验室用了很久了。功能更强一点的是gnuplot,可以画xmgr不能画的
三维图,不过是命令行的,不易上手;

几点个人偏见:
1.Matlab学工科的人可能用的比较多,不过强度比较大的计算它的效率很低,还是不如
Fortran,小规模的演算Mathematica完全可以胜任。
2.为什么用Fortran而不用C:
(1) 科学计算用Fortran很久了,大量的程序都是Fortran写的,即使你不用Fortran
计算,至少也得看的懂Fortran.何况现在Fortran的数值计算性能上还是优于C;
(2) C功能上比Fortran强,但是也更容易出错。做计算的整天忙着处理跟计算不相关
的语法问题是很浪费时间的事情。实际上我现在的工作用Fortran 77就可以,Fortran 90
比77更好用,主要是矩阵运算有了专门的函数。没有类,对象,指针,科学计算照样可以
进行。

-------------------

若干数学软件的应用比较

目前,在科技和工程界上著名的数学软件主要有: MatLab、MathematicaMaple和MathCAD,它们各自针对的不同目标,有不同的特色。在学习和研究工作中,我接触比较多的是前三者。

1.MatLab――The Language of Technical Computing

MatLab V是我最先学习的计算软件,目前最新版本是MatLab 6.5。MatLab原是Matrix Laboratory在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。MatLab可以运行于多个操作平台上,如Windows 9X/NT、OS/2、Macintosh、Unix、Linux等。

MatLab程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数, 工具包则包括复杂系统仿真、信号处理工具包、神经网络工具包、图像处理工具包、统计工具包等。MatLab是数值计算的先锋,它以矩阵作为基本数据单位, 在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。

MatLab的功能非常强大,可编程,支持C、Fortran等程序语言,附带Editor编辑器、图片处理等应用程序,和数百兆的帮助说明文档,使用相当方便。但是占据的系统资源也相当惊人;因此,我主要用它来完成后期计算、以及数据、图形的进一步处理。

2.Mathematica――The way the world calculates

Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,目前最新版本是Mathematica 4.2。

Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,如Mac OS、Linux等,Mathematica是一个交互式的计算系统,所接受的命令被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有非常严格的规定,虽然给使用者造成一些不便,一点微妙的输入差别就会出现完全出乎用意的结果,但这恰恰是其魅力所在,Mathematica的输入与输出格式也更让我们习惯。

鉴于Mathematica强大的符号运算能力,我主要用它来验证我的公式推导和做一些尝试性的推测,同时配合MatLab的数值计算功能。在实际工作中,我发现Mathematica的计算结果与计算机的性能有很大关系,不仅体现在速度方面;某些运算繁琐的题,在低档机上是得不到结果的;此外,它往往不能简化为我们所希望的表达式,因此,经常需要观察比较甚至更改计算结果的形式。

3.Maple――A comprehensive computer system for advanced mathematics

Maple是由Waterloo大学开发的数学系统软件,目前最新版本为8.0,它不但具有精确的数值处理功能,而且具有很好的符号计算功能,是MatLab和Mathematica的很好的折中选择,包括代数、分析、离散数学、图形处理、数值计算等领域的工具包;Maple提供了三千多种嵌入函数,支持丰富的运算符号,提供快速的编程处理环境,使用非常方便。

所以,我主要利用Maple来迅速完成一些简单的任务,尤其是在学习、作业的过程中。

4.MathCAD――A broad collection of numerical and symbolic calculation and visualization tools in a familiar scratchpad interface.

MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到引用Maple强大的符号计算能力,到今日的MathCAD 2001i,功能也从简单的数值计算,有了了质的飞跃。

MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件,界面友好、方便灵活,与Microsoft Office等兼容性较好,也适合普通用户使用,做一些简单计算。

比较而言,Maple和MathCAD是两种比较灵活、能干的软件,使用方便、兼容性高;Mathematica具有很强的符号运算、处理能力,能完成许多其它软件不能完成的工作如某些积分、求极限等;MatLab在图形处理、矩阵计算方面占优势;在计算精度和编程方面,可以选择Mathe
-------------------
Maple、MATLAB、MathCAD和Mathematica


数学软件四大家 ---Maple、MATLAB、MathCAD和Mathematica

  目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、MATLAB、MathCAD和Mathematica。它们在各自针对的目标都有不同的特色。

  一、Maple V 系统
  Maple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、 线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语 言开发的。
  Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。

  二、MATLAB 系统
  MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成 为科技计算、视图交互系统和程序语言。MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。
  MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优 化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。而且5.x版本还包含一套 几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。
  MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具, 同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同 时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB的大部分功能,使Word具有特殊的计算能力。

  三、MathCAD 系统
  MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。
  MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件。MathCAD7.0 Professional(专业版)运行在Win9X/NT下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界 面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD 7.0 Professional 还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的。这个程序编辑器的优点是语法特别简单。
  MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。

  四、Mathematica 系统
  Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。
  Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算 是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达 式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确 地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。3.0 版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。

  五、四种软件的比较
  选用何种数学软件?如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求, 而且它的输入界面也特别友好。如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特 色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的。如果要求进行矩阵方面或图形方面的处 理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Word6.0/7.0的编辑功 能,可以很方便地处理科技文章。



mathematica 值得信赖,国外很多著名的大学都在用它作解析计算和公式的推导,证明,算法的研究, 非常好的数学研究软件,我个人认为是No.1。它的数学分析可视化无与伦比。综合性能和另一个著名的软件Maple相比,又过之而无不及,要知道世界上绝 大部分的量子物理,天体物理论文中的公式推导都由它完成。绝对高端但又易用,是数学,力学,物理研究人员的好帮手,甚至它的数值计算也完全可以应付学术研 究。mathematica 和 Maple 的最新版本在用户公式的输入上都有很大改进,更加方便,随意。

北美不少Top大学的弹性力学,板壳理论,有限元等数学力学理论课的作业和Project都要求用它来完成。 我个人认为, 作为计算力学的工作者,从掌握语言的角度来讲, 只要掌握3种计算语言足够了,mathematica用来作解析法和数学模型的研究,Matlab用来实现数值算法(当然仍然可以还用 mathematica), Fortran用来写可执行源代码。没必要把自己陷入众多的语言和计算软件之中,没有意义的。

No comments: