【发布时间】:2017-02-15 21:04:38
【问题描述】:
因此,我应该创建一个代码来计算输入数字的立方根,近似值最多为小数点后 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 行,在运行文件中('C:/Users/100617828/Documents/CSCI1040U/edits.py', wdir='C:/Users/100617828/Documents/CSCI1040U')
文件“C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 699 行,在运行文件 execfile(文件名,命名空间)中
文件“C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 88 行,在 execfile exec(compile(open(filename, 'rb').read(), filename , 'exec'), 命名空间)
文件“C:/Users/100617828/Documents/CSCI1040U/edits.py”,第 11 行,在 while abs(guess**3 - num) >= epsilon:
OverflowError: (34, '结果太大')
这是我的作业表告诉我要做的,但似乎我不需要使用delta = abs(guess**3 - num)/100.0?
【问题讨论】:
-
请edit您的问题,并包括回溯、文件名、行号等的全文。你了解如何计算立方根的数学吗?
-
你需要那个迭代近似吗?
x**(1/3)如何为您工作? -
对不起,第一次使用 stackoverflow,我包含了回溯,我明白在一个简单的等式中,您可以通过将一个数字作为 (1/3) 的指数来计算立方根。
-
为什么你认为你可以使用
delta = abs(guess**3 - num) / 100.0,而平方根的情况并非如此。 (这是牛顿迭代法) -
这只是在我的作业说明中并作为提示给出的,老实说我什至不知道代码是如何工作的。
标签: python python-3.x