Побудова явних методів Runge Kutta порядку 9 і вище


9

Деякі старі книги, які я бачив, говорять про те, що мінімальна кількість етапів явного методу Runge-Kutta визначеного порядку невідома для замовлень . Це все-таки правда?9

Які бібліотеки існують для автоматичної роботи з методами Runge-Kutta високого порядку?


Що ви маєте на увазі під "автоматичною роботою"?
Девід Кетчесон

@DavidKetcheson Генерування коефіцієнтів та вивчення їх властивостей. Я не можу уявити, що хтось отримав би метод високого порядку виключно вручну, враховуючи, скільки існує умов і змінних.
Кирило

Я не знаю жодного програмного забезпечення для створення таких коефіцієнтів. Я бачив високоякісні методи RK в Інтернеті, такі, як ті , розроблені Terry Feagin. Документ з описом процесу отримання коефіцієнтів для замовлення 10 знаходиться тут . Це не схоже, що автоматизований метод був би легко реалізований, і я сумніваюся, що вони існують. (Як зауваження, я ніколи не бачив РК порядку 9, завжди (7) 8 або (8) 10. Не впевнений, що існує і RK9!)
Етьєн Пеллегріні

(7) 8, (8) 9, (8) 10, (10) 12 і (12) 14 всі мають реалізацію в DifferrntialEquations.jl . Можна спробувати виправити купу проблем. Я дам детальну оцінку трохи.
Кріс Раккаукас

Зауважте, що вище 8-го порядку, як правило, не корисно в межах точності з плаваючою комою. Методи Вернера справді хороші, але FSAL легко використовувати лише до 6. У Феагіна немає інтерполяцій.
Chris Rackauckas

Відповіді:


14

Межі

Це все-таки вірно. У книзі М'ясника , сторінка 196, сказано наступне: У документі 1985 року М'ясник показав, що вам потрібно 11 етапів, щоб замовити 8 , і це гостро. Для порядку 10 Hairer вивів сім'ю 17-ступінчастих методів , але невідомо, чи можна зробити краще. Ця ж інформація наведена у розділі II.5 Hairer, Norsett, & Wanner vol. Я . Останнє посилання також проходить через деякі методики розробки пар високого порядку (до 8).

Існує верхня межа мінімальної кількості етапів, необхідних для будь-якого замовлення, оскільки ви можете сконструювати їх шляхом екстраполяції. Це було відомо дуже давно; див. цей останній мій документ для пояснення. Однак ця межа є квадратичною в порядку і, безумовно, досить песимістичною. Програмне забезпечення вузла, обговорене нижче, може генерувати точні коефіцієнти для цих методів, а також для відкладених методів корекції (які є методами Runge-Kutta) будь-якого порядку.

Я вважаю, що @Etienne вірно стверджує, що методи вищого порядку, які були побудовані вручну, пояснюються Террі Фейгіном. Щодо його іншого коментаря, цей документ містить дев'ять (8) пар:

Дж. Вернер, явні пари Runge-Kutta високого порядку з порядком низьких ступенів, Прикладна чисельна математика, Том 22, Випуски 1–3, листопад 1996 р., Сторінки 345-357

Ось таблиця (сукупна) кількість умов замовлення N необхідне для кожного замовлення p; ця таблиця йде далі, ніж наведена в літературі, і була виготовлена ​​за допомогою nodepy:

p | N
-----
1 | 1
2 | 2
3 | 4
4 | 8
5 | 17
6 | 37
7 | 85
8 | 200
9 | 486
10| 1205
11| 3047
12| 7813
13| 20300
14| 53264

Програмне забезпечення

Для методів дуже високого замовлення кількість та складність умов замовлення стає неможливим вручну впоратися. Деякі символьні пакети (принаймні, Mathematica) мають можливості для генерації умов замовлення Runge-Kutta. Напевно, є ще якісь пакети, але мені відомо наступне (про те, що я написав):

  • nodepy : пакет Python, який може генерувати символічні вирази та код для умов замовлення до довільного порядку. Він також включає код Python для перевірки цих умов, обчислення коефіцієнтів помилок тощо.
  • RK-Opt : пакет MATLAB, в якому, крім усього іншого, можна знайти методи Runge-Kutta високого порядку з коефіцієнтами, оптимізованими для кількох різних цілей. Наразі він не може обробити явний RK 9-го порядку (він підходить до 8-го порядку для методів етап-порядок-один, десятого порядку для методів з вищим ступеневим порядком). Якщо це те, що вас цікавить, я можу додати умови 9-го порядку (і вище) досить легко.

