Я написал следующий код на Python 3.6.0 для поиска корня куба на Редактор Spyder.Ошибка переполнения для программы Python для поиска корня куба
#Finding the cube root
#import math
y=input("Enter a number whose cube root you want to find: ")
root=float(y)
#x1=math.pow(root,1/3)
n=input("Enter the degree of accuracy: ")
epsilon=float(n)
x1=root/3.0
while True:
if x1>root and abs(root-x1)<=epsilon:
break
else:
x1=1/3*(2*x1+root/(x1**2))
print("The cube root is", x1)
Однако выход показывает "ошибки, связанные с переполнением", и что "результата является большой". Тогда я ввел следующее печати заявление:
else:
print(x1)
x1=1/3*(2*x1+root/(x1**2))
А теперь я обнаружил, что петля работает бесконечно. Операция print показала, что правильный ответ был достигнут, но цикл никогда не прерывался.
Может ли любое тело сказать мне, какую ошибку я сделал, и как я могу избавиться от него, не изменяя формулу, чтобы найти корень куба?
часть вашего заявления, если, чтобы разорвать цикл является 'x1> root'. Если 'root' был больше 1, то' x1' никогда не будет больше этого. Подумайте, следует ли, что 'root'' 8.0' ваш алгоритм должен сходиться на 'x1'' 2.0', но '2.0> 8.0' никогда не будет истинным, поэтому ваш if-statement никогда не позволит вам« разбить ». –