如何处理除零的函数

时间:2014-11-28 13:58:40

标签: python numpy divide-by-zero

我正在尝试使用以下形式的python / numpy来使用一些模型:

 f(x) = 1 / (exp(x) - 1)

其中x可以是-5到+5之间的任何值。

x可以为零,在我的模拟过程中会发生这种情况,导致f(x)趋于无穷大,返回一个nan + 1jnan。

因为我希望稍后使用此计算的结果,例如对于FFT,这会产生一个主要问题,因为fft例程无法处理输入中的NAN。

有没有推荐的方法来解决这个问题? 例如把逻辑说成:如果x == 0:返回0 要么 例如如果等于零,则将x移动0.00000001%,以避免此问题。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用continue语句来避免此问题:

def f(x):
    return 1 / (exp(x) - 1)

f_values = {}
for i in range(-5,5):
    if i == 0: continue
    f_values[i] = f(i)

print f_values
>>> {1: 0.5819767068693265, 2: 0.15651764274966565, 3: 0.05239569649125595, 4: 0.01865736036377405, -2: -1.1565176427496657, -5: -1.0067836549063043, -4: -1.018657360363774, -3: -1.052395696491256, -1: -1.5819767068693265}


FFT(f_values)

这里,每当x = 0的值出现时,循环就会避免使用f(x)函数并迭代到下一个值。