Scilab

維基百科,自由的百科全書
跳至導覽 跳至搜尋
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)