Skip to content

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)