我正在为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'。
答案 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)。