Scilab

维基百科,自由的百科全书
(重定向自Xcos
跳转到导航 跳转到搜索
Scilab
File:Scilab Logo.png
运行Scilab的截屏
运行Scilab的截屏
开发者INRIA, ENPC, Scilab Enterprises
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言Scilab, C语言, C++, Java, Fortran
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统LinuxmacOSWindows
      类型数值分析
      许可协议GPLv2(原为CeCILL英语CeCILL
      网站Scilab, Scilab Enterprises

      Scilab是由法国国立计算机及自动化研究院(l'Institut national de recherche en informatique et en automatique,简称INRIA)和法国国立桥梁学院(l'École nationale des ponts et chaussées,简称ENPC)开发的开放源码科学计算自由软件。Scilab一词来源于英文“Scientific Laboratory”(科学实验室)词头的合并。

      目前全世界使用Scilab的人数估计有1,000,000人。[来源请求]Scilab也是以矩阵作为主要的数据类型,同时拥有丰富的绘图功能。Scilab能处理包括信号处理统计分析图像增强、数值优化、动力系统仿真等方面的问题。网络上也有不少人为它写了许多延伸函数库、丰富了它的功能。

      为推广普及Scilab,自2002年起,INRIA跟中国科学院自动化研究所每年组织一次Scilab竞赛[1]

      历史[编辑]

      Scilab始源于80年代在INRIA开发的计算机辅助控制系统设计软件Blaise,其最初的开发者为弗朗斯瓦·底列贝克(François Delebecque)和舍齐·史迪尔(Serge Steer)。Blaise的诞生受到了克里夫·莫勒尔(Steve Moler)当时用Fortran编写的MATLAB软件的启发[2]

      1984年,Blaise更名为Basile,由Simulog(INRIA的第一个研发小组)负责分发。

      90年代初,Simulog停止分发Basile。Basile更名为Scilab,由来自ENPC的Jean-Philippe Chancelier和来自INRIA的François Delebecque,Claude Gomez,Maurice Goursat,Ramine Nikoukhah,Serge Steer共6人组成的Scilab小组继续进行开发工作。后来INRIA决定把Scilab作为开源软件分发。1994年1月2日,Scilab的第一个释放版本,Scilab 1.1上传到一个匿名ftp站点。直到2002年底,Scilab都是由6人小组与一些外部开发者一道共同开发并发布的[2]。从2003年开始,由新成立的Scilab协会负责Scilab软件的后续开发以及相关技术支持。

      Scilab协会于2005年启动了基于Java的Scilab 5.x的开发,而之前的部分Scilab开发小组成员(包括ENPC以及部分INRIA成员)则在之前的Scilab 4.x的基础上另外发布了基于GTK+的Scilab版本:ScicosLab英语ScicosLab(该版本集成了Scicos英语Scicos)。

      Scilab协会在2008年加入Digiteo基金会,自此Scilab协会开始在Digiteo基金会的引领下对Scilab进行开发,这种情况一直持续到2012年6月。另外也是在2008年,Scilab开始基于CeCILL英语CeCILL许可协议发行,CeCILL是一个与GPL兼容的开源许可协议。

      为了保证Scilab的长远发展,在INRIA的支持下,Scilab事业公司于2010年6月成立。自2012年7月开始,Scilab事业公司将完全负责对Scilab后续版本的开发与发布,此外公司也提供关于Scilab的专业服务与支持。2017年,Scilab事业公司被ESI集团并购。

      主要特点[编辑]

      • 大约1700个用于科学和工程计算的数学函数
      • 2维和3维可视化数据图形
      • 约束/无约束、连续/离散问题的优化
      • 数据分析与建模
      • 控制系统的分析与设计
      • 信号处理
      • 用于自定义开发扩展功能的API

      语法[编辑]

      Scilab的语法很大程度上基于MATLAB语言,执行Scilab代码的最简单方式是在图形窗口中提示符-->后输入命令。此时,Scilab以交互式的数学shell方式工作。

      Scilab的Hello World!为:

      disp('Hello World');
      

      显示3维曲面的函数为:

      // A simple plot of z = f(x,y)
      t=[0:0.3:2*%pi]';
      z=sin(t)*cos(t');
      plot3d(t,t',z)
      

      工具箱[编辑]

      Scilab有许多为不同目的设计的工具箱,例如:

      更多工具包可在ATOMS Portal或Scilab forge上找到。

      GUI界面[编辑]

      Scilab的GUI界面与MATLAB很类似,其主要部分是一个用于输入命令的交互式控制台;在Scilab控制台中按Tab键,Scilab会依据光标之前的文字自动补齐变量、函数或文件的名称;此外,Scilab也会保存控制台中输入的命令,通过按“"↑","↓"”键就能前后检索已键入的命令。

      Scilab语言[编辑]

      Scilab语言也是一种交互性的数学脚本语言,语法与MATLAB语言相近,也以矩阵作为数据的基本组织形式。Scilab还有一个可以把MATLAB源程序变换为Scilab源程序的代码翻译器。

      数据类型

      1.常数(constant)类型(数据前面加%表示该数据是Scilab已经定义好的)

      -->a = [1.5-2.5*%i, %pi; %inf, -1.5e2] 
       a =
          1.5 - 2.5i    3.1415927  
          Inf         - 150.
      

      2.字符串(string)类型

      -->b = ["123", "456"; "Let''s use", "SciLab!"] 
       b =
      !123        456      !
      !                    !
      !Let's use  SciLab!  !
      

      3.有理式(rational)类型

      -->x = poly(0, "x"); //定义x为多项式
      -->c = [x/(x^2+1), 2; -1/x, x^3+1]
       c =
            x       2       
          -----     -       
               2            
          1 + x     1       
                            
                         3  
        - 1         1 + x   
          -         -----   
          x           1 
      

      4.表(list)类型(类似于C语言中的“结构”数据类型,即可以包含不同类型的元素)

      -->d = list([1,2;3,4], "abc", poly([1,2,3],"x","c"))
       d =
       
             d (1) 
          1.    2.  
          3.    4.  
       
             d (2) 
       abc   
       
             d (3) 
                     2  
          1 + 2x + 3x  
      
      编程

      1.if选择语句

      -->x = 1; 
      -->if  x > 0
      -->    y = x - 1;
      -->elseif  x < 0
      -->    y = x + 1;
      -->else
      -->    y = x;
      -->end 
      -->y
       y =
          0.
      

      2.select选择语句

      -->x = 1;
      -->select  x
      -->case  1
      -->    y = x + 1;
      -->case  -1
      -->    y = x - 1;
      -->else
      -->    y = x;
      -->end
      -->y
       y =
          2.
      

      3.for循环语句

      -->x = []; 
      -->for  k = 1:4
      -->    x (k) = 2 * k;
      -->end
      -->x'
       ans =
          2.    4.    6.    8.
      

      4.while循环语句

      -->k = 1; 
      -->x = []; 
      -->while  k < 5
      -->    x (k) = 2 * k;
      -->    k = k + 1;
      -->end
      -->x'
       ans =
          2.    4.    6.    8.
      
      • 另外,可以在while或for循环语句中使用break关键字跳出循环

      5.自定义函数

      -->function  [a,b] = mpx1,x2-->    a = x1 + x2;
      -->    b = x1 * x2;
      -->endfunction
      -->[x,y] = mp1+%i,2 y =
          2. + 2.i  
       x =
          3. + i
      

      工具箱[编辑]

      同MATLAB软件中的Simulink工具箱类似,Scilab也拥有一个用于混合动力系统建模/仿真的工具箱:Xcos(它代替了Scilab 5.2之前的Scicos英语Scicos)。用户可以自己编写扩展的工具模块并添加于Scilab中,或者使用别人已编写好的扩展模块。Scilab提供了一个模块管理器(ATOMS)统一对扩展模块进行搜索、安装和更新。在Scilab官方的wiki页面[3]上对Scilab工具箱和MATLAB工具箱之间的相关性进行了详细对比。

      Scilab的其它一些工具箱:图像处理(SIP英语Scilab Image Processing、SIVP)、小波变换(Scilab Wavelet Toolbox)、串口通信(Serial Communication Toolbox)、图形和网络计算(Metanet)、GPU计算(sciGPGPU)、航天动力学分析(CelestLab)等等。

      Scilab的许多工具箱可以在网站ATOMS Portal[4]上找到。

      参考文献[编辑]

      引用[编辑]

      1. ^ Scilab in China. scilab.org. [2008-11-25]. (原始内容存档于2005-01-03) (English). 
      2. ^ 2.0 2.1 History. scilab.org. [2010-05-08]. (原始内容存档于2010-06-20) (English). 
      3. ^ wiki页面
      4. ^ ATOMS Portal页面存档备份,存于互联网档案馆)或者Scilab forge页面存档备份,存于互联网档案馆

      网页[编辑]

      参见[编辑]

      外部链接[编辑]

      Module:Authority_control第183行Lua错误:attempt to index field 'wikibase' (a nil value)