Лабораторные работы / Программы / Код некоторых программ - 2003 / Метод касательных
.docМетод касательных
Program kasat;
uses crt;
var
n:integer;
x,x1,x2,y,y2,m1,m2,h,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;
function fp1(x:real):real;
begin
fp1:=-2.802+8.35*x+3*x*x;
end;
Begin
clrscr;
writeln('Введите точность');readln(eps);
writeln('Введите левую границу');readln(a);
writeln('Введите праввую границу ');readln(b);
m2:=a;
n:=1;
h:=0.5;
writeln ('____________________________________________________');
write ('| N | X | F(X) | F''(X) | H |');
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;
repeat
begin
x:=x-(f(x)/fp1(x));
writeln ('| ',n,' | ',x:5:3,' | ',f(x):10:5,'| ',fp1(x):10:5,'| ',abs(f(x)/fp1(x)):10:5,' | ');
n:=n+1 ;
end;
until abs(f(x)/fp1(x))<=eps;
n:=1
end;
end;
writeln('----------------------------------------------------');
repeat until keypressed;
end.