NDSolve 的“ImplicitRungeKutta”方法
引言
例如,Gauss–Legendre方法是自伴的,就是说在时间上向前或者向后积分时,它们给出相同的解.
系数
隐式朗格-库塔方法的通用框架已经实现. 到目前为止,讨论的重点集中在具有令人感兴趣的几何属性的方法,涉及以下方案:
系数的产生
- 构造 Root 对象来表示解(使用单一的根隔离和 Jenkins–Traub以实现数值近似).
- 接着,对 Root 对象进行精度系数的数值近似.
- 用非合流 Vandermonde 系统的专用求解器求解系数的方程 (见 [GVL96]).
示例
"ImplicitRungeKutta" 的 "ImplicitSolver" 方法具有选项 AccuracyGoal 和 PrecisionGoal,用以指定求解非线性方程组所要达到的绝对和相对误差.
这些选项具有和 NDSolve 中相应选项同样的默认值,因为求解非线性系统到比方法的局部误差更高的准度通常是没有多大意义的.
第一个不变量是系统的哈密顿量,而现在误差, 正如所料,是有界的,因为高斯隐式朗格-库塔方法是一个辛积分器.
目前,隐式朗格-库塔方法框架不使用带状牛顿技术于解耦非线性系统.
选项总结
“ImplicitRungeKutta”选项
选项名 | 默认值 | |
"Coefficients" | "ImplicitRungeKuttaGaussCoefficients" | 指定在隐式朗格-库塔方法中使用的系数 |
"DifferenceOrder" | Automatic | 指定方法的局部准确度的阶数 |
"ImplicitSolver" | "Newton" | 指定用于非线性系统的求解器;有效的设置是 FixedPoint 或者 "Newton" |
"StepSizeControlParameters" | Automatic | 指定步进控制参数 |
"StepSizeRatioBounds" | {,4} | 指定在新步长中的相对变化的界限 |
"StepSizeSafetyFactors" | Automatic | 指定在步长估计中使用的安全因子 |
选项 "StepSizeSafetyFactors" 的 Automatic 默认设置使用值{9/10,9/10}.
“ImplicitSolver”选项
选项名 | 默认值 | |
AccuracyGoal | Automatic | 指定用于非线性系统求解的绝对容差 |
"IterationSafetyFactor" | 指定用于非线性系统求解的安全因子 | |
MaxIterations | Automatic | 指定用于非线性系统求解的最大迭代次数 |
PrecisionGoal | Automatic | 指定用于非线性系统求解的相对容差 |
选项名 | 默认值 | |
"JacobianEvaluationParameter" | 指定在牛顿迭代中什么时候重新计算雅可比矩阵 | |
"LinearSolveMethod" | Automatic | 指定在牛顿迭代中使用的线性求解器 |
"LUDecompositionEvaluationParameter" | 指定在牛顿迭代中什么时候计算 LU 分解 |
"ImplicitSolver" 的 "Newton" 方法的特定选项.