im_inv 原像

## 呼び出し手順

    [X,dim]=im_inv(A,B [,tol])

                [X,dim,Y]=im_inv(A,B, [,tol])

## 引数

A,B

  同じ列の数を有する実数または複素数行列

X

  次数が`A`の列の数に等しい直交またはユニタリ正方行列

dim

  整数 (部分空間の次元)

Y

  次数が`A`および`B`の行の数に等しい直交行列.

## 説明

`[X,dim]=im_inv(A,B)` は `(A^-1)(B)`, すなわち, `A`への像が range(`B`) に あるベクトルを計算します.

`X`の最初の列 `dim` は `(A^-1)(B)`に広がっています.

`tol` は部分空間の取り込みを確認するために 閾値が使用されており, そのデフォルト値は `tol = 100*%eps` です. `Y` が返される時, `[Y*A*X,Y*B]` は以下のように分割されます: `[A11,A12;0,A22]`,`[B1;0]`

ただし, `B1`は行フルランク ( `rank(B)`に等しい) そして `A22` は 列フルランクで `dim` 列となります.

## 例

    A=[rand(2,5);[zeros(3,4),rand(3,1)]];B=[[1,1;1,1];zeros(3,2)];
    W=rand(5,5);A=W*A;B=W*B;
    [X,dim]=im_inv(A,B)
    svd([A*X(:,1:dim),B])   //vectors A*X(:,1:dim) belong to range(B)
    [X,dim,Y]=im_inv(A,B);[Y*A*X,Y*B]

## 参照

- rowcomp
- spaninter
- spanplus
- linsolve