这个Python错误'ValueError:负数不能提升到小数幂'有错误吗?

时间:2013-11-26 09:03:30

标签: python runtime-error

我遇到以下代码的问题:

- k_cav*((Tcav*b**3*Pr/((T3+T2)*v**2))**4.42)**0.091/b

它会抛出标题中显示的错误,但我已确保分数幂(0.091)的基数对所有可能的值都是正的。 Tcav = abs(T3-T2), b = 0.01, Pr = 0.72, v = 1.34*10**(-5),T3和T2是285左右的开尔文温度。

应该提到的是,计算是巨大计算的一部分,通过Newton-Raphson数值根寻找方法重复几次以确定几个温度,并且错误仅在多次迭代后发生。

任何人都可以帮我解决这个问题。我不知道如何处理它。

2 个答案:

答案 0 :(得分:1)

我建议使用try / except来捕获错误,然后打印出变量的值。这样你就可以确定看到罪魁祸首:

try:
    computedValue = - k_cav*((Tcav*b**3*Pr/((T3+T2)*v**2))**4.42)**0.091/b
except ValueError:
    print k_cav, Tcav, b, Pr, T3, T2, v
    raise
doWhateverYouDoWith(computedValue)

答案 1 :(得分:0)

Python 2考虑否定的优先级(在Python 3中解析)。 检查this,类似的问题。