「stiff」という単語を英和辞書で調べると、“硬い”、もしくは “厄介な” といった意味であると説明されています。
スティッフシステムとは、文字通りそのシステムを数値的に解くことが非常に “厄介な” システムのことを指します。
まずはじめに、数値計算が困難なシステムの特徴について概観します。 連続システムは、数学的には常微分方程式で表現されます。
通常、ode45 や ode23 のような陽的 Runge-Kutta 公式に基づくソルバを使用すれば、効率・精度の面でバランスよく常微分方程式の数値解を求めることができます。
これは陽的 Runge-Kutta 公式が「安定」な公式、つまりステップサイズを十分小さくすれば、理論解に漸近することが保証されている解法となっているためです。
ここで問題となるのが、「ステップサイズをどの程度小さくすればよいのか」ですが、一般的には対象とする問題の時間スケールに合わせてステップサイズを決定します。
変化の激しいシステムについてはステップサイズを十分小さくとる必要がありますが、変化の緩やかなシステムについては、ステップサイズを大きくしても良好な精度で計算を行うことができます。
ここで、非常に短い時間スケールで変化する成分(高周波成分)と、比較的長い時間スケールで変化する成分(低周波成分)が混在している連続システムについて考えます。線形システム理論の言葉で言えば、システム行列の固有値の虚数部、つまり共振角周波数に大きな差が見られるシステムのことです。
工学的には、次のような問題に相当します。
・メカトロニクス系で時定数に大きな開きが見られる場合 ・アナログ・ディジタル混在系 ・ゴムと金属など剛性が著しく異なる複合材料
・Brusselator モデルに代表される化学反応系 このような問題に対して陽的 Runge-Kutta 公式を用いて数値解を求めようとすると、良好な精度の維持および計算の不安定化を抑えるため、高周波成分に合わせてステップサイズを決める必要があります。一方、ステップサイズを小さくしすぎると低周波成分のシミュレーションに膨大なステップ数が必要となり、その結果として計算時間が過大になるという問題が発生します。通常、解析者が興味のある対象は低周波成分ですので、高周波成分に合わせてステップサイズを極端に小さくとるのは、不経済と言わざるをえません。
このように、
・システムの中に高周波成分と低周波成分が混在している
・解析の対象は低周波成分である
・高周波成分の影響は副次的なものである という性質をもつ問題は、非常に “スティッフ” であると言えます。
この問題を数値的に解く際には、次のようなソルバがあれば便利です。
・ステップサイズは低周波成分に合わせて決めることができる
・このため、高周波成分に関しては多少精度が悪いかもしれない
・しかしながら、高周波成分を犠牲にしたことによる数値的不安定性は起こらない 上記のような特徴をもつソルバをスティッフソルバと呼びます。
Simulink では可変ステップソルバのソルバタイプ名に “stiff” と付いているものがこれに相当します( ode15s や ode23s など)。
これに対して、ode45 や ode23 のようなソルバをノンスティッフソルバと呼びます。
可変ステップのデフォルトソルバである ode45 で効率的なシミュレーションを行うことができない場合、対象システムがスティッフな可能性がありますので、ソルバを ode15s に変更してシミュレーションを行うと問題が解決する場合があります。