ちょっと退屈なチュートリアル

Copyright (C) 29Feb2004 coskx
last update Jan2012

【1】Scilabの起動画面

Scilabは起動するとScilabWindowが現れ,オープニングメッセージを次のように表示します。
「-->」はプロンプトです。ここにコマンドなどを書くことができます。

この文書作成時は「scilab-5.4.0」です。日本語対応です。

【2】ちょっと退屈なチュートリアル

ちょっと退屈ですが,この部分を学んでおかないと,後のことが出来ません。
ここは飛ばして,後からもう一度読んでも結構です。

-->3
 ans  =

    3.

3を表示します。

-->235+852
 ans  =

    1087.

「235+852」を計算して,表示させます。
-->235+852; 「235+852」を計算しますが,表示しません。

-->a=546*856
 a  =

    467376.

変数aに「546*856」を代入して,表示させます。
-->a=546*856; 変数aに「546*856」を代入しますが,表示しません。

-->a
 a  =

    467376.

変数aを表示させます。

-->Tommy=123*456
 Tommy  =

    56088.

変数名は2文字以上でもOKです。

-->10*10*%pi
 ans  =

    314.15927

半径10の円の面積を計算し,表示させます。
ここで「%pi」はπのことです。
ちなみに「%e」はネピアのeです。

-->p=[2,3; 4,1]
 p  =

    2.    3. 
    4.    1. 

-->q=[3,1; -1,0]
 q  =

    3.    1. 
  - 1.    0.

2行2列の行列はこのように入力します。
変数「p」は自動的に2行2列の行列を格納する変数になっています。

次のような表現も許されます。

-->r=[2 4; 1 3]
 r  =

    2.    4. 
    1.    3.

-->s=[3 5
-->   4 6]
 s  =

    3.    5. 
    4.    6.

-->myunit=eye(3,3)
 myunit  =

    1.    0.    0. 
    0.    1.    0. 
    0.    0.    1.

-->myzero=zeros(3,3)
 myzero  =

    0.    0.    0. 
    0.    0.    0. 
    0.    0.    0.

-->myone=ones(3,3)
 myone  =

    1.    1.    1. 
    1.    1.    1. 
    1.    1.    1.

3×3の単位行列を作りました。

 

 

3×3のゼロ行列を作りました。

 

 

3×3の全要素が1でできている行列を作りました。

-->t=p'
 t  =

    2.    4. 
    3.    1.

行列pの転置を行列tに代入しました。

-->p+q
 ans  =

    5.    4. 
    3.    1.

行列の和

-->p*q
 ans  =

    3.     2. 
    11.    4.

行列の積

-->p.*q
 ans  =

    6.    3. 
  - 4.    0.

行列の要素ごとの積

-->det(p)
 ans  =

  - 10.

-->det(q)
 ans  =

    1.

行列式の値はこのように求めます。「det」を使います。

直接次のように書くのもOKです。

-->det([2,3; 4,1])
 ans  =

  - 10.

-->spec(p)
 ans  =

    5. 
  - 2.

-->[d,x]=bdiag(p)
 x  =

    0.7071068  - 0.6060915 
    0.7071068    0.8081220 
 d  =

    5.    0. 
    0.  - 2.

 p  =
    2.    3. 
    4.    1.
が保たれています。

行列pの固有値を求める時は「spec」を使います。

固有ベクトルを求める時は「bdiag」を使います。
使い方は特徴があり,「-->[d,x]=bdiag(p)」のように使います。

すると正方行列dの対角要素に固有値が求められ,
xに固有ベクトルが求められています。
固有ベクトルは正規化されて,2つの列ベクトルになっています。

-->p_inv=inv(p)
 p_inv  =

  - 0.1    0.3 
    0.4  - 0.2 

-->p*p_inv
 ans  =

    1.  - 1.110D-16 
    0.    1.       

-->clean(p*p_inv)
 ans  =

    1.    0. 
    0.    1.

 p  =
    2.    3. 
    4.    1.
が保たれています。

pの逆行列を求めてp_invとします。
逆行列を求める時には「inv」関数を使います。

pとp_invの積を作ると単位行列になるはずです。

計算誤差が生じて,「- 1.110D-16( -1.110×10-16のこと)」
が出てきました。

 

そこで,「clean」関数で,微小値を取り除くと,
単位行列が求まりました。 

-->rank(p)
 ans  =

    2.

 p  =
    2.    3. 
    4.    1.
が保たれています。

行列のランクは「rank」関数で求めます。

-->mymat=[1 2 3 4; 8 7 6 5; -1 -3 -5 -7; 9 6 3 0]
 mymat  =

    1.    2.    3.    4. 
    8.    7.    6.    5. 
  - 1.  - 3.  - 5.  - 7. 
    9.    6.    3.    0.

-->mymat(2,1)
 ans  =

    8.

-->mymat(3,4)
 ans  =

  - 7.

-->mymat(:,1)
 ans  =

    1. 
    8. 
  - 1. 
    9.

-->mymat(2,:)
 ans  =

    8.    7.    6.    5.

4×4の行列を定義して,

 

 

特定の要素(2,1)を抜き出します。

 

 

特定の要素(3,4)を抜き出します。



行ベクトル(第1行)を抜き出します。

 

 


列ベクトル(第2列)を抜き出します。

-->f=[1,2,3,4,5]
 f  =

   1.    2.    3.    4.    5.

-->g=[3;4;5;6]
 g  =

    3. 
    4. 
    5. 
    6.

-->h=[3,4,5,6,7]'
 h  =

    3. 
    4. 
    5. 
    6. 
    7.

行ベクトル,列ベクトルの表し方です。

 

なお「'」がつくと転置を表します。

-->myvec=[1:2:11]
 myvec  =

    1.    3.    5.    7.    9.    11.

-->myvec1=[5:2:13]'
 myvec1  =

    5.  
    7.  
    9.  
    11. 
    13.

要素をすべて書かなくても,初期値,増分,終端値の3つを
書くだけでも,行列を定義することができる。

 

【3】Scilabのクリア

今までに定義したすべての変数などを消去するには「clear」コマンドを実行すると良い。
この例では,a=23を定義して,「clear」コマンドを実行すると,変数aの定義が消去され,
aを表示するように求めると,aは未定義でエラーになってしまうところを示している。

-->a=23
 a  =

    23.

-->a
 a  =

    23.

-->clear

-->a
  !--error 4
変数は定義されていません : a

 

【4】Tips

1.コピー&ペースト
(1)「Scilab」ウィンドウ中で,文字列をドラッグして選択し,右クリックすると「コピー(Copy)」が現れるので,
これを選ぶとコピーができる。(コントロールC)
(2)「Scilab」ウィンドウ中で,右クリックすると「貼り付け(Paste)」が現れるので,これを選ぶと「Clipboard」中の文字列を,
コマンド入力行に貼り付けができる。(コントロールV)

2.履歴参照(ヒストリ機能)
コマンド入力の時,「上矢印キー」を押すと過去の履歴が参照できる。なお,過去にさかのぼった後,
「下矢印キー」を押すと,戻ることができる。

3.ヘルプ
(1)「?」メニューを選ぶと,ヘルプ項目一覧が現れる。
(2)コマンド入力で「help」と入力しても,ヘルプ項目一覧が現れる。
(3)コマンド入力で「help inv」とか「help spec」のように関数名を与えると,その関数のヘルプが出てくる。(English,日本語訳)