1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 开放源代码的数学软件

开放源代码的数学软件

时间:2022-08-03 02:49:27

相关推荐

开放源代码的数学软件

希望对开放源代码运动,GNU计划和Linux操作系统有进一步了解的读者,参看参考文献[1],[2],[6]和[7]。

上面提到的软件,都是通用性的。在数值和符号计算软件中也有越来越多开放源代码软件。本文着重介绍两个数值计算的开放源代码软件Scilab和GNU Octave,并且与大家熟知的Matlab作了对比,表明Scilab和GNU Octave都可以用来替代Matlab。

2开放源代码的数学软件

其实我们很久以来一直在使用着开放源代码软件,一个著名的例子就是LaTex排版软件。开放源代码一直是计算数学和科学与工程计算领域重要的工作方式,而且多年如此。在计算数学领域中,算法用程序来表达是自然的,也是清晰高效的。对我们来说,代表数学算法的源代码是一种思想交流的方式,不应该被某些人据为私有,并加上版权保护。NetLib()为该领域众多的学者所熟悉,是多年来进行开放源代码数学软件交流的重要媒介。

但近几年,数学软件的研究与使用者,注意力似乎更多地被商业性数学软件所吸引,如Mathematica,Matlab, Maple, SAS等相当普及和流行。不可否认,这些软件产品的确非常优秀,性能很好。但是他们价格昂贵,并且是专有的,使用上受到限制,在国内售后服务和技术支持有限。反思这一现象,不难发现这些商业软件的的诱人之处,主要在于友好的用户界面和完善的图形功能。

在任何的软件中,如果没有发布原代码,软件中的问题只能等待软件开发商来修正。比如Matlab中的函数roots,对(x-a)n这样的多项式求根的结果并不理想,例如我们对(x-1)50求根,那么会出现这样的结果,第一个根是2.73693805237014,最后一个是0.364760488907891,我们没有办法去用一个更好的算法去替代它。而Matlab的每次升级都没有涉及这一问题,需要的用户只好一次又一次地等待。如果使用的是开放源代码软件,那么结果是另外一个样子,用户可以自己动手去修改它,并和大家一起分享这个好处。

3 作为Open Source Software的Scilab

Scilab是由法国INRIA实验室开发的一个开放源代码的自由软件,它最初是为系统控制和信号处理而开发的。与传统的开放源代码数学软件相比,Scilab的特点在于它具有友好的用户界面和较完善的图形功能。Scilab软件由三个部分组成:语言解释器,Scilab例程的函数库,Fortran和C例程库。

Scilab提供的是一个解释运行的计算环境,具有鲜明的特点。

(1)与平台无关(cross-platform)

INRIA实验室的努力工作下,以及一些志愿者的协作下,几乎可以在任何一个计算机环境中使用Scilab。在Windows9x/NT系统,常见的Unix/Linux-XWindow系统,以及Apple公司的Macintosh系统上我们都可以找到可运行的Scilab的二进制发行版本。

更多的环境将被Scilab支持。如果需要在一些特殊的操作系统环境中使用,用户还可以自己编译一个可执行的版本。

(2)与Matlab兼容(Matlab-Compatible)

Scilab是和Matlab兼容的高级语言,具体体现为,

具有种类丰富的数据类型,矩阵的运算象普通的数值运算那样自然。这与大家熟悉的Matlab相当类似,易于使用。为各种计算提供了一个基本的函数和功能集。能处理更复杂的矩阵运算,比如分式矩阵,矩阵多项式,能够处理图表和列表这样复杂的对象。提供了一个开放的可编程的环境,可以轻松添加基本功能。支持以工具箱(Toolbox)的形式针对特殊的应用开发函数库。Scicos工具包能快速方便的进行数学建模,其功能接近Matlab软件的Simulink。

(3)图形化界面

界面的形式与Matlab接近,对熟悉Matlab的用户很容易接受Scilab。

(4)开放源代码

Scilab对我们来说是一个完全开放式的数学计算环境,可以在底层扩展功能,甚至于动手优化和定制一个自己的Scilab。在Scilab的各个发行版中,有一种发行版是一般数学软件所没有的,通常是这样命名的:

scilab-2.5-src.tar.gz

在软件名scilab以及版本号2.5后面有个src,这是原代码(source)的缩写。这样的发行版代表着这是原代码的发行包,里面是Scilab的一份原代码。这种发行包是开放源代码软件的典型特征。

Scilab的README文件里面明确的说明这是个自由软件,对所有用户都是免费使用。只需要用户按照格式填写一份用户说明,然后使用email注册就可以了。

(5)并行计算:

Scilab集成了PVM (Parallel Virutal Machine),因此我们可以网络环境中并行计算。Matlab则没有这部分功能。关于Scilab的并行计算的进一步介绍见[8]。

可见Scilab是一个比较完善的计算环境,在大多数情况下能满足我们的要求。我们在使用方式、功能和性能上把Scilab和Matlab作了一些比较测试,从结果看,Scilab是一个优秀的计算平台。和昂贵的商业软件相比,无论在性能还是在易用性上,Scilab都不亚于的商业软件。

