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:=exp(x)+exp(-x*ln(2))+2*cos(x)-6
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
Write(iteraciones-operaciones+1:10,' ',a:5:d);
IF f(a)<0 THEN
Write(' - ')
ELSE
Write(' + ');
Write(b:5:d);
IF f(p)<0 THEN
Write(' - ')
ELSE
Write(' + ');
WriteLn(p:5:d,Abs(a-b):7);
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
ReadLn;
PideDatos(tole,inicio,final,iteraciones);
IF f(inicio)*f(final)<0 THEN
BEGIN
WriteLn;
WriteLn('Bisecci¢n:');
WriteLn;
WriteLn('F(x)=exp(x)+exp(-x*ln(2))+2*cos(x)-6 x î [1,2]');
WriteLn;
WriteLn('F(1)= - F(2)= +');
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.
               (
geocities.com/v.iniestra/apuntes)                   (
geocities.com/v.iniestra)