next up previous contents index
Next: 配列関数 Up: 行列と配列と指数 Previous: 行列とスカラの演算

行列関数

行列関数の一覧を以下に示す。    固有値の計算はEISPACKのアルゴリズムを使っている   [16],[15],[4]。 きざみを自動調節しながら4次のルンゲ−クッタの公式にしたがって 指定された誤差内で常微分方程式の解を求める   関数OdeAuto()は,文献[14]のアルゴリズムを参照している。 また,
RKF45の公式にしたがって,指定されたきざみ幅で,常微分方程式の解を求める 関数Ode45()は,文献[3]のアルゴリズムを参照している。 LU分解,QR分解,QZ分解は,文献[5]を参考にした。         

                              

Matrix M1;
Real tol;

Integer  rank(M1);       ランク
Integer  rank(M1, tol);  ランク
                         tol: 許容誤差
Integer  Rows(M1);       行の数
Integer  Cols(M1);       列の数
Integer  length(M1);     行と列の大きい方の数
Integer  isreal(M1);     実行列の有無 (真 = 1, 偽 = 0)
Integer  iscomplex(M1);  複素行列の有無 (真 = 1, 偽 = 0)
Integer  isscalar(M1);   スカラーの有無 (真 = 1, 偽 = 0)
Array    finite(M1);     各成分に対して有限の有無を調べる
                         無限大あるいはNaNである成分の所が0,
                         それ以外の成分の所が1である
                         配列を返す
Array    isnan(M1);      各成分に対してNaNの有無を調べる
                         NaNである成分の所が1,
                         それ以外の成分の所が0である
                         配列を返す
Matrix   sgn(M1);        各成分のsgn()を結果からなる行列

                                       

Marix M1, V1;         V1 はベクトル
Integer p;

Real max(M1);         最大成分
Real min(M1);         最小成分
List maximum(M1);     行列の最大成分とその位置
                      {r1, i, j} = maximum(M1);
                      r1 == M1(i,j)
List maximum(V1);     ベクトルの最大成分とその位置
                      {r1, i} = maximum(V1);
                      r1 == V1(i)
List minimum(M1);     行列の最小成分とその位置
                      {r1, i, j} = minimum(M1);
                      r1 == M1(i,j)
List minimum(V1);     ベクトルの最小値とその位置
                      {r1, i} = minimum(V1);
                      r1 == V1(i)
Real maxsing(M1);     最大特異値
Real minsing(M1);     最小特異値
Real det(M1);         実行列の行列式
Real trace(M1);       実行列のトレース
Real frobnorm(M1);    (実/複素)行列のフロベニウスノルム
                      (ユークリッドノルム)
Real infnorm(M1);     (実/複素)行列の最大ノルム
Real norm(M1, p);
                      (実/複素)行列のノルム
                      M1が行列の時,
                      p = 1: 1-ノルム
                      p = 2: 最大特異値
                      M1がベクトルの時,p-ノルム
Real norm(M1);        norm(M1, 2)

Complex max(Matrix M1);      絶対値が最大の成分
Complex min(Matrix M1);      絶対値が最小の成分
List maximum(Matrix M1);     絶対値が最大の成分とその位置
                             {c1, i, j} = maximum(M1);
                             c1 == M1(i,j)
List minimum(Matrix M1);     絶対値が最小の成分とその位置
                             {c1, i, j} = mininum(M1);
                             c1 == M1(i,j)
Complex det(CMatrix M1);     複素行列の行列式
Complex trace(CMatrix M1);   複素行列のトレース
   

Polynomial det(PMatrix M1);     多項式行列の行列式
Polynomial trace(PMatrix M1);   多項式行列のトレース
Polynomial frobnorm(Matrix M1); 多項式行列のフロベニウスノルム
     

Rational  det(RMatrix M1);     有理多項式行列の行列式
Rational  trace(RMatrix M1);   有理多項式行列のトレース
Rational  frobnorm(Matrix M1); 有理多項式行列のフロベニウスノルム
     

                       

