error de entrada / salida en scipy.optimize.fsolve

Parece que obtengo un error cuando uso el buscador de raíz en scipy. Me preguntaba si alguien podría señalar lo que estoy haciendo mal.
La función de la que estoy encontrando la raíz es solo un ejemplo fácil, y no es particularmente importante.

Si ejecuto este código con scipy 0.9.0:

import numpy as np from scipy.optimize import fsolve tmpFunc = lambda xIn: (xIn[0]-4)**2 + (xIn[1]-5)**2 + (xIn[2]-7)**3 x0 = [3,4,5] xFinal = fsolve(tmpFunc, x0 ) print xFinal 

Recibo el siguiente mensaje de error:

 Traceback (most recent call last): File "tmpStack.py", line 7, in  xFinal = fsolve(tmpFunc, x0 ) File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 115, in fsolve _check_func('fsolve', 'func', func, x0, args, n, (n,)) File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 26, in _check_func raise TypeError(msg) TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument ''. 

Bueno, parece que estaba tratando de usar esta rutina incorrectamente. Esta rutina requiere el mismo número de ecuaciones y variables que la ecuación con las tres variables que le di. Entonces, si la entrada a la función que se debe minimizar es una matriz 3D, la salida debería ser una matriz 3D. Este código funciona:

 import numpy as np from scipy.optimize import fsolve tmpFunc = lambda xIn: np.array( [(xIn[0]-4)**2 + xIn[1], (xIn[1]-5)**2 - xIn[2]) \ , (xIn[2]-7)**3 + xIn[0] ] ) x0 = [3,4,5] xFinal = fsolve(tmpFunc, x0 ) print xFinal 

Lo que representa resolver tres ecuaciones simultáneamente.