Diffusive representations of time memory

A Caputo derivative depends on the whole history of \(u\). Diffusive methods replace that history by a fixed number of first-order memory modes,

\[ D_C^\alpha u(t)\approx\sum_{j=1}^m w_j\phi_j(t), \qquad \dot\phi_j+\lambda_j\phi_j=\dot u, \qquad \phi_j(0)=0, \]

with positive rates \(\lambda_j\) and weights \(w_j\) obtained by quadrature of

\[ D_C^\alpha u(t) =\frac{\sin(\pi\alpha)}{\pi} \int_0^\infty \lambda^{\alpha-1}\phi(t,\lambda)\,d\lambda , \qquad \dot\phi(t,\lambda)+\lambda\phi(t,\lambda)=\dot u(t). \]

Storage becomes \(O(m)\) per fractional term instead of growing with the number of time steps. The methods below differ only in how that improper integral is discretized.

Representation

Quadrature

Status

Source

BirkSong

Gauss-Jacobi after a squared Cayley map

Default

Birk and Song (2010)

Diethelm

Gauss-Jacobi after a Cayley map

Supported alternative

Diethelm (2008)

Diethelm2022

Truncated log-rate integral, trapezoidal/Simpson/Gauss-Legendre

Comparison only

Diethelm (2022), (2023)

YuanAgrawal

Original Gauss-Laguerre rule

Comparison only

Yuan and Agrawal (2002)

Prefer BirkSong or Diethelm. See use the defaults.

Refining a representation

The mode count and rate_scale are quadrature parameters of the memory integral. They are independent of the time grid. Halving dt does not improve a badly resolved spectrum, and adding modes does not fix a coarse timestep. Refine one at a time, as in Separating error sources.

Equal mode counts across representations do not imply equal accuracy. Comparisons are only meaningful against a shared analytic or high-accuracy reference. python -m benchmarks.diffusive_representations produces exactly that comparison and preserves its numerical results.