diff options
Diffstat (limited to 'src/eigen.c')
-rw-r--r-- | src/eigen.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/eigen.c b/src/eigen.c index aaacedc..6ea26c3 100644 --- a/src/eigen.c +++ b/src/eigen.c @@ -4,6 +4,23 @@ #include <stdio.h> #include <string.h> +Matrix_double *leslie_matrix(Array_double *age_class_surivor_ratio, + Array_double *age_class_offspring) { + assert(age_class_surivor_ratio->size + 1 == age_class_offspring->size); + + Matrix_double *leslie = InitMatrixWithSize(double, age_class_offspring->size, + age_class_offspring->size, 0.0); + + free_vector(leslie->data[0]); + leslie->data[0] = age_class_offspring; + + for (size_t i = 0; i < age_class_surivor_ratio->size; i++) { + leslie->data[i + 1]->data[i] = age_class_surivor_ratio->data[i]; + } + + return leslie; +} + double dominant_eigenvalue(Matrix_double *m, Array_double *v, double tolerance, size_t max_iterations) { assert(m->rows == m->cols); |