Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 Численное интегрирование.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
518.66 Кб
Скачать

Метод трапеций

Формула трапеций имеет следующий вид:

(6)

Эта формула означает, что площадь криволинейной трапе­ции заменяется площадью многоугольника, составленного из п трапеций (рис. 5), при этом кривая заменяется вписанной в нее ломаной.

Рис. 5. Метод трапеций

Пример 5. Пользуясь формулой трапеций, вычислить оп­ределенный интеграл

при n = 4.

Решение

Подынтегральная функция на отрезке [0; 1] равна F(x) = .

Находим шаг вычислений

Отсюда точки интегрирования:

х0 = 0; х1 = 0,25; х2 = 0,5; х3 = 0,75; х4 = 1.

Тогда по формуле трапеций имеем

Ответ: = 0,764.

Пример 6. Методом трапеций вычислить определенный интеграл

Программа_________________________________________________

program integral; {метод трапеций}

uses crt;

var i,n:integer;

a,b,h,x,s:real;

function f(x:real):real;

begin

f:=(l/x)*sin(3.14*x/2);

end;

begin

clrscr; gotoxy(10,10);

textbackground(l); clrscr;

write('Введите нижний предел интегрирования');

readln(a); gotoxy(10,12);

write('Введите верхний предел интегрирования ');

readln(b); gotoxy(10,14);

write('Введите количество отрезков '); readln(n);

h:=(b-a)/n; s:=0; х:=а;

for i:=l to n-1 do

begin

x:=x+h; s:=s+f(x);

end;

s:=h*((f(a)+f(b))/2+s);

gotoxy( 10,18);

writeln('Интеграл равен' ,s:11:4);

readkey;

end.

Метод Симпсона

Геометрически иллюстрация формулы Симпсона состоит в том, что на каждом из сдвоенных частичных отрезков заменяем дугу данной кривой дугой графика квадратного трехчлена (рис. 7).

Рис. 7. Метод Симпсона

Разобьем отрезок интегрирования [a; b] на 2n равных частей длиной . Обозначим точки разбиения х0 = а; х1 = х0 + h, ..., хi = х0 + ih, ..., х2n = b. Значения функции f в точках xi обозначим уi, т. е. yi=f(хi). Тогда, согласно методу Симпсона

Пример 7. Вычислить определенный интеграл по формуле Симпсона

при h = 0,25.

Решение

Вычислим значения подынтегральной функции f(x) = в точках

х0 = 0; х1 = 0,25; х2 = 0,5; х3 = 0,75; x4= 1,

получим

Ответ: =0,702.

Пример 8. Вычислить интеграл I = , п = 10 методом Симпсона, где п – количество разбиений отрезка интегрирования.

Решение

Имеем п = 10, отсюда h= = 0,1. Результаты вычислений приведены в таблице.

i

хi

y2j-1

y2j

0

0

y0 = 1,00000

1

0,1

0,90909

2

0,2

0,83333

3

0,3

0,76923

4

0,4

0,71429

5

0,5

0,66667

6

0,6

0,62500

7

0,7

0,58824

8

0,8

0,55556

9

0,9

0,52632,

10

1,0

0,50000 = уn

3,45955( )

2,72818( 2)

По формуле Симпсона получаем:

Подсчитаем погрешность полученного результата. Полная погрешность R складывается из погрешностей действий R1 и ос­таточного члена R2. Очевидно

где A(i) — коэффициенты формулы Симпсона; — максималь­ная ошибка округления значений подынтегральной функции.

Тогда

R1 = п * h * .

Программа_____________________________________________________

Procedure INTEGR (var S:real; K:integer); {Метод Симпсона}

begin

S := 0.0; X := A;

IF K<5 THEN FOR I := 0 TO N DO

begin

IF К<>З THEN X:=A+H*I ELSE X:=A+H/2+H*I;

F := FUNC (X);

IF K=4 THEN F := F/2.0;

IF (1=0) AND (K<>2) THEN S := S + F;

IF (I=N) AND ((K=2) OR (K=4)) THEN S := S + F;

IF(K>0) AND (ION) THEN

IF K<>4 THEN S := S+F ELSE S := S + F*2;

end

ELSE

begin

FOR I := 1 TO N-l DO

S := 2*FUNC(X+H*I) + 4*FUNC(X+H*I-H/2) + S;

S := S + 4*FUNC(B-H/2) + FUNC(A) + FUNC(B); S := S / 6; end;

S := S * H; end;

Пример 9. Вычислить интеграл методом Симпсона

Программа_____________________________________________________

Program integral; {Метод Симпсона}

Uses crt;

var i,n,c:integer;

a,b,h,x,s:real;

function f(x:real):real;

begin

f:=(l/x)*sin(Pi*x/2);

end;

begin

clrscr; gotoxy(10,10);

textbackground(l); clrscr;

write('Введите нижний предел интегрирования ');

readln(a); gotoxy(10,12);

write('Введите верхний предел интегрирования ');

readln(b); gotoxy(10,14);

write('Введите количество отрезков '); readln(n);

h:=(b-a)/n; s:=0; х:=а; с:=1;

for i:=l to n-1 do

begin

x:=x+h; s:=s+(3+c)*f(x); c:=-c;

end;

s:=h*(f(a)+f(b)+s)/3; gotoxy(10,18);

write('Интеграл равен ',s: 11:5);

readln;

end.

Пример 13. Вычислить интеграл методами трапеций и Симпсона.

Программа_____________________________________________________

program tr_s;

uses crt, graph;

var

a,b:real; { Границы отрезка }

r,r2:real; { Предыдущее и текущее значения интеграла}

minteger; { Счетчик }

{ Интегрируемая функция }

function f(x:real):real;

begin

f:=0.43429/(x*ln(x));

end;

{ Метод трапеций }

function trap(a,b:real;n:integer):real;

var

s:real; {Сумма }

h:real; { Шаг }

rminteger; { Счетчик } begin

h:=(b-a)/(n-I);

s:=(f(a)+f(b))/2; { Начальное значение суммы }

for m:=l to n-2 do s:=s+f(a+m*h);

trap:=s*h; {Значение интеграла }

end;

{ Метод Симпсона }

function simpson(a,b:real;n:integer):reaI;

var

s:real; { Сумма }

h:real; { Шаг }

mrinteger; { Счетчик }

mminteger; { Очередной множитель } begin

h:=(b-a)/(n-l); {Вычисление шаг}

s:=f(a)+f(b); { Начальное значение шага }

mn:=4; { Первый множитель }

{ Суммирование остальных элементов }

for m:=l to n-2 do

begin

s:=s+mn*f(a+h*m);

if(mn=4) then mn:=2 else mn:=4;

end;

simpson:=s*h/3; { Вычисленное значение }

end;

Begin

clrscr;

\угке('Введите нижний предел интегрирования ');

readln(a);

у/гке('Введите верхний предел интегрирования ');

readln(b);

write('Введите количество отрезков '); readln(n);

writeln('Интeгpaл равен ', trap(a,b,n), simpson(a,b,n));

readln;

end.