Skip to content

quatica.decomp.eigen

quatica.decomp.eigen

Quaternion Matrix Eigendecomposition Module

This module provides eigenvalue decomposition algorithms for HERMITIAN quaternion matrices.

⚠️ IMPORTANT: This implementation is ONLY for Hermitian quaternion matrices. For non-Hermitian matrices, consider using the adjoint matrix approach.

Main functions: - quaternion_eigendecomposition: Eigendecomposition for Hermitian quaternion matrices - quaternion_eigenvalues: Extract eigenvalues only (Hermitian matrices only) - quaternion_eigenvectors: Extract eigenvectors only (Hermitian matrices only)

Algorithm: Tridiagonalization + Standard Eigendecomposition - Tridiagonalize Hermitian matrix A: P * A * P^H = B - Compute eigendecomposition of tridiagonal matrix B using numpy.linalg.eig - Transform eigenvectors back: V = P^H * V_B

Limitations: - Only works for Hermitian quaternion matrices - For non-Hermitian matrices, use adjoint matrix approach - For single quaternions, use adjoint matrix approach

References: - MATLAB QTFM (Quaternion Toolbox for MATLAB) implementation: http://qtfm.sourceforge.net/ by Stephen J. Sangwine & Nicolas Le Bihan

quaternion_eigendecomposition(A_quat, verbose=False)

Compute eigendecomposition of Hermitian quaternion matrix.

Parameters:

A_quat : numpy.ndarray with dtype=quaternion Input quaternion matrix (must be square and Hermitian) verbose : bool Whether to print convergence information

Returns:

tuple : (eigenvalues, eigenvectors) eigenvalues : complex array of eigenvalues eigenvectors : quaternion matrix of eigenvectors

quaternion_eigenvalues(A_quat, verbose=False)

Compute only eigenvalues of Hermitian quaternion matrix.

Parameters:

A_quat : numpy.ndarray with dtype=quaternion Input quaternion matrix (must be square and Hermitian) verbose : bool Whether to print convergence information

Returns:

eigenvalues : complex array Eigenvalues of the matrix

quaternion_eigenvectors(A_quat, verbose=False)

Compute only eigenvectors of Hermitian quaternion matrix.

Parameters:

A_quat : numpy.ndarray with dtype=quaternion Input quaternion matrix (must be square and Hermitian) verbose : bool Whether to print convergence information

Returns:

eigenvectors : quaternion matrix Matrix of eigenvectors (columns are eigenvectors)

verify_eigendecomposition(A_quat, eigenvalues, eigenvectors, verbose=False)

Verify eigendecomposition by checking A * v = λ * v for each eigenpair.

Parameters:

A_quat : quaternion matrix eigenvalues : complex array eigenvectors : quaternion matrix (columns are eigenvectors) verbose : bool

Returns:

dict : verification results