计算机代数系统 数学软件

 

GentleYang 之 数学与计算机科学

 

数学与计算机科学在今天已经有着非常复杂的关系了,计算机技术是二者共同的产物。比如Google公司会宣称自己的软件工程师懂多少多少高深的数学知识,而且google黑板报也能说明这一点;又比如很多数学方面的实验室会宣称自己的研究人员有着多么扎实的计算机基础与优秀的编程能力等。 这些事实都说明数学与计算机科学相互促进,而且在这一点在日后将体现得更加充分。 IT业的每一次革新、没一个创新,都离不开问题求解之道与所谓的自然科学之父-数学(当然也有说法是自然科学之父-伽利略,我想这不是我们关注的视角; 或者还有自然科学之母-哲学)。

 

 

一 计算机代数系统

 

Computer Algebra System ,(CAS )是进行符号运算的软件。

 

科学计算可分为两类:一类是纯数值的计算,例如求函数的值,方程的数值解;另一类计算是符号计算,又称代数运算,这是一种智能化的计算,处理的是符号.符 号可以代表整数,有理数,实数和复数,也可以代表多项式,函数,还可以代表数学结构如集合,群的表示等等.我们在数学的教学和研究中用笔和纸进行的数学运 算多为符号运算.

  我们知道,从计算机发明到现在的50多年时间里,用计算机进行的科学计算主要是数值计算,如天 气预报,油藏模拟,航天等领域的大规模数值计算.长期以来,人们一直盼望有一个可以进行符号计算的计算机系统.早在50年代末,人们就开始了研究.进入 80年代后,随着计算机的普及和人工智能的发展,用计算机进行代数运算的研究在国外发展非常迅速,涉及的数学领域也在不断地扩大,相继出现了多种功能齐全 的计算机代数系统,这些系统可以分为专用系统和通用系统,专用系统主要是为解决物理,数学和其他科学分支的某些计算问题而设计的,专用系统在符号和数据结 构上都适用于相应的领域,而且多数是用低级语言写成的,使用方便,计算速度快,在专业问题的研究中起着重要的作用.通用系统具有多种数据结构和丰富的数学 函数,应用领域广泛.其中,REDUCE,RERIVE,Mathematica和Maple是用户教为广泛的通用数学软件.最近的计算机代数系统都是用 C语言写成的,这种语言为软件开发者提供了编写有效的可移植的计算机程序的平台,所以这种计算机代数系统可以在绝大多数计算机上使 用.Mathematica和Maple就是这样的系统.Mathematica是第一个将符号运算,数值计算和图形显示很好地结合在一起的数学软件,用 户能够方便地用它进行多种形式的数学处理.Maple是80年代初就开始研制的计算机代数系统,起初并不为人们所注意,但这个软件发展很快.自从1992 年MapleVR2出版后,更多的用户就发现它是一个功能强大而且界面友好的计算机代数系统.
  尽管不同的数学软件之间有较大的差别,但也有一些共同的特点:
  1.可以进行符号运算,数值计算和图形显示,这是通用数学软件包的三大基本功能.具有高效的可编程功能.
  2.多数计算机代数系统都是交互式的,人们通过键盘输入命令,计算机计算后显示结果.好的系统都有Windows操作系统下的版本,人机界面友好,命令输入方便灵活,很容易寻求帮助.结果的输出有多种形式,好的数学软件都提供了人们习惯的数学符号表达形式.
  3.各个系统都在不断地发展完善,不断地更新换代,更新的速冻也在逐渐加快.数学软件在向着智能化,自动化方向发展.数学软件的实质是数学方法及其算法在计算机上的实现,这些方法是千百年来无数数学家的工作与智慧的结晶.
  4.参与软件开发和应用的人员的数量在不断增加,而且日趋国际化.随着Internet的普 及,软件用户可以很方便地与软件开发者进行沟通,反映软件中存在的问题,也把新的应用情况和好的程序提供给软件的开发者.软件的开发不再只是软件开发者的 事情,也是广大用户的事情.
  计算机代数系统的优越性主要在于它能够进行大规模的代数运算.通常我们用笔和纸进行代数运算只 能处理符号较少的算式,当算式的符号上升到百位数后,手工计算便成为可能而不可行的事,主要原因是在做大量符号运算时,我们很容易出错,并且缺乏足够的耐 心.当算式的符号个数上升到四位数后,手工计算便成为不可能的事,这时用计算机代数系统进行运算就可以做到准确,快捷,有效.
  尽管计算机代数系统在代替人进行繁琐的符号运算上有着无比的优越性,但是,计算机毕竟是机器, 它只能执行人们给它的指令.数学软件都有一定的局限性.首先,多数计算机代数系统对计算机硬件有较高的要求,在进行符号运算时,通常需要很大的内存和较长 的计算时间,而精确的代数运算以时间和空间为代价的.一些人工计算的简单问题,计算机代数系统却做不出来.用数学软件的第二个问题是计算结果往往很长,人 们很难从结果中看到问题的要害.用计算机代数系统进行数值计算,虽然计算精度可以到任意位,但由于计算机代数系统是用软件本身浮点运算代替硬件算术运算, 所以在速度要比用Fortran语言算同样的问题慢百倍甚至千倍.另外,虽然计算机代数系统包含大量的数学知识,但这仅仅是数学的一小部分,目前有许多数 学领域计算机代数系统还未能涉及.

 

 

