ちょっと退屈なチュートリアル
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,日本語訳)