Некоторые старые книги, которые я видел, говорят, что минимальное количество этапов явного метода Рунге-Кутты указанного порядка неизвестно для заказов , Это все еще правда?
Какие есть библиотеки для автоматической работы с методами Рунге-Кутты высокого порядка?
ode
runge-kutta
Кирилл
источник
источник
Ответы:
Bounds
Это все еще правда. В книге Мясника , стр. 196, говорится следующее: В статье 1985 года Мясник показал, что вам нужно 11 этапов, чтобы получить 8-й порядок , и это очень точно. Для 10-го порядка Хайрер получил семейство 17-этапных методов , но неизвестно, можно ли добиться большего успеха. Та же информация приведена в разделе II.5 Hairer, Norsett, & Wanner vol. Я . В последнем документе также рассматриваются некоторые методы разработки пар высокого порядка (до 8-го порядка).
Существует верхняя граница минимального количества этапов, требуемых для любого заказа, так как вы можете построить их путем экстраполяции. Это было известно очень давно; см. мою недавнюю статью для объяснения. Однако эта граница является квадратичной по порядку и, безусловно, весьма пессимистичной. Программное обеспечение nodepy, рассмотренное ниже, может генерировать точные коэффициенты для этих методов, а также для методов отложенной коррекции (которые являются методами Рунге-Кутты) любого порядка.
Я считаю, что @Etienne правильно сказал, что методы высшего порядка, которые были созданы вручную, принадлежат Терри Феагину. Что касается его другого комментария, эта статья содержит около 9 (8) пар:
Вот таблица (совокупного) количества условий заказаN требуется для каждого заказа п ; эта таблица выходит за рамки представленных в литературе и была создана с использованием nodepy:
Програмное обеспечение
Для методов очень высокого порядка количество и сложность условий заказа становится невозможным для ручного решения. Некоторые символические пакеты (по крайней мере, Mathematica) имеют возможности для генерации условий заказа Рунге-Кутты. Вероятно, есть и другие пакеты, но я знаю следующее (оба из которых я написал):
Еще одно интересное замечание об условиях заказа, которое становится значимым при таких высоких заказах, состоит в том, что есть два способа их получения, и они дают вам различные (но все вместе эквивалентные) условия: один из-за Мясника, другой из- за Альбрехта .
источник
Ответ @ DavidKetcheson поражает важными моментами: вы всегда можете построить методы достаточно высокого порядка, используя экстраполяцию, это очень пессимистичный предел, и вы всегда можете сделать намного лучше, все хорошие получены вручную (с помощью какого-то компьютера). алгебраические инструменты), нижняя граница не известна, а методы высшего порядка принадлежат Феагину. Учитывая некоторые комментарии, я хотел бы завершить ответ обсуждением текущих современных таблиц в этой области.
Если вам нужен сборник таблиц РК, вы можете найти его в этом коде Юлии . Цитаты для бумаги, из которой они пришли, находятся в строках документации для конструкторов таблиц. Документация разработчика для DifferentialEquations.jl перечисляет все эти таблицы как доступные для использования , и вы можете увидеть здесь, что все они протестированы с использованием комплектов непрерывной интеграции Travis и AppVeyor, чтобы убедиться, что выполняются не только условия заказа, но и фактически добиться требуемой конвергенции (проверочное тестирование). Из них вы можете видеть, что есть:
(что я мог найти, что были опубликованы). Опять все выведено вручную.
Тесты сходимости показывают, что некоторые деривации не были выполнены с достаточно высокой точностью, чтобы работать для более чем 64-битных чисел (они прокомментированы следующим образом ). Так что это интересная особенность, о которой следует знать: при этих высоких порядках вы обычно получаете только коэффициенты, которые «с ошибкой
x
» удовлетворяют условиям порядка, но при использовании арифметики произвольной точности вы можете фактически обнаружить эти границы. Так что точность, с которой вы выполняете коэффициенты, имеет значение, и вы должны выбрать ее, чтобы охватить точность, которую вы хотите проверить (/ конечно, использовать).Если вам нужна куча графиков стабильности, вы можете просто
plot(tableau)
использовать рецепт Plots.jl. Хороший набор заметок, в которых много всего записано, можно найти на веб-сайте Питера Стоуна (перейдите ниже и нажмите, скажем, схемы порядка 10, и вы получите кучу PDF-файлов). При разработке DifferentialEquations.jl я создал этот набор таблиц, чтобы систематически проходить их по тестовым задачам / анализировать аналитические индикаторы, чтобы увидеть, какие из них следует включить в основную библиотеку. Я сделал несколько быстрых заметок здесь . Как видно из алгоритмов, входящих в основную библиотекуте, которые я нашел достойными, были методы Вернера и Феагина. Метод 9-го порядка Вернера является методом наивысшего порядка с интерполяцией, также совпадающим с порядком. Это то, что нужно признать: методы Feagin не имеют совпадающего интерполятора (хотя вы можете загрузить Hermite, но это действительно неэффективно).Поскольку все они реализованы с очень эффективными реализациями, вы можете сами поиграть с ними и посмотреть, насколько действительно важны различные функции. Вот блокнот Jupyter, в котором показаны используемые методы Feagin . Обратите внимание, что график конвергенции действительно идет на
1e-48
ошибку. Методы высокого порядка более эффективны, чем методы низкого порядка, когда вам действительно нужен очень низкий допуск. Вы можете найти некоторые тесты, которые используют некоторые из них, в DiffEqBenchmarks.jl , хотя, когда они используются, это, как правило, метод Вернера 9-го порядка, и обычно показывающий, что тест не находится в режиме, где эффективен этот высокий порядок.Так что, если вы хотите поиграть и поработать с некоторыми методами высокого порядка, RK-Opt - это то, что я нашел, является хорошим инструментом для получения некоторых (как упомянуто @DavidKetcheson), а у DifferentialEquations.jl есть все опубликованные методы (я думаю? ) реализовано так, что вы можете легко проверить / сравниться с ними. Однако, если вы не найдете предположение, которое может быть отброшено, из моих тестов я не смог найти что-то, что превосходит методы Вернера (порядки 6-9) и Феагина (порядки 10+). YMMV, хотя, и я хотел бы видеть больше исследования в этом.
источник