Fix Duplicate Eigenvalues in random_diagonalizable_matrix#42170
Open
cxzhong wants to merge 1 commit into
Open
Conversation
|
Documentation preview for this PR (built with commit 3d87a02; changes) is ready! 🎉 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
random_diagonalizable_matrixaccepted parallel lists of eigenvalues andeigenspace dimensions. When the eigenvalue list contained duplicates, the
algorithm treated each occurrence as a separate eigenspace.
For example:
was handled as three eigenspaces, even though the two entries for eigenvalue
4should describe one eigenspace of dimension4.This caused the doctest failure under the specified random seed because the
randomly generated eigenvalues included a duplicate. The shifted matrix
B - 4*Icould then have a reduced row echelon form with non-integral rationalentries, violating the documented teaching-oriented property of the constructor.
Fix
The algorithm now merges repeated eigenvalues before constructing the diagonal
matrix and eigenvector matrix.
The input:
is normalized to:
This matches the mathematical interpretation of eigenspaces for a
diagonalizable matrix.
📝 Checklist
⌛ Dependencies