在下面的代码中,我认为我编写的内容将导致它在每次迭代后打印y x_1和x_0的值,但我什么也没得到。
为什么代码在运行时不打印任何内容?
G = 6.6741*10**-11
r_e = 6371000
r_m = 1737100
M_e = 5.9722*10**24
M_m = 7.3420*10**22
R = 3.8440*10**8
w = 2.6617*10**-6
def f(x):
return (G*M_e)/x**2 - (G*M_m)/(R-x)**2 - w**2 * x
x_0=2*10**8
x_1=2.2*10**8
i=1
while i<=10 and abs(x_1-x_0)<abs(x_1)*1e-15:
y=x_1-f(x_1)*(x_1-x_0)/(f(x_1)-f(x_0))
x_0=x_1
x_1=y
i+1
print (y,x_0,x_1)
答案 0 :(得分:3)
while循环的第一次迭代之前,第二个条件abs(x_1-x_0)<abs(x_1)*1e-15
是False
。这就是为什么不执行打印语句的原因。
可能您想将第二个条件设为abs(x_1-x_0)>1e-15
。
此外,您的代码也不是最小的工作示例,因为未定义常量G,M_e,M_m,R和w。