Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вычислить определенный интеграл

Автор: Goprofast 11.04.2018 11:53

Вычислить определенный интеграл

Прикрепленное изображение

Автор: Федосеев Павел 14.04.2018 1:55

program test;

function F(x: real): real;
begin
F := exp(x);
end;

function Sympson(a, b: real; n: integer): real;
var
Res: real;
h: real; {величина шага}
x: real;
i: integer;
begin
h := (b - a) / n;
Res := F(a) + F(b);
i := 1;
while i < n do
begin
x := a + i * h;
Res := Res + 4 * F(x);
Inc(i);
x := a + i * h;
Res := Res + 2 * F(x);
Inc(i);
end;
Res := Res * h / 3;
Sympson := Res;
end;

function Trapec(a, b: real; n: integer): real;
var
Res: real;
h: real; {величина шага}
x: real;
i: integer;
begin
h := (b - a) / n;
Res := F(a) + F(b);
i := 1;
while i < n do
begin
x := a + i * h;
Res := Res + 2 * F(x);
Inc(i);
end;
Res := Res * h / 2;
Trapec := Res;
end;

var
a, b, {границы интегрирования}
n: integer; {количество подинтервалов интегрирования}
Isym, {значение интеграла, вычисленное методом Симпсона}
Itrp: real; {значение интеграла, вычисленное методом трапеций}
I: real;

begin
a := 0;
b := 1;
I := exp(1) - 1;

n := 100;
Isym := Sympson(a, b, n);
Itrp := Trapec(a, b, n);
WriteLn('Isym=', Isym: 10: 8, ' при n=', n, ', I=', I: 10: 8);
WriteLn('Itrp=', Itrp: 10: 8, ' при n=', n, ', I=', I: 10: 8);
end.