diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-11-27 10:16:47 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-11-27 10:16:47 -0700 |
commit | 09dd5c5eb250d866c939965d6ec8ccb919b4dc0a (patch) | |
tree | 5859d1b512ad6e8bd49c4832069283677b84f180 /src/eigen.c | |
parent | aa77d733b0cb100b63a824c60548f19526711bbc (diff) | |
download | cmath-09dd5c5eb250d866c939965d6ec8ccb919b4dc0a.tar.gz cmath-09dd5c5eb250d866c939965d6ec8ccb919b4dc0a.zip |
normalize eigenvector for numerical running purposes
Diffstat (limited to 'src/eigen.c')
-rw-r--r-- | src/eigen.c | 4 |
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 = |