| 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.71831.71831.086201.00001.2642000.3679
このとき、A = logm(X) は、オリジナルの行列 A を作ります。
A=1.00001.00000.0000002.000000-1.0000
しかし、log(X) は 0 の対数を計算するので、以下のようになります。
ans =1.00000.54130.0826-Inf00.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 | ![]() |