ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

  • L = logm(A)
  • [L,exitflag] = logm(A)

説明

L = logm(A)A の主行列の対数で、expm(A) の逆関数です。出力 L は、各固有値が厳密に –π から π までの範囲にある虚数部をもつ固有の対数です。A が特異であるか、負の実数軸上に固有値をもつ場合、主対数は定義されません。この場合、logm は非対数を計算し、警告メッセージを返します。

[L,exitflag] = logm(A) は、関数 logm の終了条件を記述するスカラー exitflag を返します。

  • exitflag = 0 の場合、アルゴリズムは正しく実行されました。

  • exitflag = 1 の場合、必要な行列の平方根の計算量が多すぎます。しかし、L の計算値は正確である可能性があります。

すべて折りたたむ

行列 A の行列指数を計算します。

A = [1 1 0; 0 0 2; 0 0 -1];
Y = expm(A)
Y =

    2.7183    1.7183    1.0862
         0    1.0000    1.2642
         0         0    0.3679

Y の行列対数を計算して元の行列 A を再現します。

P = logm(Y)
P =

    1.0000    1.0000    0.0000
         0         0    2.0000
         0         0   -1.0000

log(A) はゼロの対数をとるため、結果が劣ります。

Q = log(A)
Q =

   0.0000 + 0.0000i   0.0000 + 0.0000i     -Inf + 0.0000i
     -Inf + 0.0000i     -Inf + 0.0000i   0.6931 + 0.0000i
     -Inf + 0.0000i     -Inf + 0.0000i   0.0000 + 3.1416i

入力引数

すべて折りたたむ

入力行列。正方行列として指定します。

データ型: single | double
複素数のサポート: はい

制限

  • ほとんどの行列に対して、次の式が成り立ちます。

    logm(expm(A)) = A = expm(logm(A))

    これらの恒等式は、一部の A で失敗する可能性があります。たとえば、A の計算される固有値が正確なゼロを含む場合、logm(A) は無限大になります。また、A の要素が非常に大きい場合、expm(A) はオーバーフローする可能性があります。

詳細

すべて折りたたむ

ヒント

  • A が実対称または複素エルミートの場合も logm(A) を計算します。

  • A = [0 1; 0 0] のような行列は、対数、実数、複素数はもたず、関数 logm は結果を予想することができません。

アルゴリズム

関数 logm のアルゴリズムの使用方法は[1]および[2]に記述されています。

参照

[1] Al-Mohy, A. H. and Nicholas J. Higham, “Improved inverse scaling and squaring algorithms for the matrix logarithm,” SIAM J. Sci. Comput., 34(4), pp. C153–C169, 2012

[2] Al-Mohy, A. H., Higham, Nicholas J. and Samuel D. Relton, “Computing the Frechet derivative of the matrix logarithm and estimating the condition number,” SIAM J. Sci. Comput.,, 35(4), pp. C394–C410, 2013

参考

| |

R2006a より前に導入

この情報は役に立ちましたか?