Files
sf-op/script/test/QuadFit.py
root 8d9794c431
2017-11-27 08:31:31 +01:00

28 lines
760 B
Python

from mathutils import PolynomialFunction
def quadfit(xdata, ydata):
"""
Quadratic fit
"""
p = (a0, a1, a2) = fit_polynomial(ydata, xdata, 2)
f = PolynomialFunction(p)
if a1 != 0:
x_ext = -a1 / (2 * a0)
y_ext = f.value(x_ext)
else:
x_ext = None
y_ext = None
yhat = [f.value(val) for val in xdata]
ybar = sum(ydata)/len(ydata)
ssreg = sum([(val - ybar)**2 for val in yhat])
sstot = sum([(val - ybar)**2 for val in ydata])
R2 = ssreg / sstot
x1 = min(xdata)
x2 = max(xdata)
x_fit = frange(x1, x2, (x2-x1)/100, True)
y_fit = [f.value(val) for val in x_fit]
return (p, x_ext, y_ext, R2, x_fit, y_fit)
xx=(1.0,2.0,3.0,4.0)
yy=(1.1,3.9,8.5,15.8)
quadfit(xx, yy)