multishoot 0.1.0

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
exact Jacobian forward-mode dual numbers over the code that forms the residual
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

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.