Files
ordinary-diffeq/roadmap/features/19-jacobian-computation.md
T

77 lines
2.0 KiB
Markdown

# Feature: Jacobian Computation
## Overview
Finite difference and auto-diff Jacobians
## Note - 2026-09-29
Forward-mode AD arrived by a different route than this entry assumes. On the
`feature/generic-scalar` branch, state, time and step size became generic over a
`Scalar` trait, implemented by `f64` and by `num-dual`'s dual numbers. That gives
differentiation *through the whole solve* - d y(t_f)/d y0, d/d t0, d/d t_end and
d/d params, so a full 6x6 state transition matrix comes out of one propagation.
This entry is framed around the narrower case, df/dy at a point for implicit
methods, which now falls out of the same machinery.
What that leaves:
- `rosenbrock::compute_jacobian` is still forward finite differences
(eps = sqrt(machine_eps) * max(|y[j]|, 1), D+1 evaluations, ~8 digits).
Pointing it at a dual evaluation is now a small change, not a large one.
- Sparse Jacobian support: untouched.
- The **Effort: Large** estimate below predates the genericisation and wants
revisiting.
Deferred deliberately, as scope creep against the genericisation: how a Jacobian
should be obtained for whichever algorithms need one. Whether the integrator
requests it through a trait, whether AD or finite differences is a per-problem
choice, and how either interacts with the `JacobianUpdateStrategy` reuse policy
already in `rosenbrock.rs`. To be thought through properly on its own.
## Why This Feature Matters
(To be detailed)
## Dependencies
(To be detailed)
## Implementation Approach
(To be detailed)
## Implementation Tasks
- [ ] Core implementation
- [ ] Integration with existing code
- [ ] Testing
- [ ] Documentation
- [ ] Benchmarking
## Testing Requirements
(To be detailed)
## References
1. Julia implementation: OrdinaryDiffEq.jl
2. (Additional references to be added)
## Complexity Estimate
**Effort**: Large
**Risk**: (To be assessed)
## Success Criteria
- [ ] Implementation complete
- [ ] Tests pass
- [ ] Documentation written
- [ ] Performance acceptable
## Future Enhancements
(To be identified)