psmall スペクトル投影

## 呼び出し手順

    [Q,M]=psmall(A,thres,flag)

## 引数

A

  実数の正方行列

thres

  実数

flag

  文字列 (`'c'` または `'d'`)

Q,M

  実数行列

## 説明

実部 < `thres` (`flag='c'`) または絶対値 < `thres`(`flag='d'`) となる固有値-部分空間への投影.

この投影は`Q*M`により定義されます. ここで, `Q`は列フルランク,`M`は行フルランク, そして`M*Q=eye`です.

`flag='c'`の場合, `M*A*Q`の固有値 = 実部< `thres`の`A`の固有値.

`flag='d'`の場合, `M*A*Q`の固有値 = 大きさ < `thres`の`A`の固有値.

`flag='c'`の場合, `[Q1,M1]` = `eye()-Q*M`の フルランク分解(`fullrf`)の場合, `M1*A*Q1`の固有値 =実部>= `thres`の `A`の固有値となります.

`flag='d'`の場合, `[Q1,M1]` =`eye()-Q*M` のフルランク分解(`fullrf`)の場合, `M1*A*Q1`の固有値 = 大きさ>=`thres`の `A`の固有値.

## 例

    A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
    [Q,M]=psmall(A,2.5,'d');
    spec(M*A*Q)
    [Q1,M1]=fullrf(eye()-Q*M);
    spec(M1*A*Q1)

## 参照

- pbig
- proj
- projspec

## 使用される関数

この関数はソートされた Schur形式(scilab 関数 `schur`)に基づいています.