function [X,err] = bisection(f,a,b,delta,kmax)
    %% f(x) = 0 megoldása intervallumfelezéssel
    %% Input:
    %% f:       az egyenlet bal oldalán álló függvény
    %% a és b:  a gyököt tartalmazó kezdeti intervallum
    %% delta:   az|x(k) - x*| hiba felsõ korlátja
    %% kmax:    az iterációs lépések maximális száma
    %% Output:
    %% X:      az összes kiszámolt közelítõ érték
    %% err:     az x*-ot tartalmazó utolsó intervallum hosszának fele

    fa  = f(a); 
    fb  = f(b);
    if fa*fb > 0,
        error("bisection: Hibás input paraméterek - nem teljesül  f(a)f(b)<0 !")
    end
    for k = 1: kmax
        X(k) = (a + b)/2;
        fx = f(X(k)); 
        err = (b-a)/2;
        if abs(err) < delta
            break;
        elseif fx*fa > 0
            a = X(k); 
            fa = fx;
        else
            b = X(k);
        end
    end
    if k == kmax
        warning("bisection: Az eljárás nem konvergált kmax lépésben!");
    end
endfunction

