while 循环中的 for 循环问题

本·阿克顿

我正在尝试编写一些代码,通过循环遍历各种起始值 (x0) 并为 x0 的每个值运行 Newton-Raphson 方法来找到多项式的根。

我的代码是这样的:

import math
import cmath
a0=input("Enter a value of a0: ")
a1=input("Enter a value of a1: ")
a2=input("Enter a value of a2: ")
a3=input("Enter a value of a3: ")
a4=input("Enter a value of a4: ")
def f(x):
    return float(a0)+float(a1)*x+float(a2)*x**2+float(a3)*x**3+float(a4)*x**4
def f1(x):
    return float(a1)+2*float(a2)*x+3*float(a3)*x**2+4*float(a4)*x**3


d=0.000005
dx=0
x0=-6
while(x<5):
 x0+=1
 print("The value of x0 is: ",x0)
 for i in range(100):
    dx=f(float(x0))/(f1(float(x0)))
    x1 = float(x0) - dx
    if (abs(float(dx))>float(d)):
     print(x1)
     x0=x1
    else:
     break
 print("Number of iterations: ",i)

不是以我想要的 x0 值(-5 到 5)开始每次迭代,while 循环总是以 x0 等于前一个根的值开始下一个循环。这是由于x0=x1在循环结束时。

我怎样才能解决这个问题?

修剪

您的问题是您试图同时将 x0 用于两个不兼容的目的:循环控制和根的当前猜测。尝试将这些目的分成不同的变量。

guess0 = -6
while(guess0 < 5):
    guess0 += 1
    x0 = guess0
    print("The value of x0 is: ",x0)
    ...

更好的是,使用for循环;它们正是为这个问题而设计的:

for guess0 in (-5, 6):
    x0 = guess0
    print("The value of x0 is: ",x0)
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章