diff options
Diffstat (limited to 'gsl-1.9/doc/examples/interpp.c')
-rw-r--r-- | gsl-1.9/doc/examples/interpp.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gsl-1.9/doc/examples/interpp.c b/gsl-1.9/doc/examples/interpp.c new file mode 100644 index 0000000..8ffdbcc --- /dev/null +++ b/gsl-1.9/doc/examples/interpp.c @@ -0,0 +1,40 @@ +#include <stdlib.h> +#include <stdio.h> +#include <math.h> +#include <gsl/gsl_errno.h> +#include <gsl/gsl_spline.h> + +int +main (void) +{ + int N = 4; + double x[4] = {0.00, 0.10, 0.27, 0.30}; + double y[4] = {0.15, 0.70, -0.10, 0.15}; /* Note: first = last + for periodic data */ + + gsl_interp_accel *acc = gsl_interp_accel_alloc (); + const gsl_interp_type *t = gsl_interp_cspline_periodic; + gsl_spline *spline = gsl_spline_alloc (t, N); + + int i; double xi, yi; + + printf ("#m=0,S=5\n"); + for (i = 0; i < N; i++) + { + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + gsl_spline_init (spline, x, y, N); + + for (i = 0; i <= 100; i++) + { + xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1]; + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + return 0; +} |