【发布时间】:2017-03-14 03:38:38
【问题描述】:
我正在使用 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'。
【问题讨论】:
-
它应该是
t < t0而不是t < 0吗?因为否则t = 0不满足分段定义中的两个条件中的任何一个... -
仅供参考:您应该使用
math.exp(-(t - t0)),而不是math.pow( math.e ,-(t-t0) );见math.exp -
@Praveen,是的,实际上应该是,'t
标签: python-2.7 numpy