function f(x:real):real; begin f:=3*sqr(x)-2*x; end;
function Simpson(a,b,h:real;ff:fun):real; var m,n,mn:integer; s:real; begin n:=Trunc((b-a)/h)+1; s:=f(a)+f(b); mn:=4; for m:=1 to n-2 do begin s:=s+mn*f(a+h*m); if mn=4 then mn:=2 else mn:=4; end; Simpson:=s*h/3; end;
var a,b,h:real; begin a:=0; b:=2; h:=0.5; Writeln('y=',Simpson(a,b,h,f)) end.
fun=function(p:real):real;
function f(x:real):real;
begin
f:=3*sqr(x)-2*x;
end;
function Simpson(a,b,h:real;ff:fun):real;
var
m,n,mn:integer;
s:real;
begin
n:=Trunc((b-a)/h)+1;
s:=f(a)+f(b);
mn:=4;
for m:=1 to n-2 do begin
s:=s+mn*f(a+h*m);
if mn=4 then mn:=2 else mn:=4;
end;
Simpson:=s*h/3;
end;
var
a,b,h:real;
begin
a:=0; b:=2; h:=0.5;
Writeln('y=',Simpson(a,b,h,f))
end.
Результат выполнения программы:
y=4