Program PuntoFijo;                 (* Victor Manuel Iniestra Alvarez *)
                                   (* An lisis Num‚rico      Grupo E *)
VAR                                (* 6 Septiembre 1993   Punto fijo *)
   tole:extended;                  (* Usa la recursi¢n para calcular *)
   iteraciones:Word;               (* g(x)=x                         *)
   int1:extended;

Function g(x:extended):extended;

         BEGIN
              g:=exp(-x*Ln(2))
         END;

Procedure PideDatos(VAR tol,x: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: ');
                     ReadLn(tol);
               UNTIL (tol>0)AND(tol<1);
               WriteLn('Dame un valor lo m s cercano al punto fijo que puedas: ');
               ReadLn(x);
               WriteLn;
          END;

Procedure Busca(p0:extended;operaciones:Word);

          CONST
               d=4;

          VAR
             p:extended;

          BEGIN
               IF operaciones>=1 THEN
               BEGIN
                    p:=g(p0);
                    WriteLn(iteraciones-operaciones+1:10,'           ',p0:10:d,'           ',
                            p:5:d,'           ',ABS((p-p0)/p):10);
                    IF (p=g(p))OR(ABS((p-p0)/p)<=tole) THEN
                    BEGIN
                       WriteLn;
                       WriteLn('El punto fijo es ',p:19:d)
                    END
                    ELSE
                        Busca(p,operaciones-1)
               END
               ELSE
                   WriteLn('Se me acabo la cuerda.');
          END;

BEGIN
     PideDatos(tole,int1,iteraciones);
     WriteLn;
     WriteLn('Punto Fijo:');
     WriteLn;
     WriteLn('F(x)=x-2^(-x)           G(x)=2^(-x)  x î [1/3,1]');
     WriteLn;
     WriteLn('G(1/3)=0.793700626        G(1)=0.5 ');
     WriteLn;
     WriteLn(' iteraci¢n:               Po:             P:       |P-Po|/|P|:');
     WriteLn;
     Busca(int1,iteraciones);
     WriteLn;
     WriteLn('Ya acabe.');
     ReadLn
END.


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

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