lilypond-0.1.27
[lilypond.git] / lily / leastsquares.cc
blobab718a97f76bca922a7deed174a2836cbdb00469
1 #include "leastsquares.hh"
2 void
3 Least_squares::OK() const
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 ());
10 assert (dx);
12 void
13 Least_squares::minimise (Real &coef, Real &offset)
15 OK();
16 Real sx = 0.0;
17 Real sy = 0.0;
18 Real sqx =0.0;
19 Real sxy = 0.0;
21 for (int i=0; i < input.size();i++)
23 Real x=input[i].x();
24 Real y = input[i].y();
25 sx += x;
26 sy += y;
27 sqx += sqr (x);
28 sxy += x*y;
30 int N = input.size();
33 coef = (N * sxy - sx*sy)/(N*sqx - sqr (sx));
34 offset = (sy - coef * sx)/N;