Вы находитесь на странице: 1из 4

Лабораторная работа № 4

Приближенное вычисление определенных интегралов

На практике точное вычисление интегралов по формуле Ньютона-Лейбница не всегда


возможно. В этом случае используются методы численного интегрирования. Они основаны
на следующих соображениях: с геометрической точки зрения определенный интеграл
b

 f x dx
a
представляет собой площадь криволинейной трапеции. Идея методов численного

интегрирования сводится к разбиению интервала [a; b] на множество меньших интервалов и


нахождению искомой площади как совокупности элементарных площадей, полученных на
каждом частичном промежутке разбиения. В зависимости от использованной аппроксимации
получаются различные формулы численного интегрирования, имеющие различную точность.
Рассмотрим реализацию нескольких методов численного интегрирования в MATLAB: метод
трапеций, метод Симпсона (метод парабол) и метод Гаусса-Лобатто.

Метод трапеций.
В этом методе используется линейная аппроксимация подынтегральной функции, т. е.
график функции y  f ( x) представляется в виде ломаной, соединяющей точки ( xi , yi ) . Фор-

ba
мула трапеций при постоянном шаге h  имеет вид
n

 y  y n n1 
b

 f x dx  h 0   yi  ,
a  2 i 1 
где n – число участков разбиения интервала интегрирования. При этом ошибка интегриро-
вания пропорциональна h 2 .В MATLAB данную формулу реализует команда trapz(…).
1
dx
Например, пусть требуется найти значение интеграла  1 x
0
2
.

Решение
 x  [0 : 0.001:1];
 y  1. (1  x. ^ 2);
>> trapz(x, y)
ans =
0.7854
Для реализации команды trapz(…) необходимо:

1
1) задать значения аргумента x разбиением интервала интегрирования [0;1] на отрезки,
выбрав шаг определѐнной длины (в данном случае шаг равен 0, 001 );
2) задать значения подынтегральной функции y для каждого значения x ;
3) подставить векторы x , y в функцию trapz(x,y).

Интеграл в данном примере вычисляется точно и он равен . Сравним полученное значение
4
с точным:
 ans - pi 4
ans 
 4.1667e  008
из приведенного видно, что интеграл вычислен достаточно точно с ошибкой в восьмом знаке
после запятой, т.е. длина шага интегрирования выбрана удачно.
Реализация метода трапеций в M-файле имеет вид
function I = trapz_method(a, b, h)
%интегрирование функции f(x) интервале [a; b] методом трапеций с шагом h
x = [a : h : b];
y = f(x);
I = trapz(x, y);
function z = f(x)
%подынтегральная функция
z = 1. / (1+ x. ^ 2);

Замечание:
Входными аргументами M-файла являются пределы интегрирования и шаг, подынте-
гральная функция задана в самом M-файле в виде функции.

Метод Симпсона
Если интервал интегрирования разбить на отрезки постоянной длины и на каждом из
них подынтегральную функцию заменить параболой, то формула Симпсона с постоянным
шагом интегрирования h будет иметь вид
b

 f x dx  3 y  4 y1  y3  ...  y n 1   2 y 2  y 4  ...  y n2   y n  .


h
0
a

В MATLAB метод Симпсона реализуется командой


quad('f(x)',a,b,tol)
В выражении функции приняты следующие обозначения:
'f(x)' – подынтегральная функция, взятая в кавычки;

2
a,b – пределы интегрирования;
tol – относительная погрешность вычисления интеграла, задаваемая пользователем, по
умолчанию tol  106 . При этом шаг задаѐтся автоматически для достижения требуемой
точности.
Пример
1
dx
Вычислим интеграл 
0 1  x2
методом Симпсона

Решение.
>> quad('1. sqrt(1  x. ^ 2) ', 0, 1)
ans =
1.5708
В этом примере точность выбрана по умолчанию. В случае, когда подынтегральная функция
1
задана в M-файле:
1  x2
function y = F(x)
%подынтегральная функция
y = 1. / sqrt(1- x. ^ 2);

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


>> quad(@F, 0, 1)
ans =
1.5708
т.е., в этом случае для записи функции используется дескриптор @. Отметим, что точное

значение этого интеграла равно  1.5708 . Таким образом, полученные результаты являют-
2
ся очень точными.

Метод Гаусса-Лобатто
Интегрирование достаточно гладких функций имеет смысл проводить командой
quadl('f(x)',a,b,tol) , основанной на более точных квадратурных формулах Гаусса-Лобатто,
это экономит время вычислений. Подробнее об этом методе численного интегрирования
можно познакомится в специальной литературе.

Варианты заданий. Вычислить значения определенного интеграла методами трапе-


ций, Симпсона и Гаусса-Лобатто. Вычисления проводить, используя M-файлы. Данные взять
из таблицы.

3
№ Подынтегральная функция f(x) Интервал интегриро- Точность вычисле-
п/п вания [a; b] ний интеграла
1 ln x / x 1  ln x [1; 3.5] 0.001
2 tg 2 x  ctg 2 x [/6; [/3] 0.002
3 1 / x ln x [1.5; 3.] 0.0001
4 ln 2 x / x [1.0; 4,0] 0.003
5 ex 1 [0; ln2] 0.0015
6 xe x sin x [1.0; 4.0] 0.002
7 e x  ex [0.0; 2.0] 0.001
x
2
8 1/ 9  x 3 [2.0; 5.0] 0.001
9 sin 1 / x x 4 [1.0; 2.5] 0.0005
10 x 3 arctgx [0.0; 3 ] 0.003
11 arcsin x / 1  x  [0.0; 3,0] 0.001
12 x 2 1  ln x  [1.5; 3.0] 0.0025
13 1 / 1  3x  2 x 2 [0,0; 5.0] 0.001
14 x 2  0.14 / x [2.3; 6.0] 0.002
15 2 3 x ln cos x [0.0; /2] 0.001
16 e 3x

1 / ex 1  [0.0; 2.0] 0.0015
17 xarctgx / 1  x 2 [0.0; 2.0] 0.002
18 sin 5 x / ln 1  x 3  [0.0; /4] 0.001
19 x2 4  x2 [0.0; 1.8] 0.0006
20 e x cos 2 x [0.0; ] 0.0016
21 1.5x 2  x/x 3  2 [0.0; 1.2] 0.002
22 sin x /x  2.7
3 2 [2.0; 4.4] 0.0014
23 3.5tgx  x / x  3.7 3 [0.0; 1.2] 0.002
24 1.2  3.2x /1  sin x
2 2 [2.0; 4.4] 0.0011
25 3.17 x  4,2 / cos 2 x [1.0; 2.2] 0.0023
26 x  3.2/x  4.7
2 5 [0,0; 1.8] 0.0015
27 1.5x  x/x  2
2 3 [0.0; 1.2] 0.001
28 e x ln sin x 2 [1.0; 3.0] 0.002
29 tgx 2 / e  x [0.0; 1.0] 0.0013
2

30 1.6x  2,7 /1.5x 3  3.9 [1.0; 2.2] 0.0025