计算立方根:OverflowError :('结果太大')

时间:2016-10-07 00:15:31

标签: python python-3.x

所以我应该创建一个代码来计算输入数字的立方根,最多可以计算2位小数。上面的代码计算最多2个小数位的数字的平方根:

epsilon = 0.01
guess = num/2.0
while abs(guess**2 - num) >= epsilon:
    guess = guess - abs(guess**2 - num) / (2 * guess)
print("Guess:", guess)

显然,通过修改给定的代码并在代码中使用此代码,我可以使用该条件执行多维数据集根目录:

delta = abs(guess**3 - num) / 100.0

我尝试使用该行并修改用于平方根的代码,并且我一直得到:

OverflowError: ('Result too large') 

这是我的代码到目前为止的样子:

num = float(input("Enter a number: "))
epsilon = 0.01
guess = num/2.0
while abs(guess**3 - num) >= epsilon:
    guess = abs(guess - (guess**3 - num)/100.0)
print("Guess:", guess)

当我在上面运行该代码时,会发生以下情况:

  

runfile('C:/Users/100617828/Documents/CSCI1040U/edits.py',runfile('C:/Users/100617828/Documents/CSCI1040U/edits.py',wdir ='C:/ Users / 100617828 /文档/ CSCI1040U')

     

输入一个数字:34 Traceback(最近一次呼叫最后一次):

     

文件“”,第1行,在runfile中('C:/Users/100617828/Documents/CSCI1040U/edits.py',wdir ='C:/ Users / 100617828 / Documents / CSCI1040U')

     

文件“C:\ Anaconda \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第699行,在runfile execfile(文件名,命名空间)

     

文件“C:\ Anaconda \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第88行,在execfile exec中(编译(open(filename,'rb')。read(),filename ,'exec'),命名空间)

     

文件“C:/Users/100617828/Documents/CSCI1040U/edits.py”,第11行,而abs(猜测** 3 - 数字)> = epsilon:

     

OverflowError:(34,'结果太大')

修改 enter image description here

这是我的作业单告诉我要做的,但似乎我不需要使用delta = abs(guess**3 - num)/100.0

1 个答案:

答案 0 :(得分:4)

您使用的方法称为Newton-Raphson approximation,您应该使用您尝试解决的函数的一阶导数作为分母。由于x^3的一阶导数为3*x^2,因此迭代行必须为:

guess = guess - abs(guess**3 - num) / (3 * guess**2)

请参阅https://repl.it/DqZA/0

上的工作代码