Этот вопрос касается методов расчета орбит.
В сообщении Github о динамической стабильности модифицированной системы Jool Principia (цитируется в этом ответе ) говорится:
Principia вычисляет траектории небесных тел путем интегрирования уравнений движения1; в результате, если система нестабильна, она может сломаться в игре. На самом деле это случай стандартной системы: в то время как особенности зависят от того, как кеплеровы орбитальные элементы KSP переводятся в декартово начальное состояние, с интерпретацией Principia как иерархических элементов Якоби , система Jool ломается в течение 19 дней при близком столкновении. между Валлом и Лейси.
Согласно Википедии :
В векторном исчислении матрица Якоби вектор-функции от нескольких переменных является матрицей всех ее частных производных первого порядка. Когда эта матрица является квадратной, то есть когда функция принимает в качестве входных данных то же количество переменных, что и количество векторных компонентов ее выходных данных, ее определитель называется определителем Якоби. И матрицу, и (если применимо) определитель часто называют в литературе просто якобианом.
Когда я выполняю численное интегрирование для проблем, с которыми я сейчас сталкиваюсь, я использовал старый scipy.integrate.odeint , но переключаюсь на scipy.integrate.solve_ivp , и последний говорит:
Параметры: fun callable: правая сторона системы. Подпись вызова — fun(t, y). Здесь t — скаляр, и есть два варианта для ndarray y: он может иметь форму (n,); тогда fun должен вернуть array_like с формой (n,). В качестве альтернативы он может иметь форму (n, k); тогда fun должен вернуть array_like формы (n, k), т. е. каждый столбец соответствует одному столбцу в y. Выбор между двумя вариантами определяется векторизованным аргументом (см. ниже). Векторизованная реализация позволяет более быструю аппроксимацию якобиана конечными разностями (требуется для жестких решателей) .
обновление: я думаю, что это может быть подсказкой; иерархическая система может быть полезна при оценке взаимодействий между объектами, которые меняются обратно пропорционально квадрату расстояния; вы можете захотеть оценить взаимодействие только тогда, когда вращающиеся тела проходят близко друг к другу.
Сам я никогда не использовал якобиан, но хотел бы понять это побольше.
В документе центральным вопросом является жесткость задачи при близком сближении.
Матрица, показанная в определении Википедии, выглядит плоской, а не иерархической:
или, как предлагает статья, куча транспонированных градиентов.
Вопрос: Что именно означает «интерпретация численного симулятора n тел как иерархических элементов Якоби»? Как можно использовать какую-то иерархию в якобиане, используемом решателем задач с n телами; этот или что-то похожее?
Будет ли это использоваться в случае роя или созвездия малых спутников Земли, гравитационное взаимодействие которых не учитывается, или тела должны каким-то образом взаимодействовать друг с другом (гравитационно или реактивно), прежде чем указанная иерархия будет иметь какую-либо пользу?
Я оставляю за собой право ошибаться в этом вопросе! Тем не менее, я добавляю это в ответ, а не в комментарий, потому что надеюсь, что это может стать трамплином для надежного ответа сообщества.
Я очень сомневаюсь, что текст, выделенный жирным шрифтом, относится к матрице Якоби (предположительно содержащей все парциальные части первого порядка всех системных переменных друг против друга). Скорее, учитывая, что они говорят, что преобразуют определение KSP того, где небесные тела находятся в эпоху (предоставленное в кеплеровских элементах), в декартову форму, я ожидаю, что они затем определят систему в иерархии координат Якоби, в которой положения координируются относительно барицентра системы из n тел для малых n. (В выделенном жирным шрифтом тексте авторы используют термин «элементы Якоби», с которым я раньше не сталкивался, но в других местах документации они используют более стандартные «координаты Якоби»)
Я не уверен, является ли эта иерархия жестко закодированной или назначается динамически, но в любом случае я подозреваю, что она используется в первую очередь для уменьшения ошибки с плавающей запятой в вычислениях положения между близкими объектами. В отличие от того, что предлагают некоторые комментарии, это не означает, что Principia аппроксимирует гравитацию n тел, позволяя взаимодействовать только ближайшим массам - опять же (я подозреваю), это исключительно метод для координации тел при смягчении ошибки с плавающей запятой в относительной позиции.
Для точного ответа я предлагаю связаться с одним из Леруа либо через Github, либо в этом разногласии , в котором происходит обсуждение разработки Principia (меня там больше нет, но яйцо всегда любезно отвечало на мои вопросы об их числовых значениях). методы). Пожалуйста, поделитесь с SE тем, что вы найдете!
Рассел Борогов
ооо
КрисР
ооо
Джон Кастер
КрисР