next up previous contents index
Next: 有理多項式行列の評価 Up: 有理多項式行列 Previous: 有理多項式行列

有理多項式行列の記述方法

有理多項式行列は,有理多項式を成分とする行列である。 有理多項式行列の操作は実行列や複素行列といった数値行列と同じである。

  s = $;

  RM1 = [[(s+1)/(s+2)  (s+3)/(s+4)]
         [(s+5)/(s+6)  (s+7)/(s+8)]];

  RM2 = diag((s+1)/(s+2), (s+3)/(s+4), (s+5)/(s+6));


有理多項式行列を記述するには,陽に有理多項式を行列の成分として用いる。 例えば,


  s = $;
  A = [[(s+1)/(s+2) , (s+3)/(s+4)]
       [(s+5)/(s+6) , (s+7)/(s+8)]];


の結果,
   === [A] : (  2,  2) ===

         [     (  1)     ]  [     (  2)     ]
               s + 1              s + 3
   (  1) ----------------   ----------------
               s + 2              s + 4

               s + 5              s + 7
   (  2) ----------------   ----------------
               s + 6              s + 8
となる。また,配列オペレータを使うことによって,有理多項式行列を簡単に 記述することができ,

  s = $;
  X = [[1 3][5 7]];  Y = [[2 4][6 8]];
  B = (ONE(2)*s + X) ./ (ONE(2)*s + Y);


によって,有理多項式行列Bは,Aと一致する。 ただし,記号 ./ は,行列の成分毎の割算を行なう配列オペレータを意味し, ONE(2)は,全ての成分が1である 2 x 2 の行列である。

複素有理多項式行列の入力方法には,複素有理多項式を成分として記述する方法と 一対の実有理多項式行列をコンマ ``,'' で区切って 丸括弧 () で囲む方法がある。 実部または虚部だけを指定し,もう一方に * を指定して 複素有理多項式行列を記述することもできる。  


CRM1 = (RM1,RM2); // CRM1 = RM1 + RM2 i,
                  // RM1とRM2は,実有理多項式行列
CRM1 = (RM1,*);   // CRM1 = RM1 + Z(RM1) i,
                  // RM1は,実有理多項式行列
CRM1 = (*,RM1);   // CRM1 = Z(RM1) + RM1 i,
                  // RM1は,実有理多項式行列


実部有理多項式行列と虚部有理多項式行列は, 関数Re()Im()を用いて取り出すことができる。    


RM1 = Re((RM1, RM2));  // 実部有理多項式行列
RM2 = Im((RM1, RM2));  // 虚部有理多項式行列


[例]2個の実有理多項式行列RM1とRM2から複素有理多項式行列CRM1を作る。


    s = $;
    RM1 = [[(s+1)/(s+2)  (s+3)/(s+4)]
           [(s+5)/(s+6)  (s+7)/(s+8)]];

    RM2 = [[(s+3)/(s+2)  (s+5)/(s+4)]
           [(s+7)/(s+6)  (s+1)/(s+8)];

    CRM1 = (RM1, RM2);

    CRM2 = [[((1,1)*s+(1,3))/(s+2) ((1,1)*s+(3,5))/(s+4)]
            [((1,1)*s+(5,7))/(s+6) ((1,1)*s+(7,1))/(s+8)]];




Masanobu KOGA 平成10年8月19日