Stepsize controller
In order to adjust the time stepping during integrating we provide torchdde.AdaptiveStepSizeController for adaptive methods (like torchdde.Dopri5) and torchdde.ConstantStepSizeController for constant stepsive methods (like torchdde.RK4).
torchdde.ConstantStepSizeController
¤
Constant step size controller that always returns the same step size.
The user must define dt0 via torchdde.integrate.integrate
torchdde.AdaptiveStepSizeController
¤
Adapts the step size to produce a solution accurate to a given tolerance.
The tolerance is calculated as atol + rtol * y for the evolving solution y.
Steps are adapted using a PID controller.
Choosing tolerances
The choice of rtol and atol are used to determine how accurately you would
like the numerical approximation to your equation. If you are solving a problem
"harder" problem then you probably need to raise the tolerances to get an
appropriate solution.
Default values usually are rtol=1e-3 and atol=1e-6.
Choosing PID coefficients
We refer the reader to Diffrax clear explanation
here.
__init__(self, atol, rtol, safety = 0.9, pcoeff = 0.0, icoeff = 1.0, dcoeff = 0.0, factormax = 10.0, dtmin = None, dtmax = None)
¤
Arguments:
atol: Absolute tolerance.rtol: Relative tolerance.safety: Multiplicative safety factor.pcoeff: The coefficient of the proportional part of the step size control.icoeff: The coefficient of the integral part of the step size control.dcoeff: The coefficient of the derivative part of the step size control.factormax: Maximum amount a step size can be increased relative to the previous step.dtmin: Minimum step size. The step size is either clipped to this value, or an error raised if the step size decreases below this, depending onforce_dtmin.dtmax: Maximum step size; the step size is clipped to this value.