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.
               (
geocities.com/v.iniestra/apuntes)                   (
geocities.com/v.iniestra)