NDSolve::nderr NDSolveValue::nderr ParametricNDSolve::nderr ParametricNDSolveValue::nderr

詳細

  • このメッセージは,初期値問題を解くアルゴリズム内の特定のタイプの不具合によって表示される.
  • このエラーは,微分方程式が特異点を持つ場合や振動する解を持つ場合に起り得る.
  • 思わぬ場面でこのエラーが表示されたら,テクニカルサポートにご連絡ください.
  • MachinePrecisionより大きいWorkingPrecisionを使う例でこのメッセージが表示された場合には,オプションMethod->"StiffnessSwitching"NDSolveで使ってみるとよい.
  • Off[message]はメッセージが表示されないようにし,On[message] はメッセージが表示されるようにする.(例:Off[NDSolve::nderr]

例題

  (2)

通常このメッセージは,最初の刻み幅が大きすぎる場合に生成される.微分代数方程式の指数が高すぎて解けないときに生成されることもある:

非常に小さい刻み幅で始めるとうまくいく:

以下の微分方程式は解けない:

方程式が硬くなっていて,NDSolveがこれを検知し,それに応じて選択するメソッドを変更することに困難が生じているようである.明示的にMethod"StiffnessSwitching"を使うことを指定することによって解を得ることができる.この方法はうまくいくが,計算にかなりの時間がかかる:

もう一つの方法として,これは境界値問題なので,"Shooting"メソッドを使えばより速く解くことができる.しかし,この方法は,"StartingInitialConditions"の選択に大きく左右される.変数が2つあるので,問題を解く2つの"StartingInitialConditions"を得るためには,かなりの試行錯誤が必要になる可能性もある: