% Input: f, function handle della funzione f % x = [ x1 x2 ], vettore delle due ascisse iniziali % tol, tolleranza assoluta sulla distanza tra le due ascisse finali % Output: z, zero di f, f(z)=0 function [ z , iter ] = metodo_secanti(f, x, tol) fx = f( x ) ; Delta = x(2) - x(1) ; iter = 0 ; while abs( Delta ) > tol iter = iter + 1 ; % Calcolo del Delta dalla formula delle secanti Delta = -fx(2) * ( x(1)-x(2) ) / ( fx(1)-fx(2) ) ; % Calcolo della nuova x e della nuova f new_x = x(2) + Delta ; new_f = f( new_x ) ; % Spostamento dei vecchi valori da posizione 2 a posizione 1 x(1) = x(2) ; fx(1) = fx(2) ; % Aggiornamento dei nuovi valori in posizione 2 x(2) = new_x ; fx(2) = new_f ; % Verifica del caso che new_x sia lo zero esatto: assegnazione ed uscita if new_f == 0 ; break ; end end % Assegnazione output z = x(2) ; end