program Pascal_162753;
type
TIFunc=function (x:double):double;
{ Интегрируемая функция }
function f(x:double):double;
begin
f:=1.0/sqrt(2*x*x+3);
end;
{ Метод прямоугольников }
function IRect(IFunc:TIFunc;A,B:double;Intervals:word):double;
var
sum,step:double;
begin
sum:=0;
step:=(B-A)/Intervals;
A:=A+step/2;
while A<B do begin
sum:=sum+step*IFunc(A);
A:=A+step;
end;
IRect:=sum;
end;
{ Метод симпсона }
function ISympson(IFunc:TIFunc;A,B:double;Intervals:word):double;
var
sum,step:double;
i:LongInt;
function x(i:LongInt):double;
begin
x:=A+step*i;
end;
begin
step:=(B-A)/2/Intervals;
sum:=IFunc(x(1))*4;
for i := 1 to Intervals-1 do
sum:=sum+IFunc(x(i*2+1))*4+IFunc(x(i*2))*2;
ISympson:=(IFunc(x(0))+IFunc(x(2*Intervals))+sum)*step/3;
end;
var
A,B:double;
Intervals:word;
begin
Write('A=');ReadLn(A);
Write('B=');ReadLn(B);
Write('Intervals=');ReadLn(Intervals);
WriteLn('Rectangles=',IRect(@f,A,B,Intervals):0:5);
WriteLn('Sympson=',ISympson(@f,A,B,Intervals):0:5);
ReadLn;
end.
A=0.8
B=2.4
Intervals=10
Rectangles=0.57373
Sympson=0.57383
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.