Завершимо наше обговорення оротким викладом двох методів, які зазвичай приводяться в підручниках по чисельному аналізу. Один приклад метода предиктор:
(26а)
Передбучуване значення коодринати дозволить оприділити прискорення
Тоді, використовуючи
, отримаємо скоректироване значення vn+1 і xn+1коректор:
(26б)
Скоректироване значення xn+1 використовується для визначення нового передбачуваного значення аn+1 і, значить, нових передбачених значень vn+1 i xn+r Ця процедура повторяється до тих пір, доки передбачення і скоррективонане значення xn+1 відрізняються менше ніж на задану величину! Даний метод можна розробити на схемі більш високого порядку, які зв’язуються між собою не тільки xn+1 , xn і vn , але і так само значеннями vn-1 і vn-2. Замітимо, що метод предиктора-коректора не являється самостартуючим.
3. Метод Рунге-Кутта
Для пояснення методу Рунге-Кутта подивимось спочатку розв’язок диференціального рівняння першого порядку
(27)Метод Рунге-Кутти другого порядку для розв’язку рівняння (27) модна, використовуючи стандартні значення, записати наступним чином:
(28)Сенс формул (28) полягає у наступному: В методі Ейлера допускається, що для екстаполяції в наступну точку модна використовувати нахил кривої f(xn,yn)в точці (xn,yn) так чи однакше yn+1=yn+f(xn,yn)*∆x. Однак можна повисити почність оцінки нахилу, якщо методом Ейлера повести екстраполяцію в середню точку відрізку, а потім використати центральну похідну на всьому відрізку. Звідси оцінка нахилу в методі Рунге-Котти рівна
деЗастосування методу Рунге-Кутти до рівнянь руху Ньютона дає
(29)Оскільки методи Руиге-Кутти є такими, що самостартуючими, то їх часто використовують для вираховання декількох перших кроків для несамостартуючих алгоритмів.
4. Метод Рунге — Кутта 4-го порядку
Цей метод настільки широко розповсюджений, що його часто називають просто методом Рунге — Кутта.
Розглянемо задачу Коші для системи диференціальних рівнянь довільного порядку, що записується у векторній формі як:
Тоді значення невідомої функції в точці xn+1 обчислюється відносно значення в попередній точці xn по такій формулі:
де h— крок інтегрування, а коефіцієнти k n розраховуються наступним чином:
Це метод 4-го порядку, тобто похибка на кожному кроці становить O(h5), а сумарна похибка на кінцевому інтервалі інтегрування є величиною O(h4) .
Прямі методи Рунге — Кутта
Група прямих методів Рунге — Кутта є узагальненням методу Рунге — Кутти 4-го порядку. Воно задається формулами
де
Конкретний метод визначається числом s і коефіцієнтами bi,aij i ci . Ці коефіцієнти часто впорядковують в таблицю
0c2 a21
c3 a31 a32
∙ ∙ ∙ ∙
∙ ∙ ∙ ∙
∙ ∙ ∙ ∙
cs as1 as2 ∙ ∙ ∙ as,s − 1
b1 b2 bs − 1 bs
Для коефіцієнтів методу Рунге — Кутта мають справджуватись умови
Якщо ми хочемо, щоб метод мав порядок p, то варто так само забезпечити умову
— наближення, отримане по методу Рунге — Кутти. Після багаторазового диференціювання ця умова перетвориться в систему поліноміальних рівнянь на коефіцієнти методу.5. Неявні схеми Рунге-Кутта
Викладений тут алгоритм є неявна схема Рунге-Кутта четвертого порядку. У неї, як завжди, вбудована оцінка погрішності, яка дорівнює різниці відповідей четвертого і третього порядків точності, вычисленних по використаних точках. Іншими словами, в порівнянні з рекомендованим вище явним методом Рунге-Кутта п'ятого порядку, усі порядки в точності на одиницю менше. Нагадаємо, що в методі Рунге-Кутта п’ятого порядку використовується шість точок. У неявній схемі точок буде значно менше, оскільки для неявних схем зв'язок порядку точності з кількістю використаних точок не така, як для явних схем. Наприклад, як ми вже бачили, одноточкова неявна схема може мати другий порядок точності. У нашій неявній схемі четвертого порядку ми обійдемося всього-навсього трьома точками:
На перший погляд, слід спочатку вичислити матрицю
, а потім застосовувати її потрібну кількість разів до усім fj. Проте, як ми знаєм (див. частину I, розділ "Системи лінійних рівнянь"), це не є правильний спосіб рішення СЛР "про запас". Правильний спосіб рішення СЛР з цією матрицею раз і назавжди (для довільної правої частини) - це LU - розкладання матриці . При цьому матриця розкладається на ліву нижню трикутну матрицю L і праву верхню трикутну матрицю U. Після цього рішення будь-хто СЛР з матрицею будується за допомогою прямої підстановки (для матриці L) і потім зворотної підстановки (для матриці U). Кожна з підстановок вимагає N2 операцій. У нашому випадку має сенс скомбінувати праві частини усіх СЛР так, щоб кількість застосувань матриці (точніше, кількість СЛР, які потрібно вирішити) була мінімальною. Для цього досить ввести проміжні змінні . В результаті ми отримаємо наступний рецепт для одного кроку за часом t→t + h.Алгоритм:
Для поточної точки
обчислюванийКрім того, вираховуєм
Виконуємо LU - розкладання матриці А. (Це робиться один раз і назавжди для цього кроку за часом t→t + h).
За допомогою LU-розкладання обчислюємо
. Обчислюваний . Обчислювано . З допомогою LU - розкладання обчислюванийОбчислюємо
Обчислюваний
.За допомогою LU розкладання обчислюємо
За допомогою LU розкладання обчислюваний
Обчислюємо значення
:Обчислюємо погрішність