Как сделать код более универсальным

 #На данном этапе программа может найти только два корня уравнения, как можно сделать программу более универсальной, чтобы к примеру если было 5 корней на отрезке, программа сразу нашла их#
 def tangent_method(f, a, b, eps) -> float:
        roots = []
        delta = 0.1 * (b - a)
        timeout = 1000
        iter = 0
        prev_a, prev_b = None, None
    
        df = lambda x: (f(x + eps) - f(x)) / eps
    
        while len(roots) < 2:
            x0 = a + (b - a) * random.random()
            f0 = f(x0)
            prev_sign = f0 / abs(f0)
        
            while iter < timeout:
                x0 -= f0 / df(x0)
                f0 = f(x0)
                sign = f0 / abs(f0)
                iter += 1
            
                if abs(f0) < eps:
                    if len(roots) == 0 or abs(x0 - roots[-1]) > delta:
                        roots.append(x0)
                        prev_a, prev_b = a, b
                        break
                
                if sign != prev_sign:
                    prev_sign = sign
                    if prev_a is not None and prev_b is not None:
                        a, b = prev_a, prev_b
                        prev_a, prev_b = None, None
                    else:
                        a, b = b, x0
                    break
            else:
                break
        
        return tuple(roots)

Ответы (0 шт):