#include<iostream>
using namespace std;
class Point {
public:
Point(float x=0,float y=0 ):x(x),y(y){}
float getX() const {
return x;
}
float getY() const{
return y;
}
private:
float x, y;
};
float lineFit(const Point Points[], int nPoints) {
float avgX = 0, avgY = 0;
float lxx = 0, lyy = 0, lxy = 0;
for (int i = 0; i < nPoints; ++i) {
avgX += Points[i].getX() / nPoints;
avgY += Points[i].getY() / nPoints;
}
for (int i = 0; i < nPoints; ++i) {
lxx+=(Points[i].getX() - avgX)*(Points[i].getX() - avgX);
lxy+=(Points[i].getX() - avgX)*(Points[i].getY() - avgY);
lyy+=(Points[i].getY() - avgY)*(Points[i].getY() - avgY);
}
cout << \"这条直线可设为y=ax+b\" << endl;
cout << \"a= \" << lxy / lxx << \" \";
cout << \"b= \" << avgY - lxy*avgX / lxx << \" \";
return static_cast<float>(lxy / sqrt(lxx*lyy));
}
int main(void) {
Point p[10] = { Point(6,10),Point(14,20),Point(26,30),Point(33,40),
Point(46,50),Point(54,60),Point(67,70),Point(75,80),
Point(84,90),Point(100,100)
};
float r = lineFit(p, 10);
cout << \"线性拟合程度\" << r << endl;
return 0;
}