summaryrefslogtreecommitdiff
path: root/gsl-1.9/doc/examples/fitting.c
diff options
context:
space:
mode:
Diffstat (limited to 'gsl-1.9/doc/examples/fitting.c')
-rw-r--r--gsl-1.9/doc/examples/fitting.c45
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;
+}