vuoi
o PayPal
tutte le volte che vuoi
% corretti.
%
format long
fzeroSol1=fzero(funref,[2.5 3])
fzeroSol2=fzero(funref,[3.5 4])
%%
% Indicativamente, i risultati delle due chiamate a _fzero()_ sono simili a
% quelli indicati per la realizzazione del grafico.
%% 4. I metodi di Bisezione e di Newton
% Questa volta, invece, si calcola un'approssimazione dei due zeri della
% funzione nell'intervallo di interesse. Si farà riferimento ai metodi di
% _Bisezione_ per il primo e di _Newton_ per il secondo zero. L'accuratezza
% richiesta è di 6 cire decimali, pertanto _delta_ass_ sarà uguale a 1e-6.
%
% Si ricorda che il metodo di Bisezione è un metodo globale con velocità di
% convergenza lineare, mentre quello di Newton è locale a velocità
% quadratica.
%
% Il metodo di bisezione prende come parametri di input la funzione di
% riferimento, un intervallo in cui è contenuto lo zero della funzione e
% l'accuratezza richiesta. Il metodo di Newton, invece, richiede come
% parametri di input la funzione di riferimento, la funzione derivata
% prima, un punto x0 iniziale, l'accuratezza massima richiesta e un massimo
% numero di iterazioni in caso di non convergenza del metodo.
bisezioneSol=bisezione(funref,2.5,3,1e-6)
NewtonSol=Newton(funref,fprimo,3.5,1e-6,100)
%% 5. Verifica dell'accuratezza e osservazioni sul residuo
% Dalla visualizzazione dei risultati di _fzero()_ presenti nel paragrafo 3
% e da quella dei due metodi del paragrafo 4, è possibile osservare a prima
% vista come i requisiti di accuratezza siano stati soddisfatti.
% A dimostrazione di ciò, sono stati implementati due costrutti
% _if-then-else_ allo scopo di mostrare un messaggio di errore o di
% successo a seconda delle condizioni. In particolare, il corpo del _then_
% sarà eseguito nel caso in cui l'errore assoluto sia minore del delta_ass
% richiesto.
%
if (abs(fzeroSol1-bisezioneSol) < 1e-6)
disp('L''errore assoluto è minore di "1e-6" richiesto.')
else disp('L''errore assoluto è maggiore di "1e-6" richiesto. Errore.')
end
if(abs(fzeroSol2-NewtonSol) < 1e-6)
disp('L''errore assoluto è minore di "1e-6" richiesto.')
else disp('L''errore assoluto è maggiore di "1e-6" richiesto. Errore.')
end
%%
% Ciò implica, inoltre, che il metodo di Newton converge nel caso
% specifico. Dopo aver compiuto le opportune osservazioni sulla precisione
% richiesta, calcoliamo il valore del residuo nei due punti trovati nel
% paragrafo 4.
%
residuo_bisezione=abs(funref(bisezioneSol))
residuo_newton=abs(funref(NewtonSol))
%%
% Ricordando che _residuo(xk) = abs(f(xk))_, si può osservare che il residuo
% calcolato nella soluzione ottenuta con il metodo di Newton è minore di
% quello calcolato nella soluzione ottenuta con il metodo di Bisezione. Di
% conseguenza, il metodo di Newton riesce ad approssimare meglio la
% soluzione rispetto al metodo di Bisezione nel proprio caso specifico.
%% 6. Ricerca del punto di minimo e di massimo
% Tramite la function _fminbnd()_ definita in MATLAB, si vuole ricavare il
% punto di minimo e il punto di massimo della funzione di riferimento nel