Деякі скінченно-різнецеві методи розв’язування звичайних диференціальних рівнянь
Курсовой проект - Математика и статистика
Другие курсовые по предмету Математика и статистика
•
csas1as2 • • •as,s ? 1
b1b2bs ? 1bs
Для коефіцієнтів методу Рунге Кутта мають справджуватись умови
Якщо ми хочемо, щоб метод мав порядок p, то варто так само забезпечити умову наближення, отримане по методу Рунге Кутти. Після багаторазового диференціювання ця умова перетвориться в систему поліноміальних рівнянь на коефіцієнти методу.
5. Неявні схеми Рунге-Кутта
Викладений тут алгоритм є неявна схема Рунге-Кутта четвертого порядку. У неї, як завжди, вбудована оцінка погрішності, яка дорівнює різниці відповідей четвертого і третього порядків точності, вычисленних по використаних точках. Іншими словами, в порівнянні з рекомендованим вище явним методом Рунге-Кутта пятого порядку, усі порядки в точності на одиницю менше. Нагадаємо, що в методі Рунге-Кутта пятого порядку використовується шість точок. У неявній схемі точок буде значно менше, оскільки для неявних схем звязок порядку точності з кількістю використаних точок не така, як для явних схем. Наприклад, як ми вже бачили, одноточкова неявна схема може мати другий порядок точності. У нашій неявній схемі четвертого порядку ми обійдемося всього-навсього трьома точками:
На перший погляд, слід спочатку вичислити матрицю , а потім застосовувати її потрібну кількість разів до усім fj. Проте, як ми знаєм (див. частину I, розділ "Системи лінійних рівнянь"), це не є правильний спосіб рішення СЛР "про запас". Правильний спосіб рішення СЛР з цією матрицею раз і назавжди (для довільної правої частини) - це LU - розкладання матриці . При цьому матриця розкладається на ліву нижню трикутну матрицю L і праву верхню трикутну матрицю U. Після цього рішення будь-хто СЛР з матрицею будується за допомогою прямої підстановки (для матриці L) і потім зворотної підстановки (для матриці U). Кожна з підстановок вимагає N2 операцій. У нашому випадку має сенс скомбінувати праві частини усіх СЛР так, щоб кількість застосувань матриці (точніше, кількість СЛР, які потрібно вирішити) була мінімальною. Для цього досить ввести проміжні змінні . В результаті ми отримаємо наступний рецепт для одного кроку за часом t>t + h.
Алгоритм:
Для поточної точки обчислюваний
Крім того, вираховуєм
Виконуємо LU - розкладання матриці А. (Це робиться один раз і назавжди для цього кроку за часом t>t + h).
За допомогою LU-розкладання обчислюємо . Обчислюваний . Обчислювано . З допомогою LU - розкладання обчислюваний
Обчислюємо
Обчислюваний .
За допомогою LU розкладання обчислюємо
За допомогою LU розкладання обчислюваний
Обчислюємо значення :
Обчислюємо погрішність
- Перетворюємо вектор Е на одне число є, що характеризує погрішність на цьому кроці.
Ця схема призводить до досить забавної поведінки "швидких" змінних. Поведінка виявляється абсолютно однаковою як у разі релаксаційного рівняння , так і у разі осциляторного рівняння . Саме, при Ch>>1 "швидкі" змінні експоненциально вибуваєть, причому швидкість вибування абсолютно не залежить від величини C: x(t+h)=x(t)/3. Отже стійкість гарантована, але сподіватися на правильний опис еволюції "швидких" змінних не доводиться.
Повний алгоритм рішення системи ОДУ з адаптивною зміною кроку будується на основі цього рецепту таким самим чином, як будувався повний алгоритм в звичайному (явному) методі Рунге-Кутта пятого по-рядка. Єдина модифікація полягає в тому, що міри "1/4" і "1 /5", відповідна пятому порядку точність явної схеми, належить замінити на мірі "1/3" і "1/4", відповідна четвертому порядку точність неявної схеми.
Необхідно також нагадати, що для "жорсткої" системи ОДР перетворити вектор Е в одне число 6, що оцінює погрішність, набагато важче, чим для звичайної системи ОДР.
6. Неявні інтерполяційні схеми
Алгоритм неявних інтерполяційних методів дослівно повторює алгоритм звичайних (явних) інтерполяційних методів. Єдина відмінність полягає в тому, що ми не використовуємо звичайну (явну) схему Рунге-Кутта другого порядку:
Ми заміняємо її на неявну схему Рунге-Кутта другого порядку:
Нагадаємо, що для цієї схеми можна використовувати два різних рецепта:
- шукати точне рішення цієї системи нелінійних рівнянь методом Ньютона;
- обмежитися лінеаризованим рівнянням, тобто зробити тільки перший крок методу Ньютона :
У будь-якому випадку доведеться вирішувати СЛР. В більшості випадків можна обійтись другим варіантом, але в дуже нестійких завданнях доведеться вдатися до першого (до речі, при цьому не доведеться сильно міняти текст програми).
Нагадаємо, що існують варіанти інтерполяційного методу з фіксованим кроком Н і змінним порядком m, з фіксованому порядку те і змінним кроком Н і, нарешті, із змінними m і Н. Тут можна привечти тільки простий алгоритм з фіксованим H.
Алгоритм:
Вибираємо постійний крок H за часом (як правило слід брати H близько 0.2). Рухаємося по траєкторії з цим кроком. Кожен окремий крок реалізується так:
Для k = 1,2,.. виконуємо наступне:
Для чергового Nk з набору {4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128} обчислюємо крок hk = H/Nk.
За допомогою цього кроку hk знаходимо
тут tn = t+nhk, n = 0.. N