Real sum(Matrix M1);          全ての成分の和
Complex sum(CoMatrix M1);     全ての成分の和
Polynomail sum(PoMatrix M1);  全ての成分の和
Rational sum(RaMatrix M1);    全ての成分の和
Real prod(Matrix M1);         全ての成分の積
Complex prod(CoMatrix M1);    全ての成分の積
Polynomial prod(PoMatrix M1); 全ての成分の積
Rational prod(RaMatrix M1);   全ての成分の積

Real mean(Matrix M1);         全ての成分の平均値
Complex mean(CoMatrix M1);    全ての成分の平均値
Polynomial mean(PoMatrix M1); 全ての成分の平均値
Ratioanal mean(RaMatrix M1);  全ての成分の平均値

Real std(Matrix M1);          全ての成分の標準偏差
Complex std(CoMatrix M1);     全ての成分の標準偏差
Polynomial std(PoMatrix M1);  全ての成分の標準偏差
Rational std(RaMatrix M1);    全ての成分の標準偏差

Matrix cumsum(Matrix M1);     全ての成分の累積和
Matrix cumprod(Matrix M1);    全ての成分の累積積

                                           

Matrix M1;

Matrix sum_col(M1);      (縦・横)ベクトルの成分の和
                         列毎の和からなる横ベクトル
Matrix sum_row(M1);      (縦・横)ベクトルの成分の和
                         行毎の和からなる縦ベクトル
Matrix prod_col(M1);     (縦・横)ベクトルの成分の積
                         列毎の積からなる横ベクトル
Matrix prod_row(M1);     (縦・横)ベクトルの成分の積
                         行毎の積からなる縦ベクトル
Matrix mean_col(M1);     (縦・横)ベクトルの成分の平均値
                         列毎の平均値からなる横ベクトル
Matrix mean_row(M1);     (縦・横)ベクトルの成分の平均値
                         行毎の平均値からなる縦ベクトル
Matrix std_col(M1);      (縦・横)ベクトルの成分の標準偏差
                         列毎の標準偏差からなる横ベクトル
Matrix std_row(M1);      (縦・横)ベクトルの成分の標準偏差
                         行毎の標準偏差からなる縦ベクトル
Matrix cumsum_col(M1);   列毎の累積和
Matrix cumsum_row(M1);   行毎の累積和
Matrix cumprod_col(M1);  列毎の累積積
Matrix cumprod_row(M1);  行毎の累積積

          

Matrix M1, M2;

Matrix eigval(M1);      固有値
Matrix eigval(M1, M2);  一般固有値
Matrix eigvec(M1);      固有ベクトル
Matrix eigvec(M1, M2);  一般固有ベクトル
eigval()は固有値を実部の降順に返し,eigvec()は その固有値に対応する順で固有ベクトルを返す。

          

Matrix M1;

Matrix singval(M1);       特異値
Matrix singleftvec(M1);   左の特異ベクトル
Matrix singrightvec(M1);  右の特異ベクトル
singval()は特異値を降順に返し,singleftvec()singrightvec()はその特異値に対応する順で特異ベクトルを 返す。

                           

Matrix M1;
Real tol;

Matrix  vectorprod(M1);      ベクトル積, 外積
Matrix  exp(M1);             指数行列
Matrix  sqrt(M1);            平方根行列
Matrix  log(M1);             対数行列
Matrix  kernel(M1);          零空間(カーネル)
Matrix  pseudoinv(M1);       擬似逆行列
Matrix  pseudoinv(M1, tol);  擬似逆行列
                             tol: 許容誤差
Matrix  abs(M1);             各成分のabs()

                            

Matrix M1;
Real tol;
Integer i1;

Matrix conj(M1);          共役行列
Matrix trans(M1);         転置行列     M1'
Matrix conjtrans(M1);     共役転置行列 M1#
Matrix inv(M1);           逆行列       M1‾
Matrix pow(M1, i1);       累乗       M1^i1

