Function discrete_trajectory_adjoint
pub fn discrete_trajectory_adjoint<R>(
steps: &[&R],
checkpoints: &[DiscreteAdjointCheckpoint],
terminal_state_cotangent: &[f64],
direct_parameter_cotangent: &[f64],
residual_tolerance: f64,
properties: LinearOperatorProperties,
solver: LinearSolveRequest<'_>,
) -> Result<DiscreteTrajectoryAdjoint, Diagnostic>where
R: DiscreteStepLinearization + ?Sized,Description
Compose reverse-mode cotangents over accepted discrete step relations.
Every step must use the direct-sum Parameter layout
[previous_state, common model Parameters]. State/Parameter identity,
accepted boundary values, time continuity, checkpoint boundaries, and all
primal residuals are validated before the first transposed solve.
terminal_state_cotangent is J_y_final^T; direct_parameter_cotangent
is the trajectory objective’s direct J_p. The returned gradient never
differentiates nonlinear iterations, adaptive controllers, or checkpoint
serialization.
§Errors
Returns EQ0704 for an empty/discontinuous trajectory, incompatible
layouts, invalid checkpoint boundary, unaccepted primal step, or objective
shape/value mismatch; solver diagnostics remain unchanged.