% Input: f, function handle della funzione f % df, function handle della derivata prima di f, f' % ddf, function handle della derivata seconda di f, f" % x, ascissa di partenza % tol, tolleranza assoluta sulla distanza tra le due ascisse finali % Output: x, zero di f, f(x)=0 function [ x , iter ] = metodo_quadratico(f, df, ddf, x, tol) Delta = Inf ; iter = 0 ; while abs( Delta ) > tol iter = iter + 1 ; % Calcolo del Delta dalla formula quadratica f0 = f(x) ; df0 = df(x) ; ddf0 = ddf(x) ; radice = sqrt( df0^2 - 2*f0*ddf0 ) ; % Selezione del segno della radice if df0 > 0 den = df0 + radice ; else den = df0 - radice ; end Delta = -2 * f0 / den ; % Verifica caso che f0 sia lo zero esatto: uscita dal ciclo while if f0 == 0 ; break ; end % Calcolo della nuova x x = x + Delta ; end end