/**
* 计算方程系数 y=ax+b 中的系数
*/
public void validateCoefficients() {
/* 待估参数 */
double a;
double b;
/* 数据点 */
int pn; //数据点个数pointNum
double x[];
double y[];
/* 最小二乘法估计参数 */
double sumX = 0;
double sumY = 0;
double sumXX = 0;
double sumXY = 0;
double sumYY = 0;
for(int i = 0; i < pn; i++) {
sumX += x[i];
sumY += y[i];
sumXX += x[i] * x[i];
sumXY += x[i] * y[i];
sumYY += y[i] * y[i];
}
if (pn >= 2) {
double xBar = sumX / pn;
double yBar = sumY / pn;
a = (pn * sumXY - sumX * sumY) / (pn * sumXX - sumX
* sumX);
b = yBar - a * xBar;
} else {
a = b = Float.NaN;
}
}