我正在尝试编写一些代码,通过循环遍历各种起始值 (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] 删除。
我来说两句