ODE オプションの概要
ODE の解を求める際には、多くの場合、パラメーターの微調整や許容誤差の調整を行ったり、ソルバーに追加情報を渡したりすることが必要です。このトピックでは、ソルバー関数 (ode45、ode15s など) のオプションの指定方法と、各オプションがどの微分方程式ソルバーと互換性をもつかを説明します。
オプションの構文
関数 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 |
|
|
|
|
|
|
|
|
|
| |
MinStep |
|
|
|
|
|
|
|
|
|
| |
| イベント検出 | 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 の例とファイルの概要を参照してください。