历史

Martin Veltman 是这个领域的先驱,他首先考虑了在高能物理中的应用。他在1963年设计的第一个程式叫 Schoonship (荷兰文,意指“干净的船”)。

最早受到欢迎的系统是 Reduce、Derive 与 Macsyma,现在仍然可取得。Macsyma 的一个GNU通用公共许可证发行的版本叫作 Maxima,现在仍有维护。市场的龙头为 Maple 与 Mathematica,两者被数学家、科学家及工程师们广泛采用,此外还有 MuPAD 与 MathCad。

另有一些系统着眼于特定的应用领域,这些系统通常在学院中被设计、发展及维护,例如交换代数系统 Macaulay 2 或数论系统 PARI/GP。

几种计算机代数系统


    * Mathematica
    * Maple
    * Maxima
    * Meditor
    * MuPAD
    * MAGMA
    * Xcas / Giac
    * Yacas
    * Mate

 

 

二  数学软件

 

1 Matlab、Mathematica、Maple、Mathcad、

这几个被称为最基本最主要的数学四大软件!

 

2 SAS、SPSS、

这两个是统计软件;尤其是做复杂统计多元统计等,在经济、金融证券等领域应用很广。精算师一定会使用SPSS的。

 

3 Lindo/Lingo

求解数学规划问题的优化计算软件包。比如笔者曾经做过的某油田十一五规划方案,就是一个多目标的规划问题,建模以后使用了Lindo来求解 。

 

 

4 数学软件远不至上面这些,很多商业软件都有对应的开源软件,比如:

scilab : 类似matlab的开源系统,而且与matlab在很多方面兼容

Maxima: 被认为是可替代maple的符号处理软件,而且有一个wxMaxima的GUI版本

R:用于统计分析的程序设计语言和软件开发环境,被认为可代替商业软件S-Plus

 

科学计算一般被分为数值计算和符号计算,这两个方面都有很多成熟的软件,包括商业的和开源的。

 

其他软件:

Axiom Sage Yacas  GNU-Octave   Euler Calculators ... ... ... ...

 

 

如果你需要了解更多的数学软件,可以参考Google的数学软件分类列表: http://www.google.com/Top/Science/Math/Software/

 

 

讨论:

MATLAB到底是不是计算机代数系统? 

*** 我的观点是“是”;尽管很多人觉得MATLAB更像是一个数学研究人员或者工程技术人员的workbench,但MATLAB的很多方面都是很符合计算机代数系统的定义的,只不过Mathworks让它更接近IT领域的workbench,这样就可以让相关的开发人员轻松地进行混合编程、开发GUI程序,甚至在自己的业务系统中调用MATLAB的某个功能或者模块等,甚至可以以此开发商业产品。

 

 

三 部分软件简介

 

Matlab

MATLAB是MathWorks公司推出 的一套高性能的数值计算和可视化软件,经过多年大量的、坚持不懈的改进,现在MATLA已经更新至7.x版。MATLAB集数值分析、矩阵运算、信号处理 和图形显示于一体,构成了一个方便的、界面友好的用户环境。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式、其结果便以人们十分熟悉的数 值或图形方式显示出来。有关该软件的发行版本、发行价格和其它最新信息都可以从MathWorks 公司的网络站点http://www.mathworks.com/ 获取。

