Лекция №10 Квадратурные формулы Гаусса. Задача Коши для

advertisement
Лекция 10
13 ноября 2006 года
Поскольку формулы Ньютона–Котеса являются интерполяционными, очевидно, что
они не могут успешно использоваться для получения формул высокой точности по
причине неустойчивости интерполяционного процесса для многочленов высокого
порядка. Как отмечалось выше, постоянные Лебега растут с увеличением количества
узлов интерполяции для равномерной сетки как 2N. По этой причине обычно
используются полиномы степени от нуля до трех (соответственно, формулы
прямоугольников со средней точкой, трапеций, Симпсона, 3/8). Вычисление с их
помощью интегралов от функций, обладающих высокой степенью гладкости, например,
близким к полиномам высокой степени, представляется нерациональным. В выражение
для погрешности этих формул входят первая, вторая или четвертая производные.
Погрешность определяется низким порядком производной при высокой степени гладкости
интегрируемой функции. Этих недостатков лишены квадратуры Гаусса.
Формулировка задачи построения квадратурных формул, поставленная Гауссом,
такова.
Для заданного количества точек, а именно, для (N+1) точки, найти такое
расположение узлов и такие веса ci, чтобы квадратурная формула
b

N
f (t )dt   ci f (ti )  rN (t )
i 0
a
была точной для полиномов как можно более высокой степени, т.е. чтобы rN (t )  0.
Пояснение. Для некоторых классов функций существуют квадратурные формулы с
rN (t )  0 , которые называются точными. Примером такого класса функций являются
полиномы
PN (t ) 
N
 ak t k
k 0
на отрезке [a, b]. Определим на этом отрезке узлы t i (их иногда называют точками
коллокации), i = 1,…,N и веса сi так, что
b
N
a
i 0
 PN (t )dt   ci PN (ti ).
Представим PN(t) в виде интерполяционного полинома
N
N (t  t )
k
PN (t )   PN (ti ) 
,
k

i
(
t

t
i 0
i
k)
k 0
при этом остаточный член интерполяции полинома равен нулю: PN( N 1) (t )  0.
Тогда из предыдущего условия следует
b N
(t  tk )
ci   
dt ,
k i (t  t )
i
k
a
k 0
где сi являются базисными функциями полиномов Лагранжа. Квадратурная формула
b
N
a
i 0
 PN (t )dt   ci PN (ti )
является точной для любого полинома степени N. Оказывается, эта формула может быть
точной и для полиномов более высокой степени, а именно, 2N + 1, что используется при
построении квадратурных формул Гаусса.
Пусть формула численного интегрирования имеет вид
b
I   f (t )dt  c0 f (t0 )  c1 f (t1 ) 
a
 cN f (t N )  rN ,
где ci – веса, rN – остаточный член квадратуры.
Положим, что существует многочлен PM(t) степени M > N, для которого
квадратурная формула точна, т.е. rN = 0 при f(t) = PM(t):
f (t )  PM (t )  a0  a1t  a2t 2   aM t M ,
где ai — коэффициенты. В этом случае получим
a0  dt  a1  tdt  a2  t 2dt   aM  t M dt 
 c0 (a0  a1t0  a2t02 
c1 (a0  a1t1  a2t12 
 aM t0M ) 
 aM t1M ) 

cN (a0  a1t N  a2t N2   aM t NM ).
Приравняем выражения в обеих частях равенства при aj:
b
с0  с1 
 сN   dt  I 0 ,
a
b
c0t0  c1t1 
 cN t N   tdt  I1 ,
a
…,
c0t0M  c1t1M 
b
 cN t NM   t M dt  I M .
a
Получается нелинейная система из M + 1 уравнения с 2(N + 1) неизвестными ci, ti.
Отсюда следует, что максимальное значение M есть 2N + 1. Решение этой системы или
исследование на его существование и единственность в общем случае затруднительны.
Ниже будет рассмотрен пример получения квадратурной формулы Гаусса таким путем
для двух узлов.
Гаусс решил эту задачу более простым (в смысле реализации, но не решения!)
способом, доказав следующую теорему. Приведем ее без доказательства.
Теорема. Если в качестве узлов ti, i = 0,…,N в квадратурной формуле используются
нули полиномов Лежандра qN+1(t), а веса ci вычисляются по формулам
ci 
1 N
(t  tk )
 ki (t
1 k 0
i
 tk )
