]> git.donarmstrong.com Git - lilypond.git/blob - lily/leastsquares.cc
release: 0.1.7
[lilypond.git] / lily / leastsquares.cc
1 #include "leastsquares.hh"
2 void
3 Least_squares::OK() const
4 {
5     assert( input.size() > 1 );
6     Real dx = 0.0;
7     for (int i=1; i < input.size(); i++)
8         dx += abs (input[i-1].x() - input[i].x());
9
10     assert(dx);
11 }
12 void
13 Least_squares::minimise(Real &coef, Real &offset)
14 {
15     OK();
16     Real sx = 0.0;
17     Real sy = 0.0;
18     Real sqx =0.0;
19     Real sxy = 0.0;
20
21     for (int i=0; i < input.size();i++) {
22         Real x=input[i].x();
23         Real y = input[i].y();
24         sx += x;
25         sy += y;
26         sqx += sqr(x);
27         sxy += x*y;
28     }
29     int N = input.size();
30     
31
32     coef = (N * sxy - sx*sy )/(N*sqx - sqr(sx));
33     offset = (sy - coef * sx)/N;
34         
35 }