所以我应该创建一个代码来计算一个输入数字的立方根,大约有两个小数位。上面的代码计算数字的平方根,最多有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)
所以很明显,我可以通过修改给定的代码并在代码中使用这个代码,来使用这个条件来计算立方根:
^{pr2}$我试着用那一行修改平方根的代码,结果得到:
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/Documents/CSCI1040U')
Enter a number: 34 Traceback (most recent call last):
File "", line 1, in runfile('C:/Users/100617828/Documents/CSCI1040U/edits.py', wdir='C:/Users/100617828/Documents/CSCI1040U')
File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 699, in runfile execfile(filename, namespace)
File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 88, in execfile exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Users/100617828/Documents/CSCI1040U/edits.py", line 11, in while abs(guess**3 - num) >= epsilon:
OverflowError: (34, 'Result too large')
这就是我的作业单告诉我要做的,但似乎我不需要使用delta = abs(guess**3 - num)/100.0
?在
您使用的方法称为Newton-Raphson approximation,您应该使用您试图求解的函数的一阶导数作为分母。因为
x^3
的一阶导数是3*x^2
,所以迭代行必须是:请参阅https://repl.it/DqZA/0上的工作代码
相关问题 更多 >
编程相关推荐