dt ,
то квадратурная формула
1

1
N
f (t )dt   ci f (t i )  rN (t )
i 0
точна для полиномов степени 2N + 1.
Напомним, что полиномы Лежандра образуют ортогональную систему функций на
отрезке [–1; 1]
1
1
1
1
 qi (t )q j (t ) dt  0, при i  j ;
 qi (t ) q j (t )dt  0
при i  j.
Первые несколько полиномов Лежандра будут q0 (t )  1,
1
q1 (t )  t , q2 (t )  (3t 2  1),
3
1
1
q3 (t )  (5t 3  3t ), q4 (t )  (35t 4 30t 2  3), …, рекуррентная и общая формулы имеют
5
35
вид (n  1)qn1 (t )  (2n  1) t qn (t )  nqn1 (t ), qn (t ) 
1
dn
2n ( n !) dt n
(t 2  1) n .
Заметим, что рекуррентные формулы, связывающие три полинома порядка n –1, n и n + 1
уже встречались для полиномов Чебышева. Такие рекуррентные формулы существуют
для всех систем ортогональных полиномов.
Погрешность
квадратурной
формулы
Гаусса
на
отрезке
будет
2( N 1)1
2( N 1)
rN (t )  2
N f
(), при этом   [1,1]. Для  a, b формула остаточного
члена будет rN (t )  (b  a)2( N 1)1  N f 2( N 1) (), причем коэффициент αN быстро убывает с
( N  1)!4
.
3
 2( N  1)!  2( N  1)  1
ростом N. Здесь  N 
Формулы Гаусса обеспечивают высокую точность уже при небольшом количестве узлов
(от 4 до 10) В этом случае 1  2 104 ,  2  5 107 , 3  6 1010 ,  4  4 1013. В
практических же вычислениях число узлов составляет от нескольких сотен до нескольких
тысяч. Отметим также, что веса квадратур Гаусса всегда положительны, что обеспечивает
устойчивость алгоритма вычисления сумм
N
 сi f (ti ).
i 0
В случае двух узлов N = 1 (количество отрезков разбиения), M = 2, N + 1 = 3
(степень полинома). Узлы tn и веса cn должны удовлетворять следующей системе
уравнений:
N
1
n 0
1
 cntnj 
 t j dt ,
j 1
j  1  ( 1)
c
t
, j  0,
 nn
j 1
n 0
В данном случае система уравнений будет:
N
c0  c1 
,M.
1
 1 dt  2,
1
1
c0t0  c1t1 
c0t02  c1t12 
c0t03  c1t13 
 t dt  0,
1
1
2
 t 2dt  3 ,
1
1
 t 3dt  0,
1
откуда получим
c0  c1  1;
t0  t1 
1
.
3
Формула Гаусса записывается как
 1 
 1 
f (t )dt  f  
 f 
.
3
3




1
Эта формула будет точной для полиномов третьей степени.
1

Решение задачи Коши для систем обыкновенных дифференциальных
уравнений (ОДУ)
Рассмотрим численные методы решения задачи Коши для обыкновенных
дифференциальных уравнений (ОДУ) вида
d u (t )
dt
 f (t , u ),
u ( 0)  u 0 ,
а также систем ОДУ
t  0,
d u (t )
dt
 f (t , u),
u ( 0)  u 0 ,
где
u  (u1 , u2 ,
f  ( f1 , f 2 ,
, um ) T ,
, f m )T
— векторы столбцы искомых функций и правых частей соответственно.
К аналогичной форме приводится задача Коши для обыкновенного дифференциального
уравнения (системы уравнений) порядка выше первого, вида
m
u
dt
m
d
m 1 

du
d
u
 g  t , u,
, ,
, t  0,
m 1 

dt
d
t


u (0)  a 0 ,
du
dt
d
(0)  a1 , …,
m 1
dt
u
m 1
(0)  a m1 ,
если положить
u1  u ,
d um
dt
u2 
d u1
dt
,
u3 
d u2
dt
,
…,
um 
d um
dt
1
,
 g (t , u1 , u 2 , , u m ),