Matrix ceil(M1);          各成分のceil()の結果
Matrix floor(M1);         各成分のfloor()の結果
Matrix fix(M1);           各成分のfix()の結果
Matrix round(M1);         各成分のround()の結果
Matrix round2z(M1);       各成分のround2z()の結果
Matrix round2z(M1, tol);  各成分のround2z()の結果

                                       

Matrix M1, M2;
Integer k, m, n;
Index idx;

Matrix  vec2diag(M1);        縦ベクトルから対角行列
Matrix  vec2diag(M1, k);
                             縦ベクトルから対角行列
                             (k だけ主対角より上)
Matrix  diag2vec(M1);        対角行列から縦ベクトル
Matrix  diag2vec(M1, k);
                             対角行列から縦ベクトル
                             (k だけ主対角より上)
Matrix  fliplr(M1);          列を逆順に並べる
Matrix  flipud(M1);          行を逆順に並べる
Matrix  shiftLeft(M1, k);
                             全ての列を左に k シフトし,
                             右から 0 を代入する
                             k 省略すると,シフト数は 1 となる
Matrix  shiftRight(M1, k);
                             全ての列を右に k シフトし,
                             左から 0 を代入する
                             k 省略すると,シフト数は 1 となる
Matrix  shiftUp(M1, k);
                             全ての列を上に k シフトし,
                             下から 0 を代入する
                             k 省略すると,シフト数は 1 となる
Matrix  shiftDown(M1, k);
                             全ての列を下に k シフトし,
                             上から 0 を代入する
                             k 省略すると,シフト数は 1 となる
Matrix  rotateLeft(M1, k);
                             全ての列を左に k 回転する
                             k 省略すると,シフト数は 1 となる
Matrix  rotateRight(M1, k);
                             全ての列を右に k 回転する
                             k 省略すると,シフト数は 1 となる
Matrix  rotateUp(M1, k);
                             全ての列を上に k 回転する
                             k 省略すると,シフト数は 1 となる
Matrix  rotateDown(M1, k);
                             全ての列を下に k 回転する
                             k 省略すると,シフト数は 1 となる
Matrix  reshape(M1, m, n);
                             行列 M1 から行方向に成分を取り出
                             して m x n の行列を作る。
List    sort(M1);            成分を昇べきの順にソートする
                             複素行列の場合,絶対値でソート
{M2, idx} = sort(M1);        M2:  ソートした結果の行列
                             idx: ソートに使った指数
                             M2 = M1(idx)
List    sort(Array A1);      成分を昇べきの順にソートする
                             複素行列の場合,絶対値でソート
{A2, idx} = sort(A1);        A2:  ソートした結果の配列
                             idx: ソートに使った指数
                             A2 = A1(idx)
