Я хотел бы использовать метод 8-го порядка Рунге-Кутты (89) в приложении по небесной механике / астродинамике, написанном на C ++, на машине Windows. Поэтому мне интересно, знает ли кто-нибудь хорошую библиотеку / реализацию, которая документирована и бесплатна для использования? Это нормально, если он написан на C, если нет никаких проблем с компиляцией.
До сих пор я нашел эту библиотеку (mymathlib) . Код кажется нормальным, но я не нашел никакой информации о лицензировании.
Можете ли вы помочь мне, раскрывая некоторые альтернативы, которые вы, возможно, знаете и которые подойдут для моей проблемы?
РЕДАКТИРОВАТЬ:
я вижу, что на самом деле не так много исходных кодов C / C ++, как я ожидал. Поэтому версия Matlab / Octave тоже подойдет (все еще должна быть бесплатной для использования).
источник
Если вы занимаетесь небесной механикой в течение длительного времени, использование классического интегратора Рунге-Кутты не сохранит энергию. В этом случае лучше использовать симплектический интегратор. Boost.odeint также реализует симплектическую схему Рунге-Кутты 4-го порядка, которая будет работать лучше в течение длительных интервалов времени. Насколько я могу судить, GSL не реализует никаких симплектических методов.
источник
резюмируя некоторые моменты:
DP5
), когда вы смотрите на 4 цифры точности (хотя для этого допуски значительно ниже. Допуски являются лишь приблизительным критерием в любой проблеме). По мере того, как вы увеличиваете допуски, даже улучшение улучшается от метода РК высокого порядка, но вам, возможно, придется начать использовать числа с более высокой точностью.dop853
и DifferentialEquations.jlDP8
(которые совпадают). Последний метод 853 не может быть реализован в стандартной табличной версии метода Рунге-Кутты, поскольку его оценка ошибок является нестандартной. Но этот метод гораздо более эффективен, и я бы не рекомендовал даже использовать более старые методы Fehlberg 7/8 или DP 7/8.источник
Я хотел бы добавить, что хотя то, что Джефф Оксберри предлагает для долгосрочной интеграции (с использованием симплектических интеграторов), верно, в некоторых случаях это не сработает. Более конкретно, если у вас есть диссипативные силы, ваша система больше не сохраняет энергию, и поэтому вы не можете прибегнуть к симплектическим интеграторам в этом случае. Человек, задающий вопрос, говорил о низких околоземных орбитах, и такие орбиты демонстрируют большое атмосферное сопротивление, то есть диссипативную силу, которая препятствует использованию таких симплектических интеграторов.
В этом конкретном случае (а также в тех случаях, когда вы не можете использовать / не имеете доступа / не хотите использовать симплектические интеграторы), я бы рекомендовал использовать интегратор Bulirsch-Stoer, если вам нужна точность и эффективность в течение длительного периода времени. Он хорошо работает по опыту, а также рекомендуется в Числовых рецептах (Press et al., 2007).
источник
odex
не очень хорошо справляется . Так что, по крайней мере, для ODE 1-го порядка и для допусков>=1e-13
экстраполяция выглядит не очень хорошо, и обычно она даже не близка. Это соответствует требованию выше.