77 lines
2.0 KiB
Markdown
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)
|