program Integral; type TFunc = function(x : Real) : Real; function trapeze(a, b : Real; n : Integer; func : TFunc) : Real; var ya, yb : Real; d, x, sum : Real; begin ya := func(a); yb := func(b); d := (b - a) / n; x := a + d; sum := ya + yb; while (x < b) do begin sum := sum + 2 * func(x); x := x + d; end; trapeze := d * sum / 2; end; function simpson(a, b : Real; n : Integer; func : TFunc) : Real; var ya, yb, y : Real; d, sum : Real; i : Integer; begin ya := func(a); yb := func(b); d := (b - a) / (2 * n); sum := ya + yb; i := 1; while (i < 2 * n) do begin y := func(a + d * i); i := i + 1; if odd(i) then sum := sum + 4 * y else sum := sum + 2 * y; end; simpson := sum * d / 3; end; function func(x : Real) : Real; begin func := x*x*x*x + x; end; var t, s : Real; n : Integer; begin Write('vvedite kolichestvo razbieniy: '); ReadLn(n); t := trapeze(0, 1, n, func()); WriteLn('trapeze method: ', t); s := simpson(0, 1, n, func()); WriteLn('simpson method: ', s); end.