With funeval(90.,0.001, 0.0002)
, Temp
is a singular value; however, when you are calling scipy.optimize
you are passing the entire T
array to funeval
causing scipy.integrate
to crash.
A quick fix would be to do something like:
def funeval(Temp,eps,sig):
out=[]
for T in Temp:
val = scipy.integrate.quad( lambda x: np.expm1( ((4.*eps)/T)* ((sig/x)**12.-(sig/x)**6.)* (x**2.) ), 0.0, np.inf )[0]
out.append(val)
return np.array(out)
def residuals(p,y,Temp):
eps,sig = p
err = y-(funeval(Temp,eps,sig) )
return err
print funeval([90],0.001, 0.0002)
plsq = scipy.optimize.leastsq(residuals, [0.00001, 0.0002], args=(B, T))
(array([ 3.52991175e-06, 9.04143361e-02]), 1)
This, unfortunately, does not converge very well. Can you explain what you are trying to do?