Численное интегрирование 6.   

advertisement
6.
Численное интегрирование
При вычислении определенных интегралов с помощью формулы НьютонаЛейбница
b
f x dx  F b   F a 
(6.1)

a
необходимо для подынтегральной функции f(x) найти первообразную F(x).
Если интеграл не выражается через элементарные функции (тогда
соответствующий неопределенный интеграл определяет новую функцию), то
для его вычисления используют численные методы. Примеры таких
интегралов приведены ниже:
ex
 x n dx,
sin x
 x n dx,
cos x
 x n dx,
e
 x2
dx.
Численные методы интегрирования применяют тогда, когда аналитические
методы интегрирования не применимы или слишком сложны.
Если необходимо вычислить определенный интеграл от таблично заданной
функции, то применение численного интегрирования является неизбежным.
Формулы для приближенного вычисления интегралов часто называют
квадратурными формулами.
6.1. Квадратурные формулы
Ньютона-Котеса
b
Пусть требуется вычислить определенный интеграл
 yx dx (6.2)
a
При выводе квадратурных формул для приближенного вычисления
определенного интеграла вспомним его геометрический смысл — интеграл
равен площади криволинейной трапеции, ограниченной графиком
подынтегральной функции, осью Ох и отрезками прямых х = а и х = b.
Разобьем отрезок [a, b] на n частей точками xi:
ba
(6.3)
xi  a  ih , i  0, 1, ..., n; x0  a,
xn  b, h 
n
.
Обозначим через yi значения функции в точках xi. Заменим подынтегральную
функцию интерполяционным многочленом Лагранжа (4.17):
n
n
i 0
i 0
y( x)  Ln ( x)   yi pi ( x)  yi
( x  x0 )( x  x1 )...( x  xi 1 )( x  xi 1 )...( x  xn )
( xi  x0 )( xi  x1 )...( xi  xi 1 )( xi  xi 1 )...( xi  xn )
(6.4)
Тогда получим приближенную формулу для вычисления интеграла:
b
n
 yxdx   A y
i
i
(6.5)
где Ai — числовые коэффициенты, которые не зависят от подынтегральной
функции и их значения можно определить для заданного n.
Выведем формулы для вычисления коэффициентов Ai. Введем обозначения
i 0
a
x  x0
q
, q[ n 1]  qq  1...q  n 
h
Тогда многочлен Лагранжа можно записать в виде
n i

 1
q[ n 1]
Ln  x   

i  0 i!n  i ! q  i
n
yi
Заменяя под знаком интеграла в (6.5) функцию y(x) многочленом Ln(x),
получим
 1n i  q[ n 1] y dx  n A y ,

i
i i
x 


i
!
n

i
!
q

i
i 0
i 0
xn n
0
x
n i
n

 1
q[ n 1]
yi

dx   Ai yi .

i!n  i ! x q  i
i 0
i 0
n
n
0
Отсюда следуют формулы для вычисления коэффициентов Ai:
x
n [ n 1]
n i
n i


 1
q[ n 1]
 1
q
Ai 

dx  h

dq 
i!n  i ! x q  i
i!n  i ! 0 q  i
n [ n 1]
n i
b  a  1
q


dq  b  a H i , i  0, 1, ..., n.
n i!n  i ! 0 q  i
n
0
Коэффициенты Hi называются коэффициентами Котеса и вычисляются по
формулам:
1  1
q[ n1]
Hi 

dq, i  0, 1, ..., n.
n i !n  i ! 0 q  i
n i
n
(6.6)
В следующих пунктах рассмотрим простейшие квадратурные формулы,
являющиеся частными случаями этих соотношений и получающиеся таким
способом.
6.1.1. Формула прямоугольников
Формулы прямоугольников получаются заменой подынтегральной функции
постоянным значением. В качестве такого значения выбирают значение
функции в одной из точек отрезка [a, b], или на левом конце отрезка, или на
правом конце отрезка, или в середине отрезка (рис.6.1):
b
 yxdx  ya b  a 
