Jacobian Computation¶
Jacobian matrix computation utilities for numerical integration and variational equations.
Overview¶
Brahe provides both analytical and numerical Jacobian computation through a unified interface. Jacobian matrices describe how a function's output changes with respect to its inputs, which is essential for orbit determination, uncertainty propagation, and trajectory optimization.
DifferenceMethod ¶
Finite difference method for numerical Jacobian approximation.
Different methods trade off accuracy vs computational cost: - Forward: O(h) error, dimension+1 function evaluations - Central: O(h²) error, 2dimension function evaluations (more accurate) - Backward*: O(h) error, dimension+1 function evaluations
Example
Initialize instance.
BACKWARD class-attribute ¶
BACKWARD: Any = DifferenceMethod.Backward
Finite difference method for numerical Jacobian approximation.
Different methods trade off accuracy vs computational cost: - Forward: O(h) error, dimension+1 function evaluations - Central: O(h²) error, 2dimension function evaluations (more accurate) - Backward*: O(h) error, dimension+1 function evaluations
CENTRAL class-attribute ¶
CENTRAL: Any = DifferenceMethod.Central
Finite difference method for numerical Jacobian approximation.
Different methods trade off accuracy vs computational cost: - Forward: O(h) error, dimension+1 function evaluations - Central: O(h²) error, 2dimension function evaluations (more accurate) - Backward*: O(h) error, dimension+1 function evaluations
FORWARD class-attribute ¶
FORWARD: Any = DifferenceMethod.Forward
Finite difference method for numerical Jacobian approximation.
Different methods trade off accuracy vs computational cost: - Forward: O(h) error, dimension+1 function evaluations - Central: O(h²) error, 2dimension function evaluations (more accurate) - Backward*: O(h) error, dimension+1 function evaluations
PerturbationStrategy ¶
Strategy for computing perturbation sizes in finite differences.
The choice of perturbation size balances truncation error (wants large h) vs roundoff error (wants small h). Different strategies suit different problems.
Example
Initialize instance.
adaptive builtin ¶
adaptive(scale_factor: float = 1.0, min_value: float = 1.0) -> PerturbationStrategy
Create an adaptive perturbation strategy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scale_factor | float | Multiplier on sqrt(ε), typically 1.0 | 1.0 |
min_value | float | Minimum reference value (prevents tiny perturbations near zero) | 1.0 |
Returns:
| Name | Type | Description |
|---|---|---|
PerturbationStrategy | PerturbationStrategy | Adaptive perturbation strategy |
fixed builtin ¶
fixed(offset: float) -> PerturbationStrategy
Create a fixed absolute perturbation strategy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
offset | float | Fixed perturbation for all state components | required |
Returns:
| Name | Type | Description |
|---|---|---|
PerturbationStrategy | PerturbationStrategy | Fixed perturbation strategy |
percentage builtin ¶
percentage(percentage: float) -> PerturbationStrategy
Create a percentage-based perturbation strategy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
percentage | float | Percentage of state value to use as perturbation | required |
Returns:
| Name | Type | Description |
|---|---|---|
PerturbationStrategy | PerturbationStrategy | Percentage perturbation strategy |
NumericalJacobian ¶
NumericalJacobian(dynamics_fn: Any)
Numerical Jacobian provider for dynamic-sized systems using finite differences.
Computes the Jacobian numerically by perturbing the state and evaluating the dynamics. Supports forward, central, and backward finite difference methods with various perturbation strategies.
Example
Initialize instance.
backward builtin ¶
backward(dynamics_fn: callable) -> NumericalJacobian
Create with backward finite differences.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dynamics_fn | callable | Function with signature (t: float, state: ndarray) -> ndarray | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Jacobian provider using backward differences |
central builtin ¶
central(dynamics_fn: callable) -> NumericalJacobian
Create with central finite differences.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dynamics_fn | callable | Function with signature (t: float, state: ndarray) -> ndarray | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Jacobian provider using central differences |
compute method descriptor ¶
forward builtin ¶
forward(dynamics_fn: callable) -> NumericalJacobian
Create with forward finite differences.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dynamics_fn | callable | Function with signature (t: float, state: ndarray) -> ndarray | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Jacobian provider using forward differences |
with_adaptive method descriptor ¶
with_adaptive(scale_factor: float, min_value: float) -> NumericalJacobian
Set adaptive perturbation with custom parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scale_factor | float | Multiplier on sqrt(ε), typically 1.0 | required |
min_value | float | Minimum reference value | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Self for method chaining |
with_fixed_offset method descriptor ¶
with_fixed_offset(offset: float) -> NumericalJacobian
Set fixed absolute perturbation for all components.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
offset | float | Fixed perturbation size | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Self for method chaining |
with_method method descriptor ¶
with_method(method: DifferenceMethod) -> NumericalJacobian
Set the difference method.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
method | DifferenceMethod | Finite difference method to use | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Self for method chaining |
with_percentage method descriptor ¶
with_percentage(percentage: float) -> NumericalJacobian
Set percentage-based perturbation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
percentage | float | Percentage of state value (e.g., 1e-6 for 0.0001%) | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalJacobian | NumericalJacobian | Self for method chaining |
AnalyticJacobian ¶
AnalyticJacobian(jacobian_fn: Any)
Analytical Jacobian provider for dynamic-sized systems.
Uses a user-provided function that directly computes the analytical Jacobian. This is the most accurate and efficient method when the analytical Jacobian is known.
Example
Initialize instance.
See Also¶
- Jacobian Computation Guide - Detailed usage examples and theory
- Mathematics Module - Mathematics module overview