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

С геометрической точки зрения определенный интеграл

, (6.11)

есть площадь фигуры, ограниченная графиком функции и прямыми , (рис. 6.3).

Рис. 6.3

Разделим отрезок на N равных отрезков длиной , где

. (6.12)

Тогда координата правого конца i-го отрезка определяется по формуле

, (6.13)

где , .

Рис. 6.4. Метод левых прямоугольников Рис. 6.5. Метод правых прямоугольников

Простейшая оценка площади под кривой может быть получена, как сумма площадей прямоугольников, одна из сторон которого совпадает с отрезком, а высота равна значению функции в точке (метод левых прямоугольников) (рис. 6.4) или в точке (метод правых прямоугольников) (рис. 6.5). (Погрешность вычисления значения интеграла на каждом шаге показана закрашенными фигурами.)

Значение определенного интеграла вычисляется по формулам

, (6.14)

(6.15)

для методов левых и правых прямоугольников, соответственно.

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

В этом случае фигура, ограниченная графиком функции и прямыми , , является трапецией. Искомый определенный интеграл определяется как сумма площадей всех трапеций:

. (6.16)

Более высокая точность вычисления интегралов обеспечивается при использовании параболической интерполяции (полиномом второй степени) по трем соседним точкам:

(6.17)

Более высокая точность вычисления интегралов обеспечивается при использовании параболической интерполяции (полиномом второй степени) по трем соседним точкам:

(6.17)

Для нахождения коэффициентов a, b, c полинома, проходящего через точки , , , нужно найти решение следующей системы линейных уравнений:

(6.18)

относительно неизвестных a, b, c.

Решив систему (6.18) относительно неизвестных a, b, c любым известным методом (например, Крамера), подставив найденные выражения в (6.17) и выполнив элементарные преобразования, получаем . (6.19)

Площадь под параболой на интервале находится посредством элементарного интегрирования (6.19):

, (6.20)

где . Искомый определенный интеграл находится как площадь всех параболических сегментов (формула Симпсона):

(6.21)

Обратите внимание на то обстоятельство, что в формуле Симпсона N должно быть четным числом.

Пример 6.2. Вычисление интеграла методом прямоугольников в пакете MATLAB:

>> f=inline('sin(x)');% задание подынтегральной функции

>> Xmin=0;

>> Xmax=pi/2;

>> N=2001;

>> i=1:N;

>> dx=(Xmax-Xmin)/(N-1);% шаг интегрирования

>> x=Xmin:dx:Xmax; % вычисление координат узлов сетки

>> y=feval(f,x);% вычисление значений функции в узлах сетки

% вычисление интеграла по формуле правых прямоугольников

>> m=2:N;

>> y1(m-1)=y(m);

>> Fr=sum(y1)*dx

Fr =

1.0004

>> Fr-1

ans =

E-004

% вычисление интеграла по формуле левых прямоугольников

>> m=1:N-1;

>> y1(m)=y(m);

>> Fl=sum(y1)*dx

Fl =

0.9996

>> Fl-1

ans =

-3.9295e-004

% вычисление интеграла методом трапеций

>> s=0;

for i=2:N-1

s=s+y(i);

End;

Ft=(0.5*y(1)+s+0.5*y(N))*dx

Ft =

1.0000

>> Ft-1

ans =

-5.1456e-008

% вычисление интеграла методом Симпсона

>> s=0;

for i=2:N-1

if i-2*ceil(i/2)==0

k=4;

Else

k=2;

End;

s=s+k*y(i);

End;

Fs=(y(1)+s+y(N))*dx/3

Fs =

1.0000

>> Fs-1

ans =

E-015

 

Для вычисления значений определенных интегралов в пакете MATLAB имеются следующие функции quad( ), quadl( ), trapz( ), cumtrapz( ), которые имеют следующий синтаксис.

 

>> q = quad(fun,a,b)% возвращает значение интеграла от функции

% fun на интервале [a,b], при вычислении

% используется адаптивный метод Симпсона.

>> q = quad(fun,a,b,tol)% возвращает значение интеграла от

% функции fun с заданной относительной

% погрешностью tol (по умолчанию tol=10-3)

>> q = quad(fun,a,b,tol,trace)% возвращает значение интеграла от

% функции fun на интервале [a,b] на

% каждом шаге итерационного

% процесса

>> q = quad(fun,a,b,tol,trace,p1,p2,...)% возвращает значение

% интеграла от функции fun

% на на интервале [a,b] на

% каждом шаге

% итерационного процесса,

% p1, p2, … - параметры,

% передаваемые в функцию

% fun

>> [q,fcnt] = quadl(fun,a,b,...)% возвращает в переменную fcnt

% дополнительно к значению

% интеграла число выполненных

% итераций

Функция quadl( )возвращает значения интеграла, используя для вычислений метод Лоббато (Lobbato). Синтаксис функции аналогичен синтаксису функции quad( ).

q = quadl(fun,a,b)

q = quadl(fun,a,b,tol)

q = quadl(fun,a,b,tol, 'trace ')

q = quadl(fun,a,b,tol, 'trace ',p1,p2,...)

[q,fcnt] = quadl(fun,a,b,...)

Пример 6.3. Вычисление интеграла с использованием функций quad.

>> q=quad('sin',0,pi/2,10^-4)

q =

1.0000

>> q-1

ans =

-3.7216e-008

>> q=quad('sin',0,pi/2,10^-6,'trace');

E-001 0.0896208493

E-001 0.4966040522

E-001 0.2032723690

E-001 0.2933317183

E-001 0.4137750613

>> q-1

ans =

-2.1269e-009

>> [q,fnct]=quad('sin',0,pi/2,10^-6,'trace');

E-001 0.0896208493

E-001 0.4966040522

E-001 0.2032723690

E-001 0.2933317183

E-001 0.4137750613

>> 17

Функция trapz( ) вычисляет интеграл, используя метод трапеций. Синтаксис функции trapz( ):

Z = trapz(Y)% возвращает значение определенного интеграла, в

% предположении, что X=1:length(Y)

Z = trapz(X,Y)% возвращает значение интеграла

% на интервале [X(1),X(N)]

Z = trapz(...,dim)% интегрирует вектор Y, формируемый из чисел,

% расположенных в размерности dim

% многомерного массива

 

Функция cumtrapz( ) вычисляет интеграл, как функцию с переменным верхним пределом. Синтаксис функции cumtrapz( ) аналогичен синтаксису функции trapz( ).

Z = cumtrapz(Y)

Z = cumtrapz(X,Y)

Z = cumtrapz(... dim)

Пример 6.4. Вычисление определенного интеграла с использованием встроенной функции пакета MATLAB.

 

>> x=0:0.01:pi/2;% задание координат узловых точек

>> y=sin(x);% вычисление значений подынтегральной функции в

% узловых точках

>> trapz(y)% вычисление значения интеграла, в предположении о

% том, что шаг интегрирования равен единице

ans =

99.9195

>> trapz(x,y)% вычисление значения интеграла на отрезке с

% шагом интегрирования 0.01

ans =

0.9992

 

Пример 6.5. Вычисление интеграла с переменным верхним пределом

>> x=0:0.01:3*pi/2;% задание координат узловых точек

>> y=sin(x);% вычисление значений подынтегральной функции в

% узловых точках

>> z=cumtrapz(x,y);% вычисление значений интеграла с

% переменным верхним пределом в узловых

% точках

>> plot(x,y,x,z)% построение графиков подынтегральной функции и

% интеграла с переменным верхним пределом

% (рис. 6.6)

Рис. 6.6








Дата добавления: 2015-08-21; просмотров: 2538;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.036 сек.