MATLAB的含义是矩阵实验室(Matrix Laboratory),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。经过十几年的完善和扩充,现在已发展成为线性代数课程的标准工 具,也成为其它许多领域课程的使用工具。在工业环境中,MATLAB可用来解决实际的工程和数学问题,其典型应用有:通用的数值计算,算法设计,各种学科 如自动控制、数字信号处理、统计信号处理等领域的专门问题求解。 MATLAB语言易学易用,不要求用户有高深的数学和程序语言知识,不需要用户深刻了解算法及编程技巧。MATLAB既是一种编程环境,又是一种程序设计 语言。这种语言与C、FORTRAN等语言一样,有其内定的规则,但MATLAB的规则更接近数学表示。使用更为简便,可使用户大大节约设计时间,提高设 计质量。

Mathematica

Mathematica系统是美 国Wolfram研究公司开发的一个功能强大的计算机数学系统。它提供了范围广泛的数学计算功能,支持在各个领域工作的人们做科学研究和过程中的各种计 算。它的主要使用者包括从事各种理论工作(数学、物理、...)的科学工作者,从事实际工作的工程技术人员,高等、中等学校教师和学生等。这个系统可以帮 助人们解决各种领域里的涉及比较复杂的符号计算和数值计算的理论和实际问题。从某种意义上讲,Mathematica是一个复杂的、功能强大的解决计算问 题的工具。它可以自动地完成许多复杂的计算工作,如求一个表达式的积分、作一个多项式的因式分解等等。人们可以操作它、指挥它去一步一步地处理研究领域里 的或工程中的实际问题,就象机械工人操作机床加工复杂的工件似的。在过去,人们只能用纸和笔作为工具去处理这样的问题,用自己的头脑去记忆、考察和判断。 由Mathematica这样一类的系统出现带来的思维与解题工具的革新很可能对各种研究和工程领域产生意义深远的影响。有关该软件的发行版本、发行价格 和其它最新信息都可以从Wolfram公司的网络站点http://www.wolfram.com/ 获取。

Mathematica 是一个集成化的计算机软件系统。它的主要功能包括三个方面:符号演算、数值计算和图形。Mathematica可以完成许多符号演算的数值计算的工作。例 如,它可以作各种多项式的计算(四则运算、展开、因是分解);有理式的计算。它可以求多项式方程,有理式方程和超越方程的精确和近似解;做数值和一般表达 式的向量和矩阵的各种计算。Mathematica还可以求解一般函数表达式的极限、导函数,求积分,做幂级数展开,求解某些微分方程等等。使用 Mathematica可以做任意位的整数的精确计算、分子分母为任意位整数的有理数的精确计算(四则运算、乘方等);可以做任意精确度的数值(实数值或 虚数值)的数值计算。这个系统的所有内部定义的整函数和数值(实数值和复数值)计算函数也都有这样的性质。使用MATHEMATICA可以方便地作出以各 种方式表示的一元和二元函数的图形,可以根据需要自由地选择画图的范围和精确度。通过对这些图形的观察,人们可以迅速形象地把握对应函数的某些特征,这些 特征仅仅从函数的符号表达式一般是很难认识的。

MATHEMATICA系统的能力还不仅近在于具有上述这些功能,更重要的是在 于它把这些功能融合在一个系统里,是他们成为 一个有机的整体。在使用MATHEMATICA的工过程中,使用者可以根据自己的需要一会儿从符号演算转去作图系转去作图形,一会儿去作数值计算。这种灵 活性为使用者带来很大的方便,经常能使一些复杂的问题变的易如反掌,使问题处理起来得心应手。

在学习和使用的过程中读者一定会 进一步体会到这些。MATHEMATICA还是很容易扩充的系统,它的用于描述符号的表达式和对它们的计算的一套记法实际上构成了一个功能强大的程序设计 语言,用这种语言可以比较方便地定义用户需要的各种函数,如符号计算函数、数据计算函数、作图函数或其他具有复杂功能的函数,完成用户需要的各种工作。系 统本身提供了一批用这个语言写出来的完成各种工作的程序包,在需要时可以调入程序使用。用户自己可以用这个语言写自己的专门用途的程序或软件包来。

Maple

Maple是加拿大滑铁卢大学 (Waterloo University)研制的一种计算机代数系统。经过近20年的不断发展,数学软件Maple已成为当今世界上最优秀的几个数学软件之一,它以良好的使 用环境、强有力的符号计算能力、高精度的数字计算、灵活的图形显示和高效的可编程功能,为越来越多的教师、学生和科研人员所喜爱,并成为他们进行数学处理 的工具。可以容易的运用Maple软件解决微积分、解析几何、线性代数、微分方程、计算方法、概率统计等数学分支中的常见的计算问题。

