我正在调用一个计算并返回一些值的函数。表达式有两部分,如下所示:
def fSMHM(x, alpha, delta, gamma) :
#cst is some constant value
val = cst + delta*((np.log10(1+np.exp(x)))**gamma)/(1+np.exp(10**(-x)))
return val
fSMHM(np.log10(Mh/m1), alpha, delta, gamma)
对于x<<如图1所示,第二项的分母变得非常大(即,术语1 + np.exp(10 **( - x))),并产生溢出。我想通过简单地返回第一个术语来处理产生溢出的情况。有没有办法做到这一点?我尝试使用try-except,例如:
def fSMHM(x, alpha, delta, gamma) :
#cst is some constant value
try:
val = cst + delta*((np.log10(1+np.exp(x)))**gamma)/(1+np.exp(10**(-x)))
except:
val = cst
return val
但这不起作用......相反,仍然会出现溢出错误。在此先感谢:)