Skip to content

Commit 7fdeed7

Browse files
Update matrixfactorizations.mac
Fix "diagonalize". It was not correctly orthogonalising the eigenspaces if the given matrix was symmetric as described.
1 parent c16b364 commit 7fdeed7

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

stack/maxima/contrib/matrixfactorizations.mac

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ get_Jordan_form(M):= block([jordan_info,J,P],
6969
* @param[matrix] M a diagonalizable matrix
7070
* @return[list] A list of two matrices: [P, D] such that D is diagonal and M = P . D . P^^-1. Returns empty list if M is not diagonalizable
7171
*/
72-
diagonalize(M):= block([P,D],
72+
ddiagonalize(M):= block([P,D],
7373
if not(squarep(M)) then return([]),
7474
[P, D]: get_Jordan_form(M),
75-
if ev(zeromatrixp(M - transpose(M)),simp) then P:ev(transpose(apply('matrix, map(lambda([ex], ex/sqrt(ex.ex)), args(transpose(P))))), simp),
75+
if ev(zeromatrixp(M - transpose(M)),simp) then P:ev(transpose(apply('matrix, map(lambda([ex], ex/sqrt(ex.ex)), gramschmidt(args(transpose(P)))))), simp),
7676
if diagp(D) then return([P,D]) else return([])
7777
);
7878

0 commit comments

Comments
 (0)