u i (0)  ai 1 ,
i  1, 2, , m.
Введем в расчетной области t 0, T  точки (узлы расчетной сетки)
{t n  n, n  0, 1,  , N }, в которых вычисляется искомое решение. Совокупность узлов
называется расчетной сеткой, (сеточной областью),  — шагом интегрирования. Здесь
для простоты введена равномерная сетка. В реальных расчетах применяются и
неравномерные сетки.
Введем сеточную функцию u  , определенную в узлах сетки и представляющую собой
совокупность приближенных значений искомой функции, U  — проекцию точного
решения искомой задачи на сетку и f  — значения правой части в узлах сетки.
Введем вслед за [1] также операторное обозначение дифференциальной задачи
L (u )  F ,
(2)
где
d u
  f (t , u ), t  0;
L (u )   d t

t  0;
u (0),
 0, t  0;
F 
u 0 , t  0;
и аппроксимирующей разностной задачи
L (u  )  F ,
(3)
где L — обозначения разностного оператора, F — проекция F на расчетную сетку.
Заметим, что u и u  являются элементами соответственно функционального и
конечномерного пространств.
Определение. Решение задачи (3) u  сходится при   0 к решению исходной задачи
(2), если
u U   0
при   0.
При этом если имеет место оценка
u   U   C p
(C  C ( )),
то имеет место сходимость порядка р.
Определение. Говорят, что задача (3) аппроксимирует задачу (2) на ее решении, если
невязка
r  0
при
  0,
где r  L (U  )  F ; при этом если имеет место оценка
r  C1 p
(C1  C1 ( )),
то говорят, что имеет место аппроксимация порядка р.
Определение. Задача (3) устойчива, если из соотношений
L (u  )  F    ,
L (v  )  F   
следует:
u   v   C 2       ,
C 2  C 2 ( ).
Теорема (В. С. Рябенького–П. Лакса). Решение задачи (3) сходится к решению исходной
задачи (2), если задача (3) устойчива и аппроксимирует задачу (2); если аппроксимация
имеет порядок p, то сходимость также имеет порядок p.
Д о к а з а т е л ь с т в о. В силу аппроксимации имеем оценку: r  C1 p . Тогда из
определения устойчивости, положив v   U  , получим
u   U   C2 r  C2C1 p  C p ,
поскольку в данном случае
  0
и, кроме того,
r    . 
Приведем примеры простейших разностных уравнений, аппроксимирующих (1):
u n 1  u n

u n 1  u n

 f (t n , u n ),
0  n  N  1,
 f (t n , u n1 ),
0  n  N  1,
u n 1  u n 1
2
 f (t n , u n ),
1  n  N  1.
Первая из схем называется явной (явная схема Эйлера), вторая — неявной (неявная схема
Эйлера). Алгоритмическая реализация первой схемы — бегущий счет (рекуррентная
формула), второй — решение нелинейного алгебраического уравнения на каждом
временном шаге.
Для реализации третьей схемы необходимо задание функции u n в двух точках: t 0 и t1 .
Один из возможных вариантов — решение на первом шаге нелинейного уравнения вида:
u n 1  u n 1
2
1
 [ f (t n1 , u n1 )  f (t n1 , u n1 )]
2
при n  1.
В данном случае проявляется несовпадение формальных порядков дифференциального и
разностного уравнений (дифференциальное уравнение первого порядка, разностное —
второго).
Один из первых методов приближенного решения обыкновенных дифференциальных
уравнений — разложение в ряд Тейлора.
Дифференцируя по t исходное уравнение (8.1), получим
u   f t(t , u )  f t(t , u ) u ,
 (t , u ) (u ) 2 
u   f tt (t , u )  2 f tu (t , u ) u   f uu
 f u (t , u ) u , …
Таким образом, можно написать приближенное равенство:
I u ( i ) (t )
~
n
u (t )  Vn (t )  
(t  t n ) i .
i 0
i!
Полагая
~
u n1  Vn (t n1 ),
получаем приближенное значение u(t) в точке t t n1. При I  1 и t n1  t n    const
получаем метод Эйлера:
u j 1  u j  f j .
Этот способ не получил распространения в практике решения дифференциальных
уравнений из-за необходимости вычисления производных u (i ) , где i  1  I . По затратам
машинного времени он заметно уступает другим методам, о которых будет идти речь
далее.
В настоящее время в практике решения жестких систем ОДУ применяют так
называемые многозначные методы, основанные на разложении в ряд Тейлора и
вычислении производных. О жестких системах ОДУ будет рассказано ниже.
Рассмотрим еще один способ получения простейших одношаговых расчетных схем для
численного решения уравнения (1), для чего напишем равенство
t
u (t  )  u (t )   u (t  ) d.
0
После аппроксимации интеграла в правой части по формуле прямоугольников и замене его на
величину u (t ), получим
u (t  )  u (t )  u (t )  O (  2 ),
или
u (t  )  u (t )  f (t , u )  O (  2 ),
поскольку u (t )  f (t , u ).
Опуская член O (  2 ) и обозначая t  t n , t   t n 1, u (t ) 
 u n , u (t  )  u n 1 , получим метод Эйлера.
