Налаштування орієнтиру
У програмному забезпеченні Julia DifferentialEquations.jl ми реалізували безліч методів вищого порядку, включаючи методи Feagin. Ви можете побачити це в нашому списку методів , а потім є багато інших, які ви можете використовувати як надані таблиці . Оскільки всі ці методи зібрані разом, ви можете легко орієнтуватися між ними. Тут ви можете побачити орієнтири, які в мене є в Інтернеті , і побачити, що дуже просто порівняти багато різних алгоритмів. Тож якщо ви хочете зайняти кілька хвилин, щоб запустити орієнтири, перейдіть до цього. Ось підсумок того, що виходить.
Перш за все важливо зазначити, що якщо ви подивитесь на кожен із орієнтирів, ви побачите, що наші DP5
(Порядок Дорманд-Принц 5) та DP8
методи швидші, ніж коди Хайрера Фортран ( dopri5
і dop853
), і тому ці реалізації дуже добре оптимізовані . Вони показують, що, як зазначається в іншій нитці, надмірне використання методів Дорманд-Прінса полягає в тому, що методи вже написані, а не тому, що вони все ще є найкращими. Таким чином, реальне порівняння між найбільш оптимізованими реалізаціями - це між методами Цітору, Вернером та методами Феагіна від DifferentialEquations.jl.
Результати
Як правило, методи замовлення, що перевищує 7, мають додаткову обчислювальну вартість, яка, як правило, не перевищує порядок, враховуючи вибрані допуски. Однією з причин цього є те, що вибір коефіцієнтів для методів нижчого порядку більш оптимізований (вони мають невеликі "принципові коефіцієнти помилок усікання", які важливіше, якщо ти не асимптотично малий). Ви можете бачити, що в багатьох проблемах, таких як методи Verner Efficient 6 і 7, дуже добре, але такі методи, як Verner Efficient 8, можуть мати менший нахил. Це тому, що "виграші" вищого порядку складаються при менших допусках, тому завжди існує допуск, де методи вищого порядку будуть більш ефективними.
Однак тоді питання, наскільки низький? У добре оптимізованій реалізації, це стає досить низьким з двох причин. Перша причина полягає в тому, що методи нижчого порядку реалізують щось, що називається FSAL (перший же, як і останній). Це властивість означає, що методи нижчого порядку повторно використовують оцінку функції з попереднього кроку на наступному кроці і, таким чином, фактично мають одну оцінку менш функцій. Якщо це використовувати правильно, то щось на зразок методу 5-го порядку (Ціторус або Дорманд-Прінс) насправді бере 5 оцінок функцій замість 6, які запропонували таблиці. Це справедливо і для методу Вернера 6.
Інша причина пов'язана з інтерполяціями. Однією з причин використовувати метод дуже високого порядку - робити менше кроків і просто інтерполювати проміжні значення. Однак, щоб отримати проміжні значення, інтерполяційній функції може знадобитися більше оцінок функції, ніж було використано для здійснення кроку. Якщо подивитися на методи Вернера, для отримання методу «Порядок 8» потрібно 8 додаткових оцінок функції для методу «Порядок 8». Багато разів методи низького порядку забезпечують "вільний" інтерполянт, наприклад, більшість методів 5-го порядку мають вільну інтерполяцію 4-го порядку (без додаткових оцінок функцій). Отже, це означає, що якщо вам потрібні проміжні значення (які вам знадобляться для хорошої ділянки, якщо ви використовуєте метод високого порядку), є деякі додаткові приховані витрати. Фактор у тому, що ці інтерпольовані значення дійсно важливі для обробки подій та вирішення диференціальних рівнянь затримки, і ви бачите, чому додаткові інтерполяційні фактори вартості в.
Отже, що про методи Feagin?
Тож ви побачите, що методи Feagin підозріло відсутні у орієнтирів. Вони прекрасні, тести на збіжність працюють на довільних числах точності тощо, але щоб насправді зробити їх добре, потрібно запитати про деякі досить абсурдно низькі допуски. Наприклад, я знайшов в неопублікованих тестах , що Feagin14
перевершує по Vern9
(9 - й порядку Вернера ефективного методу) при допусках подобається 1e-30
. Для додатків з хаотичною динамікою (як, наприклад, у Плейдесах чи проблемах з астрофізикою 3-х тіл), можливо, вам потрібна ця кількість точності через чутливу залежність (помилки в хаотичних системах швидко з'єднуються). Однак більшість людей, ймовірно, обчислюють цифри з плаваючою точкою подвійної точності, і я не знайшов орієнтиру, де вони перевершують цю область толерантності.
Крім того, не існує інтерполянта, який би поєднувався з методами Феагіна. Тож я просто покладу на них інтерполяцію Hermite третього порядку, щоб такий спосіб існував (і це працює напрочуд добре). Однак якщо немає стандартної інтерполяційної функції, ви можете виконати рекурсивний метод Герміта (використовуйте цю інтерполяцію, щоб отримати середину, потім зробити інтерполяцію 5-го порядку тощо), щоб отримати інтерполяцію високого порядку, але це дуже дорого і Інтерполяція не обов'язково має низький принцип помилки усікання (так що це добре лише тоді, коли dt
насправді мало, що є прямо протилежною справі, яку ми хочемо!). Тож якщо вам колись потрібна справді хороша інтерполяція, щоб відповідати вашій точності, вам потрібно хоча б повернутися до чогось подібного Vern9
.
Примітка про екстраполяцію
Зауважимо, що методи екстраполяції - це просто алгоритми для генерації методів Рунге-Кутти довільного порядку. Однак для свого замовлення вони роблять більше кроків, ніж необхідно, і мають високі принципові коефіцієнти помилок усікання, і тому вони не настільки ефективні, як добре оптимізований метод РК у заданому порядку. Але, враховуючи попередній аналіз, це означає, що існує область надзвичайно низької толерантності, де ці методи будуть краще, ніж "відомі" методи РК. Але в кожному етапі, який я пробігав, здається, що я не досяг такого низького рівня.
Примітка про стабільність
Вибір насправді не має нічого спільного з питаннями стабільності. Насправді, якщо ви пройдете через таблицю DifferentialEquations.jl (можна просто plot(tab)
для регіонів стабільності), ви побачите, що більшість методів мають підозріло подібні області стабільності. Це насправді вибір. Зазвичай при виведенні методів автор зазвичай виконує такі дії:
- Знайдіть найнижчі принципові похибки усікання (тобто коефіцієнти для умов наступного порядку)
- З урахуванням обмежень замовлення
- І зробіть область стабільності близькою до методу Орден Дорманд-Принц 5.
Чому остання умова? Отже, оскільки цей метод має тенденцію бути завжди стабільним у тому, як робиться вибір адаптивного ступінчастого керування, контрольованого PI, тому це хороший бар для областей стабільності "достатньо гарних". Тож не випадково всі регіони стабільності мають тенденцію бути подібними.
Висновок
У кожному виборі методу є компроміси. Методи РК найвищого порядку просто не настільки ефективні при менших допусках як тому, що складніше оптимізувати вибір коефіцієнтів, так і тому, що кількість сполук для оцінки функцій (і зростає навіть швидше, коли задіяні інтерполяції). Однак якщо толерантність стає достатньо низькою, вони виграють, але необхідні допуски можуть бути значно нижчими від "стандартних" застосувань (тобто реально застосовуються лише до хаотичних систем).