ricerca soluzione con bisezione

esci algebraturbo.htm

program bise4;
(* calcolo radici equazione con metodo bisezione *)

uses crt;
var A,B,MEDIO,X,Y: real;
k,n:integer;

function f(X: real): real;
begin
(* scrivere la funzione che interessa e racchiudere altre *)
f := X*X*X*X-7*X*X*X+2*X*X-100*X+610
(* prova sinistro 4 destro 5 bisezioni 10 *)
(* f:=x*x*x-9*x+1 *)
(* prova sinistro -4 destro -3 bisezioni 20 *)
end;

procedure legge_dati;

begin
repeat
writeln('esempio funzione:x^4-7x^3+2x^2-100x+610');
writeln('prova valori indicati');
gotoxy (25,13); write ('Estremo sinistro 4: '); read (A);
gotoxy (25,14); write ('Estremo destro 5: ');read(B);
until f(A)*f(B) < 0; {si accettano solo valori discordi di f(x)}
gotoxy(25,15);write('numero bisezioni 10 :');readln(n);
end;

procedure calcola (Es,Ed: real);
begin
for k:=1 to n do
begin
MEDIO := (Es+Ed)/2;

if f(Es)*f(MEDIO) <= 0 then

Ed := MEDIO
else
Es := MEDIO;

write('Estremo sin.: ', Es :5:8);
writeln(' Estremo des.:',Ed :12:8);
end;
end;

begin
clrscr;
legge_dati;
clrscr;
writeln('A= ',A:5:6,' B= ', B :12:6);
calcola (A,B);
writeln('premi enter');
readln;
end.