Вычисление определённых интегралов

Пусть задан интеграл 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)

Левых

Средних

Правых

{ Вычисление интеграла методом средних прямоугольников }
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.
 
pascal/integral_calculus.txt · Последние изменения: 2006/05/29 12:30 (внешнее изменение)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki