MATLAB Function Reference | ![]() ![]() |
表示
Y=
logm(X) [Y,esterr] = logm(X)
詳細
Y = logm(X)
は、行列の対数を出力し、expm(X)
の逆関数です。X
が負の固有値をもつ場合、結果は複素数になります。計算される expm(Y)
が X
に近い値でない場合は、ワーニングメッセージが表示されます。
[Y,esterr] = logm(X)
は、ワーニングメッセージを表示しませんが、相対的な残差norm(expm(Y)-X)/norm(X)
を出力します。
注意
X
が、実対称または複素エルミートの場合も、logm(X)
を計算します。
X = [0 1; 0 0]
のような行列は、対数、実数、複素数はもたず、logm
は結果を予想できません。
制限
logm(expm(X)) = X = expm(logm(X))
この関係式を満足しない行列 X
もあります。たとえば、X
の計算される固有値が厳密なゼロを含む場合、logm(X)
は無限大になります。また、X
の要素が非常に大きい場合、expm(X)
はオーバフローするかもしれません。
例題
1 1 0 0 0 2 0 0 -1
X=
2.7183
1.7183
1.0862
0
1.0000
1.2642
0
0
0.3679
このとき、A = logm(X)
は、オリジナルの行列 A
を作ります。
A=
1.0000
1.0000
0.0000
0
0
2.0000
0
0
-1.0000
しかし、log(X)
は 0 の対数を計算するので、以下のようになります。
ans =1.0000
0.5413
0.0826
-Inf
0
0.2345
-Inf
-Inf
-1.0000
アルゴリズム
行列関数は、参考文献 [1] に記述されている Parlett によるアルゴリズムを使って計算されます。行列が重複した固有値をもつとき、行列の Schur 分解を使います。この場合、十分な精度で結果が得られなかったり、完全に計算が途中終了してしまうことがあります。結果が不正確な場合は、ワーニングメッセージが表示されます。
参考
参考文献
[1] Golub, G. H. and C. F. Van Loan, Matrix Computation, Johns Hopkins University Press, 1983, p. 384.
[2] Moler, C. B. and C. F. Van Loan, "Nineteen Dubious Ways to Compute the Exponential of a Matrix," SIAM Review 20, 1979,pp. 801-836.
![]() | loglog | logspace | ![]() |