(6.7)
a
b
 yx dx  ybb  a 
(6.8)
a
 ab


y
x
dx

y

b  a 
a
 2 
b
y
y
y
x
a
b
а)
(6.9)
x
a
b
б)
рис. 6.1
x
a
b
в)
Если формулы (6.6) — (6.8) применить к каждой части [xi, xi + 1] отрезка [a, b],
то получим общие формулы прямоугольников. Фактически, определенный
интеграл приближенно заменяется интегральной суммой:
b
n1
a
i 0
 yxdx   y h
b
i
n
 yxdx   y h
a
(6.10)
i 1
i
(6.11)
 xi  xi1  (6.12)


y
x
dx

y

h

a
2 
i 0 
b
n1
Геометрически это означает, что площадь криволинейной трапеции
приближенно заменяется площадью ступенчатой фигуры. В частности, рис.6.2
иллюстрирует формулу (6.10).
y
x
a
b
рис. 6.2
Формулу (6.10) называют формулой левых прямоугольников, а формулу
(6.11) — формулой правых прямоугольников, а (6.12), соответственно,
формулой средних прямоугольников.
Формулы прямоугольников практически не используются из-за большой
погрешности порядка O(h) (у формулы средних более высокий прядок O(h2)).
6.1.2. Формула трапеций
Положим в формулах (6.6) n = 1 и вычислим значения Ai:
1  1
q[11]
Hi 

dq, i  0, 1.
1 i!1  i ! 0 q  i
1 i
1
1  1
q[ 2 ]
qq  1
1
H0 

dq   
dq    q  1dq  ,
1 0!1  0! 0 q  0
q
2
0
0
1 0
1
1
1
qq  1
1
ba h
H1  
dq  . A0  A1 
 .
q 1
2
2
2
0
1
Мы заменили подынтегральную функцию многочленом Лагранжа первой
степени и получили формулу трапеций:
b
 yxdx 
a
y0  y1
h, h  b  a
2
(6.13)
Геометрический смысл формулы трапеций (6.13) заключается в том, что
кривая y = y(x) заменяется отрезком прямой, проходящей через точки
(x0, y0) и (x1, y1), или, в других обозначениях, (a, y(a)) и (b, y(b)) (рис.6.3).
y
x
a
b
Рис. 6.3
Заметим, что формулы трапеций и средних прямоугольников являются
точными для линейной функции.
Если обобщить (6.13) для равномерного разбиения отрезка на n частей, то
приходим к общей формуле трапеций (рис.6.4):
b
n1
 y0  yn n1 
yi  yi1
ba


y
x
dx

h

h

y
,
h





i
(6.14)
a
2
n
i 0
i 1
 2

y
x
a
Рис. 6.4.
b
Погрешность формулы трапеций (6.13) есть величина порядка O(h3). В этом
можно убедиться, используя формулу погрешности интерполяционной
формулы Лагранжа. А для общей формулы трапеций (6.14) погрешность есть
величина порядка O(h2), так как при суммировании погрешности
накапливаются.
6.1.3. Формула Симпсона
Применяя интерполяционную формулу Лагранжа при n = 2, получим значения
коэффициентов:
2 [ 2 1]
2 i
1  1
q
Hi 

dq, i  0, 1, 2.
2 i!2  i ! 0 q  i
2
2
2
1
1
1
2
1
1
H 0   q  1q  2 dq  , H1    qq  2 dq  , H 2   qq  1dq  ,
40
6
20
3
40
6
h
ba
,
2
Ai  b  a H i  2hH i ,
b
A0 
 yxdx 
a
h
,
3
A1 
4h
,
3
h
 y0  4 y1  y 2 
