在尝试解决优化问题时,我不断得到:
RuntimeWarning: divide by zero encountered in divide
虽然在分析上写1 / x和x ^( - 1)是一回事,但是如图所示,通过替换每个分部来重写我的函数解决了我的问题。
我很想知道计算机计算分区或取幂的不同之处。
编辑:
我正在解决涉及纳米尺度的物理问题。我得到的完整错误是:
RuntimeWarning: divide by zero encountered in divide
term = alpha / w
其中alpha是常数,w> 0是长度。我期望的w值大约为1e-9或更小,alpha大约为0.1。
然而,实际问题已经解决了。我实际上很惊讶这样一个简单的代码改变解决了所有问题,因此问题。
编辑2:
我写下来解决了这个问题:
term = alpha * w**(-1)
我知道**等于Python中的取幂。
答案 0 :(得分:2)
在python中,^运算符是XOR运算。 使用**运算符完成指数运算,这将为0 ** - 1
提供ZeroDivision错误答案 1 :(得分:1)
这是你的问题:
>>> alpha = 1
>>> w = 2
>>> term = alpha/w
>>> term
0
>>> term = alpha * w **(-1)
>>> term
0.5
>>>
>>> term = float(alpha)/w
>>> term
0.5
在第一个示例中,您正在进行整数除法,其舍入为0.在第二个示例中,您通过执行取幂隐式转换为float。第三个示例显示通过将任一值转换为float
,您可以通过除法获得正确的结果