每当我输入此代码时,我会在第4行获得OverflowError: math range error
。我该如何解决?
x=0
while True:
x=int(x)+1
first_root=first_root-((a*(math.pow(first_root, 3)))+(b*(math.pow(first_root, 2))+(c*first_root)+d)/(3*(a* (math.pow(first_root, 2))))+(2*(b*first_root))+c)
if x==30:
break
答案 0 :(得分:0)
简单的答案是您使用的等式没有根。你可以通过在while循环中使用print first_root
语句并看到它转换为+ -inf来看到这一点。
然而,假设你的教科书没有与你搞砸,而且方程确实有根,我几乎可以保证你在错误的地方有一个括号。以下是您的确切代码,删除了所有不需要的括号,并将first_root
替换为r
,以便于阅读。
r = r - a*pow(r, 3) + b*(pow(r, 2) + c*r + d) / 3*a*pow(r, 2) + 2*b*r + c
你需要做的是将它与你书中的等式进行比较,看看你把它搞砸了。