QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 684|回复: 1

开放源代码的数学软件

[复制链接]
发表于 2005-5-16 12:29:40 | 显示全部楼层 |阅读模式
作者:周超 白峰杉(清华大学数学科学系,北京 100084) 2005-02-01 11:10:21 来自:linuxforum.net

1 开放源代码---一个值得注意的趋势

  开放源代码在20世纪最后几年的发展给人以耳目一新的感觉。开放源代码软件,开放源代码模式,开放源代码文化,开放性文档的写作;Richard Stallman和他创立的GNU计划(GNU Projects),Linus Torvalds和以他名字命名的Linux操作系统等,这些名字无数次出现在各种传媒上,迅速成为信息领域通行的概念。信息产业界的大公司——IBM, SUN,网景等等,以前所未有的热情纷纷参与其中,将他们的产品转移到开放源代码的平台上,把原来的商业产品开放源代码。

  最近美国电影协会控DeCSS发布一案,对计算机软件的发行方式和版权问题提出了思考。美国巡回法院的判决指出,计算机程序代码不仅仅是功能的表达,更重要的是思想的表达,并判美国电影协会败诉。其关键是DeCSS以源代码发布的。

  开放源代码运动(Open Source Movement)的兴起,几乎是爆炸性地发展。Linux内核不断更新,新的Linux发行版,越来越多的软件开放源代码。现在,几乎可以在软件的任何种类中找到开放源代码软件的踪迹,下表给出的只是若干典型的例子:

操作系统: Linux,BSD系列,Sun Solaris8.0
Office办公套件: Star Office, Koffice
开发工具: C++: C-Forge, Java: NetBeans, Anfy等等
网络服务器软件: Apache, Wu-Ftp, sendmail
网络浏览器: Netscape系列,Lynx

 

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

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

2 开放源代码的数学软件

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

  但近几年,数学软件的研究与使用者,注意力似乎更多地被商业性数学软件所吸引,如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协议由用户再发布的自由数学软件,可能更加现实。
发表于 2005-5-16 14:38:09 | 显示全部楼层
Maxima也很有名哦
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-5 23:35 , Processed in 0.074529 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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