I hope I can make my question clear.
I use scipy.optimize.minimizeto find maximum likelihood estimates for some experimental data. The data is 2d (NxN), so in my notes, the log-likelihood function (the function I need to maximize) looks like this:

So
is a 2d array, which depends on my specific model, and n ijis the measured 2d data. In the code, I wrote the same function as follows:
def logll(params, *args):
A, x0, y0, bkg = params
pico, F = args
x, y = np.arange(pico.shape[0]), np.arange(pico.shape[1])
erfi = erf((x + 1 - x0) / F) - erf((x - x0) / F)
erfj = erf((y + 1 - y0) / F) - erf((y - y0) / F)
lambda_p = A * F**2 * np.pi * erfi[:, np.newaxis] * erfj / 4 + bkg
return - np.sum(pico * np.log(lambda_p) - lambda_p)
, 2d, erfi * erfj bkg NxN. , , , , , erfi erfj 1d- erfi[:, np.newaxis] * erfj .
, ,
minimize(logll, x0=[A, x0, y0, bkg], args=(peak, F), method='Powell')
, , , Newton-CG, . , , logll 4 . , sympy. [:, np.newaxis] , , .
ll_jac - 1d-, logll . A, x0, y0, bkg, x y sympy, :
logll.diff(A)
logll.diff(x0)
logll.diff(y0)
logll.diff(bkg)
hessian ll_hess - 2d-, logll , ,
logll.diff(A, A)
logll.diff(A, x0)
.. , - , [:, np.newaxis] logll sympy.
, , jacobian hessian ,
minimize(logll, x0=[A, x0, y0, bkg], args=(peak, F),
method='Newton-CG', jac=ll_jac, hess=ll_hess)
:
File "/usr/lib/python2.7/site-packages/scipy/optimize/_minimize.py", line 351, in minimize
**options)
File "/usr/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 1365, in _minimize_newtoncg
update = alphak * pk
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
, , , erfi erfj 1d-, bkg - 2d-.
, : , numpy sympy ? erfi * erfj 2d-, ?