我是 Python 的新手,所以请保持温柔。
我真的不知道我的代码有什么问题。
这里是:
import numpy as np
def epsilon(t):
epsilon = (1 - np.exp(-pow(t, 4)))
return epsilon
def r(t):
r = pow( (epsilon(t) - 16) / 4, 1/4)
return r
print(r(0))
由于 epsilon(0) = 0
,我希望(通过分析)得到 r = (-16/4)^(1/4) = (-1)^(1/4)*sqrt(2) = exp(i pi/4)*sqrt(2) = 1 + 1 i
但我得到的是:
RuntimeWarning: invalid value encountered in double_scalars
r = pow((4 * epsilon(t) - 16) / 4, 1/4)
nan
我试图找出错误。如果我打印 epsilon(0)
,我会按预期得到 0,如果我手动设置 epsilon(0)
,例如:
def r(t):
r = pow( 0 - 16) / 4, 1/4)
return r
print(r(0))
我得到 1 + 1 j
。如果我将 的 1/4 次方
移除,它会起作用,我得到 -4
import numpy as np
def epsilon(t):
epsilon = (1 - np.exp(-pow(t, 4)))
return epsilon
def r(t):
r = (epsilon(t) - 16) / 4
return r
print(r(0))
那为什么要
import numpy as np
def epsilon(t):
epsilon = (1 - np.exp(-pow(t, 4)))
return epsilon
def r(t):
r = pow( (epsilon(t) - 16) / 4, 1/4)
return r
print(r(0))
我收到这个错误?
最佳答案
问题可能是由 numpy float 引起的。 (正如 Schomes 所回答的那样)。通过转换为“普通” float 进行修复。
import numpy as np
def epsilon(t):
epsilon = (1 - np.exp(-pow(t, 4)))
return epsilon
def r(t):
epsi_boy = epsilon(t)
print(type(epsi_boy)) # numpy float
epsi_boy = float(epsi_boy) # Convert to non numpy float
r = pow( (epsi_boy - 16) / 4, 1/4)
return r
print(r(0))
关于python - Python 新手,不知道我的代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49218648/