multishoot 1.2.1

Multiple-shooting boundary-value solver in double-, quad- and octo-double precision: Taylor-jet stepping between nodes, exact Jacobians by forward-mode duals, Newton over multidouble's Precision trait
Documentation

multishoot

Build Lint codecov crates.io docs.rs

Multiple shooting for boundary-value problems, in double-, quad- and octo-double precision.

A boundary-value problem asks for the solution of differential equations that meets conditions at two or more places. Multiple shooting splits the interval at nodes, integrates the equations across each piece, and lets Newton's method adjust the values at the nodes, and any unknown parameters, until every piece ends where the next one begins.

This crate is the engine of that method, generic over the equations, on the arithmetic of multidouble:

Part What it does
equations trait the problem enters as the Taylor coefficients of its right-hand side, and the series that start the solution at singular endpoints
Taylor stepping the solution carried between nodes by Taylor series, each step planned so that its truncation term stays below a tolerance
periodic direction fields that depend on a periodic variable, on collocation points, with exact derivatives in it
layout node blocks, mismatch rows, global parameters (an eigenvalue), a phase condition, pinned rows, projected rows (a field's high harmonics unmatched and held at zero elsewhere, exact in every precision)
exact Jacobian forward-mode dual numbers over the code that forms the residual
Jacobian-vector product J v by one dual pass per block, without forming the Jacobian, in every precision
mode matrix the linearization for perturbations growing as exp(λt) at a complex rate λ, and its determinant, whose winding number counts the modes
Newton in double-double, quad-double or octo-double (multidouble's Precision trait), with the residual's Taylor series in a parameter of the equations
fast path the Jacobian in f64 from lanes with f64 tangents, several columns per evaluation, dense or in staircase storage, and the mixed-precision Newton on it

Status: early. The API may change between minor versions until 1.0. It depends on multidouble from crates.io, whose Precision trait (double-, quad- and octo-double) it is written over.

Building

cargo test --release
cargo test --release --features portable
cargo clippy --all-targets --features mutate -- -D warnings

License

BSD 3-Clause, see LICENSE.