diff options
Diffstat (limited to 'gsl-1.9/doc/examples/fitting.c')
-rw-r--r-- | gsl-1.9/doc/examples/fitting.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gsl-1.9/doc/examples/fitting.c b/gsl-1.9/doc/examples/fitting.c new file mode 100644 index 0000000..5c36969 --- /dev/null +++ b/gsl-1.9/doc/examples/fitting.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <gsl/gsl_fit.h> + +int +main (void) +{ + int i, n = 4; + double x[4] = { 1970, 1980, 1990, 2000 }; + double y[4] = { 12, 11, 14, 13 }; + double w[4] = { 0.1, 0.2, 0.3, 0.4 }; + + double c0, c1, cov00, cov01, cov11, chisq; + + gsl_fit_wlinear (x, 1, w, 1, y, 1, n, + &c0, &c1, &cov00, &cov01, &cov11, + &chisq); + + printf ("# best fit: Y = %g + %g X\n", c0, c1); + printf ("# covariance matrix:\n"); + printf ("# [ %g, %g\n# %g, %g]\n", + cov00, cov01, cov01, cov11); + printf ("# chisq = %g\n", chisq); + + for (i = 0; i < n; i++) + printf ("data: %g %g %g\n", + x[i], y[i], 1/sqrt(w[i])); + + printf ("\n"); + + for (i = -30; i < 130; i++) + { + double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); + double yf, yf_err; + + gsl_fit_linear_est (xf, + c0, c1, + cov00, cov01, cov11, + &yf, &yf_err); + + printf ("fit: %g %g\n", xf, yf); + printf ("hi : %g %g\n", xf, yf + yf_err); + printf ("lo : %g %g\n", xf, yf - yf_err); + } + return 0; +} |