Traditional solvers for delay differential equations (DDEs) are designed around only a single method and do not effectively use the infrastructure of their more-developed ordinary differential equation (ODE) counterparts. In this work we present DelayDiffEq, a Julia package for numerically solving delay differential equations (DDEs) which leverages the multitude of numerical algorithms in OrdinaryDiffEq for solving both stiff and non-stiff ODEs, and manages to solve challenging stiff DDEs. We describe how compiling the ODE integrator within itself, and accounting for discontinuity propagation, leads to a design that is effective for DDEs while using all of the ODE internals. We highlight some difficulties that a numerical DDE solver has to address, and explain how DelayDiffEq deals with these problems. We show how DelayDiffEq is able to solve difficult equations, how its stiff DDE solvers give efficiency on problems with time-scale separation, and how the design allows for generality and flexibility in usage such as being repurposed for generating solvers for stochastic delay differential equations.
翻译:用于延迟差异方程式(DDEEs)的传统解算器(DDEEs)仅围绕一种单一方法设计,没有有效地使用其较发达的普通差异方程式(ODE)的基础设施。在这项工作中,我们介绍了DelaDiffEq,这是一个用于从数字上解决延迟差异方程式(DDEs)的Julia软件包,它利用普通DiffEq的多种数字算法来解决僵硬和非僵硬的数方程式,并设法解决挑战僵硬的DDEs。我们描述了如何在其本身内部编集ODE集器,并核算不连续性传播,从而导致设计对DDEs有效,同时使用所有ODEs的内部软件。我们强调了数字DDE解算器必须解决的一些困难,并解释了DelayDiffEq如何处理这些问题。我们展示了LealDiffEq是如何解决困难方程式的,其僵硬的DDE解算器如何在时间尺度分解的问题上产生效率,以及设计如何允许通用和灵活使用,例如重新配置用于产生拖延延迟差异方程式的解算法。