Погрешность численного интегрирования

0.9992

99.9195

E-001 0.4137750613

E-001 0.2933317183

E-001 0.2032723690

E-001 0.4966040522

E-001 0.0896208493

E-001 0.4137750613

E-001 0.2933317183

E-001 0.2032723690

E-001 0.4966040522

E-001 0.0896208493

1.0000

E-015

1.0000

Else

1.0000

0.9996

E-004

1.0004

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

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

, (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 =

>> Fr-1

ans =

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

>> m=1:N-1;

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

>> Fl=sum(y1)*dx

Fl =

>> 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 =

>> Ft-1

ans =

-5.1456e-008

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

>> s=0;

for i=2:N-1

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

k=4;

k=2;

end;

s=s+k*y(i);

end;

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

Fs =

>> Fs-1

ans =

 

Для вычисления значений определенных интегралов в пакете 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 =

>> q-1

ans =

-3.7216e-008

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

>> q-1

ans =

-2.1269e-009

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

>> 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 =

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

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

ans =

 

Пример 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

Для нахождения зависимостей погрешности вычисления определенного интеграла на отрезке от числа отрезков разбиения интервала интегрирования разложим подынтегральную функцию в ряд Тейлора:

. (6.22)

Тогда интеграл от данной функции на отрезке будет равен

. (6.23)

Оценим погрешность метода левых прямоугольников. Погрешность интегрирования на отрезке равняется разности между точным значением интеграла и его оценкой :

. (6.24)

Из (6.24) видно, что основной член погрешности на каждом отрезке имеет порядок или, в символической записи, . Поскольку полное число отрезков равно N, а , то полная погрешность метода левых прямоугольников по порядку величины равна . Аналогично можно показать, что погрешность метода правых прямоугольников также пропорциональна .

Погрешность формулы трапеций оценивается аналогичным образом. Так как значение интеграла на отрезке вычисляется по формуле , то погрешность равна

(6.25)

Заменив в (6.25) первый член выражением (6.23), значение функции в точке - разложением в ряд Тэйлора:

,

раскрыв скобки и приведя подобные, обнаруживаем, что член, пропорциональный первой производной функции, сокращается, и погрешность на одном отрезке равна »». Следовательно, полная погрешность формулы трапеций на отрезке по порядку величины равна .

Так как формула Симпсона основывается на приближении функции параболой, можно ожидать, что в данном случае погрешность по порядку величины будет определяться членами, пропорциональными третьей производной функции. Однако последовательное повторение действий, выполненных при оценке погрешности метода трапеций, показывает, что эти члены сокращаются в силу их симметричности, поэтому в разложении в ряд Тейлора следует удержать член, пропорциональный . Следовательно, погрешность формулы Симпсона на отрезке пропорциональна , а полная погрешность на отрезке по порядку величины составляет .

Полезно получить оценку погрешности вычисления интеграла от функции, зависящей от двух переменных, который с геометрической точки зрения представляет собой объем фигуры под поверхностью, заданной функцией . В прямоугольном приближении данный интеграл равен сумме объемов параллелепипедов с площадью основания и высотой, равной значению функции в одном из углов. Для определения погрешности разложим функцию в ряд Тейлора:

, (6.26)

где , - частные производные по соответствующим переменным.

Погрешность вычисления интеграла равна

. (6.27)

Подставив (6.26) в (6.27), выполнив интегрирование и приведя подобные, получаем, что член пропорциональный сокращается, а интеграл от дает . Интеграл от данного выражения по дает еще один множитель . Аналогичный вклад дает интеграл от члена, пропорционального . Так как погрешность порядок погрешности также составляет , то погрешность интегрирования по прямоугольнику , равна

. (6.28)

Из (6.28) видно, что погрешность интегрирования по одному параллелепипеду составляет . Так как имеется N параллелепипедов, полная погрешность по порядку величины равна . Однако в двумерном случае , поэтому полная погрешность . Напомним, что в одномерном случае полная погрешность метода прямоугольников .

Аналогичные оценки для двумерных обобщений формул трапеций и Симпсона показывают, что они соответственно равны и . Вообще можно показать, что если для одномерного случая погрешность составляет , то в d-мерном случае она равна .