3
h
A2  .
3
(6.15)
Геометрический смысл формулы Симпсона (6.15) заключается в том, что
кривая y = y(x) заменяется частью параболы, проходящей через три точки
(x0, y0), (x1, y1) и (x2, y2).
Формула Симпсона точна не только для полинома второй степени, но и для
полинома третьей степени в силу симметрии, показанной на рис. 6.4б.
y
y
y=y(x)
y=L2(x)
y=L2(x)
y=L3(x)
+
-
x
a
b
а)
x
a
Рис.6.4
b
б)
Остаточный член формулы (6.15) имеет порядок O(h5).
Общая формула Симпсона строится для четного n = 2m; при этом формула
(6.15) применяется для каждого из отрезков [x0, x2], [x2, x4], …, [xn–2, xn]:
h
h 2 m2
 yi  4 yi 1  yi2  (6.16)
a yxdx  3  y0  4 y1  2 y2  4 y3  ...2 y2m2  4 y2m1  y2m   3 
i 0
b
Остаточный член общей формулы Симпсона (6.16) имеет порядок O(h4).
6.1.4. Формулы Ньютона-Котеса
высших порядков
Полагая в формулах (6.6) n = 3, можно вычислить значения коэффициентов Ai
3h
9h
3h
A0  , A1  A2  , A3  ,
8
8
8
и получить квадратурную формулу Ньютона
b
 yxdx 
a
3h
 y0  3 y1  3 y2  y3  (6.17)
8
Формула (6.17) имеет погрешность того же порядка, что и формула Симпсона
(6.15), т.е. O(h5).
Приведем таблицу значений коэффициентов Котеса (табл.6.3).
Таблица 6.3
Таблица 6.3 (продолжение)
Например, квадратурная формула Ньютона-Котеса для n = 5 имеет вид:
b
 yxdx 
a
5h
19 y0  75 y1  50 y2  50 y3  75 y4  19 y5 
288
(6.18)
Квадратурные формулы с нечетным числом узлов (n = 2, 4, 6) являются более
удобными, т.е. выгоднее применять формулу Симпсона (6.15), чем формулу
Ньютона (6.17), так как при одном и том же порядке погрешности, формула
Ньютона требует больше узлов (и больше вычислений), чем формула
Симпсона. Аналогично, формула для n = 4 лучше, чем формула для n = 5 и
т.д.
6.2. Правило Рунге оценки погрешности
Приведем сводку квадратурных формул с остаточными членами.
Формула трапеций:
b
 y 0  y n n1  b  a h 2
yi  
y ξ , ξ  [a, b].
a yxdx  h 2  
12
i 1

Формула Симпсона:
b
2 m2
a
i 0
 yxdx  

h
b  a h 4 IV
 yi  4 yi1  yi 2  
y ξ , ξ  [a, b].
3
180
Рассмотрим на примере общей формулы Симпсона (6.16) правило Рунге для
оценки погрешности. Пусть подынтегральная функция четырежды непрерывно
дифференцируема. Тогда формула остаточного члена имеет вид:

b  a h 4
Rh   
180
y IV ξ ,
(6.19)
где ξ — некоторое число из отрезка [a, b]. Предположим, что производная yIV(x)
изменяется на этом отрезке медленно, и приближенно можно записать
остаточный член в виде Rh   Mh 4 , где M — постоянная. Пусть Sh и S2h
соответственно значения интеграла, полученные по общей формуле Симпсона
с шагом h и 2h. Тогда справедливы соотношения
b
 yxdx  S
b
h
 Mh 4 ,
a
 yx dx  S
2h
 16Mh 4 .
a
Отсюда получим формулу для оценки погрешности
Mh 4  Rh  
Sh  S2h
15
(6.20)
Уточненное значение интеграла по формуле Симпсона вычисляется с учетом
поправки
b
Sh  S2h
(6.21)
 yxdx  S
a
h

15
.
Для формулы трапеций также можно применить правило Рунге. Так как
формула остаточного члена общей формулы трапеций может быть
представлена в виде Rh   Mh,2 то справедливы соотношения
b
b
 yxdx  S h  Mh ,
2


y
x
dx

S

4
Mh
.
2h

