quadratic function
Fits y = ax^2 + bx + c to sample data.
Returns (a, b, c) coefficients of the best fit quadratic.
Implementation
({double a, double b, double c}) quadratic(List<DataPoint> p) {
var pSum = 0.0, q = 0.0, r = 0.0, s = 0.0;
var t = 0.0, u = 0.0, v = 0.0;
for (final pt in p) {
final x = pt.x;
final y = pt.y;
final x2 = x * x;
pSum += x;
q += x2;
r += x * x2;
s += x2 * x2;
t += y;
u += x * y;
v += x2 * y;
}
final n = p.length.toDouble();
final d = n * q * s + 2 * pSum * q * r -
q * q * q - pSum * pSum * s - n * r * r;
return (
a: (n * q * v + pSum * r * t + pSum * q * u -
q * q * t - pSum * pSum * v - n * r * u) / d,
b: (n * s * u + pSum * q * v + q * r * t -
q * q * u - pSum * s * t - n * r * v) / d,
c: (q * s * t + q * r * u + pSum * r * v -
q * q * v - pSum * s * u - r * r * t) / d,
);
}