MATLAB/SimulinkでつかうODEについて簡単にまとめてみました。
参考にしたのは
です。
目次
ODE Suitesのまとめ
問題の分類 | Solver名 | Solverの説明 | 精度 | 使用シーン |
---|---|---|---|---|
Non-Stiff | ||||
ode23 | 2次と3次の陽的 Runge-Kutta | 低 | ode45でうまくいかなった場合に試してみる | |
ode45 | 4次と5次の陽的 Runge-Kutta | 中 | まず使ってみるsolver | |
ode113 | 1次から13次までの予測子・修正子法 | 低~高 | ode45でうまくいかなった場合に試してみる | |
Stiff | ||||
ode23s | 2次と3次の陰的 Runge-Kutta | 低 | ode15sでうまくいかなった場合に試す | |
ode15s | 1次と5次の陰的微分公式 | 低~中 | Non-Stiff Solverでうまくいかなった時に試してみる | |
ode23t | 台形則によって中程度の硬い微分方程式、微分・代数方程式を解く | 低 | ode23sでもうまくいかなった場合に試す | |
ode23tb | 硬い微分方程式を解く低次の方法 | 低 | ode23sでもうまくいかなった場合に試す |
Stiff/Non-Stiffな微分方程式とは
Stiff/Non-Stiffは数学的な定義があるようですが、上記の使用ケースから見ると、問題を解いてみないと分からない場合が多いように思います。
堅い方程式(早稲田大学 加川先生)によれば
「解の緩やかな変化と急激な変化が混在する方程式」
とあります。
また、数値解析:スティッフな連立微分方程式(エス・ケー技術士事務所)によれば
通常の陽解法はもちろん、ステップ幅可変の陽解法でも解くことが難しい微分方程式問題である。 化学工学では、例えば、気相のメタン燃焼(メタンの酸化反応)のようにラジカル種の素反応を考慮する場合、その素反応の数が数十から百数十個存在し、その反応速度が極めて速い素反応から遅い素反応まで混在する反応問題を解くとき、Stiffな微分方程式に相当する。
また、2つの並列反応があり、片方の反応が早く、もう片方が遅いとき、速い反応に合わせて固定時間刻みを小さくすると、遅い反応を解くのに極めて膨大なステップ数を経ないと解に到達しないことがある。可変刻みで解くこともあるがこのような特異な微分方程式 を解くのは無限の計算時間を必要とし、やはりStiffな微分方程式となる。
とあります。