a
a
2
Отсюда получим формулу для оценки погрешности
Mh 2  Rh  
S h  S 2h
3
(6.22)
Теперь для интеграла можно записать по правилу Рунге формулу трапеций с
поправкой
b
S  S 2h
yx dx  S h  h
.
(6.23)

a
3
Замечание. Здесь необходимо подчеркнуть, что описанное правило Рунге
применимо только тогда, когда выполняются указанные выше условия для
функции y(x) — существование производной соответствующего порядка и её
ограниченность, точнее говоря, возможность приближенного представления
погрешности в виде для формулы Симпсона ( для формулы трапеций), где M
— постоянная. Погрешность представления остаточного члена в указанном
виде здесь считается достаточно малой. Эти условия для конкретной
функции могут не выполняться, тогда правило Рунге не будет гарантировать
приемлемый результат.
6.3. Быстропеременные функции.
Метод Филона
Рассмотренные выше методы интегрирования хороши, если подынтегральная
функция и её производные непрерывны и ограничены на отрезке
интегрирования.
В радиотехнических задачах часто встречается интеграл
b
(6.23)
iωx
 f x e
iωx
a
dx, i   1,
где e — высокочастотное колебание (т.е. ω велико), а f(x) — амплитуда.
Подынтегральные функции в (6.23) являются быстропеременными
(быстро осциллирующими), а их m-ая производная есть величина порядка
O(ωm).
iωx
Функция e имеет на отрезке [a, b] примерно ω(b – a)/π корней. Так как число
корней велико, то для приближенного вычисления интеграла с помощью
квадратурных формул придется использовать интерполяционные многочлены
высокого порядка или очень большое число узлов интерполирования, что
приводит к громоздким вычислениям и, как следствие, большим ошибкам
округления.
В качестве узлов интерполирования примем
xi = (b + a)/2 + (b – a)di/2, i = 1, …, n,
(6.24)
где числа di принадлежат отрезку [–1; 1]. Заменим функцию в интеграле (6.23)
на интерполяционный многочлен с узлами xi:
b  a iω


L
x
e
dx

e
a n
2
b
iωx
ba n
2
 ba
D
 f xi 

iω
2 

i 1
Здесь
1

ξ  dk
ba
pω
, Di  p     
2
di  d k
1  k i
Мы получили квадратурную формулу
b

a
b  a iω
iωx
f x e dx 
e
2
 ipξ
e dξ

(6.25)
(6.26)
b a n
2
 ba
D
 f xi   Rn  f  (6.27)

iω
2 

i 1
t  d1 ...t  d n 

 b  a  n1
(
n
)
Rn  f   
dt   max f x  
 .


n!
[ a ,b ]
1

 2 
Рассмотрим частные случаи. При n = 2, d1 = –1, d2 = 2 из (6.26), (6.27)
получим:
1
1  ξ ipξ
sin p p cos p  sin p
b  a (6.28)
D1  p   
e dξ 

i,
p

ω
,
2
2
p
p
2
1
1
D2  p  
b

a
1  ξ ipξ
sin p p cos p  sin p
e
d
ξ


i,
1 2
p
p2
1
b  a iω
f x e dx 
e
2
iωx
b a
2
D1  p  f a   D2  p  f b
(6.29)
(6.30)
Проведем анализ влияния погрешности машинных округлений на значения
D1(p), D2(p), вычисляемых по формулам (6.28), (6.29). Пусть t — число
двоичных разрядов записи числа. Тогда можно считать, что погрешность
вычисления значений sinp, cosp есть величина порядка O(2–t), а погрешность
вычисления D1(p), D2(p) имеет порядок O(2–t/p). Отсюда следует, что при
малых значениях p погрешности D1(p), D2(p) могут быть большими. С другой
стороны, используя разложения в ряд Тейлора
p3
p2
sin p  p 
 ..., cos p  1 
 ...
3!
2
можно вычислить пределы
 sin p p cos p  sin p 
lim D1  p   lim 

i   1, lim D1  p   1.
2
p0
p0
p0
p
 p

