summaryrefslogtreecommitdiff
path: root/src/eigen.c
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-27 10:16:47 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-27 10:16:47 -0700
commit09dd5c5eb250d866c939965d6ec8ccb919b4dc0a (patch)
tree5859d1b512ad6e8bd49c4832069283677b84f180 /src/eigen.c
parentaa77d733b0cb100b63a824c60548f19526711bbc (diff)
downloadcmath-09dd5c5eb250d866c939965d6ec8ccb919b4dc0a.tar.gz
cmath-09dd5c5eb250d866c939965d6ec8ccb919b4dc0a.zip
normalize eigenvector for numerical running purposes
Diffstat (limited to 'src/eigen.c')
-rw-r--r--src/eigen.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/eigen.c b/src/eigen.c
index 83b1127..36ccc92 100644
--- a/src/eigen.c
+++ b/src/eigen.c
@@ -31,6 +31,10 @@ double dominant_eigenvalue(Matrix_double *m, Array_double *v, double tolerance,
while (error >= tolerance && (--iter) > 0) {
Array_double *eigenvector_2 = m_dot_v(m, eigenvector_1);
+ Array_double *normalized_eigenvector_2 =
+ scale_v(eigenvector_2, 1.0 / linf_norm(eigenvector_2));
+ free_vector(eigenvector_2);
+ eigenvector_2 = normalized_eigenvector_2;
Array_double *mx = m_dot_v(m, eigenvector_2);
double new_lambda =