Bisekcja PASCAL
Załóżmy, że chcemy rozwiązać równanie1 - e sin x * cos x
posiadające (jak nietrudno obliczyć na kartce) pierwiastek w punkcie x
= 0. Tłumacząc powyższy schemat na angielski (i Pascal) otrzymamy
następujący program:
program Bisekcja;
{ Program rozwiązuje równania nieliniowe metodą bisekcji }
var
a, b, c : real; { granice przedziału i punkt podziału }
eps : real; { dokładność }
begin
writeln('Program znajduje miejsce zerowe funkcji')
writeln('w przedziale [a;b]');
write('Podaj wartosc a: '); { wprowadź granice przedziału }
readln(a);
write('Podaj wartosc b: ');
readln(b);
write('Podaj dokladnosc: ');
readln(eps);
repeat
c := (a + b)/2; { podziel przedział na pół }
if (1 - exp(sin(a)*cos(a)))*(1 - exp(sin(c)*cos(c))) < 0
then
b := c { funkcja ma przeciwne znaki w a i c }
else
a := c; { funkcja ma przeciwne znaki w b i c }
writeln(c);
until abs(1 - exp(sin(c)*cos(c))) < eps;
{ badamy wartość bezwzględną! }
writeln('Miejsce zerowe: c = ',c:12:8);
readln;
end.