LINUX.ORG.RU

points = ((0, 0), (1, 2), (3, -2), (4, 0))
min(points, key=lambda p: p[1])
evilface ★★
()

Если просто по точкам:

x_vals = numpy.array([ 0.32570981,  0.65674927,  0.05388209,  0.66994841,  0.92219287, 0.64634817,  0.46404125,  0.6493087 ,  0.40439763,  0.02276938])
f_vals = numpy.array([ 0.2122305 ,  0.10155667,  0.926836  ,  0.04528034,  0.70913838,  0.22110187,  0.82854778,  0.14633049,  0.33287089,  0.83797649])
minima = scipy.signal.argrelmin(f_vals)
# из minima сначала выбираем первый минимум (это первые квадратные скобки),
# потом выбираем первую ось (она же единственная для f_vals), 
# это дает индекс для выбирания конкретных значений
f_min = f_vals[minima[0][0]]
x_min = x_vals[minima[0][0]]

Если нужен минимум интерполированной по точкам функции, тогда

# задаем интерполяцию
f_interp = scipy.interpolate.interp1d(x_vals, y_vals, kind='cubic')
# находим первый минимум интерполированной функции
x_min = scipy.optimize.fmin(f_interp, x0=0.5)[0]
f_min = f_interp(x_min)

Детали алгоритмов и особенности применения смотри в документации.

lu4nik ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.