Если рассматриваемый интеграл заменить формулой трапеций, получим

u (t  )  u (t )  [u (t )  u (t  )]  O(  3 ),
2
откуда имеем

u n1  u n  [ f (t n , u n )  f (t n1 , u n1 )].
2
Этот метод называется неявным методом трапеций. Для того чтобы метод был явным,
его делают двухэтапным:
u~n1  u n  f ( f n , u n ),
un1  un 

2
 f (tn ,
un )  f (tn 1 , un 1 )  ,
где u~n 1 — вспомогательная величина, вычисляемая на промежуточном этапе. Если этот
же интеграл приблизить формулой прямоугольников со средней точкой, то получим

u (t  )  u (t )  u  t 


3
  O(  ).
2
Снова воспользовавшись дифференциальным уравнением (8.1), преобразуем последнее
выражение к виду
 

u (t  )  u (t )  f t  , u  t 
2


 
3
   O (  ).
2 
Соответствующий неявный метод имеет вид


 

u n1  u n  f t n  , u  t n   ;
2
2 


для его явной реализации можно воспользоваться следующей двухэтапной формулой:
u n1/ 2  u n 

2
f (t n , u n ),



u n1  u n  f  t n  , u n1/ 2  .
2


Методы Рунге–Кутты
Наиболее распространенными при численном решении обыкновенных
дифференциальных уравнений являются методы Рунге–Кутты. Их принято
представлять в следующей форме.
Определение. r-шаговый явный метод для численного решения задачи Коши для
обыкновенного дифференциального уравнения (1):
k1  f (t n , u n ),
k 2  f (t n   2 , u n   21k1 ),
k 3  f (t n   3 , u n   ( 31k1   32 k 2 )), …,
(4)
kr  f (tn   r , un   (r1k1 
 r ,r 1k2 )),
u n1  u n   ( 1k1     r k r ),
где k i — промежуточные вспомогательные величины.
Коэффициенты, определяющие конкретный метод, могут быть представлены в виде
таблицы Бутчера (табл. 8.1). Нулевые коэффициенты  ij , как правило, в таблице Бутчера
не указывают.
Таблица 8.1
0
2
3
 21
 31
 32
…
…
…
r
 r1
r 2
1
2
…
…
…
 rr 1
 r 1
r
Обычно также используют условие, предложенное Куттой без объяснений и не
являющееся обязательным:
 n    nj .
j
Получим простейшие методы Рунге–Кутты. Для этого введем погрешность
r


 (  )  u ( t   )  u ( t )    j k j 


j 0
и представим ее в виде разложения в ряд Маклорена
 ( ) 
p

( 0) i
i 0
i!
(  )
 р 1
 

( р 1)
(  )
( р  1)!

р 1
,
где

( р 1)
( р  1)!
— остаточный член ряда; 0    1.
Будем полагать (что можно сделать соответствующим выбором коэффициентов)
(0)  (0)     ( p ) (0)  0.
В таком случае разложение для () имеет более простой вид:
 ( ) 

( р 1)
(  )
( р  1)!
 р 1 ,
где р — порядок точности метода.
1. Пусть p  1, r  1. Тогда
( )  u (t  )  u (t )   1 f (t , u ),
отсюда
(0)  0,
(0)  [u (t  )  1 f (t , u )] t 0  f (t , u ) (1  1 ),
 (0)  u (t  ).
Видно, что условие (0)  0 выполняется лишь при 1  0, что соответствует методу
Эйлера, при этом
u (t  )  u (t )

 f (t , u ) 
 (t   )
2
  R ,
