Как идентифицировать двойные звезды в моделировании NNN-тела?

Двойные звезды составляют значительную часть звезд шарового скопления.

Я хотел бы убедиться, что это правда в моем Н -тела, но я не знаю, как решить, является ли звезда в системе двойной.

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

Ответы (1)

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

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

Является ли это условие достаточно строгим? Что, если есть две звезды, расположенные не очень близко друг к другу, но каждая из которых движется медленно, поэтому их гравитационная потенциальная энергия мала (и отрицательна), но сумма их кинетических энергий может быть еще меньше по абсолютной величине. Во-вторых, как установить пороговое расстояние между звездами, ниже которого я должен проверять наличие двойных звезд.
@JoshuaBenabou Они связаны даже в вашем примере. Я думаю, вы могли бы начать с дроби числа Σ 1 / 2 , где Σ это массовая поверхностная плотность и посмотреть, как это работает. Измерьте число, увеличьте порог, снова измерьте число, снова увеличьте порог, пока не достигнете сходимости
если подумать: энергетическое состояние необходимо и достаточно, т.е. мне не нужно заботиться о расстоянии между слишком точками. Более того, с точки зрения программирования я не понимаю, как сначала проверка того, достаточно ли близко расстояние между двумя звездами, улучшит время вычислений: у меня есть список из n частиц, и чтобы проверить, связаны ли две частицы P и Q, если я проверю, достаточно ли они близки, это все еще операция. Другими словами, для вычисления количества двоичных файлов по-прежнему будет O (n ^ 2), верно?
@JoshuaBenabou Вы правы насчет первой части. Но можно поискать соседей в О ( бревно н ) , поэтому время выполнения будет значительно сокращено, если вы сначала позаботитесь об удаленных частицах (которые, вероятно, не связаны). Но опять же, если ваш н маленький, возможно, вы можете просто сделать О ( н 2 ) поиск и все
Мой n от 1000 до 10'000. О каком поиске o(log n) вы говорите?
Алгоритмы @JoshuaBenabou на основе дерева
Я реализовал алгоритм хижины Барнса, но я думаю, что было бы сложно интегрировать начальные вычисления в существующий код. Другой вариант — просто вычислить количество двоичных файлов каждые 100 временных шагов.