function [output,deriv] = libreria_funzioni_newton(z,flag)
% Funzione che contiene una libreria di funzioni matematiche
% Input:  vettore di valori x; etichetta che identifica la funzione
% Output: vettore di valori corrispondenti a f(x)


if flag==1
    output=z.^3-5 ; 
    deriv=3*z.^2 ;
elseif flag==2
    output=z-cos(z) ;
    deriv=1+sin(z) ;
elseif flag==3
    j=find(z==0) ;  %% funzione find
    % costruisco il vettore znew togliendo
    % il valore 0 dal vettore z
    znew=[z(1:j-1) z(j+1:end)];
    if j 
%       disp('funzione non definita nell''intervallo dato')
        output=1-5./znew;
        output=[output zeros(1,1)] ;  %per il plot iniziale
    else
        output=1-5./z;
    end 
    deriv=5./z.^2 ;
elseif flag==4
    output=z.^3+4*z.^2-10 ;
    deriv=3*z.^2+8*z ;
else
    disp('Valore del flag non definito ')
    output=0 ;
    deriv=0 ;
end
if length(z)>1
    close
    figure
    plot(z,output)
    hold on
    plot(z,deriv,'r-.','LineWidth',3)
    grid
end
