Моего кода очень прост:Python: Минимизация функции с помощью петли
import numpy
def f(x):
return x**2 +1
f_min=10
for x in numpy.arange(-1,10,0.1):
if f(x)<f_min :
f_min=f(x)
x_min=x
else:
print (x_min)
Это дает мне правильный результат (х -> 0), но не только один раз, а много раз. Почему это и как я могу удержать его от этого?
yes, потому что ваше предложение 'else' выполняется в цикле после первой итерации для каждой итерации. Отменить его. –
как @ JimFasarakis-Hilliard сказал. Остановите печать в цикле for. На каждой итерации вы не обновляете минимум, вместо этого вы печатаете, что такое минимум. Избавьтесь от 'else: print (x_min)' – piRSquared
@ JimFasarakis-Hilliard или просто удалите 'else' и поставьте' print' на уровне 0-indent. Не нужно включать скрытые функции 'else' для цикла' for' здесь :) –