а,б - пределы интегрирования, е - точность.
Нажмите для просмотра прикрепленного файла
Собсно труда составить код по алгоритму не составило, но что-то не так считается.. а что не так понять не могу.Помогите разобраться, в чем ошибка.
П.С. Функция разумеется простая в качестве теста программы.
Код
Program nelurav;
Uses Crt;
var
n,i:integer;
Procedure Input(var n,m,eps:real);
begin
writeln('');
writeln(' Vvedite granitchy intervala (a,b)');
writeln('');
write(' a=');
read(m);
write(' b=');
read(n);
writeln('');
writeln(' Zadaite to4nost eps');
writeln('');
write(' eps=');
read(eps);
end;
Function F(var x:real):real;
begin
f:=x;
end;
Procedure Otrezok(var a,b,eps,x:real);
var
g,h,s,s1:real;
begin
writeln('');
n:=1;
h:=(b-a);
s:=(F(a)+F(b))*h/2;
Repeat
n:=2*n;
h:=(b-a)/n;
s1:=s;
s:=F(a)+F(b);
For i:=1 to n-1 do
begin
g:=a+i*h;
s:=s+2*F(g);
end;
s:=s*h/2;
until (abs(s-s1)/3>eps); {цикл завершается когда модуль будет меньше точности я так понял}
writeln('int ' ,S);
readln;
end;
var
a,b,eps,x:real;
begin
TextBackGround(white);
TextColor(blue);
ClrScr;
Input(a,b,eps);
Otrezok(a,b,eps,x);
readln;
end.
Uses Crt;
var
n,i:integer;
Procedure Input(var n,m,eps:real);
begin
writeln('');
writeln(' Vvedite granitchy intervala (a,b)');
writeln('');
write(' a=');
read(m);
write(' b=');
read(n);
writeln('');
writeln(' Zadaite to4nost eps');
writeln('');
write(' eps=');
read(eps);
end;
Function F(var x:real):real;
begin
f:=x;
end;
Procedure Otrezok(var a,b,eps,x:real);
var
g,h,s,s1:real;
begin
writeln('');
n:=1;
h:=(b-a);
s:=(F(a)+F(b))*h/2;
Repeat
n:=2*n;
h:=(b-a)/n;
s1:=s;
s:=F(a)+F(b);
For i:=1 to n-1 do
begin
g:=a+i*h;
s:=s+2*F(g);
end;
s:=s*h/2;
until (abs(s-s1)/3>eps); {цикл завершается когда модуль будет меньше точности я так понял}
writeln('int ' ,S);
readln;
end;
var
a,b,eps,x:real;
begin
TextBackGround(white);
TextColor(blue);
ClrScr;
Input(a,b,eps);
Otrezok(a,b,eps,x);
readln;
end.