]> git.donarmstrong.com Git - lilypond.git/blob - lily/leastsquares.cc
ab718a97f76bca922a7deed174a2836cbdb00469
[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     {
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;
29     }
30   int N = input.size();
31   
32
33   coef = (N * sxy - sx*sy)/(N*sqx - sqr (sx));
34   offset = (sy - coef * sx)/N;
35         
36 }