LinearAlgebra[ConditionNumber] - ノルムに関して行列の条件数を計算
使い方
ConditionNumber(A, p, in, c)
パラメータ
A - 行列
p - (オプション) 1,2、 infinity , Euclidean または Frobenius ; ノルムセレクタ
in - (オプション) factors = list の形の等式、ただし list は LUDecomposition によって返されるような NAG フォーマットの Matrix 要素を含む
c - (オプション) BooleanOpt(conjugate); 2-ノルムの場合の結果がエルミート転置を用いるかどうかを指定する
|
説明
|
|
•
|
ConditionNumber(A) 関数は A の条件数と等しいスカラー量を Norm(A, infinity) * Norm(MatrixInverse(A, infinity)) と計算します。
|
•
|
ConditionNumber(A, p, c) 関数は A の条件数と等しいスカラー量を Norm(A, p, c) * Norm(MatrixInverse(A, p, c)) と計算します。
|
|
浮動小数点の行列に対して、逆行列のノルムは LU または コレスキー分解によって得られる行列の三角部分の逆行列のノルムを評価することによって計算されます。
|
•
|
p が呼出し手順に含まれていると、p は 1, 2, infinity, Frobenius, Euclidean のいずれかでなければいけません。
|
•
|
in が呼出し手順に含まれていると、list は LUDecomposition で返されるような NAG フォーマットの要素を含まなければなりません。そのリストの項は次のとおりです。
|
|
* LU分解に対しては、ベクトル、行列の項 [ipiv,LU] のリスト。
|
|
* コレスキー分解に対しては行列の項 [L] のリスト。
|
|
2-ノルムの場合、A の転置がエルミート転置かを選択するために c を呼出し手順に含めることができます。2-ノルムの場合も Euclidean を用いて指定することができます。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、コマンド with(LinearAlgebra) を実行した後にのみ、ConditionNumber(..) の形で使用することができます。ただし、コマンドの長い形 LinearAlgebra[ConditionNumber](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := HilbertMatrix(3);
|
| (2.1) |
| (2.2) |
>
|
B := <<3*I,-0.1>|<0,1>>;
|
| (2.3) |
| (2.4) |
>
|
ConditionNumber(B, 2, conjugate=false);
|
| (2.5) |
前もって分解された LU 入力を使って条件数を決定します。
>
|
C := RandomMatrix(250, outputoptions=[datatype=float[8]]):
(v, M) := LUDecomposition(C, output='NAG'):
ConditionNumber(C, 1, factors=[v, M]);
|
| (2.6) |
前もって分解されたコレスキー入力を使って条件数を決定します。
>
|
C := Matrix(3,3,[[53,-6,-5],[-6,90,34],[-5,34,13]],shape=symmetric,
datatype=float,attributes=['positive_definite']);
|
| (2.7) |
>
|
IsDefinite(C); # verify that C is positive definite
|
| (2.8) |
>
|
L := LUDecomposition(C, output='NAG');
|
| (2.9) |
>
|
ConditionNumber(C, factors=[L]);
|
| (2.10) |
|
|