% Definizione della funzione anonima f = @(x) sin(2*x) - x ; % Intervallo di partenza ab = [ pi/4 pi/2 ] ; % Valori della funzione agli estremi dell'intervallo f_ab = f( ab ) ; % Stima del numero di iterazioni necessarie i_max = ceil( ( log( ab(2)-ab(1) ) - log(eps) ) / log(2) ) ; % Bisezione con 50 iterazioni for i = 1 : 50 xm = ( ab(1) + ab(2) ) / 2 ; % punto medio dell'intervallo f_xm = f( xm ) ; % f( punto medio ) % Caso di funzione nulla nel punto medio: uscita if f_xm == 0 ab = [ xm xm ] ; % assegnazione intervallo puntiforme f_ab = [ 0 0 ] ; % assegnazione valori nulli agli estremi break ; % uscita dal ciclo for else % Nel caso di funzione non nulla nel punto medio, bisogna decidere quale % semi-intervallo scegliere if sign( f_ab(1) ) ~= sign( f_xm ) % f cambia segno nell'intervallo sx % Teniamo il semi-intervallo sinistro ab(2) = xm ; f_ab(2) = f_xm ; else % Teniamo il semi-intervallo destro ab(1) = xm ; f_ab(1) = f_xm ; end end %fprintf('%.15f ', ab) ; %fprintf('\n') ; end % Output risultati x = ( ab(1) + ab(2) ) / 2 ; % punto medio f_x = f( x ) ; % f( punto medio ) disp( x ) ; disp( f_x ) ;