[开源软件]数值计算软件OCTAVE 、SCILAB与R简介
R软件介绍
R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
R是S语言的一种实现。S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统。R的使用与S-PLUS有很多类似之处,两个软件有一定的兼容性。S-PLUS的使用手册,只要经过不多的修改就能成为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。但是请不要忘了:R is free。
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环,用户可自定义功能。
与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。
R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。R的主要网站是
http://www.r-project.org。在那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得(
http://cran.r-project.org)。
以下简述R FOR WINDOWS的安装和使用:
在网址:
http://cran.r-project.org 下可以找到R的各个版本的安装程序和源代码。点击进入:Windows (95 and later),再点击:base,下载SetupR.exe,约18兆,此便是R FOR WINDOWS的安装程序。双击SetupR.exe,按照提示一步步安装即可。
安装完成后,程序会创建R程序组并在桌面上创建R主程序的快捷方式(也可以在安装过程中选择不要创建)。通过快捷方式运行R,便可调出R的主窗口(如下图 1-1)。
类似于许多以编程方式为主要工作方式的软件,R的界面简单而朴素,只有不多的几个菜单和快捷按钮。快捷按钮下面的窗口便是命令输入窗口,它也是部分运算结果的输出窗口,有些运算结果则会输出在新建的窗口中。
主窗口上方的一些文字是刚运行R时出现的一些说明和指引。文字下的:> 符号便是R的命令提示符,在其后可输出命令;>后的矩形是光标。R一般是采用交互方式工作的,在命令提示符后输入命令,回车后便会输出结果。
以上文字来源:
http://www.medstatstar.com/r/index.htm
• R网站:
http://www.r-project.org/
• R软件手册:
http://cran.r-project.org/manuals.html
• CRAN 中国镜像站(东南大学):
http://www.lmbe.seu.edu.cn/CRAN
• 北京大学李东风老师主页:
http://cn.math.pku.edu.cn/teachers/lidf/index.html
• 华东师大汤银才老师主页:
http://webpc.shtu.edu.cn:8080/yctang/index.htm
• sociology’s Blog(简体中文,名字可能不对):
http://sociology.yculblog.com/
• R文档:
http://www.biosino.org/R/R-doc/ 丁国徽翻译。已经翻译为中文的文档有:R导论,R for beginners,R 语言定义(草稿)
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协议由用户再发布的自由数学软件,可能更加现实。
以上文字来源:
http://www.cnblogs.com/xiexiaokui/archive/2009/05/31/1493246.html
GNU Octave网站:
http://www.octave.org/
http://www.gnu.org/software/octave/
邮件列表:
[email protected],
[email protected]
Octave
Octave 是一个类似matlab和Scilab的数学软件包,可以进行各种运算,编程。它还有丰富的C++接口可以让用户编程时调用。它绘图使用gnuplot。主页是:
http://www.octave.org。
大部分的GNU/Linux发行版都包含有它,Windows用户可以到
http://sourceforge.net/projects/octave下载它的Windows版本。
Octave的使用也是基于字符终端模式的,当需要绘图时,将会调用Gnuplot进行数据绘图,并显示出来。
Octave和Gnuplot一样有详细的使用手册,安装时会带有HTML格式的文档,需要PDF文档的可以到Network Theory Ltd出版社下载PDF电子书。印刷书的定价大概$29.99。
和Gnuplot一样,Octave的常用命令及用法也制作了一个卡片,在/usr/share/doc/octave-2.1.50/refcard目录下,可以打印出来作为参考,共3页。它的FAQ在/usr/share/doc/octave-2.1.50/faq目录下。
学习时可以参考Matlab,Octave的语法和Matlab类似。
Octave是用C++编写的,它内容丰富的库也可以供用户在编写软件时调用。Octave库的详细介绍在/usr/share/doc/octave-2.1.50/liboctave下,文件是liboctave.dvi,需要PDF文件的,可以运行:
dvipdfm liboctave.dvi
将dvi文件转换为PDF文件。
Octave同时还支持Fortran等的调用,GSL绑定等。可以由用户定制自己的函数、子程序等。
以上文字来源:
http://www.hebl.name/zh/archives/gnuplot-octave.html
百度百科解释:
历史
该软件肇始于1988年,其初衷是提供一些化学反应设计课程的辅助工具。
系统性开发则是由John W. Eaton在1992年接手才开始的。 第一个alpha测试版是在1993年一月四日释出,1.0稳定版则是在同年二月十七日释出。 最新的3.0.0稳定版在2007年十二月廿一日释出。
其名称与音乐上的八度没有直接关系。该软件乃是以一位早期开发群的成员,同时也以敏于处理数值逼近问题著称的前教授命名。
技术细节
Octave是以C++的标准模板函式库编程而成。
Octave有自己Octave语言直译器。
Octave可以动态外挂模组扩充。
Octave的直译器可用gnuplot及Grace产生图表及打印。
Octave语言
Octave语言是直译式及结构化(类于C语言)的编程语言,支援许多C语言的标准函式库提供的功能,同时可以使用UNIX的系统呼叫以进行扩充增进功能,但不支援以参照的方式传递参数。
Octave程式包含了许多脚本函式呼叫,它本身是以矩阵为基础并提供许多矩阵的操作函式。它并非面向对象编程语言但支援资料建构。
它的语法基本上与Matlab一致,严谨编写的程式码应同时可在Matlab及Octave执行。
由于Octave是以GNU通用公共许可证授权,所以可以自由地复制、流通与使用。Octave可在大部份的类Unix操作系统中执行,亦可在Microsoft Windows中执行。
特殊功能
变量及函式名称自动补齐
在命令列按下TAB键,Octave会自动补齐变量,函式或档案的名称。Octave会依据光标之前的文字来补齐。
指令回溯
在互动模式下,Octave会将历次指令存在暂存盘中以俟呼叫与编辑。
资料建构
Octave包含了初步的资料建构功能,例如:
octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
x.a = 1
octave:3> x.b
x.b =
1 2
3 4
octave:4> x.c
x.c = string
短路逻辑算符
Octave的`&&'及 `||'的逻辑算符是在短路的方式下运算(如同C语言中的相仿算符),相反于逐算子算符`&' 及 `|'。
递增与递减算符
Octave如同C语言一样具有可前置或后置的递增与递减算符。
例外处理
Octave以提供初步的LISP式unwind_protect例外处理模式。通常unwind_protect的表述区段可表示如下:
unwind_protect
body
unwind_protect_cleanup
cleanup
end_unwind_protect
变量长度参数表列
Octave提供用于处理未指明参数个数时的函式呼叫机制:利用特殊的varargin作为参数来呼叫函式。
function s = plus (varargin)
if (nargin==0)
s = 0;
else
s = varargin{1} + plus (varargin{2:nargin});
endif
endfunction
变量长度回传表列
单一函式可以varargout这一特殊回传值来回传任意数目的值,例如:
function varargout = multiassign (data)
for k=1:nargout
varargout{k} = data(:,k);
endfor
endfunction
MATLAB相容性
Octave最初便是模彷Matlab而设计,自然与Matlab有许多相同的功能。
矩阵为基础资料型别之一
内建支援复数
内建功能强大的数学函式及可扩充的函式库
使用者可自定函式
以上文字来源:
http://baike.baidu.com/view/1489610.htm
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都不亚于的商业软件。
以上文字来源:
http://www.cnblogs.com/xiexiaokui/archive/2009/05/31/1493246.html
SCILAB 是由法国国家信息、自动化研究院(INRIA)的科学家们开发的“开放源码”软件。SCILAB 一词来源于英文 “Scientific Laboratory"(科学实验室)词头的合并。与MATLAB类似,SCILAB也是一种科学工程计算软件,其数据类型丰富,可以很方便地实现各种矩阵运算与图形显示,能应用于科学计算、数学建模、信号处理、决策优化、线性/非线性控制等各个方面。它还提供可以满足不同工程与科学需要的工具箱,例如SCICOS,信号处理工具箱,图与网络工具箱等。可以说,就基本的功能如科学计算、矩阵处理及图形显示而言,MATLAB能完成的工作SCILAB都可以实现。
由于SCILAB的语法与MATLAB非常接近,熟悉MATLAB编程的人很快就会掌握SCILAB的使用。有意思的是,SCILAB提供的语言转换函数可以自动将用MATLAB语言编写的程序翻译为SCILAB语言。目前,SCILAB除了WINDOWS与NT版本外,还有多种UNIX或LINUX下的版本,如SGI MIPS Irix, PC Linux, Sun Sparc stations(Sun Solaris) 等。
作为开放源码的软件,SCILAB的源代码、用户手册及二进制的可执行文件都是免费的,公布于INRIA的网站上(中法实验室已建立其镜像网站),可以直接下载,在我们的网站也可以下载。用户不仅可以在SCILAB的许可证条件下自由使用该软件,还可以根据自己需要修改源代码,使之更加符合自身需要。对这一优秀的自由软件,国外已有很多人加以关注、讨论和赞赏。在国内,2001年1月SCILAB首次放在旨在推广开放源码软件的“共创联盟网站”上,短短不到一个月内,下载次数已达300多次。著名的Springer出版社于1999年6月出版了一本关于SCILAB的书:《Engineering and Scientific Computing With Scilab》,介绍了SCILAB的编程语言、函数、各种工具箱及其在控制、优化、图形、信号处理中的应用实例。
以上文字来源:
http://baike.baidu.com/view/272205.htm#3
Scilab 是Scientific Laboratory 的缩写,Scilab是由来自法国国家计算机科学及控制研究院(INRIA)与路桥大学(ENPC)的研究人员于1990年开始所共同开发的"开放原始码 (Open Source)" 的科学计算软件 。并于1994年开始在网络上免费散布,目前Scilab用在教育及工业环境上。它和目前流行的科学计算软件Matlab 一样,都是起源于Cleve Moler 于1980 年开发的程序,因此这两个软件在表达式语法和功能上都是相似的,但由于以后它们各自独立发展,所以在某些方面也产生了差异。
Scilab 是一个“开放源码”的免费软件,"开放原始码 (Open Source)" 是指软件应开放原始程序代码,供所有使用者能够自由更改、修正程序,让程序变得更完美,同时持续散布给更多的使用者。Scilab 主要是应用于系统控制及讯号处理上。
• Scilab 有以下特点:
o 跨平台:包括UNIX/Linux、Windows 9X/NT/2000/XP、Macintosh、FreeBSD
o 与Matlab相容:种类丰富之数据型态、简易之矩阵的运算、文字编辑器、支持特殊应用之工具箱
o 图形化接口
o 开放原始码:完全开放式的数学计算环境
o 并行计算:Scilab 组合了PVM (Parallel Virutal Machine),因此可以在网络环境中进行并行计算
• Scilab 已具有下列功能之工具箱:
o 2D及3D绘图、动画
o 线性代数、稀疏矩阵处理
o 多项式及有理式之处理
o 常微分方程式 (使用ODEPACK)、微分代数方程式 (使用DASSL)
o Scicos:动态系统仿真器
o 讯号处理
o 传统控制及强健控制
Scilab的一个重要特征是它具有丰富的工具箱,目前(2.7)可用的有:
* 2-D 和 3-D 图形及动画
* 线性代数, 稀疏矩阵
* 多项式和有理函数
* 模拟: ODE 求解(ODEPACK) 和 DAE 求解(DASSL)
* Scicos: 一个动力系统建模器和模拟器
* 经典鲁棒控制, LMI 优化
* 微分和非微分优化
* 信号处理
* Metanet: 图形和网络
* 使用PVM的并行Scilab
* 统计学
* 与计算机代数系统(Maple, MuPAD)的接口
* Tck/Tk接口
Scilab可以运行在包括Linux在内的绝大部分UNIX系统下,当然在Windows 9X/NT/2000/XP 下也有相应的运行版本。它的所有安装文件、源代码和文档等都可从官方网站
http://www-rocq.inria.fr/scilab/上下载得到。目前Scilab 已经可以运行在包括Windows、Linux、Macintosh、Sun Solaris、Dec Alpha、HP-UX、FreeBSD 和NetBSD 等多种平台下。对于Windows 和Macintosh 用户,最简单的安装方式就是下载已编译好的二进制文件直接安装;而对于其它平台的用户,就要自已下载源代码来编译了。
由于Scilab 是“开放源码”的,所以用户很容易向其中增加自已的代码,从而扩充Scilab 的功能;同样,用户也可以在自已的程序中调用Scilab 子程序,从而扩充自己程序的功能。
以上文字来源:
http://hi.baidu.com/bpm945/blog/item/f64e40fac367c363034f56b7.html
Scilab软件主页是
http://www.scilab.org