|
function[c,fc,it,err]= bisezioni(a,b,fun,toll)
%%%METODO DELLE BISEZIONI
%%%
%%%Dati di input
%%% a,b = estremi dell'intervallo
%%% fun = funzione f
%%% toll = tolleranza sull'errore per accettare la soluzione
%%%
%%%Dati di output
%%% c = soluzione approssimata
%%% fc = valore di f in c
%%% it = iterate necessarie per approssimare c
%%% err = errore commesso nell'approssimazione
subplot(1,2,1),
fplot(fun,[a b]), hold on,
it=0;
%i valori della funzione negli estremi sono
fa = feval(fun,a);
fb = feval(fun,b);
subplot(1,2,1)
plot(a,fa,'r*',b,fb,'r*'),hold on,
%verifico se sono soddisfatte le ipotesi del teorema di esistenza degli zeri
if(fa*fb)>=0
disp('Il metodo non è applicabile o lo zero è un estremo dell''intervallo');
else
err = abs(a-b);
subplot(1,2,2),
semilogy(it,err,'r*'), hold on,
%blocco iterativo della funzione
while(it<101 & err>toll)
it = it+1;
c = (a+b)/2;
fc = feval(fun,c);
if(fa*fc)<0
b=c;
else a=c;
end
err = abs(a-b);
subplot(1,2,2),
semilogy(it,err,'g*'), hold on,
end
fa = feval(fun,a);
fb = feval(fun,b);
subplot(1,2,1),
plot(a,fa,'bo',b,fb,'bo'),
subplot(1,2,2)
semilogy(it,err,'g*'), hold on
end
subplot(1,2,1), hold off
subplot(1,2,2), hold off
Powered by AkoComment Tweaked Special Edition v.1.4.6 AkoComment © Copyright 2004 by Arthur Konze - www.mamboportal.com All right reserved |