python OverflowError:34,无缘无故提出

时间:2015-07-29 13:11:21

标签: scipy overflow minimize

我编写了一个python脚本来评估一个物理量,由于某种原因,python决定在没有正当理由的情况下提出def latest scope = Article.order(id: :desc) scope = scope.where(status: Article.statuses[:public_article]) if user_signed_in? render json: scope.limit(10).pluck(:id, :title) end 。这是脚本

OverflowError

非常快:我希望scipy.optimize.minimize_scalar最小化import numpy as np from math import sqrt,cos, log, pi from scipy import integrate as sciint from scipy import optimize as sciopt rt=np.inf ymin=cos(np.radians(0.5)) def func(u,y, D, rt): return (1.+u)**(-4)/u/sqrt(u*u-D**2*(1-y*y)) def lim_u(y, D, rt): return [D*sqrt(1-y*y), rt] def lim_y(D, rt): return [ymin,1] def Jfactor(D,rt,r0,rho0,tmax): ymin=cos(np.radians(tmax)) Dprime=D/r0 rtprime=rt/r0 Msun2kpc5_GeVcm5 = 4463954.894661358 cst = 4*pi*rho0**2*r0*Msun2kpc5_GeVcm5 res = sciint.nquad(func, ranges=[lim_u, lim_y], args=(Dprime,rtprime), opts=[{'epsabs':1.e-10,'epsrel':1.e-10,'limit':1000}, {'epsabs':1.e-10,'epsrel':1.e-10,'limit':1000}]) return cst*res[0] def deltaJ(rho0,J,D,rt,r0,tmax): #return J-Jfactor(D,rt,r0,1.,tmax)*10.**(rho0*2.) return long(J-Jfactor(D,rt,r0,1.,tmax)*10.**(rho0*2.)) D=104. rt=np.inf tmax=0.5 J = 10.**18 for j,r0 in enumerate(np.logspace(-1.,np.log10(5),10)): results = sciopt.minimize_scalar(deltaJ,bracket=(7.,9.),args=(J,D,rt,r0,tmax)) print r0,results.x,results.fun ,但这是(我的)错误信息的一部分

deltaJ

现在,如果 File "test2.py", line 26, in deltaJ return long(J-Jfactor(D,rt,r0,1.,tmax)*10.**(rho0*2.)) OverflowError: (34, 'Numerical result out of range') J = 10**18为~5,我希望minim_scalar能够轻松扫描Jfactor(D,rt,r0,1.,tmax)以找到~8.5。相反,我收到此错误消息。

正如你所看到的,我甚至将范围括起来并尝试使用rho0,但没有任何帮助。而是使用另一种最小化方法,例如。有界,再给出一个奇怪的结果(函数值〜-7e17)...... 有没有人有这个工作的想法?谢谢

0 个答案:

没有答案