Чтобы обойти эту ситуацию при вычислении D1(p), D2(p) в стандартных
программах применяется следующее правило:
 sin p p cos p  sin p
i, если p  p2 ,
2
 p 
p
D1, 2  p   
(6.31)

p
i
e ,
если p  p2 ,

где p2 — некоторое малое положительное число, определяемое подбором.
Разделим отрезок [a, b] на N частей точками
xi = a + ih, i = 0, 1, …, N; h = (b – a)/N.
Тогда можем записать обобщенную формулу (6.30) в виде:
b

a
h N 1
 x x 
f x e dx   exp  iω i1 i D1  p  f xi   D2  p  f xi1 ,
2 i 0
2 

iωω
(6.32)
p  ωh / 2.
Сформулируем алгоритм вычисления интеграла (6.23) по формулам (6.31) —
(6.32).
Алгоритм метода Филона.
1. Зададим N. Вычислим узловые точки:
h = (b – a)/N; xi = a + ih, i = 0, 1, …, N;
(6.33)
2. Вычислим параметры:
p  ωh / 2 ; p2 = 0,00001;
(6.34)
 sin p p cos p  sin p
i, если p  p2 ,
2
 p 
p
D1  
e  pi ,
если p  p2 .

(6.35)
 sin p p cos p  sin p
i, если p  p2 ,
2
 p 
p
D2  
e pi ,
если p  p2 .

(6.36)
h N 1
 x  xi 
S   exp  iω i 1
D1 f  xi   D2 f  xi 1 .
2 i 0
2 

(6.37)
3. Вычислим сумму:
5
Пример 6.5. Вычислить интеграл
100ix
x

e
dx .

0
Решение в Mathcad. Интеграл можно вычислить точно интегрированием по
частям:
5
5
5

1
1  100ix 5
100ix
100ix


xd
e

x
e

e
dx




0
100i 0
100i 
0
0

1  500i
1 100ix 5  5e500i e500i  1

e

.
 5e 

0
100i 
100i
 100i 10000
100ix
x
e
dx 

Вычислим значение полученного выражения в программе Mathcad (Обратите
внимание, i — мнимая единица, для её ввода нужно нажать указателем мыши
на букву i на панели инструментов «Калькулятор»):
5  exp 500  i  exp 500  i   1

 0.023576975193467  0.044145686491042 i
100  i
10000
Интересно отметить, что встроенная программа вычисления интеграла дает
практически тот же результат
5
 x exp 100  x  idx  0.023576975193466  0.044145686491043 i
0
Применим алгоритм (6.33) — (6.37) в Mathcad:
a : 0 b : 5 ω : 100
f(x) : x
b-a
N : 320 k : 0..N h :
x k : a  k  h
N
h
p  0.781250000000000
2
sin( p) p  cos(p) - sin(p)
sin( p) p  cos(p) - sin(p)
D1 :

D
:


2
2
p
p
p
p2
p : ω 

h N 1  
x  xk 
S :   exp  ω  i  k 1
  D1  f x k   D 2  f x k 1 
2 k 0  
2


S  0.023546920158697  0.044195597639888 i
Как видим, результат метода Филона дает четыре верных знака после запятой
при числе узлов N = 320. Вычислим число нулей подынтегральной функции:
(b - a)
ω
 159.155
π
На каждую полуволну приходится примерно
два узла.
Воспользуемся формулой трапеций при тех же узлах:
N 1
f(a)  exp(ω  a  i)  f(b)  exp(ω  b  i)
Str : h 
 h   f(x k )  exp(ω  x k  i)
2
k 1
Str  0.0186  0.0347 i
Формула трапеций дает неверный результат. Если мы увеличим число узлов
до 1600, то метод Филона дает пять верных знаков после запятой, а метод
трапеций — всего два.
Замечание. Если амплитуда f(x) = 1, то метод Филона дает точное значение
интеграла при любом числе узлов, так как в этом случае на каждом
промежуточном отрезке применяется формула Ньютона-Лейбница и не
используется замена подынтегральной функции приближенной.
Download