1980 年9月,加拿大Waterloo大学的符号计算研究小组成立,开始了符号计算在计算机上实现的研究项目。数学软件Maple是这个项目的产品。目前,这仍 是一个正在研究的项目。Maple的第一个商业版本Maple3.3是1985年出版的。随着几经更新,Maple被广泛的使用,得到越来越多的用户。

Maple 软件主要由三部分组成:用户界面(Iris),代数运算器(kernel),外部函数库(External library)。用户界面和代数运算器是用C语言写的,只占整个软件的一小部分,当系统启动时,即被装入。Iris负责输入命令和算式的初步处理、显示 结果、函数图像的显示等。Kernel负责输入的编译、基本的代数运算,如有理数运算、初等代数运算,还负责内存管理。Maple的大部分数学函数和过程 是用Maple自身的语言写成的,存于外部函数库中。当一个函数调用时,在多数情况下,Maple会自动将该函数的过程调入内存,一些不常用的函数才需要 用户自己将它们调入。另外有一些特别的函数包也需要用户自己调入,如线性代数包、统计包,这使得Maple在资源的利用上具有很大的优势,只有最有用的东 西才留住内存,这是Maple可以在较小内存的计算机上正常运行的原因。

Mathcad

MathCAD,又称MCAD,即数学 CAD,是MATH SOFT公司推出的一套数学应用软件。MATH SOFT公司自从1986年推出第一套MathCAD软件到今天,已经对MathCAD作了多次改进和功能扩充。现在,MathCAD已成为一种具有多种 功能、交互式强且应用十分广泛的应用软件。有关该软件的发行版本、发行价格和其它最新信息都可以从MATH SOFT公司的网络站点http://www.mathsoft.com/ 获取。

MathCAD是一种交互式的数值系统。用 户可以通过MathCAD直接进行各种数学计算。例如,代数运算、三角函数运算、解方程、生成各种随机数、积分运算、求导和微分的运算、矩阵运算、解不等 式、分解因式等等。除了这些较为基本的数学运算,用户还可以应用进行各种数理统计工作并且生成图形,也可以生成其它各种曲线或图形及数学表格,还可以进行 线性回归、各种矢量运算和复数运算等等。MathCAD不仅是是一套在数学计算和数值分析方面很全面、方便的软件,在自然科学的其它领域也具有十分广泛的 应用。用户应用MathCAD可以很轻易地解决热学、电学等物理方面的问题,也可以用来解决在化学、机械工程以及医学、天文学的研究工作或学习中所遇到的 各种问题。MathCAD为广大学生,特别是理工科的大学生的学习提供了很大方便。

MathCAD的使用操作十分简单,不要求 用户具有精深的计算机知识,对于任何具有一定数学知识的人,都可以十分容易地学会使用。因此,MathCAD是一种大众化数学工具。但是,对于数值精度要 求很严格的情形,或者是对于计算方法有特殊要求的情况,MathCAD就显得有些不那么十分适合了。

SAS

SAS是美国SAS软件研究所研制的一套大型集成 应用软件系统,具有完备的数据存取、数据管理、数据分析和数据展现功能。尤其是创业产品―统计分析系统部分,由于其具有强大的数据分析能力,一直为业界著 名软件,在数据处理和统计分析领域,被誉为国际上的标准软件和最权威的优秀统计软件包,广泛应用于政府行政管理、科研、教育、生产和金融等不同领域,发挥 着重要的作用。SAS系统中提供的主要分析功能包括统计分析、经济计量分析、时间序列分析、决策分析、财务分析和全面质量管理工具等等。

