Получить разность значений интеграла, полученного методами трапеций и Симпсона для 30 интервалов разбиения — Pascal(Паскаль)

uses crt;
const
  a = 0.8;
  b = 1.6;
  n = 30;
function f(x: real): real;
begin
  f :=(x*x+1)*sin(x-0.5);
end;
 
function IntegralSimpson(a, b: real): real;
var
  h, k, s: real;
  i: Integer;
begin
  h := (b - a)/N;
  s := 0;
  k := a;
  for i := 1 to N - 1 do
    begin
      k := k + h;
      if i mod 2 = 0 then
        s := s + 2*f(k)
      else
        s := s + 4*f(k);
    end;
  s := (s + f(a) + f(b))*h/3;
  IntegralSimpson := s;
end;
 
function IntegralTrap(a, b: real): real;
var
  h, k, s: real;
  i: Integer;
begin
  h := (b - a)/N;
  s := (f(a) + f(b))/2;
  k := a;
  for i := 1 to N - 1 do
    begin
      k := k + h;
      s := s + f(k);
    end;
  s := s*h;
  IntegralTrap := s;
end;
 
begin
  clrscr;
  writeln('Metodom Simpsona = ', IntegralSimpson(a, b):0:5);
  writeln('Metodom Trapecij = ', IntegralTrap(a, b):0:5);
  writeln('Raznost=',abs(IntegralSimpson(a,b)-IntegralTrap(a,b)):0:5);
  readln
end.

Leave a Comment

64 − 56 =