Смекни!
smekni.com

Деякі скінченно-різнецеві методи розвязування звичайних диференціальних рівнянь (стр. 2 из 6)

Завершимо наше обговорення оротким викладом двох методів, які зазвичай приводяться в підручниках по чисельному аналізу. Один приклад метода предиктор:

(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 . Ці коефіцієнти часто впорядковують в таблицю

0

c2 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 розкладання обчислюваний

Обчислюємо значення

:

Обчислюємо погрішність