使用pow时出现Python数学域错误

使用pow时出现Python数学域错误,python,exception,math,numerical-methods,Python,Exception,Math,Numerical Methods,代码如下: 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 提升到分数指数的负数不会产生实数。如果您坚持计算和使用它们,您将不得不使用,但请注意,您需要一些复数方面的经验才能使用结果 >>> cmath.

代码如下:

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

提升到分数指数的负数不会产生实数。如果您坚持计算和使用它们,您将不得不使用,但请注意,您需要一些复数方面的经验才能使用结果

>>> cmath.exp(cmath.log(0.04 - 1) * 1.79)
(0.7344763337664206-0.5697182434534497j)

这是什么版本的Python?我在Python3.2中尝试了
pow(-.6,1.79)
,得到了一个复杂的结果。pow和math.pow是相同的否?@Joan:no.
pow()
支持3个参数作为模,而
math.pow()
几乎不支持。。builtin
pow
可以接受模块的第三个参数Hanks不知道这一点。但是当我从math import pow执行
时,那是哪个pow?这与使用
import math
然后使用
math.pow
是一样的,只是名称现在将隐藏在命名空间中的内置
pow
后面。注意,也可以使用
x**y
进行求幂运算?异端
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.