#!/usr/bin/env python3 # python - Interpreter

"""
    Nullstellen
    
    Modul in dem Funktionen für die numerische Nullstellenberechnung implementiert sind
"""


def sekantenverfahren(f, x_0, x_1, eps=1e-12, args=()):
    """ Sekantenverfahren mit Iterationsvorschrift
        x_i+1 = x_i - (x_i - x_i-1) / (f(x_i) - f(x_i-1)) * f(x_i)
        Argumente:
        f      - Funktion der Form f(x) = 0
        x0, x1 - Startwerte für die Iteration
                 (Nullstelle sollte innerhalb dieses Intervalls liegen.)
        eps    - Maximale Abweichung des ermittelten Werts f(x) von Null
        args   - eventuell von f(x) benötigte weitere Argumente (außer x)
    """
    x=x_1
    while(abs(f(x,*args))>eps):
        #print(f(x,*args))
        #print(f(x_1,*args))
        #print(f(x_0,*args))
        x=x_1-(x_1-x_0)/(f(x_1,*args)-f(x_0,*args))*f(x_1,*args)
        x_0=x_1
        x_1=x
        
    # Implementierung des Sekantenverfahrens
    return x


	



 
