Joint Diagonalization
JointDiag.AbstractSolverJointDiag.JRSJointDiag.ReorderedSchurSolverJointDiag.cluster_eigenvaluesJointDiag.joint_diagJointDiag.joint_reduce
JointDiag.joint_diag — Function joint_diag(M::Vector{Matrix{C}}, Solver::RandJointDiag)Compute the joint diagonalization of an array M of square matrices M[1],...,M[n] using a random combination of the matrices and its Schur factorization to get the common eigenvectors. It outputs
Xthe vectors of eigenvalues, which are the columns ofX.Ethe common eigenvectors such thatM[i]*E=E*diagm(X[i,:])
joint_diag(M::Vector{Matrix{C}}, Solver::NewtonJointDiag)Compute the joint diagonalization of an array M of square matrices M[1], ..., M[n] by applying a Newton-type iteration to minimize the off-diagonal norm of the matrices F*M[i]*E with the constraint F*E=I. It outputs
Xthe vectors of eigenvalues, which are the columns of X.Ethe common eigenvectors such thatM[i]*E=E*diagm(X[i,:])
It implements the method described in
[KMY22] Khouja, Rima, Mourrain, Bernard, and Yakoubsohn, Jean-Claude. Newton-type methods for simultaneous matrix diagonalization. Calcolo 59.4 (2022): 38. doi:10.1007/s10092-022-00484-3, https://hal.science/hal-03390265.
joint_diag(M::Vector{Matrix{C}}, Solver::JacobiJointDiag)Compute the joint diagonalization of an array M of square matrices M[1], ..., M[n] by applying a Jacobi-type iteration to minimize the off-diagonal norm of the matrices F*M[i]*E with the constraint F*E=I. It outputs
Xthe vectors of eigenvalues, which are the columns of X.Ethe common eigenvectors such thatM[i]*E=E*diagm(X[i,:])
JointDiag.joint_reduce — Function joint_reduce(H::Vector{Matrix{C}}, Solver = JRS())Compute the joint diagonal reduction of an array H of square matrices H[1],...,H[n] using a random combination of the matrices, SVD and rank reduction to obtain vectors of eigenvalues X, left factor U, right factor V such that H=[U*diagm(X[i,:])*V for i in 1:length(H)] It outputs
Xthe eigenvalue matrix, which columns are the vectors of common eigenvaluesUthe left factor, which columns are orthogonalVthe right factor, which rows are orthogonal
JointDiag.JRS — TypeDescribe the Joint Reduce Solver
- `rank` is a rank function used to determine the rank from the singular values
- `diag_solver`is the solver used for the joint diagonalizationJointDiag.ReorderedSchurSolver — Typestruct ReorderedSchurSolver{T,RNGT<:Random.AbstractRNG} <: AbstractSolver
ɛ::T
rng::RNGT
endSimultaneous diagonalization of commuting matrices using the method of [CGT97].
[CGT97] Corless, R. M.; Gianni, P. M. & Trager, B. M. A reordered Schur factorization method for zero-dimensional polynomial systems with multiple roots Proceedings of the 1997 international symposium on Symbolic and algebraic computation, 1997, 133-140
JointDiag.AbstractSolver — TypeAbstractSolverSolver for joint diagonalization of matrices.
JointDiag.cluster_eigenvalues — Functioncluster_eigenvalues(_atol, v)Clustering the values v following [CGT97].
[CGT97] Corless, R. M.; Gianni, P. M. & Trager, B. M. A reordered Schur factorization method for zero-dimensional polynomial systems with multiple roots Proceedings of the 1997 international symposium on Symbolic and algebraic computation, 1997, 133-140