1. Scilabとは? |
Scilabはフリー、オープンソースの科学・工学数値計算ソフトウェアです。読み方はスペリングから「サイラブ」がもっとも近いと思われます。
Scilabとは何かを、ひとことで言うと、数値計算とグラフ表示に特化したツールでプログラミング言語という側面もあります。
フランスの国立研究機関INRIA (the French National Institute for Research in Computer Science and Control)とフランスの国立土木学校ENPC(?cole
nationale des ponts et chauss?es)で開発され、現在は、INRIA他により創立されたDegiteoという研究機関のScilab Consortiumという組織で開発・管理が続けられています。
MATLABという市販の信号処理,画像解析,制御工学などの科学技術計算に使用されるソフトウェアと、互換ではありませんが、同等の機能をもっています。MATLABクローンのソフトと呼ばれることもあります。また、同等機能のソフトにGNUのオープンソースであるOctaveというものもあります。
|
2. 3種類の使い方 |
この解説では、主な使い方として以下のように3種類に分類しました。
○ 関数電卓的な使い方−−−>対話形式で1行ごとに構文を入力して結果を表示させる。手っ取り早く計算結果を得たい場合、次の
ステップで行うプログラミングのデバックをする場合に利用できる。
○ 専用エディタによるプログラム言語的な使い方---科学技術計算/グラフ表示/シミュレーション・ツールとして
−−−>計算させたい内容を、プログラミングのように附属の専用エディタでスクリプト・ファイルに記述し、実行
する。もっとも標準的な使い方。
Scilabは、インタープリターなのでコンパイルなど面倒な処理は必要ない。
○ Xcosによるシミュレーション・ツールとしての使い方 (GUI型ブロック線図入力モジュール)
−−−>Xcos(旧Scicos)というツールによりブロック線図を作成し、面倒なプログラミングをしないで、シミュレー
ションを行える。Xcosは、Scilabインストール時に自動的にインストールされる。計算は、Scilabによって
行われる。Xcosは、MATLABにおけるSimulinkに相当する。
|
2.1 関数電卓的な使い方 |
|
プロンプト-->の後ろに直接計算内容やコマンドを入力して、結果を表示させる方法です。セミコロンまたはカンマで区切ることにより、1行内に複数の構文を記入して実行させることもできます。グラフ表示コマンドを入力すれば、グラフ表示も可能です。1行ずつインタラクティブに応答がありますが、クリアしない限り、それまで変数に入れられた内容を記憶しています。ただし、それらはソフト終了と同時に消えてしまいます。(だから電卓と同じ)
|
|
|
Scilabを起動するとコンソール・ウィンドウが開く。プロンプト「-->」記号の後にコマンドを入力し、Enterを押すと実行結果が表示される。 |
|
基本的な使用例 |
簡単な計算 |
-->10-5
ans =
5.
|
-->2*3
ans =
6.
|
-->5/2
ans =
2.5
|
-->5/2+3*(12-4)
ans =
26.5
|
-->10^3
ans =
1000.
-->10**3
ans =
1000.
|
-->10^-2
ans =
0.01
-->10**-2
ans =
0.01
|
変数への代入 |
複数行を一行に記述する |
出力の抑制 |
-->a=3.5
a =
3.5
-->b=4.9
b =
4.9
-->c=a+b
c =
8.4
|
-->a=3.5, b=4.9, a+b
a =
3.5
b =
4.9
ans =
8.4
|
-->a=3.5;
-->b=4.9
b =
4.9
-->c=a+b;
-->a=3.5; b=4.9; c;
-->c
c =
8.4
|
指数部のある数値 |
継続行の記述(長い行を2行以上に) |
コメント |
-->a=1.234e5, b=1.234e-5
a =
123400.
b =
0.0000123
-->123/10e8
ans =
1.230D-08
|
-->x=1+2+3..
-->+4+5+6..
-->+7+8+9..
-->+10
ans =
55.
|
-->// 「//」以降はコメントになります。
-->// コメントには日本語も使用可能
-->3+2 // 構文行の後ろにも付与可
ans =
5.
|
ベクトルの定義 |
行列の定義 |
等差数列 |
-->a=[1 2 3]
a =
1. 2. 3.
-->a=[1, 2, 3]
a =
1. 2. 3.
-->a=[1; 2; 3]
a =
1.
2.
3.
-->a'
ans =
1. 2. 3.
|
-->A=[1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->A=[1, 2, 3; 4, 5, 6]
A =
1. 2. 3.
4. 5. 6.
-->A=[1 2 3
--> 4. 5. 6.]
A =
1. 2. 3.
4. 5. 6.
-->B=A'
B =
1. 4
2. 5.
3. 6.
|
-->a=1:2:9
a =
1. 3. 5. 7. 9.
-->a=1:2:10
a =
1. 3. 5. 7. 9.
-->a=1:10
a =
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
-->a=0:0.1:0.5
a =
0. 0.1 0.2 0.3 0.4 0.5
-->a=1:3; a'
ans =
1.
2.
3.
|
既定の特別定数 |
行列の演算 |
-->%pi //円周率π
%pi =
3.1415927
-->%e //自然対数の底 オイラー定数
%e =
2.7182818
// %i=虚数単位
-->1+2*%i //複素数表示
ans =
1. + 2.i
|
-->A=[1 2 3; 4 5 6], B=[3 2 1; 6 5 4]
A =
1. 2. 3.
4. 5. 6.
B =
3. 2. 1.
6. 5. 4.
-->A+B
ans =
4. 4. 4.
10. 10. 10.
|
-->A=[1 2 ; 3 4], B=[-5 6; 0 -2]
A =
1. 2.
3. 4.
B =
-5. 6.
0. -2.
-->A*B
ans =
-5. 2.
-15. 10.
|
|
|
|
2.2 専用エディタによるプログラム言語的な使い方---科学技術計算/グラフ表示/シミュレーション・ツール
|
|
実用上は、こちらの第2の方法が一般的な使い方になります。上記の方法は手軽ですが、1行ずつ、苦労してせっかく入力した内容が一度きりで消えてしまい後で利用できません。
Scilabコンソールからエディタを起動し、計算や表示のためのスクリプトファイルを作成します。それを実行することによりコンソールへの数値表示やグラフィック・ウィンドウへのグラフ表示という結果を得る方法です。
プログラムを書いたエディタ側から直接実行することが可能です。組み込み関数や繰り返し・分岐コマンド、関数(サブプログラム)機能などを使い、簡単にプログラミングができます。スクリプト・ファイルに記述した内容が、自動的に連続してコンソールに転送されて実行されるというイメージです。
Scilabはインタープリター型なので、コンパイルなどの操作は必要なく、そのまま実行できます。 |
|
Tutorial-1 |
|
|
|
Console(コンソール)よりScilabエディタを起動します。
ツールバーの左端のアイコンでも同じです。
プロンプトの後ろに以下のように記入しても構いません。
-->editor()
|
|
|
Scilab専用のエディタが開くので、Scilab構文に従い入力します。
//以降の部分はコメントなので実行には使われません。
|
|
|
メニューバーの[Execute]-[Load Into Scilab]をクリックすると、現在開いているスクリプトがコンソールにLoadされ実行されます。自動的に1行ずつ実行されます。
なお、この作成したファイルは、適当な名前をつけて保存して下さい。拡張子は、自動的に**.sceとつけられます。
|
|
|
また、エディタに記述した内容の一部のみ実行してみることも可能です。希望する部分を左図のように選択し、メニューバーの[Execute]-[Evaluate
Selection]をクリックします。選択部分のみがコンソールで実行されます。作成したスクリプトのデバッグなどに利用できます。
その下の[Execute File Into Scilab]は、スクリプトファイル全体を実行しますが、コンソール表示はされず、グラフウィンドウだけが表示されます。
|
|
|
[Execute]-[Load Into Scilab]をクリックした場合のコンソール側の実行結果です。
I1=5[A}, I2=-5[A}, I3=5[A}という結果が得られました。
|
|
|
上記で求めた閉路方程式は、左記の回路から導いたものです。SPICEでの結果と一致していることがわかります。
(I1電流の向きがコンソールの結果と逆に見えますが、回路図のV2の中を+から-に流れる向きが正とSPICEでは決められているので、I1の向きでは5Aとなり一致しています。)
因みに、SPICE内部での計算は節点方程式によって行われています。 |
|
Tutorial-2 |
|
|
|
エディタでステートメントを記述します。
完了後は、適当なファイル名で保存します。拡張子は自動的に*.sceがつけられます。
ステートメントの簡単な意味
1行: 「//」以降をコメントとみなす。2行目のように行の後ろにつけることも可能。ただし「//」の前の空白は半角であること。
2行: 等差数列を作る。変数xに-2から0.1刻みで数値を増加して配列に入力。上限は2。最後に「;」を入れないと、指定したxの値がすべてConsoleに表示される。
3行: 変数yをxの3次関数とする。
4行: 横軸x、縦軸yとし、グラフ表示する。
5行: グラフに適当な間隔でグリッドを追加する。
6行: グラフに、グラフタイトル,横軸タイトル,縦軸タイトルを表示する。
7行: コメント
8行: 変数yyに行ベクトルを設定する。
9行: 行ベクトルyyを多項式の係数(降順)とみなし、その根をxxに入れる。最後に「;」がないので、値が表示される。
rootsは()内の数列を多項式の係数(降順)として根を求める組込関数
エディタのメニューバーの[Execute]-[Load Into Scilab]をクリックし、このスクリプト・ファイルを直接実行します。このファイルが、Scilab
コンソールにロードされ実行されます。 |
|
|
plotコマンド等により、新たなグラフィック・ウィンドウが開き、グラフ表示されます。
|
|
|
コンソールを見ると、作成したスクリプト・ファイルがロードされ、数値計算結果が表示されています。
yyで設定された方程式の根が表示されています。グラフのx軸との交点(y=0)と一致しています。
Scilabを終了する場合は、
グラフ・ウィンドウ,エディタを閉じ コンソールを閉じます。
グラフ・ウィンドウ,エディタの終了:
右上の閉じるボタンまたは[File]-[Exit]
コンソールの終了:
右上の閉じるボタンまたは[File]-[Quit] または、プロンプト-->に続けてquitまたはexit(改行)
|
|
|
便利な使用法
Scilabバージョン5.以降では、すべてのウィンドウに対しドッキング機能が加えられました。
左図では、Consoleウィンドウを拡大しておき、カーソルの部分(ウィンドウのタイトルバー)をドラッグ&ドロップしてエディタを左側にドッキングしました。
ドッキングを解除したい場合は、バーの左端の右上向きの矢印をクリックします。
(この機能は現バージョンにはありません。2011-12)
|
|
|