#python #scipy
#python #scipy
Вопрос:
Я хотел бы найти локальный минимум функции f(x) = x^3 x^2 x - 2
, где x
находится между <-10; 10>
. Я использую Anaconda 3 в 64-битной версии Windows.
Мой код scipy python выдает ошибку:
from scipy import optimize
def f(x):
return (x**3) (x**2) x-2
x_min = optimize.minimize_scalar(f, bounds=[-10, 10], method='brent')
OverflowError: (34, ‘Результат слишком большой’)
Не слишком ли простая функция power to 3, чтобы сломать пакет оптимизации scipy?
Комментарии:
1. Согласно документации
minimize_scalar
, если вы хотите ограничить решение внутриbounds
, вы должны использоватьmethod = 'bounded'
. По-видимому,brent
метод не учитывает границы и прерывается, поскольку ваша функция не ограничена2. вот и все, вы можете записать это как решение @Stelios, я приму его
3. Я был бы признателен за подсказку, почему Brent не может быть применен здесь, я не смог найти ответ, почему
x^2
работает с Brent, в то время как power to 3 не будет.
Ответ №1:
При использовании локальных границ требуется изменение method
на 'bounded'
from scipy import optimize
def f(x):
return (x**3) (x**2) x-2
x_min = optimize.minimize_scalar(f, bounds=[-10, 10], method='bounded')
print(x_min)