Main Content

ODE オプションの概要

ODE の解を求める際には、多くの場合、パラメーターの微調整や許容誤差の調整を行ったり、ソルバーに追加情報を渡したりすることが必要です。このトピックでは、ソルバー関数 (ode45ode15s など) のオプションの指定方法と、各オプションがどの微分方程式ソルバーと互換性をもつかを説明します。

オプションの構文

関数 odeset を使用するとオプション構造体を作成でき、これを 4 番目の入力引数としてソルバーに渡せるようになります。たとえば、相対許容誤差と絶対許容誤差を調整するには、次のように指定します。

opts = odeset('RelTol',1e-2,'AbsTol',1e-5);
[t,y] = ode45(@odefun,tspan,y0,opts);

コマンド odeset を入力なしで使用すると、MATLAB® では各オプションの取り得る値のリストが表示され、既定値が中かっこ {} で示されます。

関数 odeget は既存の構造体内のオプションの値をクエリしますが、これを使用して、オプションの値を条件に基づいて動的に変更することができます。たとえば、次のコードは Stats'on' に設定されているかどうかを検出し、必要に応じて値を変更します。

if isempty(odeget(opts,'Stats'))
  odeset(opts,'Stats','on')
end

オプションと各ソルバーの互換性

odeset のオプションの中には、汎用でどのソルバーとも互換性があるものもあれば、ソルバーに固有のものもあります。次の表は、各オプションをさまざまなソルバーで使用する場合の互換性をまとめています。

オプション グループオプションode45ode23ode78ode89ode113ode15sode23sode23tode23tbode15i
誤差制御RelTol

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

AbsTol

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

NormControl

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

ソルバー出力NonNegative

Supported

Supported

Supported

Supported

Supported

Supported

Unsupported

Supported

Supported

Unsupported

OutputFcn

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

OutputSel

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Refine

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Stats

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

ステップ サイズInitialStep

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

MaxStep

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

イベント検出Events

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

ヤコビ行列Jacobian

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Supported

Supported

Supported

Supported

JPattern

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Supported

Supported

Supported

Supported

Vectorized

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Supported

Supported

Supported

Supported

質量行列と DAEMass

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Supported

Unsupported

MStateDependence

Supported

Supported

Supported

Supported

Supported

Supported

Unsupported

Supported

Supported

Unsupported

MvPattern

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Unsupported

Supported

Supported

Unsupported

MassSingular

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Unsupported

Supported

Unsupported

Unsupported

InitialSlope

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Unsupported

Supported

Unsupported

Unsupported

ode15sode15i のアルゴリズム オプションMaxOrder

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Unsupported

Unsupported

Unsupported

Supported

BDF

Unsupported

Unsupported

Unsupported

Unsupported

Unsupported

Supported

Unsupported

Unsupported

Unsupported

Unsupported

* 問題に質量行列がない場合のみ、ode15sode23tode23tbNonNegative パラメーターを使用します。

** ode15i のイベント関数は yp に対する 3 番目の入力引数を受け入れなければなりません。

使用例

MATLAB には、さまざまなオプションの使用方法を示すサンプル ファイルがいくつか含まれています。たとえば、edit ballode と入力すると、'Events' を使用してイベント関数を指定する例が表示され、edit batonode と入力すると、'Mass' を使用して質量行列を指定する例が表示されます。サンプル ファイルと、そこで使用されるオプションの完全な要約は、ODE の例とファイルの概要を参照してください。

参考

|

関連するトピック