// Esercitazione 3
//
// Argomenti:
//
//  (1) Realizzazione del metodo di bisezione (while, printf).
//  (2) Uso della realizzazione per l'approssimazione di sqrt(2).
//
function [z,v] = Bisezione(f,a,b,delta)
    //
    // Applica il metodo di bisezione alla funzione f. L'iterazione si arresta
    // quando mis I(k) <= delta (criterio di arresto di tipo assoluto).
    //
    if f(a)*f(b) > 0 then
       error('la funzione non assume valori di segno opposto agli estremi');
    else
        x = (a+b)/2;
        while ((b-a) > delta & f(x) ~= 0),
            printf('a = %3.2e , b = %3.2e ,  ampiezza = %4.3e\n', a,b,b-a);
            if sign(f(a)) ~= sign(f(x)) then b = x;
            else a = x; end;
            x = (a+b)/2;
        end;
        z = x;
        v = f(z);
    end;
endfunction
//
// Esercizio
//
// (A) Utilizzare opportunamente la procedura Bisezione per determinare
//     approssimazioni dello zero positivo della funzione fun(x) = x^2 - 2
//     con errore assoluto non superiore a:
//     (1) 10^(-4) 
//     (2) 10^(-8)
//     (3) 10^(-16)
//     In ciascun caso visualizzare l'approssimazione trovata z ed il valore di
//     fun(z) con l'istruzione printf('z = %16.15e  ,  fun(z) = %16.15e',z,v).
//
// (B) Modificare opportunamente la procedura Bisezione per realizzare una
//     procedura di intestazione
//
//          function [z,v,ampiezza] = Bisezione(f,a,b,delta)
//
//     che restituisce, oltre all'approssimazione z e v = f(z), l'ampiezza
//     dell'ultimo intervallo costruito.
//
