Program bisseccion;                (* Victor Manuel Iniestra Alvarez *)
                                   (* An lisis Num‚rico      Grupo E *)
VAR                                (* 30 Agosto 1993       Biseccion *)
   tole:extended;                  (* Usa la recursi¢n para calcular *)
   iteraciones:Word;               (* f(x)=0                         *)
   inicio,final:extended;

Function f(x:extended):extended;

         BEGIN
              f:=sin(x)/x
         END;

Procedure PideDatos(VAR tol,x,y:extended;VAR ite:Word);

          BEGIN
               WriteLn;
               ite:=0;
               REPEAT
                     Write('Dame el n£mero de iteraciones: ');
                     ReadLn(ite);
               UNTIL (ite>0);
               REPEAT
                     Write('Dame la tolerancia (0-1): ');
                     ReadLn(tol)
               UNTIL (tol>0)AND(tol<1);
               WriteLn('Dame un intervalo lo m s peque¤o que puedas: ');
               REPEAT
                     Write('Dame el n£mero menor: ');
                     ReadLn(x);
                     Write('Dame el n£mero mayor: ');
                     ReadLn(y);
               UNTIL x=1 THEN
               BEGIN
                    p:=(a+b)/2;
                    IF (Abs(a-b)<=tole)OR(f(p)=0) THEN
                    BEGIN
                       WriteLn;
                       WriteLn('La ra¡z es ',p:19:d)
                    END
                    ELSE
                    BEGIN
                         WriteLn(iteraciones-operaciones+1:10,a:10:d,f(a):10:d,
                                 b:10:d,f(p):10:d,p:10:d,Abs(a-b));
                         IF f(a)*f(p)<0 THEN
                            busca(a,p,operaciones-1);
                         IF f(p)*f(b)<0 THEN
                            busca(p,b,operaciones-1);
                    END
               END
               ELSE
                   WriteLn('Se me acabo la cuerda.')
          END;

BEGIN
     PideDatos(tole,inicio,final,iteraciones);
     IF f(inicio)*f(final)<0 THEN
     BEGIN
        WriteLn;
        WriteLn('Bisecci¢n:');
        WriteLn;
        WriteLn('F(x)=(sen x ) / x       x î [2,4]');
        WriteLn;
        WriteLn('F(2)= +        F(4)= - ');
        WriteLn;
        WriteLn(' iteraci¢n:           a:       F(a):      b:       F(p):      p:     |a-b|:');
        WriteLn;
        Busca(inicio,final,iteraciones)
     END
     ELSE
         WriteLn('Una de tres: Uno de los valores dados es una ra¡z (o ambos),'+
                 'existen un n£mero   par de raices en el intervalo o no existen'+
                 ' raices en el intervalo.');
     WriteLn;
     WriteLn('Ya acabe.');
     ReadLn
END.

    Source: geocities.com/v.iniestra/apuntes/ana_num

               ( geocities.com/v.iniestra/apuntes)                   ( geocities.com/v.iniestra)