``

前頁 メニュー 次頁

mat `文 ☆☆`

`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> 行列の加減乗算は，2項間に限る。 なお，すべての配列が2次元であるとき，3項以上の積，たとえば， MAT A=B*C*D は翻訳できるが，これは，変形指示mat文`と呼ばれるもので，各行列の大きさが4×4になっていないと実行時にエラーになる。また，各行列の大きさが4×4の場合にはエラーにならないが，図形変形に無関係な要素は正しく計算されない。`

<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の例外となる。