SAS 系统是一个组合软件系统,它由多个功能模块组合而成,其基本部分是BASE SAS模块。BASE SAS模块是SAS系统的核心,承担着主要的数据管理任务,并管理用户使用环境,进行用户语言的处理,调用其他SAS模块和产品。也就是说,SAS系统的 运行,首先必须启动BASE SAS模块,它除了本身所具有数据管理、程序设计及描述统计计算功能以外,还是SAS系统的中央调度室。它除可单独存在外,也可与其他产品或模块共同构成 一个完整的系统。各模块的安装及更新都可通过其安装程序非常方便地进行。SAS系统具有灵活的功能扩展接口和强大的功能模块,在BASE SAS的基础上,还可以增加如下不同的模块而增加不同的功能:SAS/STAT(统计分析模块)、SAS/GRAPH(绘图模块)、SAS/QC(质量控 制模块)、SAS/ETS(经济计量学和时间序列分析模块)、SAS/OR(运筹学模块)、SAS/IML(交互式矩阵程序设计语言模块)、SAS /FSP(快速数据处理的交互式菜单系统模块)、SAS/AF(交互式全屏幕软件应用系统模块)等等。SAS有一个智能型绘图系统,不仅能绘各种统计图, 还能绘出地图。SAS提供多个统计过程,每个过程均含有极丰富的任选项。用户还可以通过对数据集的一连串加工,实现更为复杂的统计分析。此外,SAS还提 供了各类概率分析函数、分位数函数、样本统计函数和随机数生成函数,使用户能方便地实现特殊统计要求。 目前SAS软件对Windows和Unix两种平台都提供支持。 虽然在我国SAS的广泛应用还是近几年的事,但是随着计算机应用的普及和信息事业的不断发展,越来越多的单位采用了SAS软件。尤其在教育、科研领 域,SAS软件已成为专业研究人员的实用进行统计分析的标准软件。

然而,由于SAS系统是从大型机上的系统发展而来,其操作至 今仍以编程为主,人机对话界面不太友好,系统地学习和掌握SAS,需要花费一定的时间和精力。而对大多数科技工作者而言,需要掌握的仅是如何利用SAS来 解决自己的实际问题,因此往往会与SAS软件失之交臂。但不管怎样,SAS作为专业统计软件中的巨无霸,现在还很难有什么统计软件足以与之抗衡。

SPSS

SPSS是软件英文名称的首字母缩写,原意为 Statistical Package for the Social Sciences,即“社会科学统计软件包”。但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为 Statistical Product and Service Solutions,意为“统计产品与服务解决方案”,标志着SPSS的战略方向正在做出重大调整。

迄今SPSS软件已有30 余年的成长历史。全球约有25万家产品用户,它们分布于通讯、医疗、银行、证券、保险、制造、商业、市场研究、科研教育等多个领域和行业,是世界上应用最 广泛的专业统计软件。在国际学术界有条不成文的规定,即在国际学术交流中,凡是用SPSS软件完成的计算和统计分析,可以不必说明算法,由此可见其影响之 大和信誉之高。 SPSS最突出的特点就是操作界面极为友好,输出结果美观漂亮(从国外的角度看),他使用Windows的窗口方式展示各种管理和分析数据方法的功能,使 用对话框展示出各种功能选择项,只要掌握一定的Windows操作技能,粗通统计分析原理,就可以使用该软件为特定的科研工作服务。是非专业统计人员的首 选统计软件。在众多用户对国际常用统计软件SAS、BMDP、GLIM、GENSTAT、EPILOG、MiniTab的总体印象分的统计中,其诸项功能 均获得最高分 。

SPSS采用类似EXCEL表格的方式输入与管理数据,数据接口较为通用,能方便的从其他数据库中读入数据。 其统计过程包括了常用的、较为成熟的统计过程,完全可以满足非统计专业人士的工作需要。对于熟悉老版本编程运行方式的用户,SPSS还特别设计了语法生成 窗口,用户只需在菜单中选好各个选项,然后按“粘贴”按钮就可以自动生成标准的SPSS程序。极大的方便了中、高级用户。

Lindo

LINDO是一种专门用于求解数学规划问题的 优化计算软件包,版权现在由美国LINDO系统公司所拥有,LINDO软件包的特点是程序执行速度快,易于方便的输入、修改、求解和分析一个数学规划(优 化问题),主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于一些线性和非线性方程组的求解以及代数方程求根等。LINDO中包含 了一种建模语言和许多常用的数学函数(包含大量概率函数),可供使用者建立数学规划问题模型时调用。

因此LINDO在教学、科研和工业界得到广泛应用。有关该软件的发行版本、发行价格和其它最新信息都可以从LINDO系统公司的网络站点http://www.lindo.com 获取。

 

 

 

 

 

最后,如果你在本话题所关注的方面有很好的经验,可以和笔者分享(nodexy AT gmail DOT com );或者你在某些方面有疑问,也可以和笔者交流沟通。

你可能感兴趣的:(编程,网络应用,matlab,大众软件,大众硬件)