LinearAlgebra[MatrixInverse] - 正方行列の逆行列 または 行列の Moore-Penrose 擬似逆行列を計算
使い方
MatrixInverse(A, m, mopts, c, out, outopts)
パラメータ
A - 行列またはリスト
m - (オプション) method = name の形をした等式; ここで name は、'LU', 'Cholesky', 'subs', 'integer', 'univar', 'polynom', 'complex', 'rational', 'pseudo', 'none'のいずれか; A の逆行列を因子分解する際に用いる手法
mopts - (オプション) methodoptions=list の形をした等式; ここで、 list は、特定の方法に対するオプションを含みます。
c - (オプション) BooleanOpt(conjugate); コレスキー分解から前因子分解された入力の場合にエルミート転置を用いるかどうかを指定
out - (オプション) output=list の形をした等式; ここで、リストは、'inverse' あるいは 'proviso' のいずれか
outopts - (オプション) outputoptions=listの形をした等式; 結果のオブジェクトに対するコンストラクタオプション
|
説明
|
|
•
|
A が正則正方行列であるとき、MatrixInverse(A) 関数は A^(-1) を返します。A が正則でないときには、エラーメッセージを返します。A が正方でないときには、Moore-Penrose 擬似逆行列を返します。
|
•
|
A が正則な n x n 行列であるとき、I をn x n 単位行列として、A . A^(-1) = I を満たすような逆行列 A^(-1) が計算されます。
|
•
|
A が正方でない m x n 行列であるとき、あるいは、method = pseudo が指定される場合、以下が成り立つような Moore-Penrose 擬似逆行列 X が計算されます。:
|
|
HermitianTranspose( A . X ) = A . X
|
|
HermitianTranspose( X . A ) = X . A
|
•
|
m が呼び出し手順に含まれている場合には、そこで指定される手法が逆行列の計算に使用されます(能率を上げるために逆行列の計算がハードコードされている 1 x 1, 2 x 2, 3 x 3 行列を除く)。
|
|
complex および rational 法は、入力された行列に単位行列のコピーを付け加え、その系を簡約行階段形に変換します。
|
|
integer 法は、`Adjoint/integer` を呼び出し、行列式で割ります。
|
|
univar 法は、行列を整数行列に帰着させる評価法を使用してから、`Adjoint/integer` を使用します。そして 1 変数多項式に戻すために genpoly を用います。
|
|
polynom 法は、分数なしのガウス消去法を実行します。
|
|
LU および Cholesky 法は、(前因子分解されていない場合に)対応する LUDecomposition 法を入力した行列に使用します。そして、右辺に単位行列のコピーをつけて、前進および後退代入を用います。
|
•
|
subs 法は、入力が既に三角行列であり、適切な前進または後退代入だけが行われることを示しています。
|
•
|
呼び出し手順の最初の引数がリストであるとき、リストの要素は、ある前因子分解による行列 A の行列因子として受け取られます。これらの因子は、LUDecomposition へ output='NAG' オプションを用いて返された値の形式です。すなわち、リストの項目は次のいずれかです:
|
|
* LU 分解に対しては、ベクトルと行列のリスト [ipiv,LU] です。第1因子はピボットベクトル、第2因子は対角成分が1の下三角および上三角の LU 因子が重ね合わされて、受け取られます。伴われるオプションは、method=LU です。
|
|
* コレスキー分解に対しては、単独の行列のリスト [L] です。このデータは、行列の下三角部分として受け取られます。伴われるオプションは、method=Cholesky です。
|
|
このように、行列の引数に対して供給された前因子分解データから、計算スキームは一意に定まります。method=name オプションは、供給された前因子分解データと一致しなければなりません。
|
•
|
methodoptions=list オプションは、特定の方法を指定するために使用することができます。これは、pseudo-inverse 方法にのみ使用できます。 list に指定されている方法に特有のオプションは、tolerance = <value> の形になります。ここで、<value> は、正の数です。この数は、通常小さく、擬似逆行列の計算で使用するために、有効に非零であるとして特異値を受け取るための許容誤差として、浮動小数点数の行列の場合に使用されます。
|
•
|
conjugate オプションは、A が記号的コレスキー分解からの単独の行列のリストである場合に、エルミート転置を用いるかどうかを指定します。デフォルトは、true です。条件 conjugate=true は、conjugate と略記することが可能です。
|
•
|
output=list オプションは、出力されるオブジェクトを指定するために使用することができます。outputs として inverse と proviso 2つが可能です。 proviso は、Moore-Penrose 擬似逆行列の計算にのみ関連しています。 浮動小数点の場合、これは、最初の特異値に対する非零として受けとる最大の特異値の比です。厳密なシンボリックケースの場合、これは、行列の行列式です。このproviso が零の場合、厳密なケース、あるいは、浮動小数点で零に近い場合、与ええられた4つの等式は必ずしも成り立たない可能性があります。
|
•
|
outputoptions オプション (outopts) は、結果を作成する Matrix コンストラクタに、付加情報 (readonly, shape, storage, order, datatype, attributes) を提供します。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
MatrixInverse(<<a,c>|<b,d>>);
|
| (2.1) |
>
|
MatrixInverse(<<1,2,3,4>|<2,3,4,0>|<3,4,0,0>|<4,0,0,0>>, method=integer);
|
| (2.2) |
>
|
A := <<2/3,-1/3,-1/3>|<-1/3,2/3,-1/3>|<-1/3,-1/3,2/3>>:
MatrixInverse( A ); # A has rank 2 and, hence, is singular:
|
Error, (in LinearAlgebra:-LA_Main:-MatrixInverse) singular
matrix
| |
>
|
B := <<1,0,0,0>|<1,1,0,0>|<1,1,1,0>|<1,1,1,1>>:
MatrixInverse(B, method=subs);
|
| (2.3) |
>
|
C := Matrix([[16,30,21,25,16],[68,42,52,36],[36,37,24],[53,30],[20]],
scan=triangular[upper], shape=symmetric, datatype=float):
G := LUDecomposition(C, method=Cholesky):
C1 := MatrixInverse( [G] );
|
| (2.4) |
| (2.5) |
>
|
(p, lu) := LUDecomposition(C, output='NAG'):
C2 := MatrixInverse( [p, lu] );
|
| (2.6) |
| (2.7) |
| (2.8) |
>
|
Mi := MatrixInverse(M,method=pseudo);
|
| (2.9) |
>
|
Norm( M . Mi . M - M );
|
| (2.10) |
>
|
Norm( Mi . M . Mi - Mi );
|
| (2.11) |
>
|
Norm( HermitianTranspose(Mi . M) - Mi . M );
|
| (2.12) |
>
|
Norm( HermitianTranspose(M . Mi) - M . Mi );
|
| (2.13) |
>
|
M := <<2.0,1.0,1.0>|<0.0,3.0,1.0>>;
|
| (2.14) |
>
|
MatrixInverse(M,method=pseudo,methodoptions=['tolerance'=0.000005],output=['inverse','proviso']);
|
| (2.15) |
|
|
参考文献
|
|
|
de Boor, Carl. "An Empty Exercise." ACM SIGNUM Newsletter. (1990): 2-6. Vol. 25. Iss. 2.
|
|
|