Лабораторные работы / Программы / Код некоторых программ - 2003 / Метод секущих
.docМетод секущих
Program sekuschaya;
uses crt;
var
n:integer;
x,x1,x2,y,y1,y2,m1,m2,h,k,a,b,eps:real;
function f(x:real):real;
begin
f:=-2.505-2.802 *x+4.175*x*x+x*x*x;
end;
function fp2(x:real):real;
begin
fp2:=8.35+6*x;
end;
Begin
clrscr;
writeln('Введите точность');readln(eps);
writeln('Введите левую границу');readln(a);
writeln('Введите праввую границу ');readln(b);
m2:=a;
n:=1;
h:=(b-a)/2;
writeln ('______________________________________________________________________');
write ('|N| X0 | X1 | X2 | F(X0) | F(X1) | F(X2) | X1-X0 |');
while m2<=b do
begin
m1:=m2;
m2:=m2+h;
if ((f(m1)>=0) and (f(m2)<=0)) or ((f(m1)<=0) and (f(m2)>=0)) then
begin
x1:=m1;
x2:=m2;
y:=f(x1);
y2:=fp2(x1);
Writeln;
If y*y2>0 then x:=x1 else x:=x2;
If x>0 then k:=0.02 else k:=-0.02 ;
x2:=x-k;
repeat
begin
x1:=x;
y:=f(x);
y1:=f(x1);
y2:=f(x2);
x2:=x2-k;
x:=x2-(x1-x2)*y2/(y1-y2);
writeln ('|',n,'| ',x:4:3,'| ',x1:4:3,'| ',x2:4:3,'| ' ,y:10:5,'|',y1:10:5,'| ',y2:10:5,'| ',x-x1:9:5,' | ');
n:=n+1
end;
until abs(x-x1)<=eps;
n:=1
end;
n:=1;
end;
writeln('------------------------------------------------------------------');
readln;
end.