Адаптивный явный метод Рунге-Кутты 2-го порядка на GSL

Есть ли в GSL встроенная явная схема Рунге-Кутты второго порядка? Я знаю, что функция gsl_odeiv2_step_rk2 - это явный встроенный метод Runge-Kutta (2, 3), который сходится к схеме 3-го порядка для всех выполненных мною тестов.

Может ли кто-нибудь подтвердить (или исправить) меня по этому поводу, пожалуйста?

Также может ли кто-нибудь указать мне на ЯВНЫЙ тип шага RK 2-го порядка в GSL для использования с адаптивным управлением шагом?


person Samyukta Venkat    schedule 15.07.2020    source источник
comment
По сути, это был бы метод Эйлера с экстраполяцией Ричардсона (который, по сути, дает метод объяснения средней точки). Или используйте непосредственно метод Хойна в качестве метода второго порядка, где контроллер размера шага основан на шаге Эйлера первого порядка в качестве встроенного метода. Такая оценка ошибок в этих младших разрядах очень нестабильна и на самом деле не стоит усилий. Я пробовал первый в stackoverflow.com/a/49320327/3088138, я не уверен, насколько вообще полезны параметры контроллер есть.   -  person Lutz Lehmann    schedule 15.07.2020
comment
Спасибо @LutzLehmann. Я действительно надеялся, что в GSL может быть уже существующий тип ступеней. Я сам уже закодировал схему второго порядка, поэтому, если ее нет в GSL, я могу ее использовать! Я хотел использовать его для сравнения адаптивных неявных и явных схем второго порядка для различных задач.   -  person Samyukta Venkat    schedule 15.07.2020
comment
Согласно stochasticlifestyle.com/ набор решателей gsl, мягко говоря, не оптимален. Boost-odeint немного лучше. Поскольку этот анализ относится к 2017 году, все может измениться, но я ожидаю, что библиотека boost будет развиваться более активно.   -  person Lutz Lehmann    schedule 15.07.2020
comment
@LutzLehmann На самом деле я довольно часто использовал степпер Boost-odient Custom RK. Исходный код для всех степперов доступен, и мы можем очень легко их настроить. Это очень удобная и настраиваемая библиотека!   -  person Samyukta Venkat    schedule 16.07.2020


Ответы (1)


Да, gsl_odeiv2_step_rk2 использует метод Рунге-Кутты 3-го порядка, который содержит явный метод средней точки в качестве встроенного метода. Подобные расширения существуют для метода Heun и метода Ralston, см. Страницу методов 3-го порядка в https://www.math.auckland.ac.nz/%7Ebutcher/ODE-book-2008/Tutorials/low-order-RK.pdf

Реализация GSL использует вариант экстраполяции, который является неправильной реализацией основной идеи, лежащей в основе управления размером шага. Эта основная идея заключается в том, что ошибка метода оценивается с помощью оценки с использованием метода более высокого порядка, а затем размер шага адаптируется так, чтобы асимптотически оцененная ошибка сходилась к запрошенному уровню ошибки. Таким образом, правильный способ реализовать это - использовать обновление средней точки 2-го порядка, а не обновление 3-го порядка.

Или, другими словами, с вариантом экстраполяции, хотя он использует метод более высокого порядка и, таким образом, дает в целом более низкую ошибку, нет нижней границы фактической ошибки относительно допусков ошибок, и в связи с этим нет никаких гарантий что шаги выполняются оптимально для порядка метода и запрошенного уровня ошибки.

person Lutz Lehmann    schedule 20.07.2020