Scilab
開發者 | INRIA, ENPC, Scilab Enterprises |
---|---|
當前版本 | 2025.0.0[1](2024年10月24日,9天前) |
源代碼庫 | |
編程語言 | Scilab, C語言, C++, Java, Fortran |
操作系統 | Linux、macOS、Windows |
類型 | 數值分析 |
許可協議 | GPLv2(原為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競賽[2]。
歷史
[編輯]Scilab始源於80年代在INRIA開發的計算機輔助控制系統設計軟件Blaise,其最初的開發者為弗朗斯瓦·底列貝克(François Delebecque)和舍齊·史迪爾(Serge Steer)。Blaise的誕生受到了克里夫·莫勒爾(Steve Moler)當時用Fortran編寫的MATLAB軟件的啓發[3]。
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人小組與一些外部開發者一道共同開發並發佈的[3]。從2003年開始,由新成立的Scilab協會負責Scilab軟件的後續開發以及相關技術支持。
Scilab協會於2005年啟動了基於Java的Scilab 5.x的開發,而之前的部分Scilab開發小組成員(包括ENPC以及部分INRIA成員)則在之前的Scilab 4.x的基礎上另外發布了基於GTK+的Scilab版本:ScicosLab(該版本集成了Scicos)。
Scilab協會在2008年加入Digiteo基金會,自此Scilab協會開始在Digiteo基金會的引領下對Scilab進行開發,這種情況一直持續到2012年6月。另外也是在2008年,Scilab開始基於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有許多為不同目的設計的工具箱,例如:
- Scilab圖像處理工具箱(SIP)及其變種(例如SIVP)
- Scilab小波工具箱
- Scilab Java 和.NET 模塊
- 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] = mp(x1,x2)
--> a = x1 + x2;
--> b = x1 * x2;
-->endfunction
-->[x,y] = mp(1+%i,2)
y =
2. + 2.i
x =
3. + i
工具箱
[編輯]同MATLAB軟件中的Simulink工具箱類似,Scilab也擁有一個用於混合動態系統建模/仿真的工具箱:Xcos(它代替了Scilab 5.2之前的Scicos)。用戶可以自己編寫擴展的工具模塊並添加於Scilab中,或者使用別人已編寫好的擴展模塊。Scilab提供了一個模塊管理器(ATOMS)統一對擴展模塊進行搜索、安裝和更新。在Scilab官方的wiki頁面[4]上對Scilab工具箱和MATLAB工具箱之間的相關性進行了詳細對比。
Scilab的其它一些工具箱:圖像處理(SIP、SIVP)、小波變換(Scilab Wavelet Toolbox)、串口通信(Serial Communication Toolbox)、圖形和網絡計算(Metanet)、GPU計算(sciGPGPU)、航天動力學分析(CelestLab)等等。
Scilab的許多工具箱可以在網站ATOMS Portal[5]上找到。
參考文獻
[編輯]引用
[編輯]- ^ Scilab 2025.0.0. [2024年10月24日].
- ^ Scilab in China. scilab.org. [2008-11-25]. (原始內容存檔於2005-01-03) (英語).
- ^ 3.0 3.1 History. scilab.org. [2010-05-08]. (原始內容存檔於2010-06-20) (英語).
- ^ wiki頁面
- ^ ATOMS Portal(頁面存檔備份,存於網際網路檔案館)或者Scilab forge(頁面存檔備份,存於網際網路檔案館)
網頁
[編輯]- (英文) Scicos > History(頁面存檔備份,存於網際網路檔案館) - Scilab/Scicos history
參見
[編輯]外部連結
[編輯]- Scilab官網(頁面存檔備份,存於網際網路檔案館)(英文)
- Scilab Enterprises(頁面存檔備份,存於網際網路檔案館)(英文)
- Scilab Google Group(英文)
- 嵌入式系統Scilab:Scilab-EMB(英文)
- Scilab正體中文計畫(繁體中文)
- 中文Scilab教育論壇(繁體中文)
- 中文Scilab文件(頁面存檔備份,存於網際網路檔案館)(繁體中文)
- Scilab簡體中文主頁(頁面存檔備份,存於網際網路檔案館)(簡體中文)
- Scilab中文論壇(頁面存檔備份,存於網際網路檔案館)(簡體中文)
- 2008年Scilab競賽主頁(頁面存檔備份,存於網際網路檔案館)(簡體中文)