Python 2.7 分段lambda函数中的溢出错误

Python 2.7 分段lambda函数中的溢出错误,python-2.7,numpy,Python 2.7,Numpy,我正在用numpy为自定义ODE解算器编写一个分段函数 我想要一个指数衰减的函数,但是在某个时间t0之前,我想要函数相同为零。下面是一些示例代码,可以满足我的要求 t0 = 50.0 myF = lambda t: np.piecewise(float(t), [t<t0, t>=t0],[0, math.pow( math.e ,-(t-t0) ) ] ) print myF(0) 我假设,如果我将其分段设置为函数,那么如果条件不成立,它就不会调用表达式。然而,似乎确实如此。我

我正在用numpy为自定义ODE解算器编写一个分段函数

我想要一个指数衰减的函数,但是在某个时间
t0
之前,我想要函数相同为零。下面是一些示例代码,可以满足我的要求

t0 = 50.0
myF = lambda t:  np.piecewise(float(t), [t<t0, t>=t0],[0, math.pow( math.e ,-(t-t0) ) ] )
print myF(0)
我假设,如果我将其分段设置为函数,那么如果条件不成立,它就不会调用表达式。然而,似乎确实如此。我是否可以防止这种情况发生,并且不让溢出错误阻止代码运行


为清晰起见进行编辑:当我调用此lambda函数时,它似乎同时调用两个条件,即“0”和“math.e,-(t-t0)”,然后只返回“0”。问题是当“t0=1000”时,当“t=0”时,值溢出。我希望能够在没有溢出错误的情况下调用“t=0”。

您可以这样编写:

t0 = 1000.0;
myF = lambda t: 0.0 if t<0.0001 else math.pow( math.e ,-(t-t0) ) 
print(myF(0))
t0=1000.0;

myF=λt:0.0,如果它被认为是
t
而不是
t<0
?因为否则
t=0
不满足分段定义中的两个条件中的任何一个……仅供参考:您应该使用
math.pow(math.e,-(t-t0))
,而不是
math.exp(-(t-t0))
;请看@Praveen,是的,事实上应该是,'t抱歉造成混淆,但我的情况应该是't如果你运行我提供的答案(用t0而不是0.0001),会怎么样?我在python2和python3上都试过了,它对我很管用……我已经使用了你的代码,现在就可以了!即使是“t”
t0 = 1000.0;
myF = lambda t: 0.0 if t<0.0001 else math.pow( math.e ,-(t-t0) ) 
print(myF(0))