このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
MATLAB からの組み込み関数 MuPAD の呼び出し
メモ
MuPAD® Notebook は削除されました。代わりに MATLAB® ライブ エディターを使用してください。
MuPAD Notebook ファイルを MATLAB ライブ スクリプト ファイルに変換するには、convertMuPADNotebook
を参照してください。MATLAB ライブ スクリプトは、多少の違いはありますが、MuPAD 機能の大半をサポートします。詳細は、MuPAD Notebook を MATLAB ライブ スクリプトに変換を参照してください。
MATLAB コマンドラインから、組み込み関数 MuPAD にアクセスするには、evalin(symengine,...)
または feval(symengine,...)
を使用します。これらの関数は、既存の MATLAB 関数、evalin
と feval
と同様に動作するように設計されています。
evalin
および feval
では MuPAD Notebook を開けないため、これらの関数を使用して MuPAD グラフィックス機能にアクセスすることはできません。
evalin
evalin
の構文は次のとおりです。
y = evalin(symengine,'MuPAD_Expression');
evalin
が役に立つのは、MATLAB ワークスペースで作業しながら MuPAD 言語での計算を実行したいときです。たとえば、k = 1
から 3
に対する関数 sin(kx)
の 3 要素からなるシンボリック ベクトルを作成するには、次のように入力します。
y = evalin(symengine,'[sin(k*x) $ k = 1..3]')
y = [ sin(x), sin(2*x), sin(3*x)]
feval
関数 feval
は、MuPAD 関数を評価する目的にも使えます。feval
には、evalin
とは異なる使いやすい構文があります。構文は、次のようになります。
y = feval(symengine,'MuPAD_Function',x1,...,xn);
MuPAD_Function
は MuPAD 関数の名前を表します。引数 x1,...,xn
は、シンボリック変数、数値または文字ベクトルでなければなりません。たとえば、フィボナッチ数列の 10 番目の要素を求めるには、次のように入力します。
z = feval(symengine,'numlib::fibonacci',10)
z = 55
次の例では、MuPAD の数値関数 fsolve
が返す点 x = 3
の近傍の解を、方程式のシンボリックな求解の使用と比較します。シンボリック ソルバーは次の結果を返します。
syms x f = sin(x^2); solve(f)
ans = 0
数値ソルバー fsolve
は次の結果を返します。
feval(symengine, 'numeric::fsolve',f,'x=3')
ans = x == 3.0699801238394654654386548746678
推測のとおり、答えは の数値です。この表示には MATLAB format
の設定は影響しません。答えは、関数 MuPAD 'numeric::fsolve'
からの完全な戻り値です。
evalin と feval の比較
関数 evalin(symengine,...)
では、MuPAD エンジンが文字ベクトルを評価します。MuPAD エンジンのワークスペースは通常空のため、evalin(symengine,...)
が返す式は、MATLAB ワークスペース内の定義に従って単純化および評価されることはありません。以下に例を示します。
syms x y = x^2; evalin(symengine, 'cos(y)')
ans = cos(y)
y
は MuPAD エンジンには未知であるため、変数 y
は x
で表現されていません。
これに対して、feval(symengine,...)
は MATLAB ワークスペースに存在するシンボリック変数を渡すことができ、これらの変数は MuPAD エンジンで処理される前に評価されます。以下に例を示します。
syms x y = x^2; feval(symengine,'cos',y)
ans = cos(x^2)
evalin と feval の浮動小数点引数
既定の設定では、MuPAD はすべての計算を厳密な形式で実行します。浮動小数点を引数として関数 evalin
または feval
を呼び出すと、ツールボックスはこれらの引数を MuPAD に渡す前に有理数に変換します。たとえば、不完全ガンマ関数を計算すると、結果は次のようなシンボリック式となります。
y = feval(symengine,'igamma', 0.1, 2.5)
y = igamma(1/10, 5/2)
結果を数値的に倍精度で近似するには、関数 double
を使用します。
format long double(y)
ans = 0.028005841168289
または、浮動小数点の引数が有理数に変換されないように、引用符を使用します (ツールボックスは、引用符で囲まれた引数を文字ベクトルとして取り扱います)。MuPAD は、少なくとも 1 つの浮動小数点数を含む数値に算術演算を実行する際、自動的に数値計算に切り替わり、浮動小数点の結果を返します。
feval(symengine,'igamma', '0.1', 2.5)
ans = 0.028005841168289177028337498391181
計算を続けるため出力を表示する形式を再び short
に設定します。
format short