A Taylor method for solving an ordinary differential equation initial-value problem $\dot x = f(t,x)$, $x(t_0) = x_0$, computes the Taylor series (TS) of the solution at the current point, truncated to some order, and then advances to the next point by summing the TS with a suitable step size. A standard ODE method (e.g. Runge-Kutta) treats function $f$ as a black box, but a Taylor solver requires $f$ to be preprocessed into a code-list of elementary operations that it interprets as operations on (truncated) TS. The trade-off for this extra work includes arbitrary order, typically enabling much larger step sizes. For a standard function, such as $\exp$, this means evaluating $v(t)=\exp(u(t))$, where $u(t),v(t)$ are TS. The sub-ODE method applies the ODE $d v/d u=v$, obeyed by $v=\exp(u)$, to in-line this operation as $\dot v=v\dot u$. This gives economy of implementation: each function that satisfies a simple ODE goes into the "Taylor library" with a few lines of code--not needing a separate recurrence relation, which is the typical approach. Mathematically, however, the use of sub-ODEs generally transforms the original ODE into a differential-algebraic system, making it nontrivial to ensure a sound system of recurrences for Taylor coefficients. We prove that, regardless of how many sub-ODEs are incorporated into $f$, this approach guarantees a sound system. We introduce our sub-ODE-based Matlab ODE solver and show that its performance compares favorably with solvers from the Matlab ODE suite.
翻译:求解常微分方程初值问题 $\dot x = f(t,x)$, $x(t_0) = x_0$ 的泰勒方法,通过计算当前点处解的泰勒级数(截断至指定阶数),并以合适步长求和该级数推进至下一时间点。传统常微分方程数值方法(如龙格-库塔法)将函数 $f$ 视为黑箱,而泰勒求解器需将 $f$ 预处理为基本运算的代码列表,并将其解释为(截断)泰勒级数上的运算。这种额外工作的代价换来了任意阶精度能力,通常可实现更大的步长。对于标准函数(如指数函数 $\exp$),这意味着计算 $v(t)=\exp(u(t))$,其中 $u(t),v(t)$ 均为泰勒级数。子常微分方程方法利用 $v=\exp(u)$ 满足的微分方程 $d v/d u=v$,将该运算内联为 $\dot v=v\dot u$。这实现了高效实现:每个满足简单常微分方程的函数仅需数行代码即可纳入"泰勒函数库",无需采用典型方法中独立的递推关系。然而从数学角度看,子常微分方程的使用通常会将原常微分方程转化为微分-代数系统,这使得构建泰勒系数的完备递推系统具有挑战性。我们证明,无论 $f$ 中引入多少子常微分方程,该方法均能保证递推系统的完备性。我们介绍了基于子常微分方程的Matlab常微分方程求解器,并展示其性能优于Matlab常微分方程套件中的求解器。