Skip to content

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