quatica.decomp.LU
quatica.decomp.LU
Quaternion LU Decomposition Module
This module provides LU decomposition for quaternion matrices using Gaussian elimination with partial pivoting, following the MATLAB QTFM implementation.
Algorithm: Gaussian elimination with partial pivoting - Partial pivoting based on modulus of quaternion elements - In-place computation (L and U stored in the same matrix) - Handles all cases: m > n, m == n, m < n - Supports both 2-output (L, U) and 3-output (L, U, P) modes
References: - MATLAB QTFM (Quaternion Toolbox for MATLAB) implementation: http://qtfm.sourceforge.net/ by Stephen J. Sangwine & Nicolas Le Bihan - Golub, G. H., & Van Loan, C. F. (1996). Matrix Computations (3rd ed.) - Algorithm 3.2.1, section 3.2.6, modified along the lines of section 3.2.11
quaternion_lu(A, return_p=False)
LU decomposition of quaternion matrix using Gaussian elimination with partial pivoting.
Parameters:
A : numpy.ndarray with dtype=quaternion Input quaternion matrix of shape (m, n) return_p : bool, optional Whether to return permutation matrix P (default: False)
Returns:
tuple : (L, U) or (L, U, P) L : m×N quaternion matrix (lower triangular with unit diagonal) U : N×n quaternion matrix (upper triangular) P : m×m permutation matrix (only if return_p=True) where N = min(m, n)
Notes:
- Uses partial pivoting based on modulus of quaternion elements
- Handles all matrix shapes: m > n, m == n, m < n
- If return_p=False, L is permuted so that A = L * U
- If return_p=True, P * A = L * U
quaternion_modulus(A)
Compute the modulus (magnitude) of quaternion matrix elements.
Parameters:
A : numpy.ndarray with dtype=quaternion Input quaternion matrix
Returns:
numpy.ndarray : Real array of moduli
quaternion_tril(A, k=0)
Extract lower triangular part of quaternion matrix.
Parameters:
A : numpy.ndarray with dtype=quaternion Input quaternion matrix k : int, optional Diagonal offset (default: 0)
Returns:
numpy.ndarray : Lower triangular quaternion matrix
quaternion_triu(A, k=0)
Extract upper triangular part of quaternion matrix.
Parameters:
A : numpy.ndarray with dtype=quaternion Input quaternion matrix k : int, optional Diagonal offset (default: 0)
Returns:
numpy.ndarray : Upper triangular quaternion matrix
verify_lu_decomposition(A, L, U, P=None, verbose=False)
Verify LU decomposition by checking reconstruction accuracy.
Parameters:
A : numpy.ndarray with dtype=quaternion Original quaternion matrix L : numpy.ndarray with dtype=quaternion Lower triangular matrix U : numpy.ndarray with dtype=quaternion Upper triangular matrix P : numpy.ndarray with dtype=quaternion, optional Permutation matrix verbose : bool, optional Whether to print verification results
Returns:
dict : Verification results