LinearAlgebra[Norm] - 行列またはベクトルの p ノルム の計算
LinearAlgebra[MatrixNorm] - 行列の p ノルム の計算
LinearAlgebra[VectorNorm] - ベクトルの p ノルム の計算
使い方
Norm(A, p, c)
MatrixNorm(A, p, c)
VectorNorm(A, p, c)
パラメータ
A - 行列またはベクトル
p - (オプション) 非負の数, infinity, Euclidean, または Frobenius; A に関するノルムの選択
c - (オプション) BooleanOpt(conjugate); 行列に対する 2 ノルム の場合の結果にエルミート転置を使うかどうか、または p が偶数のときベクトルに対する p ノルム における結果に対してベクトルの成分が実数であると仮定して余分に abs を呼び出すことを避けるかどうかを指定します。
|
説明
|
|
•
|
Norm(A) 関数は、A の infinityノルム を計算します。
|
|
p または c が呼び出し手順に含まれるとき、それらの値と結果として生じるノルムは A がベクトルであるか行列であるかに依存します。
|
ベクトルノルム
•
|
V がベクトルで p が呼び出し手順に含まれるとき、p は非負の数、 infinity, Frobenius, Euclidean のいずれかでなければなりません。
|
|
1 <= p < infinity のとき、ベクトル V の p ノルム は、 add( abs(V[i])^p, i = 1 .. Dimension(V) ) ^ (1/p) です。
|
|
ベクトル V の infinityノルム は、 max( seq( abs(V[i]), i = 1 .. Dimension(V) ) ) です。
|
|
Maple は 0 <= p <= infinity のすべてに対してベクトルのノルムを実装しています。0 < p < 1 に対して最後の p 乗根の計算は、行われません。(すなわち、計算は単に add(abs(V[i])^p, i = 1 .. Dimension(V) です。) これは R^n 上の距離を定義します。しかし、p 乗根はノルムでなくその場合 VectorNorm によって計算された形はより役立ちます。極限の場合 p = 0 は、V の零でない要素の個数を返します。(これは p または V の任意の元が浮動小数点数ならそれは、浮動小数点数になります。)
|
|
ベクトルに対して、2ノルム は Euclidean か Frobenius のどちらかを指定することもできます。
|
行列ノルム
•
|
A が行列で p が呼び出し手順に含まれているとき、p は 1, 2, infinity, Frobenius, Euclidean のいずれかでなければなりません。
|
|
行列 A の p ノルム は、max( VectorNorm( A . V, p ) ) です。ここで最大値は VectorNorm( V, p ) = 1 であるすべてのベクトル V をわたってとります。Maple は、 p = 1, 2, infinity と (実際は行列のノルムではなく、行列 A を「たたみこまれた」ベクトルとして扱った) 特別な場合 p = Frobenius に対してのみ MatrixNorm(A, p) が実装されています。これらのノルムは次のように定義されます。
|
|
MatrixNorm(A, 1) = max( seq( VectorNorm( A[1..-1, j], 1), j = 1 .. ColumnDimension(A) ) )
|
|
MatrixNorm(A, infinity) = max( seq( VectorNorm(A[i, 1..-1], 1), i = 1 .. RowDimension(A) ) )
|
|
MatrixNorm(A, 2) = sqrt( max( seq( Eigenvalues( A . HermitianTranspose(A) )[i], i = 1 .. RowDimension(A) ) ) )
|
|
MatrixNorm(A, Frobenius) = sqrt( add( add( (A[i,j]^2), j = 1 .. ColumnDimension(A) ), i = 1 .. RowDimension(A) ) )
|
|
行列の 2 ノルムの場合に対して、c は A の転置とエルミート転置の間で選択するために呼び出し手順に含めることができます。2 ノルム の場合は、Euclidean を使うことによっても指定することができます。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、with(LinearAlgebra) を実行した後にのみ Norm(..) の形で使うことができます。ただし、長い形の名前 LinearAlgebra[Norm](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := <<1,-1,0>|<0,1,1>|<1,0,1>>;
|
| (2.1) |
| (2.2) |
>
|
B := <<10,0,0>|<0,9,1/2>|<2,4,1>>;
|
| (2.3) |
| (2.4) |
| (2.5) |
>
|
VectorScalarMultiply(h, 1 / VectorNorm(h,Euclidean));
|
| (2.6) |
>
|
VectorNorm( <2,0>, 0.5);
|
| (2.7) |
| (2.8) |
>
|
VectorNorm(v,2,conjugate=false);
|
| (2.9) |
>
|
VectorNorm(v,2,conjugate=true);
|
| (2.10) |
|
|