分段lambda函数中的溢出错误

时间:2017-03-14 03:38:38

标签: 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)

但是,如果我发出t0=1000,我会收到溢出错误

t0 = 1000.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'。

1 个答案:

答案 0 :(得分:1)

你可以这样写:

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

请注意,我将您的0更改为0.0001,因为您的输入不满足任何条件[t <0,t&gt; = t0](因为您没有0 <0)。