繁体   English   中英

计算多维数据集根:OverflowError :(“结果太大”)

[英]Calculating cube root: OverflowError: ('Result too large')

因此,我应该创建一个代码来计算输入数字的立方根,最大近似为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 / Documents / CSCI1040U“)

输入一个数字:34回溯(最近通话最近):

文件“”,运行文件中的第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,'e​​xec '),名称空间)

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

OverflowError:(34,“结果太大”)

编辑 在此处输入图片说明

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

您使用的方法称为Newton-Raphson逼近 ,并且您应使用要求解的函数的一阶导数作为分母。 因为x^3的一阶导数是3*x^2 ,所以迭代线必须为:

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

请参阅https://repl.it/DqZA/0上的工作代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM