This commit is contained in:
Cory Balaton 2023-09-20 20:03:00 +02:00
parent 5eb23c1985
commit 47f332a66c
No known key found for this signature in database
GPG Key ID: 3E5FCEBFD80F432B

View File

@ -77,18 +77,19 @@ void jacobi_eigensolver(const arma::mat& A,
} while (max_offdiag >= eps && ++iterations < maxiter); } while (max_offdiag >= eps && ++iterations < maxiter);
// Get the diagonal of A
arma::vec res = arma::diagvec(A_m); arma::vec res = arma::diagvec(A_m);
// Get the indeces of res in sorted order
arma::uvec sorted_indeces = arma::sort_index(res); arma::uvec sorted_indeces = arma::sort_index(res);
eigenvalues.resize(res.n_elem); eigenvalues.resize(res.n_elem);
eigenvectors.resize(res.n_elem, res.n_elem); eigenvectors.resize(res.n_elem, res.n_elem);
// The diagonal elements of A_m are the eigenvalues
// Set the eigenvalues and their corresponding vectors in order
for (int i=0; i < res.n_elem; i++) { for (int i=0; i < res.n_elem; i++) {
eigenvalues[i] = res[sorted_indeces[i]]; eigenvalues[i] = res[sorted_indeces[i]];
eigenvectors.insert_cols(i, R.col(sorted_indeces[i])); eigenvectors.insert_cols(i, R.col(sorted_indeces[i]));
} }
converged = max_offdiag < eps; converged = max_offdiag < eps;
A_m.print();
R.print();
} }