ODE オプションの概要
ODE の解を求める際には、多くの場合、パラメーターの微調整や許容誤差の調整を行ったり、ソルバーに追加情報を渡したりすることが必要です。このトピックでは、オプションの指定方法と、各オプションがどの微分方程式ソルバーと互換性をもつかを説明します。
オプションの構文
関数 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
のオプションの中には、汎用でどのソルバーとも互換性があるものもあれば、ソルバーに固有のものもあります。次の表は、各オプションをさまざまなソルバーで使用する場合の互換性をまとめています。
オプション グループ | オプション | ode45 | ode23 | ode78 | ode89 | ode113 | ode15s | ode23s | ode23t | ode23tb | ode15i |
---|---|---|---|---|---|---|---|---|---|---|---|
誤差制御 | RelTol | | | | | | | | | | |
AbsTol | | | | | | | | | | | |
NormControl | | | | | | | | | | | |
ソルバー出力 | NonNegative | | | | | | | | | | |
OutputFcn | | | | | | | | | | | |
OutputSel | | | | | | | | | | | |
Refine | | | | | | | | | | | |
Stats | | | | | | | | | | | |
ステップ サイズ | InitialStep | | | | | | | | | | |
MaxStep | | | | | | | | | | | |
イベント検出 | Events | | | | | | | | | | |
ヤコビ行列 | Jacobian | | | | | | | | | | |
JPattern | | | | | | | | | | | |
Vectorized | | | | | | | | | | | |
質量行列と DAE | Mass | | | | | | | | | | |
MStateDependence | | | | | | | | | | | |
MvPattern | | | | | | | | | | | |
MassSingular | | | | | | | | | | | |
InitialSlope | | | | | | | | | | | |
ode15s と ode15i のアルゴリズム オプション | MaxOrder | | | | | | | | | | |
BDF | | | | | | | | | | |
* 問題に質量行列がない場合のみ、ode15s
、ode23t
、ode23tb
で NonNegative
パラメーターを使用します。
** ode15i
のイベント関数は yp
に対する 3 番目の入力引数を受け入れなければなりません。
使用例
MATLAB には、さまざまなオプションの使用方法を示すサンプル ファイルがいくつか含まれています。たとえば、edit ballode
と入力すると、'Events'
を使用してイベント関数を指定する例が表示され、edit batonode
と入力すると、'Mass'
を使用して質量行列を指定する例が表示されます。サンプル ファイルと、そこで使用されるオプションの完全な要約は、ODE の例とファイルの概要を参照してください。