MATLAB Function Reference | ![]() ![]() |
表示
Y = funm(X,'function
') [Y,esterr] = funm(X,'function
')
詳細
Y = funm(X,'
は、Parlett の手法(参考文献[1])を使って、function を評価します。function
')
X
は正方行列で、function
は任意の要素に対応する関数でなければなりません。
コマンド funm(X,'sqrt')
と funm(X,'log')
は、コマンドsqrtm(X)
と logm(X)
と等価です。コマンドfunm(X,'exp')
と expm(X)
は、同じ関数を計算しますが、アルゴリズムが異なります。expm(X)
を使うことをお勧めします。
[Y,esterr] = funm(X,'
は、何もメッセージを出力しませんが、計算結果の中の相対誤差の概算評価を出力します。function
')
X
が対称またはエルミートであれば、その Schur 型は対角行列で、funm
は、正確な結果を生成することができます。
例題
S = funm(X,
'sin'); C = funm(X,
'cos');
E = expm(i*X); C = real(E); S = imag(E);
どちらの場合も、結果は S*S+C*C = I
を満足します。ここで 、I
=
eye(size(X))
です。
アルゴリズム
行列関数は、参考文献[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.
![]() | functions | fwrite | ![]() |