gpt4 book ai didi

python - “float”对象在 Newton-Raphson 迭代中不可迭代

转载 作者:行者123 更新时间:2023-12-01 03:19:13 25 4
gpt4 key购买 nike

我在 Newton-Raphson 迭代的脚本中收到 'float' object is not Iterable 错误。我将迭代应用于函数 f(x) = sin(x),并将 x0 = 3 应用于迭代。我在停止条件上收到错误,即 max{ |xn−2 − xn−1|, |xn−1 sub> - xn| } < (1/2)10-9。这是我的代码:

def NewtonRaphson2():
L = []
L.append(3)
n = 0

while(1):
tmp = L[n] - (math.sin(L[n])/math.cos(L[n]))
L.append(tmp)
n+=1
m = (max(abs(L[n-2] - L[n-1])), abs(L[n-1] - L[n]))
if m < (.5e-9):
print(n, "\n")
x = max(abs(L[n-2] - L[n-1]), abs(L[n-1] - L[n]))
print(x, "\n")
print(L[n], "\n")
break
break

确切的错误消息是

Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
NewtonRaphson2()
File "C:/Python34/nmhw3.py", line 28, in NewtonRaphson2
m = (max(abs(L[n-2] - L[n-1])), abs(L[n-1] - L[n]))
TypeError: 'float' object is not iterable

max()abs() 函数是否只接受可迭代对象?我对这种行为感到困惑。

最佳答案

这是一个简单的错字。你的括号关闭得太早了。它与 m = ... 一致。

基本上,您的代码所做的就是仅使用一个 float 调用 max 。但是,除非 x 是列表或数组,否则 max(x) 没有意义。

修改括号即可。

关于python - “float”对象在 Newton-Raphson 迭代中不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com