【发布时间】:2023-04-06 01:15:02
【问题描述】:
我在 Newton-Raphson 迭代的脚本中收到 'float' object is not Iterable 错误。我将迭代应用于函数f(x) = sin(x),并且 x0 = 3 进行迭代。我在停止条件上遇到错误,即 max{ |xn-2 - xn-1|, |xn-1子> - xn| } -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() 函数是否只接受迭代?我对这种行为感到困惑。
【问题讨论】:
标签: python iteration newtons-method