diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-11-27 13:27:49 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-11-27 13:27:49 -0700 |
commit | 2a35f68ac4ba682fcacf9d003efda6fc4c16209c (patch) | |
tree | e79f095598fb20b3b584e2f3816b2c4716f6717d /test/eigen.t.c | |
parent | f50a1c5a4db97a8fad7c955c7733f1f82697e07e (diff) | |
download | cmath-2a35f68ac4ba682fcacf9d003efda6fc4c16209c.tar.gz cmath-2a35f68ac4ba682fcacf9d003efda6fc4c16209c.zip |
add least dominant eigenvalue
Diffstat (limited to 'test/eigen.t.c')
-rw-r--r-- | test/eigen.t.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/eigen.t.c b/test/eigen.t.c index f271bf2..0ad0bd0 100644 --- a/test/eigen.t.c +++ b/test/eigen.t.c @@ -43,6 +43,30 @@ UTEST(eigen, leslie_matrix_dominant_eigenvalue) { free_matrix(leslie); } +UTEST(eigen, least_dominant_eigenvalue) { + + Matrix_double *m = InitMatrixWithSize(double, 3, 3, 0.0); + m->data[0]->data[0] = 2.0; + m->data[0]->data[1] = 2.0; + m->data[0]->data[2] = 4.0; + m->data[1]->data[0] = 1.0; + m->data[1]->data[1] = 4.0; + m->data[1]->data[2] = 7.0; + m->data[2]->data[1] = 2.0; + m->data[2]->data[2] = 6.0; + + double expected_least_dominant_eigenvalue = 0.87689; // 5 - sqrt(17) + double tolerance = 0.0001; + uint64_t max_iterations = 64; + + Array_double *v_guess = InitArrayWithSize(double, 3, 2.0); + double approx_least_dominant_eigenvalue = + least_dominant_eigenvalue(m, v_guess, tolerance, max_iterations); + + EXPECT_NEAR(expected_least_dominant_eigenvalue, + approx_least_dominant_eigenvalue, tolerance); +} + UTEST(eigen, dominant_eigenvalue) { Matrix_double *m = InitMatrixWithSize(double, 2, 2, 0.0); m->data[0]->data[0] = 2.0; |