Ще одна цікава примітка щодо умов замовлення, що стає важливою при таких високих замовленнях, полягає в тому, що існують два способи їх отримання, і вони дають вам різні (але в сукупності еквівалентні) умови: один належить М'яснику, другий - Альбрехту .


5

@ Відповідь ДевідКетчесона вражає великі моменти: ви завжди можете побудувати методи достатньо високого порядку, використовуючи екстраполяцію, це дуже песимістичний зв’язок, і ви завжди можете зробити набагато краще, всі хороші отримані вручну (за допомогою комп’ютера інструменти алгебри), нижня межа не відома, і методи вищого порядку пояснюються Феагіном. З огляду на деякі коментарі, я хотів би завершити відповідь обговоренням сучасних сучасних таблиць у цій галузі.

Якщо ви хочете збірник таблиць RK, ви можете знайти його в цьому коді Джулії . Цитати для документа, з якого вони вийшли, містяться в документах для конструкторів таблиць. Документація розробника для DifferentialEquations.jl перераховує всі ці таблиці як доступні для використання , і ви можете побачити, що всі вони перевірені за допомогою пакетів безперервної інтеграції Travis і AppVeyor, щоб переконатися, що не тільки умови замовлення виконуються, але й вони насправді досягти запитуваної конвергенції (перевірка перевірки). З них видно, що є:

  • 5 порядку 9 методів
  • 6 замовлення 10 методів
  • 2 замовлення 12 методів
  • 1 замовлення 14 метод

(що я міг знайти, що були опубліковані). Знову ж таки, все вийшло вручну.

Тести на конвергенцію показують, що деякі з похідних не були здійснені з достатньо високою точністю для роботи для більш ніж 64-бітних чисел (вони коментуються так ). Тож це цікава примха, яку слід пам’ятати: при цих високих замовленнях ви зазвичай отримуєте лише коефіцієнти, які «на помилку x» задовольняють умовам замовлення, але, використовуючи довільну арифметичну точність, ви можете фактично виявити ці межі. Отже, точність, до якої ви здійснюєте коефіцієнти, має значення, і ви повинні вибрати її для того, щоб покрити точність, яку ви хочете перевірити (/ звичайно, використовувати).

Якщо ви хочете купу сюжетів стабільності, ви можете просто plot(tableau)скористатися рецептом Plots.jl. Хороший набір приміток, у яких багато цього записано, можна знайти на веб-сайті Пітера Стоуна (перейдіть нижче та натисніть скажімо на схему порядку 10, і ви отримаєте купу PDF-файлів). Розробляючи DifferentialEquations.jl, я створив цей набір таблиць, щоб систематично переглядати їх на тестові проблеми / переглядати аналітичні показники, щоб побачити, які з них слід включити до основної бібліотеки. Я зробив кілька швидких записок тут . Як видно з алгоритмів, що входять до основної бібліотеки, ті, які я вважав за цінні, - це методи Вернера та Фегіна. Метод замовлення Вернера 9-го порядку - це метод найвищого порядку, інтерполянт, який також відповідає. Це щось, що слід визнати: методи Feagin не мають відповідного інтерполянта (хоча ви можете завантажувати Hermite, але це дійсно неефективно).

Оскільки всі вони реалізовані з дуже ефективними реалізаціями, ви можете самі пограти з ними і подивитися, наскільки різні функції насправді мають значення. Ось ноутбук Юпітера, який показує використовувані методи Feagin . Зауважте, що графік конвергенції дійсно буде 1e-48помилковим. Методи високого замовлення лише ефективніші, ніж методи нижчого порядку, коли вам справді потрібна дуже низька толерантність. Деякі орієнтири, які використовують деякі з них, ви можете знайти на DiffEqBenchmarks.jl , хоча, коли вони використовуються, це звичайно метод Вернера 9-го порядку, і, як правило, показує, що тест не в режимі, де цей високий порядок є ефективним.

Отже, якщо ви хочете пограти і попрацювати з деякими методами високого порядку, RK-Opt - це те, що я знайшов, це гарний інструмент для виведення деяких (як згадував @DavidKetcheson), а DifferentialEquations.jl має всі опубліковані методи (я думаю? ) реалізовано так, що ви можете легко протестувати / орієнтуватись на них. Однак, якщо ви не знайдете припущення, яке можна відкинути, з моїх тестів я не зміг знайти те, що перемагає методи Вернера (замовлення 6-9) та Feagin (замовлення 10+). YMMV, хоча, і я хотів би дізнатися більше досліджень у цьому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.