MATLAB Function Reference | ![]() ![]() |
表示
Y = expm(X)
詳細
Y = expm(X)
は、行列 X
の指数を計算します。X
が正でない固有値をもつ場合、結果は複素数値になります。
アルゴリズム
関数 expm
は、組み込み関数ですが、ファイル expm1.m
に示してある、スケーリングと平方計算によるアルゴリズムを使ったPadé近似を行います。
行列指数を計算する2番目の手法として、テイラー級数近似を行います。この手法はファイル expm2.m
で実行されます。テイラー級数近似は、計算効率と精度が悪くなくことが多いため、一般的な目的のための手法としては推奨できません。
行列指数を計算する 3番目の方法は、ファイルexpm3.m
に示されているもので、行列を対角化し、個々の固有値に指数関数を適用し、それから変換により形を戻します。入力行列が完全に線形独立な固有ベクトルをもたなければ、この手法は使えません。
参考文献 [1] と [2] に、expm(X)
の計算に対する様々なアルゴリズムとそれらの比較が記述されています。
組み込みの手法 expm1
は、本質的には参考文献 [2] の手法
3 を使っています。
例題
1 1 0 0 0 2 0 0 -1
2.7183 1.7183 1.0862 0 1.0000 1.2642 0 0 0.3679
2.7183 2.7183 1.0000 1.0000 1.0000 7.3891 1.0000 1.0000 0.3679
2つの結果の対角要素が等しいことに注目してください。このことは、どんな三角行列に対しても成り立ちます。しかし、主対角の下側を含め、対角要素以外の値は異なります。
参考
参考文献
[1] Golub, G. H. and C. F. Van Loan, Matrix Computation, p. 384, Johns Hopkins University Press, 1983.
[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.
![]() | expint | eye | ![]() |