问题描述
import numpy as np
def g_of_x(x):
return ((5/x**2)+3)
initial_guess = 3
for i in range(15):
solution = g_of_x(initial_guess)
initial_guess = solution
iterations = i + 1
print('iteration: %d,solution: %f' % (iterations,solution))
代码在间隔[3,5]上将函数的值近似为其实际解。如果我需要实现10 ^^(-5)的公差,那么当我的代码达到该公差水平时,我的代码将停止,该如何实现?
在此代码中,第10次迭代的值是正确的答案,我希望我的代码在达到该值时停止运行。
解决方法
这是我使用@ Dexter0411建议找到的解决方案:
initial_guess = 3
previous_solution = 3
iterations = 0
while True:
solution = g_of_x(previous_solution)
if math.isclose(previous_solution,solution,abs_tol=math.pow(10,-5)) == True:
previous_solution = solution
iterations += 1
print('iteration: %d,solution: %.10f' % (iterations,previous_solution))
break
else:
previous_solution = solution
iterations += 1
print('iteration: %d,previous_solution))
最后一个输出将是在公差级别内的输出。