Является ли ваше намерение свести к минимуму за 2 переменных ('х', 'у'), или через только один (с 'у' в качестве дополнительного параметра)?
def fn1(x, y):
# x is minimization variable
# y is extra argument
return (np.sin(x*y+y)*np.exp(-1*(x**2+y**2)))**-1
def fn2(xy):
# xy is minimization variable; assumed to be 2 elements
x,y = xy
return (np.sin(x*y+y)*np.exp(-1*(x**2+y**2)))**-1
fmin
с 1 переменной; терпит неудачу
In [35]: optimize.fmin(fn1, x0=0, args=(0,))
Warning: Maximum number of function evaluations has been exceeded.
Out[35]: array([ 0.])
fmin
с 2 элемента массива (x0
и функции); возвращает 2 элемента массива.
In [38]: optimize.fmin(fn2, x0=np.array([0,0]))
Optimization terminated successfully.
Current function value: 2.227274
Iterations: 64
Function evaluations: 121
Out[38]: array([ 0.29782369, 0.62167083])