1 #include <stdio.h>
2 #include <gsl/gsl_fit.h>
3
4 int
main(void)5 main (void)
6 {
7 int i, n = 4;
8 double x[4] = { 1970, 1980, 1990, 2000 };
9 double y[4] = { 12, 11, 14, 13 };
10 double w[4] = { 0.1, 0.2, 0.3, 0.4 };
11
12 double c0, c1, cov00, cov01, cov11, chisq;
13
14 gsl_fit_wlinear (x, 1, w, 1, y, 1, n,
15 &c0, &c1, &cov00, &cov01, &cov11,
16 &chisq);
17
18 printf ("# best fit: Y = %g + %g X\n", c0, c1);
19 printf ("# covariance matrix:\n");
20 printf ("# [ %g, %g\n# %g, %g]\n",
21 cov00, cov01, cov01, cov11);
22 printf ("# chisq = %g\n", chisq);
23
24 for (i = 0; i < n; i++)
25 printf ("data: %g %g %g\n",
26 x[i], y[i], 1/sqrt(w[i]));
27
28 printf ("\n");
29
30 for (i = -30; i < 130; i++)
31 {
32 double xf = x[0] + (i/100.0) * (x[n-1] - x[0]);
33 double yf, yf_err;
34
35 gsl_fit_linear_est (xf,
36 c0, c1,
37 cov00, cov01, cov11,
38 &yf, &yf_err);
39
40 printf ("fit: %g %g\n", xf, yf);
41 printf ("hi : %g %g\n", xf, yf + yf_err);
42 printf ("lo : %g %g\n", xf, yf - yf_err);
43 }
44 return 0;
45 }
46