MATLAB: ODE Suites のまとめ

MATLAB/SimulinkでつかうODEについて簡単にまとめてみました。

参考にしたのは

です。

ODE Suitesのまとめ

問題の分類Solver名Solverの説明精度使用シーン
Non-Stiff
ode232次と3次の陽的 Runge-Kuttaode45でうまくいかなった場合に試してみる
ode454次と5次の陽的 Runge-Kuttaまず使ってみるsolver
ode1131次から13次までの予測子・修正子法低~高ode45でうまくいかなった場合に試してみる
Stiff
ode23s2次と3次の陰的 Runge-Kuttaode15sでうまくいかなった場合に試す
ode15s1次と5次の陰的微分公式低~中Non-Stiff Solverでうまくいかなった時に試してみる
ode23t台形則によって中程度の硬い微分方程式、微分・代数方程式を解くode23sでもうまくいかなった場合に試す
ode23tb硬い微分方程式を解く低次の方法ode23sでもうまくいかなった場合に試す

Stiff/Non-Stiffな微分方程式とは

Stiff/Non-Stiffは数学的な定義があるようですが、上記の使用ケースから見ると、問題を解いてみないと分からない場合が多いように思います。

堅い方程式(早稲田大学 加川先生)によれば

「解の緩やかな変化と急激な変化が混在する方程式」

とあります。

また、数値解析:スティッフな連立微分方程式(エス・ケー技術士事務所)によれば

通常の陽解法はもちろん、ステップ幅可変の陽解法でも解くことが難しい微分方程式問題である。 化学工学では、例えば、気相のメタン燃焼(メタンの酸化反応)のようにラジカル種の素反応を考慮する場合、その素反応の数が数十から百数十個存在し、その反応速度が極めて速い素反応から遅い素反応まで混在する反応問題を解くとき、Stiffな微分方程式に相当する。

また、2つの並列反応があり、片方の反応が早く、もう片方が遅いとき、速い反応に合わせて固定時間刻みを小さくすると、遅い反応を解くのに極めて膨大なステップ数を経ないと解に到達しないことがある。可変刻みで解くこともあるがこのような特異な微分方程式 を解くのは無限の計算時間を必要とし、やはりStiffな微分方程式となる。

とあります。