Python SciPy:使用SciPy.optimize.minimize时出现类型错误

Python SciPy:使用SciPy.optimize.minimize时出现类型错误,python,numpy,scipy,Python,Numpy,Scipy,在尝试使用scipy.optimize.minimize最小化函数时,我遇到了一个模糊的错误。我得到的错误是 Traceback (most recent call last): File "general_fd.py", line 103, in <module>: a_tmp[index] = minimize(iF.hamiltonian,0,(x,u_last,m_tmp,dt,dx,k*dt,index),tol=1e-3) TypeError: float()

在尝试使用scipy.optimize.minimize最小化函数时,我遇到了一个模糊的错误。我得到的错误是

Traceback (most recent call last):
 File "general_fd.py", line 103, in <module>:
  a_tmp[index] = minimize(iF.hamiltonian,0,(x,u_last,m_tmp,dt,dx,k*dt,index),tol=1e-3)
   TypeError: float() argument must be a string or number

上面的代码非常难看,因为我对其进行了一些修改,以尝试找到错误;我道歉。我发现minimize函数在哈密顿量中的return语句上抛出错误消息之前,会运行一些哈密顿量的试验值。我在其他类似的函数上使用过最小化函数,但没有出现这种错误,老实说,我很困惑。任何帮助都将不胜感激。

请始终在问题中显示完整的回溯信息。对此,我已将其输入。
def hamiltonian(alphas,x_array,u_array,m_array,dt,dx,time,index):
    sigma2 = Sigma_local(time,x_array[index],alphas,m_array[index])**2
    movement = f_global(time,x_array[index],alphas)
    L_var = L_global(time,x_array[index],alphas,m_array[index])
    dx2 = dx**2
    if index==0:
        sigma2R = Sigma_local(time,x_array[index+1],alphas,m_array[index])**2
        tmp = u_array[0]*(abs(movement)/dx - sigma2/dx2) + u_array[1]*(sigma2R/dx2 - abs(movement)/dx) + L_var
    elif index==x_array.size-1:
        sigma2L = Sigma_local(time,x_array[index-1],alphas,m_array[index])**2
        tmp = u_array[-1]*(abs(movement)/dx - sigma2/dx2) + u_array[-2]*(sigma2L/dx2 - abs(movement)/dx) + L_var
    else:
        sigma2L = Sigma_local(time,x_array[index-1],alphas,m_array[index])**2
        sigma2R = Sigma_local(time,x_array[index+1],alphas,m_array[index])**2
        tmp = u_array[index]*(abs(movement)/dx - sigma2/dx2) + u_array[index+1]*(sigma2R/(2*dx2) + min(movement,0)/dx) + u_array[index-1]*(sigma2L/(2*dx2) - max(movement,0)/dx) + L_var
    return tmp[0]

def Sigma_local(time,x,a,m):
    return 0*x
def f_global(time,x_array,a_array):
    return 0.1*a_array*x_array
def L_global(time,x_array,a_array,m_array): #general cost
    return a_array + np.sqrt(x_array) + a_array**2