1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#include <iostream>
#include <valarray>
using namespace std;
double Sigma( const valarray<double> &V )
{
return V.sum();
}
void regression( const valarray<double> X, const valarray<double> Y, double &m, double &c )
{
int N = X.size();
double Sx = Sigma( X ), Sy = Sigma( Y );
m = ( N * Sigma( X * Y ) - Sx * Sy ) / ( N * Sigma( X * X ) - Sx * Sx ); // slope
c = ( Sy - m * Sx ) / N; // intercept
}
int main()
{
valarray<double> X = { 2, 4, 6, 8, 10 };
valarray<double> Y = { 17, 27, 37, 47, 57 };
double m, c;
regression( X, Y, m, c );
cout << "y = " << m << "x + " << c << '\n';
}
|