4自由数学软件GNU Octave

GNU Octave是自由软件基金会(Free Software Foundation)支持的遵循GPL协议(GNU General Public License)的一个自由再发布的软件,作者是以John W. Eaton为首的一些志愿者。它提供了一个环境,该环境支持叫做GNU Octave的高级语言,这种语言与Matlab兼容,主要用于数值计算。它提供了一个方便的命令行方式,可以数值求解线性和非线性问题,以及做一些数值模拟。

Octave也提供了一些工具包,可以解决一般的线性代数问题,非线性方程求根,常规函数积分,处理多项式,处理常微分方程和微分代数方程。它也很容易的使用Octave自带的接口方式扩展和定制功能。与前面介绍的Scilab相比,

首先它们的共同点是开放源代码软件。Octave的比起Scilab,对Matlab的语法兼容性更好,几乎没有差别。比如,Octave也使用M文件的形式来扩展功能和定义函数。因此熟悉Matlab的用户更容易接受Octave环境。Octave的功能比起Scilab要简单一些,这使得Octave对一些用户来说意义不如Scilab大。 很不幸的是Octave目前没有图形界面,我们只能在行命令的方式进行交互。

但是Octave还是有自己的特点:

(1) 它是一个GPL软件。关于GPL的意义,这里不介绍,我们要指出的一点是,它允许用户在遵循GPL协议的前提下,自己发行这个软件,可以单独,也可以包含在用户的产品里面发行。而Scilab是不允许的,用户只能免费使用Scilab。

(2) 它可编程的性能更好, Octave语言功能更为强大,几乎提供所有系统函数的支持,Octave在语法上也更接近C的语法,比如提供++和这--样的预算符。这样,我们可以在Octave环境里面增加一些更为强大和易用的扩展。不象在Matlab和Scilab环境中限制比较多,有时无法充分的利用系统资源。

(3) 它的计算库都是用C写,而Scilab则基本是Fortran的编写的。这也是一份有用的资源。

5 结论与思考

(1)开放源代码会成为软件开发与发行的重要方式之一。本文介绍的Scilab和Octave都是开放源代码的数学软件。Scilab可以免费使用,Octave不仅可以免费使用,还可以遵照GPL协议由用户再发布。

(2)可以预见,自由数学软件由于它的开放性,功能会不断丰富,性能会逐步提高,能够满足更多用户的要求。

(3)与著名的商业性数学软件Matlab相比,无论从功能还是从性能上Scilab都不逊色。在国内目前售后服务和技术支持有限,而且商业性数学软件价格昂贵的情况下,完全可以替代Matlab使用。

(4)本文介绍的主要是数值计算软件。在符号计算方面Mathematica和Maple是目前流行的商业性软件。开放源代码的符号计算软件发展也很快,yacas是目前被看好的一个。

(5)研制和开发国内自有的科学计算环境,是国内计算数学和科学与工程计算工作者多年探索的问题。借助现有的自由数学软件,特别是可以遵照GPL协议由用户再发布的自由数学软件,可能更加现实。

参考文献(共10篇,略)

Richard Stallman:Stallman是GCC(一种C编译器)和GNU Emacs等软件的作者。GNU计划和自由软件基金会(FSF)的创建者,开放源代码运动的发起人。

GNU计划(GNU Projects):Stallman创建的这一计划,目的是建立一种开放的、免费的Unix版本。GNU本身没有达到目标,但是却产生了一些重要的工具,日后并入Linux并使之成为了特性完备的操作系统。为了保护其工作,Stallman成立了免费软件基金会(Free Software Foundation, )并且起草了General Public License(GPL)。GPL成为了Linux和许多其它计划遵守的准则。进一步的资料见[2]。

DeCSS:一种针对DVD区位加密码的解密算法。美国电影协会认为DeCSS算法代码在网上的公开发表会促使盗版DVD的流行。

Linux: 一种以GPL作为发布协议的操作系统,常见的发行版本有Redhat, Slackware和Debian。对Linux进一步见[6]。

Apache:一种市场上占有率最高的Web Server。Apache是一个在宽松的BSD协议约束下的开放源代码程序,开发者可以随意按照自己的需要对其进行加工。希望详细了解Apache的读者见[10]。

NetLib: 是一个收集数值算法,科学计算以及相关领域自由软件的组织,它主要由AT&T贝尔实验室,田纳西大学(University of Tennessee),OAK RIDGE国家实验室主持运作,是最重要的自由数学软件的交换地点。它不但收集了最全的数学算法程序库,也提供了良好的算法搜索引擎。

INRIA实验室:希望对该实验室做进一步了解的读者见[4]。

PVM:这是NetLib发布的一个目前流行的并行虚拟系统。Scilab在运行环境中集成的是PVM的接口,如果想需要PVM,需要先运行PVM驱动。

返回

GPL: 原文见[1]。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。