NDSolve::mxsst NDSolveValue::mxsst ParametricNDSolve::mxsst ParametricNDSolveValue::mxsst
例題
例 (4)
警告が表示されるのは,初期条件の不連続性がMaxStepsオプションによって指定されたグリッド点の数ではうまく扱えないからである:

MaxStepsオプションの設定を省略することでエラーを回避することができる:
警告が表示されるのは,初期条件の不連続性がMaxStepsオプションによって指定されたグリッド点の数ではうまく扱えないからである:

MaxStepsオプションの設定を省略することで,エラーを回避することができる:

ここでの問題は,周期的な連続が考慮された場合に,初期条件が事実上不連続であるということである.
尖点では必ず大きな導関数のエラーが起るので,NDSolveは最大数の点を使って,事前のエラー境界を満足させようとせざるを得ない.さらに悪いことには,急激な変化が結果の常微分方程式を解くことをより困難にし,解を出すのにかなりの時間がかかり,多くのメモリを使うことになる.このため,上の例はTimeConstrainedで囲んでいる.
この問題は通常,範囲を拡張するか,周期と周期の間を滑らかにするために項を加えるかすれば,簡単に修正できる:

初期条件は区分的に連続である.しかしNDSolveには,偏微分方程式の最高空間導関数まで連続的である初期条件が必要である.この場合,NDSolveには二次空間導関数 まで連続的な初期条件が必要である.初期条件の二次導関数をプロットする:
二次導関数が連続的でなくなったことが見て取れる.メッセージが指摘する問題は,二次導関数まで連続的である初期条件を使うことによって修正可能である:
NDSolveを新しい初期条件で評価する:
これが必要になるのは,初期条件の非連続的な二次導関数は,ギブス現象のため,標準的な有限微分法ではうまく近似できないこからである.この問題を詳しく説明するために,以下を定義する:
有限微分は,偏微分方程式の二次空間導関数を近似する.格子上でもとの初期条件を評価すると,ギブス現象のため,0.1と0.9の付近でそれぞれオーバーシュートとアンダーシュートが起る:
これらのオーバーシュートとアンダーシュートは,誤差推測に影響を与え,NDSolveは格子点の数を増やそうとするが,それでもいい結果にはならない.二次導関数まで連続的に増える初期条件では,オーバーシュートとアンダーシュートの問題は起こらない:
誤差推測についての詳細は,空間誤差推定値のセクションに説明がある.