main (1160440), страница 20
Текст из файла (страница 20)
Рассмотрим теперь двухэтапную разностную схему Рунге–Кутта (схему «предиктор–корректор»). В данной разностной схеме вводятся дополнительные точки, так называемыеполуцелые слои:+ 1 = + 0.5, ∈ Z+ .2Нахождение численного решения данной разностной схемы в каждой следующей точке +1производится в два этапа: −→ + 1 −→ +1 .2Выполним первый этап («предиктор») по схеме Эйлера:+ 1 − 20.5= ( , ).(6)Рассмотрим второй этап («корректор»):+1 − = (+ 1 , + 1 ),22(7)где 0 = 0 , ∈ Z+ . Отсюда следует, что+1 = + (+ 1 , + 0.5 ( , )).(8)2Далее будет показано, что эта двухэтапная разностная схема имеет второй порядок точности по .118Глава 5. Методы решения ОДУ и систем ОДУОценка погрешности общего двухэтапного метода Рунге–Кутта.Рассмотрим общий вид двухэтапного метода Рунге–Кутта:⎧+1 − ⎪= 1 1 + 2 2 , ∈ Z+⎪⎨0 = 0 ,⎪⎪⎩1 = ( , ), 2 = ( + 2 , + 21 ( , )),(9)где 1 , 2 , 2 , 21 ∈ R — некоторые числа, от выбора которых зависит как погрешность аппроксимации, так и точность численного решения.Подставим значения 1 и 2 в первое уравнение системы (9):+1 − = 1 ( , ) + 2 ( + 2 , + 21 ( , )).Тогда можем записать погрешность аппроксимации разностной схемы (9) на решении задачи (3): = −+1 − + 1 ( , ) + 2 ( + 2 , + 21 ( , )) .(10)Разложим +1 в ряд Тейлора в окрестности точки ( , ):(︀ )︀+1 − = ′ + ′′ + O 2 .2Далее разложим ( + 2 , + 21 ) в окрестности точки ( , ): ( + 2 , + 21 ( , )) = ( , ) + 2 (︀ )︀+ 21 + O 2 .Заметим, что =′′(︂)︂= +.
( , ), погрешность аппроксимации принимает вид:(︂)︂(︀ )︀ ′ = − − 0.5+ + O 2 + 1 ( , )+)︂(︂(︀ )︀+ 21 + O 2 .+2 ( , ) + 2Тогда, с учетом того, что =Сгруппируем слагаемые следующим образом:)︂(︂(︀ )︀+ (21 2 − 0.5) + O 2 . = −′ + (1 + 2 ) ( , ) + (2 2 − 0.5)Чтобы получить оценку погрешности аппроксимации со вторым порядком по , необходимо избавиться от слагаемых, содержащих в первой степени. Для этого потребуемвыполнение следующих условий:1. 1 + 2 = 1 (это условие называется условием аппроксимации).2. 2 2 = 2 21 = 0.5.§1. Постановка задачи Коши и численные методы ее решения119Тогда погрешность аппроксимации этого метода имеет второй порядок малости по :(︀ )︀ = O 2 .В записи общего метода Рунге–Кутта используется большое количество параметров,что обеспечивает широту класса описываемых этим методом разностных схем. Однако вдвухэтапном методе Рунге–Кутта не имеет смысла пользоваться двумя параметрами 1и 2 , так наилучшая оценка погрешности метода достигается при 1 + 2 = 1, поэтому,как правило, в двухэтапном методе Рунге–Кутта выбирают один параметр = 2 , тогда1 = 1 − .
Если положить = 2 = 12 , то двухэтапный метод Рунге–Кутта запишется,как однопараметрическое по семейство разностных схем вида:+1 − = (1 − )1 + 2 ,где 1 = ( , ), 2 = ( + , + ( , )).Пример. Рассмотрим примеры разностных схем, являющихся частными случаями общегодвухэтапного метода Рунге–Кутта.1. При = 1, = 2 = 0.5, = 21 = 0.5 мы получим схему Рунге–Кутта «предиктор–(︀ )︀корректор» (8), которую мы уже рассматривали. Точность этой схемы равна O 2 .2.
Если положить = 0.5, = 1, = 1, то мы получим симметричную разностнуюсхему:⎧⎨ +1 − = 0.5 ( ( , ) + ( ∈ Z+ +1 , +1 )) ,(11)⎩ = .00Эта разностная схема является очень эффективной, имеет второй порядок точностипо и является наилучшей для интегрирования жестких систем ОДУ (с понятиемжестких систем мы познакомимся в одном из следующих параграфов).Оценка точности на примере двухэтапного метода Рунге–Кутта.Выпишем еще раз разностную схему, описывающую общий двухэтапный метод Рунге–Кутта:⎧⎨ +1 − = (1 − ) ( , ) + ( + , + ( , )), ∈ Z +(12)⎩ = .00Введем погрешность разностной схемы (12): = − , ∈ Z.Подставим выражение для погрешности в разностную схему (12) и получим задачу длянахождения функции :⎧⎨ +1 − = (1 − ) + ( + , + ) − +1 − , ∈ Z+(13)⎩ = 0,0где = ( , ).120Глава 5.
Методы решения ОДУ и систем ОДУДля доказательства сходимости решения разностной схемы (12) к решению исходнойзадачи Коши (3) достаточно показать, чтоlim | | = 0.→∞Покажем, что | | 6 | |, ∈ Z+ , где константа не зависит от шага , — погрешность аппроксимации на решении исходной задачи (3): = −+1 − + (1 − ) ( , ) + ( + , + ( , )).Перепишем задачу (13) в эквивалентном виде, сформировав погрешность аппроксимациипутем добавления недостающих слагаемых:+1 − +1 − =−+ (1 − ) ( , )+ ( + , + ( , ))++(1 − )( ( , )− ( , ))+(︀)︀+ ( + , + ( , ))− ( + , + ( , )) =(2)= + (1) + ,где(1) = (1 − )( ( , )− ( , )),)︀(2) = ( + , + ( , ))− ( + , + ( , )) .(︀Пусть функция (, ) удовлетворяет условию Липшица по второму аргументу с константой > 0:| (, ) − (, )| 6 | − |, (, ), (, ) ∈ .Замечание.
Требование липшицевости функции (, ) естественно, так как являетсяусловием того, что решение исходной задачи (3) существует и единственно.Как правило, на практике выбирают 0 6 6 1, > 0. Воспользуемся этими условиями(1)(2)и оценим выражения и :|(1) | = (1 − )| ( , ) − ( , )| 6 (1 − )| − | = (1 − )| |,|(2) | 6 | + ( , ) − − ( , )| 6(︀)︀6 | − | + | ( , ) − ( , )| 6 (| | + | |) =(1 + )| |.(1)(2)Пусть 6 0.5.
Оценим сумму | | + | |:(2)2|(1) | + | | 6 (1 − )| | + (1 + )| | = | | + | | 6 (1 + 0.5 )| |.(1)(2)Приступим к получению оценки точности. Так как ( , ) = + + , то получаем(2)2 2|+1 | 6 | | + | | + (|(1) | + | |) = (1 + + 0.5 )| | + | |.Заметим, что слагаемые в сумме (1+ +0.5 2 2 ) являются первыми членами разложенияфункции по формуле Тейлора по переменной в окрестности нуля. Следовательно,(1 + + 0.5 2 2 ) 6 .Тогда|+1 | 6 | | + | |.§2.
Общий -этапный метод Рунге–Кутта121Введем обозначение = . Тогда|+1 | 6 | | + | |, ∈ Z+ .(14)Раскроем полученное рекуррентное соотношение:|+1 | 6 +1 |0 | + ∑︁− | |.=0Так как 0 = 0, то получаем:|+1 | 6 max | | .066(15)Учтем, что 6 , тогда:|+1 | 6 max | |,066где константа = > 0 не зависит от . Заметим, чтоlim |+1 | = 0, →0так как | | 6 1 ( 2 ) по доказанному выше. Тогда при достаточно малых получаем:(︀ )︀|+1 | = O 2 .Это означает, что рассматриваемый общий двухэтапный метод Рунге–Кутта при выполнении соответствующих условий имеет квадратичную точность по , совпадающую с оценкойпогрешности аппроксимации на решении исходного уравнения (3).§2Общий -этапный метод Рунге–КуттаРассмотрим задачу Коши для нелинейного обыкновенного дифференциального уравненияпервого порядка:⎧⎨ = (, ()), > 0(1)⎩(0) = ,0где функции () и (, ) обладают достаточной гладкостью в соответствующих областях.Считаем, решение () существует и единственно.Введем равномерную сетку в области > 0 с шагом > 0: = { = , > 0, ∈ Z+ }.Рассмотрим сеточную функцию = ( ), заданную на сетке .
Пусть значения этойфункции в узлах сетки приближают значения = ( ). Обозначим = ( , ).Общая идея -этапного метода Рунге–Кутта заключается в том, что для вычислениязначения приближенного решения в каждой следующей точке +1 вводятся дополнительных этапов. Промежуточные значения на каждом шаге ∈ Z+ вычисляются по следующим формулам:1 = ( , ),2 = ( + 2 , + 21 1 ),3 = ( + 3 , + 31 1 + 32 2 ),... = ( + , + 1 1 + 2 2 + . .
. + −1 −1 ).122Глава 5. Методы решения ОДУ и систем ОДУПри этом разностная схема для исходной задачи (1) имеет вид⎧⎨ +1 − = + + . . . + 1 12 2 ⎩ = , ∈ Z ,00+(2)где 1 , 2 , . . . , ∈ R.Будем также считать, что выполнено следующее условие аппроксимации, без которогорассмотрение метода не имеет смысла:∑︁ = 1.=1Замечание.
Заметим, что формулы -этапного метода Рунге–Кутта достаточно громоздки. Это является одной из причин того, что на практике редко используются методы Рунге–Кутта для > 4.Приведем примеры трех- и четырех- этапных методов Рунге–Кутта, имеющих третийи четвертый порядок точности соответственно.Пример 1. = 3:+1 − 1= (1 + 42 + 3 ),6где1 = ( , ),2 = ( + 0.5, + 0.5 1 ),3 = ( + , − 1 + 2 2 ).Данная схема имеет третий порядок точности по .Пример 2.
= 4:+1 − 1= (1 + 22 + 23 + 4 ),6где1 = ( , ),2 = ( + 0.5, + 0.5 1 ),3 = ( + 0.5, + 0.5 2 ),4 = ( + , + 3 ).Данная схема имеет четвертый порядок точности по .§3Многошаговые разностные методыРассмотрим задачу Коши для нелинейного обыкновенного дифференциального уравненияпервого порядка:⎧⎨ = (, ()), > 0,(1)⎩(0) = ,0где функции () и (, ) обладают достаточной гладкостью.
Считаем, что решение ()существует и единственно.Введем равномерную сетку в области > 0 с шагом > 0: = { = , > 0, ∈ Z+ }.Рассмотрим сеточную функцию = ( ), заданную на сетке . Пусть значения этойфункции в узлах сетки приближают значения = ( ).