Matrix max(M1, M2);          M1 と M2 の大きい方の成分
                             からなる行列 (複素行列の場合,
                             絶対値によって比較する
Matrix min(M1, M2);          M1 と M2 の小さい方の成分
                             からなる行列 (複素行列の場合,
                             絶対値によって比較する
Matrix rem(M1, i1);          M1の各成分に対してrem()を
                             計算する
Matrix rem(M1, r1);          M1の各成分に対してrem()を
                             計算する
Matrix rem(M1, M2);          M1とM2の成分毎にrem()を
                             計算する

       

Matrix M1;
Integer m, n;

Matrix  rand(M1);          M1 と同じ大きさの一様乱数行列
Integer rand("seed"):      一様乱数の種
Integer rand("seed", m):   一様乱数の種を設定
Matrix  randn(M1);         M1 と同じ大きさの正規乱数行列

     

Matrix  rngkut4(Real t, Matrix x, void dx())
                : dt = 1.0E-7, u = Z(0);
Matrix  rngkut4(Real t, Matrix x, void dx(), Matrix u)
                : dt = 1.0E-7
Matrix  rngkut4(Real t, Matrix x, void dx(), Matrix u,
                Real dt)
      4次のルンゲ−クッタの公式にしたがって常微分方程式の解を求める。

 

                                    
List Ode(Real t0, Real t1, Matrix x, void dx());
                             : h=4.0E-2, dtsav=1.0E-3
List Ode(Real t0, Real t1, Matrix x, void dx(),
              void input()); : h=4.0E-2, dtsav=1.0E-3
List Ode(Real t0, Real t1, Matrix x, void dx(),
              void input(), Real h); : dtsav=1.0E-3
List Ode(Real t0, Real t1, Matrix x, void dx(),
              void input(), Real h, Real dtsav);
     4次のルンゲ−クッタの公式にしたがって,指定されたきざみ幅hで,
     常微分方程式の[t0,t1]時刻の解を求める。
     {T, X, U} = Ode();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

   

                                    
List OdeAuto(Real t0, Real t1, Matrix x, void dx());
             : eps=1.0E-6, dtsav=1.0E-3,
               dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeAuto(Real t0, Real t1, Matrix x, void dx(),
             void input());
             : eps=1.0E-6, dtsav=1.0E-3
               dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeAuto(Real t0, Real t1, Matrix x, void dx(),
             void input(), Real eps); 
             : dtsav=1.0E-3, dtmin=EPS, dtmax=abs(t1-t1)/5
List OdeAuto(Real t0, Real t1, Matrix x, void dx(),
             void input(), Real eps, Real dtsav);
             : dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeAuto(Real t0, Real t1, Matrix x, void dx(),
             void input(), Real eps, Real dtsav, Real dtmin);
             : dtmin=EPS
List OdeAuto(Real t0, Real t1, Matrix x, void dx(),
             void input(), Real eps,
             Real dtsav, Real dtmin, Real dtmax);
     きざみを自動調節しながら4次のルンゲ−クッタの公式にしたがって
     指定された誤差内で常微分方程式の[t0,t1]時刻の解を求める。
     ただし,きざみの最小値と最大値はdtminとdtmaxであり,
     dtmax < dtsav のとき,dtmax = dtsavに設定される。
     {T, X, U} = OdeAuto();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
List OdeHybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx())               : h=4.0E-2, dtsav=1.0E-3
List OdeHybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx(), void input()) : h=4.0E-2, dtsav=1.0E-3
List OdeHybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx(), void input(), Real h) : dtsav=1.0E-3
List OdeHybrid(Real t0, Real t1, Real dt, Matrix x, void dx(),
         void input(), Real h, Real dtsav) 
     4次のルンゲ−クッタの公式にしたがって,指定されたきざみ幅hで,
     常微分方程式の[t0,t1]時刻の解を求める。ただし,
     サンプリング間で外部入力は一定値をとる。
     また,きざみ幅hが省略されて,dt < 4.0E-2のとき,
     h = dtである.
     {T, X, U} = OdeHybrid();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx())
                  : eps=1.0E-6, dtsav=1.0E-3,
                    dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx(), void input())
                  : eps=1.0E-6, dtsav=1.0E-3,
                    dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx(), void input(), Real eps) 
                   : dtsav=1.0E-3, dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx(), void input(), Real eps, Real dtsav)
                   : dtmin=EPS, dtmax=abs(t1-t0)/5
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx(), void input(), Real eps,
                   Real dtsav, Real dtmin)
                   : dtmax=abs(t1-t0)/5
List OdeHybridAuto(Real t0, Real t1, Real dt, Matrix x,
                   void dx(), void input(), Real eps,
                   Real dtsav, Real dtmin, Real dtmax)
     きざみを自動調節しながら4次のルンゲ−クッタの公式にしたがって
     指定された誤差内で常微分方程式の[t0,t1]時刻の解を求める。
     サンプリング間で外部入力は一定値をとる。
     ただし,きざみの最小値と最大値はdtminとdtmaxであり,
     dtmax < dtsav のとき,dtmax = dtsavに設定される。
     {T, X, U} = OdeHybridAuto();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

   

