正在计算多维数据集根:溢出错误:(“结果太大”)

2024-10-02 12:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我应该创建一个代码来计算一个输入数字的立方根,大约有两个小数位。上面的代码计算数字的平方根,最多有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')

编辑enter image description here

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


Tags: 代码inpylineabsusersnumdocuments
1条回答
网友
1楼 · 发布于 2024-10-02 12:26:41

您使用的方法称为Newton-Raphson approximation,您应该使用您试图求解的函数的一阶导数作为分母。因为x^3的一阶导数是3*x^2,所以迭代行必须是:

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

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

相关问题 更多 >

    热门问题