====== Вычисление определённых интегралов ======
Пусть задан интеграл S.
картинка
Значение интеграла численно равно значению площади криволинейной траппеции, ограниченной кривой y=f(x) (непрерывная функция) и прямыми x=a и x=b.
===== Решение =====
картинка
Разделим отрезок [a,b] на n равных частей с точками X0=a, X1, X2 ... Xn=b. Шаг интегрирования (приращение) dx = (b-a)/n.
Вычислим значение функции в каждой точке деления Y0=F(X0), Y1=F(X1), .. Yn=F(Xn).
==== Метод прямоугольников ====
картинка
Заменим каждую полоску криволинейной трапеции прямоугольником с высотой, равной значению функции на левом конце промежутка. (На рисунке красным цветом показаны дополнительные построения). Площадь криволинейной фигуры заменится площадью сумм прямоугольников и будет равна
S = Y0*h+Y1*h+..+Yn-1*h = ((b-a)/n)*(Y0+Y1+...Yn-1)
картинка
Если же каждую полоску криволинейной трапеции заменим прямоугольником с высотой, равной значению функции на правом конце промежутка, то формула вычисления площади получит вид
S = Y1*h+Y2*h+..+Yn*h = ((b-a)/n)*(Y1+Y2+...Yn)
=== Левых ===
{{faq:pascal:leftbox.gif?200}}
=== Средних ===
{{faq:pascal:middlebox.gif?200}}
=== Правых ===
{{faq:pascal:rightbox.gif?200}}
{ Вычисление интеграла методом средних прямоугольников }
var
n : integer;
s: real;
function f(x:real):real;
begin
f:=1-0.25*sin(x)*sin(x);
end;
procedure rect (a,b:real; n:integer; var s:real);
var
i : integer;
h,x: real;
begin
h:=(b-a)/n;
x:=a+h/2;
s:=0.0;
for i:=1 to n do
begin
s:=s+f(x);
x:=x+h;
end;
s:=s*h;
end;
begin
rect (0,pi/2,40, s);
write('Интеграл = ',s:16:4);
end.
{ Ответ: }
{ Интеграл = 1.3744 }
==== Метод трапеций ====
картинка
Если каждую полоску криволинейной трапеции заменить обычной трапецией, то площадь фигуры будет равна сумме площадей трапеций:
S = h*((Y0+Yn)/2 +Y1+Y2+...+Yn)
==== Метод Симпсона ====
картинка
Для вычисления этим методом необходимо, чтобы число частей было четным. Через каждые три точки (Xi,Yi), (Xi+1,Yi+1), (Xi+2,Yi+2) проведем пораболу и заменим соответствующий кусок криволинейной трапеции на параболическую трапецию. Получим формулу:
S = ((b-a)/(3*n))*(Y0+Yn+4*(Y1+Y3+...Yn-1)+2*(Y2+Y4+..Yn))
uses crt;
{Функция, площадь которой нужно вычислить}
function f(x: real): real;
begin
f := x*x+3;
end;
var a,b,dx,x,y,y1,y2: real;
n: integer;
begin
clrscr;
{Вводим промежуток}
write ('Введите a:'); readln (a);
write ('Введите b:'); readln (b);
{Вводим количество частей}
write ('Введите n:'); readln (n);
{Определяем шаг интегрирования}
dx := (b-a)/n;
{Вычисление по формуле левых прямоугольников}
y := 0; x := a; {x = a = X0}
while x < b do begin {x < Xn}
y := y + f(x);
x := x + dx; {x = X0, X1, X2 ... Xn-1}
end;
y := y * dx;
writeln ('Площадь по формуле левых прямоугольников: ', y: 10: 3);
{Вычисления по формуле правых многоугольников}
y := 0; x := a + dx; {x = X1}
while x <= b do begin {x <= Xn}
y := y + f(x);
x := x + dx; {x = X1, X2, X3 ... Xn}
end;
y := y * dx;
writeln ('Площадь по формуле правых прямоугольников: ', y:10:3);
{Вычисление по формуле трапеций}
y := 0; x := a + dx; {x = X1}
while x < b do begin {x < Xn}
y := y + f(x);
x := x + dx; {x = X1, X2, X3 ... Xn-1}
end;
y := (y + (f(a)+f(b))/2) * dx;
writeln ('Площадь по формуле трапеций: ', y:10:3);
{Вычисление по методу Симпсона}
y1 := 0; x := a + dx; {x = X1}
while x < b - dx do begin {x < Xn}
y1 := y1 + f(x);
x := x + 2*dx; {x = X1, X3, X5 ... Xn-1}
end;
y2 := 0; x := a + 2*dx; {x = X2}
while x < b - 2*dx do begin {x < Xn-1}
y2 := y2 + f(x);
x := x + 2*dx; {x = X2, X4, X6 ... Xn-2}
end;
y := ((b-a)/(3*n)) * (f(a)+f(b) + 4*y1 + 2*y2);
writeln ('Площадь по формуле Симпсона: ', y:10:3);
readkey;
end.