diffaaable
is a JAX differentiable version of the AAA algorithm. The derivatives are implemented as custom Jacobian Vector products in accordance to 1.
A detailed derivation of the used matrix expressions is provided in the appendix of 2.
Under the hood diffaaable
uses the AAA implementation of baryrat
.
Additionaly the following application specific extensions to the AAA algorithm are included:
- Adaptive: Adaptive refinement strategy to minimize the number of function evaluation needed to precisely locate poles within some domain
-
Vectorial (also referred to as set-valued): AAA algorithm acting on vector valued functions
$\mathbf{f}(z)$ as presented in 3. - Lorentz: Variant that enforces symmetric poles around the imaginary axis.
- Selective Refinement: Use a divide and conquer theme to capture many pole simultaneously and accurately, by limiting the number of poles per AAA solve. Suggested in 4.
to install diffaaable
run
pip install diffaaable
Please refer to the quickstart tutorial
Feel free to open issues and/or PRs.
When using this software package for scientific work please cite the associated publication 2.
+++
Footnotes
-
"A framework to compute resonances arising from multiple scattering", https://arxiv.org/abs/2409.05563 ↩ ↩2