nlsq.robust_decomposition module¶
Robust matrix decomposition with multi-level fallback strategies.
This module extends the SVD fallback to provide comprehensive fallback strategies for all matrix decompositions used in optimization.
- class nlsq.stability.robust_decomposition.RobustDecomposition(enable_logging=False)[source]
Bases:
objectMulti-level fallback for matrix decompositions.
This class provides robust matrix decomposition methods that automatically fall back through multiple strategies if the primary method fails. The fallback chain goes from: 1. JAX on GPU (if available) 2. JAX on CPU 3. SciPy (if available) 4. NumPy 5. Safe mode with regularization
- fallback_chain
Ordered list of (name, method) tuples for fallback strategies
- Type:
- logger
Logger for debugging decomposition issues
- Type:
- __init__(enable_logging=False)[source]
Initialize robust decomposition handler.
- Parameters:
enable_logging (bool) – Whether to enable detailed logging of fallback attempts
- svd(matrix, full_matrices=False)[source]
Compute SVD with automatic fallback.
- Parameters:
matrix (jnp.ndarray) – Matrix to decompose
full_matrices (bool) – Whether to compute full matrices
- Returns:
U (jnp.ndarray) – Left singular vectors
s (jnp.ndarray) – Singular values
Vt (jnp.ndarray) – Right singular vectors (transposed)
- Raises:
RuntimeError – If all decomposition methods fail
- Return type:
- qr(matrix, mode='reduced')[source]
Compute QR decomposition with fallback.
- Parameters:
matrix (jnp.ndarray) – Matrix to decompose
mode (str) – QR mode (‘reduced’ or ‘complete’)
- Returns:
Q (jnp.ndarray) – Orthogonal matrix
R (jnp.ndarray) – Upper triangular matrix
- Raises:
RuntimeError – If all decomposition methods fail
- Return type:
- cholesky(matrix, lower=True)[source]
Compute Cholesky decomposition with fallback and regularization.
- Parameters:
matrix (jnp.ndarray) – Positive definite matrix to decompose
lower (bool) – Whether to return lower triangular matrix
- Returns:
L – Cholesky factor (lower or upper triangular)
- Return type:
jnp.ndarray
- Raises:
RuntimeError – If all decomposition methods fail
- solve_least_squares(A, b)[source]
Solve least squares problem with robust decomposition.
- Parameters:
A (jnp.ndarray) – Coefficient matrix
b (jnp.ndarray) – Right-hand side
- Returns:
x – Solution vector
- Return type:
jnp.ndarray
Overview¶
The robust_decomposition module provides robust matrix decomposition algorithms with numerical stability enhancements.
Key Features¶
SVD with fallback strategies for ill-conditioned matrices
QR decomposition with pivoting
Cholesky decomposition with regularization
Condition number monitoring
Functions¶
Example Usage¶
from nlsq.robust_decomposition import robust_svd
import jax.numpy as jnp
# Ill-conditioned matrix
A = jnp.array([[1.0, 1.0], [1.0, 1.0 + 1e-10]])
# Robust SVD with fallback
U, s, Vt = robust_svd(A, fallback=True)
# Check condition number
condition_number = s[0] / s[-1]
print(f"Condition number: {condition_number:.2e}")
Fallback Strategies¶
The module implements multiple fallback strategies for numerical stability:
Standard decomposition (JAX native)
Regularized decomposition (add small diagonal term)
Iterative refinement (improve solution accuracy)
# Configure fallback behavior
U, s, Vt = robust_svd(A, fallback=True, regularization=1e-10, max_attempts=3)
See Also¶
nlsq.svd_fallback module - SVD fallback utilities
nlsq.stability module - Numerical stability checks
nlsq.trf module - Uses robust decomposition