2015-01-17 7 views
1

Я пытаюсь с fmin_bfgs найти локальный минимум абсолютной функции abs(x). Начальная точка установлена ​​равной 100,0; ожидаемый ответ 0.0. Однако я получаю:Почему мой scipy.optimize.minimize не удается?

In [184]: op.fmin_bfgs(lambda x:np.abs(x),100.0) 
Warning: Desired error not necessarily achieved due to precision loss. 
     Current function value: 100.000000 
     Iterations: 0 
     Function evaluations: 64 
     Gradient evaluations: 20 
Out[184]: array([100.0]) 

Почему?

ответ

2

Методы, такие как fmin_bfgs и fmin_slsqp, требуют гладких (непрерывных производных) функций для обеспечения надежных результатов. abs (x) имеет дивертивую производную на своем минимуме. Такой метод, как симплекс Нельдера-Мида, который не требует непрерывных производных, может обеспечить лучшие результаты в этом случае.

+0

Это тоже решило мою проблему, спасибо. Я задал [следующий вопрос] (http://stackoverflow.com/q/36110998/3904031) – uhoh