23 lines
532 B
Python
Executable File
23 lines
532 B
Python
Executable File
import numpy as np
|
|
|
|
def extremum(x, y):
|
|
"""
|
|
Return extremum coordinates of quadratic fit
|
|
"""
|
|
p = np.polyfit(x, y, 2)
|
|
f = np.poly1d(p)
|
|
if p[0] != 0:
|
|
x_ext = -p[1] / (2 * p[0])
|
|
y_ext = f(x_ext)
|
|
else:
|
|
x_ext = None
|
|
y_ext = None
|
|
yhat = f(x)
|
|
ybar = np.sum(y)/len(y)
|
|
ssreg = np.sum((yhat - ybar)**2)
|
|
sstot = np.sum((y - ybar)**2)
|
|
R2 = ssreg / sstot
|
|
x_fit = np.linspace(min(x), max(x), 100)
|
|
y_fit = f(x_fit)
|
|
return (x_ext, y_ext, x_fit, y_fit, R2)
|