Implementazione in Matlab

Ecco il codice Matlab che implementa il metodo di bisezione

function [x,i,tolf,nu]=bisezione(a,b,f,tolx)
%BISEZIONE Esegue il metodo di bisezione per il calcolo della radice
%   di una funzione non lineare
%
%   [i,x,tolf,nu]=BISEZIONE(a,b,f,tolx)
%
%   I parametri della funzione sono:
%       f -> funzione di cui valutare uno zero
%       a,b -> estremi dell'intervallo in cui si ricerca lo zero di f;
%              si richiede che f(a)f(b)<0
%       tolx -> tolleranza sulla x
%
%   I valori di ritorno sono:
%       x -> la soluzione trovata
%       i -> il numero di iterazioni impiegate per ottenere la soluzione
%       tolf -> la tolleranza sulla funzione
%       nu -> il numero massimo di iterazioni necessarie per ottenere una
%             soluzione con la precisione tolx
%
%   See Also NEWTON
  nu=ceil(log2(b-a)-log2(tolx));
  fa=feval(f,a);
  fb=feval(f,b);
  if fa*fb>0
     disp('La funzione deve soddisfare f(a)f(b)<0!')
     break
  end
  for i=1:nu
      c=(a+b)/2;
      fc=feval(f,c);
      if abs(b-a)<tolx
          break
      end
      tolf=tolx*abs((fb-fa)/(b-a));
      if abs(fc)<=tolf
          break
      end
      if (fa*fc)<0
          b=c;
          fb=fc;
      else
          a=c;
          fa=fc;
      end
  end
  x=c;



Morpheus 2004-01-04