import numpy as np def extremum(x, y): """ Return extremum coordinates of quadratic fit """ pf = np.polyfit(x, y, 2, full=True) p = pf[0] res = pf[1][0] 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 x_fit = np.linspace(min(x), max(x), 100) y_fit = f(x_fit) return (x_ext, y_ext, x_fit, y_fit, res)