NDSolve 的 “StiffnessSwitching”方法
引言
在 "StiffnessSwitching" 方法背后的基本思想是提供一个在非刚性和刚性求解器之间切换的自动方法.
"StiffnessTest" 和 "NonstiffTest" 选项(在 "刚性检测" 中有描述)提供了一个有用方法来检测一个问题什么时候表现为刚性.
"StiffnessSwitching" 方法捕捉由 "StiffnessTest" 产生的任何故障代码,并且切换到另一种求解器. "StiffnessSwitching" 方法也使用在 "NonstiffTest" 选项中指定的方法来从刚性方法切换回非刚性方法.
"Extrapolation" 通过使用动态阶数和步长选择为高度精确的解的计算提供了一个强有力的技术 (见 "NDSolve 的 “Extrapolation” 方法" 以获得更多详细信息)因此被用作 "StiffnessSwitching" 中的默认选择.
示例
"StiffnessSwitching" 方法使用一对外插法作为默认值. 非刚性求解器使用 "ExplicitModifiedMidpoint" 基本方法,而刚性求解器使用 "LinearlyImplicitEuler" 基本方法.
对于小的 AccuracyGoal 和 PrecisionGoal 容差值,有时对非刚性求解器使用显式的 Runge–Kutta 方更合适一些法.
选项总结
选项名 | 默认值 | |
Method | {Automatic,Automatic} | 分别对非刚性和刚性求解器指定使用的方法 |
"NonstiffTest" | Automatic | 指定用于决定是否切换到非刚性求解器所采用的方法 |