goo blog サービス終了のお知らせ 

korondemoのメモ

記憶の助けとして

ファイルからの入力

2006-02-07 16:07:52 | Scilab
8e0 1e1 6e2
3e0 5e-1 7e-2

のような中身のテキストファイルがあったとき
ファイルの名前が
test1.txt
だったとすると

read('test1.txt',2,3)

とすることで読むことができます.

fscanfMat('test1,txt')

とすると行数と列数が不要です.

8e0, 1e1, 6e2
3e0, 5e-1, 7e-2

のような中身だった場合

read('test1.txt',2,3)

とすることで読むことができます.

Excel のファイルは

readxls('test.xls')

とすると読むことができます.
読んだものは
ans

一枚目のシートの中身は
ans(1)
に入っています.

方程式の解

2006-02-06 16:04:49 | Scilab
a を行列として

inv(a)

で逆行列になります.

たとえば連立方程式

2x+3y=5
4x+7y=9

の解は

a=[2 3;4 7];
b=[5;9];
inv(a)*b

とすると求められます.

2次方程式

x^2-x-6=0

の解は

c=poly([-6 -1 1],'x','coeff');
roots(c)

とすると求められます.

行列の演算

2006-02-03 17:38:21 | Scilab
a, b がとも行列として

a+b

で和

a-b

で差になります.
a の行数と b の行数
a の列数と b の列数が同じ場合のお話です.
ただしどちらかがスカラーの場合は
相手と同じ大きさの行列の要素全部がその値として
計算されます.
たとえば a が行列の場合

a+1

が可能でこれは

a+ones(a)

と同じことになるということです.

a*b

で積になります.
a の列数と b の行数が同じ場合のお話です.

a.*b

は行列の積ではなく
同じ位置の要素同士の積が同じ位置に入ります.
a の列数と b の列数が同じ場合のお話です.

等差数列

2006-02-02 14:37:05 | Scilab
2:3:20
とすると
初項が 2,公差が 3,最後の項が 20 の等差数列の入った行列となります.

2:20
のようにすると公差 1 が省略されたとみなされます.

公差のところには不の値も使えます.

10:2:2

のように条件が矛盾する場合は空の行列

[]

になります.

行列の要素の操作

2006-02-01 08:38:04 | Scilab
たとえば

a(2,3)

とすると行列 a の 2 行 3 列目の要素を
取り出すことができます.

$ が最後の行や最後の列のことになりますから
たとえば

a($,3)

とすると最後の行の 3 列目の要素を
取り出すことができます.

a($)

とだけ指定した場合は最後の行,最後の列の要素を
取り出すことになります.

a(2,[1 3])

のようにすることで
2 行目の 1, 3 列目の要素の並んだ行列とすることができます.

: で行や列のすべてを指示したことになりますから
たとえば

a(:,2)

とすると 2 列目のすべての要素を
取り出すことができます.

逆に

a(:,2)=10

とすると 2 列目のすべての要素に
10 が代入されます.

単位行列など

2006-01-31 19:45:38 | Scilab
すべての要素が 0 の行列は
たとえば 2 行 3 列であれば

zeros(2,3)

とします.

すべての要素が 1 の行列は

ones(2,3)

とします.

単位行列はたとえば
3 行 3 列であれば

eye(3,3)

とします.
本来正方行列であるべきですが
行数と列数が違っていても実行できます.
この場合いわゆる正方行列でいうところの
対角要素だけが 1 で
他の要素が 0 の行列となります.

[]

とすることと空の行列となります.

変数への値の代入

2006-01-31 09:07:55 | Scilab
たとえば
変数 a に 1 を代入する場合

a=1

とします.

結果を表示しなくても良い場合は

a=1;

のように最後に ;(セミコロン) をつけます.

複素数を代入したいときは
虚数単位 i は %i とすることになっていますから
たとえば
1+2i
を代入したい場合は

a=1+2*%i

とします.

文字列を代入したい場合は
'(シングルクォーテーション)で囲んで

a='test'

とします.

行列を代入したい場合は

a=[1 2 3;2 3 4]

のようにします.
スペースやカンマが列の区切りに
;(セミコロン) や改行が行の区切りになります.