Full BASICには行列(matrix)演算を行うmat文がある。
MAT A = B
左辺の配列に右辺の配列の値を代入する。
次元が変わるような代入はできない。
MAT A = ZER
左辺の配列の各要素に0を代入する。
MAT A = ZER(数値式) Aが1次元のとき
MAT A = ZER(数値式 ,数値式) Aが2次元のとき
MAT A = ZER(数値式 ,数値式 ,数値式) Aが3次元のとき
配列Aの添字の上限を変更し,全要素を0にする。
配列の大きさを動的に変更したいときに用いる。
次元を変えることはできない。
MAT A = CON
全要素に1を代入する。
MAT A = CON(数値式)
MAT A = CON(数値式 ,数値式)
MAT A = CON(数値式 ,数値式 ,数値式)
配列Aの添字の上限を変更し,全要素を1にする。
MAT A=B+C
MAT A=B-C
MAT A=B*C
行列B,Cの和,差,積をAに代入する。
積の場合,A,B,Cの次元の組合せは 1-2-1, 1-1-2, 2-2-2 のいずれか。
MAT A=(数値式)*B
スカラー倍。
数値式が定数,関数引用,変数名のいずれかであれば前後の括弧は不要。
例 (xは数値変数とする)
MAT A=x*A
MAT A=(2*x)*B
MAT A=ABS(x+3)*B
MAT A=(数値式)*CON
配列の全要素に数値式の値が代入される。
以下,A,Bは2次元の配列とする。
MAT A = IDN
単位行列を代入する。
左辺の配列が正方行列でないと実行時エラーになる。
MAT A = IDN(n)
n×nの単位行列を代入する。
MAT A=INV(B)
Bの逆行列をAに代入する。
MAT A=TRN(B)
Bの転置行列をAに代入する。
<Note> MAT文の実行によって配列の大きさは変化するが,添字の下限は変化しない。添字の上限は新しい大きさに合わせて調整される。 例 A(1)=1,A(2)=2,A(3)=3 である配列Aを添字の下限が0の配列Bに代入すると,B(0)=1,B(1)=2,B(2)=3になる。
<Note> MAT文を実行すると配列の要素数がその配列を最初に宣言したときの要素数より多くなってしまう場合はextye=5001の例外状態(実行時エラー)になる。
<Note>
MAT A=ZER(m TO n)を実行してもAの添字の下限はmにならない。
この文は,Aの大きさを n-m+1 に変更する効果しか持たない。
添字の下限を変えたいときは,MAT READ文か,拡張機能のMAT REDIM文を用いる。
外積(独自拡張)
A,B,Cを1次元配列とする。
MAT A=CROSS(B,C)
B,Cの外積(ベクトル積)をAに代入する。
B,Cの要素数が3でないとき,extype6001の例外となる。
行列の計算式(独自拡張) Aを1次元,または2次元の数値配列とするとき,次の形のMAT文を書くことができる。 MAT A=行列の計算式 MAT TRN(A)=行列の計算式 等号の左辺を TRN(A)とすると,計算結果の転置行列をAに代入する。 行列の計算式には,INV関数,TRN関数,CNJ関数を用いることができる。 1次元配列にTRN関数を適用すると,2次元配列(縦ベクトル)になる。 CNJ関数は,複素数モードで用いたとき,配列の全要素を共役複素数に変える。 行列のべきは,整数べきに限る。指数に小数を指定すると,整数に丸められる。 行列の積の先頭にスカラー積を指定できる。スカラー積を指定するのは積の先頭に限る。 行列の加減算は,通常の数式と異なり,先頭に正号,負号を書くことができない。 計算式を( )で括って計算順序を変えることができる。 DET関数にも,この形の計算式を指定できる。
即席ベクトル(独自拡張) MAT文で等号の左辺に,数値変数をコンマで区切って並べ,[ ]で括ったものを書いて1次元配列として機能させることができる。 行列の計算式の中に,数値式をコンマで区切って並べ,[ ]で括ったものを書いて1次元配列として機能させることができる。 例 MAT [x,y,z]=[1,2,3]*A ただし,Aを DIM A(3,3)で宣言された2次元配列とする。
Note. 変形式MAT文 TRANSFORM, SCALE( ), SHIFT( ), ROTATE( ), SHEAR( ) を含む行列の積は変形指示mat文。