Skip to content

Commit 2446452

Browse files
author
Aaron Meyer
committed
Add a more descriptive docstring for the algorithm.
1 parent 57b8faa commit 2446452

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

tensorly/utils/jointdiag.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,31 @@ def joint_matrix_diagonalization(
1818
Jointly diagonalizes n matrices, organized in tensor of dimension (k,k,n).
1919
Returns the diagonalized matrices, along with the transformation matrix [1]_ .
2020
21+
Notes
22+
-----
23+
This algorithm performs joint eigenstructure estimation for a set of
24+
non-defective matrices by computing a similarity transformation matrix
25+
``P`` that simultaneously diagonalizes the set.
26+
27+
**Algorithm Details**
28+
The method minimizes the Frobenius norm of the off-diagonal elements of the
29+
transformed matrices. Unlike methods restricted to simultaneous Schur
30+
decomposition (which use only unitary transformations), this algorithm
31+
alternates between two specific updates:
32+
33+
1. **Non-unitary Shear Transformations:** Reduces the matrices' departure
34+
from normality.
35+
2. **Unitary Rotations:** Minimizes the off-diagonal norm of the resulting
36+
matrices.
37+
38+
**Scrambling and Robustness**
39+
This approach is specifically designed to handle "scrambling" defined as
40+
significant deviation from normality. Purely unitary methods often fail to
41+
converge when input matrices are far from normal or possess repeated/close
42+
eigenvalues. By incorporating non-unitary shears, this algorithm robustly
43+
converges in these difficult scenarios and exhibits an asymptotically
44+
quadratic convergence rate.
45+
2146
Args:
2247
X (_type_): n matrices, organized in a single tensor of dimension (k, k, n).
2348
max_n_iter (int, optional): Maximum iteration number. Defaults to 50.

0 commit comments

Comments
 (0)