Matrix  rkf45(Real t, Matrix x, void dx())
                : dt = 1.0E-7, u = Z(0);
Matrix  rkf45(Real t, Matrix x, void dx(), Matrix u)
                : dt = 1.0E-7
Matrix  rkf45(Real t, Matrix x, void dx(), Matrix u,
                Real dt)
      RKF45の公式にしたがって常微分方程式の解を求める。

 

                                    
List Ode45(Real t0, Real t1, Matrix x, void dx());
                             : h=4.0E-2, dtsav=1.0E-3
List Ode45(Real t0, Real t1, Matrix x, void dx(),
              void input()); : h=4.0E-2, dtsav=1.0E-3
List Ode45(Real t0, Real t1, Matrix x, void dx(),
              void input(), Real h); : dtsav=1.0E-3
List Ode45(Real t0, Real t1, Matrix x, void dx(),
              void input(), Real h, Real dtsav);
     RKF45の公式にしたがって,指定されたきざみ幅hで,
     常微分方程式の[t0,t1]時刻の解を求める。
     {T, X, U} = Ode45();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
List Ode45Auto(Real t0, Real t1, Matrix x, void dx());
               : eps=1.0E-6, dtsav=1.0E-3,
                 dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45Auto(Real t0, Real t1, Matrix x, void dx(),
               void input());
               : eps=1.0E-6, dtsav=1.0E-3,
                 dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45Auto(Real t0, Real t1, Matrix x, void dx(),
               void input(), Real eps);
              : dtsav=1.0E-3, dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45Auto(Real t0, Real t1, Matrix x, void dx(),
               void input(), Real eps, Real dtsav);
              : dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45Auto(Real t0, Real t1, Matrix x, void dx(),
               void input(), Real eps,
               Real dtsav, Real dtmin);
              : dtmax=abs(t1-t0)/5
List Ode45Auto(Real t0, Real t1, Matrix x, void dx(),
               void input(), Real eps,
               Real dtsav, Real dtmin, Real dtmax);
     きざみを自動調節しながらRKF45の公式にしたがって
     指定された誤差内で常微分方程式の[t0,t1]時刻の解を求める。
     ただし,きざみの最小値と最大値はdtminとdtmaxであり,
     dtmax < dtsav のとき,dtmax = dtsavに設定される。
     {T, X, U} = Ode45Auto();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
List Ode45Hybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx())               : h=4.0E-2, dtsav=1.0E-3
List Ode45Hybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx(), void input()) : h=4.0E-2, dtsav=1.0E-3
List Ode45Hybrid(Real t0, Real t1, Real dt, Matrix x,
         void dx(), void input(), Real h) : dtsav=1.0E-3
List Ode45Hybrid(Real t0, Real t1, Real dt, Matrix x, void dx(),
         void input(), Real h, Real dtsav) 
     RKF45の公式にしたがって,指定されたきざみ幅hで,
     常微分方程式の[t0,t1]時刻の解を求める。ただし,
     サンプリング間で外部入力は一定値をとる。
     また,きざみ幅hが省略されて,dt < 4.0E-2のとき,
     h = dtである.
     {T, X, U} = Ode45Hybrid();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                     void dx())
                     : eps=1.0E-6, dtsav=1.0E-3,
                       dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                     void dx(), void input())
                     : eps=1.0E-6, dtsav=1.0E-3
                       dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                 void dx(), void input(), Real eps)
               : dtsav=1.0E-3, dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                     void dx(), void input(), Real eps,
                     Real dtsav) 
                    : dtmin=EPS, dtmax=abs(t1-t0)/5
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                     void dx(), void input(), Real eps,
                     Real dtsav, Real dtmin) 
                    : dtmax=abs(t1-t0)/5
