quatica.decomp.tridiagonalize
quatica.decomp.tridiagonalize
Quaternion Matrix Tridiagonalization Module
This module implements tridiagonalization of HERMITIAN quaternion matrices using Householder transformations.
⚠️ IMPORTANT: This implementation is ONLY for Hermitian quaternion matrices. For non-Hermitian matrices, consider using the adjoint matrix approach.
Main functions: - tridiagonalize: Convert Hermitian quaternion matrix to tridiagonal form - householder_matrix: Compute Householder transformation matrix - householder_vector: Compute Householder vector and zeta value - internal_tridiagonalizer: Recursive tridiagonalization algorithm
Algorithm: Householder Transformations - Uses Householder transformations to eliminate subdiagonal elements - Converts Hermitian matrix A to tridiagonal form B: P * A * P^H = B - B is real tridiagonal with same eigenvalues as A - P is unitary transformation matrix
Limitations: - Only works for Hermitian quaternion matrices - For non-Hermitian matrices, use adjoint matrix approach
References: - MATLAB QTFM (Quaternion Toolbox for MATLAB) implementation: http://qtfm.sourceforge.net/ by Stephen J. Sangwine & Nicolas Le Bihan
check_tridiagonal(B)
Verify tridiagonalization results and convert to exactly tridiagonal form.
Parameters:
B : quaternion matrix Result from tridiagonalization
Returns:
B_clean : quaternion matrix Cleaned tridiagonal matrix
householder_matrix(a, v)
Compute Householder matrix that will zero all elements of a except those corresponding to non-zero elements of v.
Parameters:
a : quaternion array Vector to reflect v : numpy array (real) Target vector (must be real)
Returns:
h : quaternion matrix Householder transformation matrix
householder_vector(a, v)
Calculate a Householder vector u with norm sqrt(2) and value zeta.
Parameters:
a : quaternion array Vector to reflect v : numpy array (real) Target vector (must be real)
Returns:
tuple : (u, zeta) u : quaternion array (Householder vector) zeta : quaternion (scalar value)
internal_tridiagonalizer(A)
Internal recursive tridiagonalization algorithm.
Parameters:
A : quaternion matrix Hermitian matrix to tridiagonalize
Returns:
tuple : (P, B) P : quaternion matrix (unitary transformation) B : quaternion matrix (tridiagonal result)
tridiagonalize(A)
Tridiagonalize Hermitian matrix A, such that P * A * P^H = B and P^H * B * P = A. B is real, P is unitary, and B has the same eigenvalues as A.
Parameters:
A : quaternion matrix Hermitian matrix to tridiagonalize
Returns:
tuple : (P, B) P : quaternion matrix (unitary transformation matrix) B : quaternion matrix (tridiagonal result)