где R  — невязка, имеющая первый порядок малости по .
2. Рассмотрим более сложный случай: p  2, r  2. Тогда
()  u(t  )  u(t )  1 f (t , u)   2 f (t  2, u 21f (t , u)).
Вводя обозначения
~
t  t   2 ,
u~  u   21f (t , u ),
получим следующие выражения для производных погрешности  по аргументу :
()  u(t  )  1 f (t , u)   2 f (t , u)   2 [ 2 ft(t , u)  21 fu(t , u) f (t , u)],
~
~
()  u (t  )  2 2 [ 2 f t( t , u~)   21 f u ( t , u~) f (t , u )] 
2
 2 [ 22 ftt(t , u )  2 221 ftu(t , u ) f (t , u )  21
f uu (t , u ) f 2 (t , u )],
2
()  u(t  )  3 2 [ 22 ftt(t , u )  2 221 ftu(t , u ) f (t , u )  21
f uu (t , u) f (t , u)]  o( ).
Поставив в эти выражения следующие равенства:
u  f ,
u   f t  f u f ,
 f 2  f u u ,
u   f tt  2 f tu f  f uu
получим
(0)  (1  1   2 ) f (t , u ),
(0)  0,
(0)  (1  2  2  2 ) f t(t , u )  (1  2  2 21 ) f u (t , u ) f (t , u ),
(0)  (1  3 2 22 ) ftt(t , u )  (2  6 2 221 ) ftu(t , u ) f (t , u ) 
 (t , u ) f 2 (t , u )  f u (t , u ) u (t ).
 (1  3 2  221 ) f uu
Второе из полученных соотношений выполняется при 1   2  1, третье — при
1  2  2  2  0, 1  2  2 21  0.
Таким образом, имеется три алгебраических уравнения и четыре параметра. Эти
уравнения определяют однопараметрическое семейство схем. Задавая один из параметров,
можно получать различные методы Рунге–Кутты с аппроксимацией второго порядка. При
формально одинаковом порядке аппроксимации они будут обладать различными
свойствами (устойчивостью, реальной погрешностью).
Так, при  1  1 / 2, имеем  2  1 / 2,  2  1,  21  1; метод будет выглядеть следующим
образом:
u~n1  u n  f (t n , u n ),

u n1  u n  [ f (t n , u n )  f (t n1 , u~n1 )].
2
Положив 1  0, имеем  2  1,  2  1 / 2,  21  1 / 2; соответствующий метод будет:
u n1/ 2  u n 

2
f (t n , u n ),



u n1  u n  f  t n  , u n1/ 2 .
2


3. При p  2, r  3 получаем систему уравнений для коэффициентов:
 2   21 ,
 3   31   32 ,
 3 ( 3   2 )   32  2 ( 2  3 2 )  0,
 3 32  2  1 / 6,
 2  2   3  3  1 / 2,
 1   2   3  1,
имеющую бесконечное множество решений. Расчетные формулы одного из возможных
методов имеют вид
k 


k 2  f  t n  , u n  1 ,
2
2 

k1  f (t n , u n ),
k 3  f (t n  , u n  k1  2 k 2 ),
u n1  u n 
k1  4 k 2  k 3
6
.
В случае p  4, r  4 имеем двухпараметрическое семейство методов Рунге–Кутты, из
которого наиболее известен следующий «классический» метод:
k 


k 2  f  t n  , u n  1 ,
2
2 

k1  f (t n , u n ),
k 


k 3  f  t n  , u n  2 ,
2
2 

k 4  f (t n  , u n  k 3 ),
u n1  u n 
k1  2 k 2  2 k 3  k 4
6
.
В представлении Бутчера хорошо известные методы численного решения ОДУ выглядят
следующим образом. Метод Эйлера (первый порядок аппроксимации) табл. 8.2, метод
Эйлера с пересчетом (второй порядок аппроксимации) — табл. 8.3. Метод Хойна третьего
порядка аппроксимации — табл. 8.4. Метод Рунге–Кутты третьего порядка
аппроксимации — табл. 8.5.
Таблица 8.2
0
0
1
Таблица 8.3
0
1/
2
1/
2
0
1
Таблица 8.4
0
1/
3
2/
3
1/
3
0
2/
3
0
1/
4
3/
4
Таблица 8.5
0
1/
2
1
1/
2
0
1/
6
1
2/
3
1/
6
Download