List Ode45HybridAuto(Real t0, Real t1, Real dt, Matrix x,
                     void dx(), void input(), Real eps,
                     Real dtsav, Real dtmin, Real dtmax) 
     きざみを自動調節しながらRKF45の公式にしたがって
     指定された誤差内で常微分方程式の[t0,t1]時刻の解を求める。
     サンプリング間で外部入力は一定値をとる。
     ただし,きざみの最小値と最大値はdtminとdtmaxであり,
     dtmax < dtsav のとき,dtmax = dtsavに設定される。
     {T, X, U} = Ode45HybridAuto();
     T: 時間の系列
     X: 状態ベクトルの時系列
     U: 入出力ベクトルの時系列

 

                                    
void OdeStop();       Ode(), OdeAuto(), OdeHybrid(),
                      OdeHybridAuto(), Ode45(), Ode45Auto(),
                      Ode45Hybrid(), Ode45HybridAuto()の実行を
                      強制的にストップする.

     

                                    
List OdeXY(Real t);   Ode(), OdeAuto(), OdeHybrid(),
                      OdeHybridAuto(), Ode45(), Ode45Auto(),
                      Ode45Hybrid(), Ode45HybridAuto()の
                      実行中に時刻 t の状態と入出力を返す。

                      {X_d, Y_d} = OdeXY(t)

                      遅れのあるシステムのシミュレーション
                      に用いる。

       

                                    
Matrix M1, M2;
Integer row, col;

List size(M1);      行数と列数のリスト
                    {row, col} = size(M1);
List eig(M1);       固有値問題
                    {val, vec} = eig(M1);
                    M1 * vec = vec * val;
                    val: 固有値(対角行列)
                    vec: 固有ベクトル
List eig(M1, M2);   一般固有値問題
                    {val, vec} = eig(M1, M2);
                    M1 * vec = M2 * vec * val;
                    val: 一般固有値(対角行列)
                    vec: 一般固有ベクトル

             

                                    
Matrix M1;

List svd(M1);          特異値分解
                       {U, D, V} = svd(A);
                       U * D * V# = A;
                       U: 左特異ベクトル
                       V: 右特異ベクトル
                       D: 特異値(Aと同じ大きさの行列)
List lu(M1);           LU分解
                       {L, U, P} = lu(A);
                       L * U = P * A;
                       L: 下三角行列
                       U: 上三角行列
                       P: 置換行列
List hess(M1);         Hessenberg分解
                       {Q, H} = hess(A);
                       Q# * A * Q = H;
                       Q: 直交行列orユニタリ行列
                       H: ヘッセンベルグ行列
List schur(M1);        Schur分解
                       {U, T} = schur(A);
                       U# * A * U = T;
                       U: 直交行列orユニタリ行列
                       T: 擬似上三角行列or上三角行列,

         

                                    
Matrix M1, M2;

List qr(M1);           QR分解 
                       {Q, R} = qr(A);
                       Q * R = A;
                       Q: 直交行列orユニタリ行列
                       R: 上三角行列
List qr_p(M1);         QR分解(置換付)
                       {Q, R, P} = qr_p(A);
                       Q * R = A * P;
                       Q: 直交行列orユニタリ行列
                       R: 上三角行列
                       P: 置換行列
List qz(M1, M2);
                       QZ分解 
                       {AA, BB, Q, Z, VEC} = qz(M1, M2)
                       Q# * M1 * Z = AA;
                       Q# * M2 * Z = BB;
                       val = diag2vec(AA) ./ diag2vec(BB);
                       M1 * VEC = M2 * VEC * vec2diag(val);
                      AA: 上三角行列
                      BB: 上三角行列
                       Q: 直交行列orユニタリ行列
                       Z: 直交行列orユニタリ行列
                     VEC: 一般固有ベクトル
                     val: 一般固有値

next up previous contents index
Next: 配列関数 Up: 行列と配列と指数 Previous: 行列とスカラの演算
Masanobu KOGA 平成10年8月19日