| 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 | ![]() |