以下是代码:
exp = 1.79
def calc(t):
return pow(t - 1, exp)
t
的输入值范围从0到1(例如0.04)。这段代码抛出了“数学域异常”,但我不确定原因。
我该如何解决?
以下是代码:
exp = 1.79
def calc(t):
return pow(t - 1, exp)
t
的输入值范围从0到1(例如0.04)。这段代码抛出了“数学域异常”,但我不确定原因。
我该如何解决?
t
的范围是从 0 到 1,那么 t - 1
的范围就是从 -1 到 0。负数不能被 pow
内置函数或 math.pow
函数开非整数次方。pow()
支持3个参数,用于取模,而math.pow()
则不支持。 - Ignacio Vazquez-Abramsfrom math import pow
时,那个pow是哪个? - Joan Vengeimport math
然后 math.pow
相同,只是名称现在会遮蔽命名空间中的内置 pow
。请注意,您还可以使用 x**y
进行指数运算。 - wim负数的分数指数幂不会得到实数。如果您坚持要计算和使用它们,您将需要使用cmath
,但请注意,您需要一些复数经验才能利用结果。
>>> cmath.exp(cmath.log(0.04 - 1) * 1.79)
(0.7344763337664206-0.5697182434534497j)
exp = 1.79
def calc(t):
return pow(t - 1, exp)
print calc(1.00) # t-1 is 0, there will be no error.
print calc(0.99) # t-1 is negative, will raise an error.
pow(-.6, 1.79)
,结果得到了一个复数。 - Free Monica Celliopow
函数可以实现此功能,使用**
运算符(带有适当的括号)也可以,但标准库中的math.pow
报告异常。令人困惑的是,两个pow
都自称为<built-in function pow>
,但它们并不相同。 - Karl Knechtel