达到公差数后如何停止代码用于函数逼近

问题描述

所以我有以下代码

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))

最后一个输出将是在公差级别内的输出。