2013-04-24 4 views
0

У меня есть вопрос. У меня есть N объектов и N x N матрица M. Каждая запись M (i, j) содержит (своего рода) относительную гравитационную силу, указывающую, насколько сильно я тяну j к ней (или наоборот отталкиваю ее от нее). Я хочу поместить эти N объектов на двумерной плоскости R x R, назначив координату каждому объекту.Как преобразовать относительную гравитационную силу в координаты

Есть ли алгоритм/метод, который это делает? Должны быть некоторые общие методы, используемые в астрофизике, физике, химии и т. Д. Благодарим за помощь.

+0

Какая у вас координата? –

+0

Что-то мешает вам просто помещать объекты случайным образом или произвольно? Например, вы ищете место, которое статически или динамически стабильно? –

+0

Если вы пытаетесь выполнить гравитационное моделирование, то это называется проблемой n-тела или симуляцией n-тела; даже в 2-й он, вероятно, не будет иметь аналитического решения, если n больше 2. В статье [N-body simulation] (http://en.wikipedia.org/wiki/N-body_simulation) в Википедии обсуждается, как для получения/реализации численного решения проблемы. –

ответ

0

Вы заинтересованы в назначении координат (xi, yi, zi) и массы (mi) для каждого объекта, чтобы гравитационная сила была последовательной, так?

Рассмотрите 8 пунктов за раз. Вы имеете в общей сложности 32 неизвестных и 28 уравнений. Вы можете предположить, что первая точка находится в начале координат и вторая точка по оси x. Это означает, что у вас будет 28 неизвестных и 28 уравнений.

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

=== Пошаговое ===

Рассмотрим вы получаете п точек измерений D. У вас есть только расстояния между точками, но не координаты. Цель состоит в том, чтобы найти координаты для каждой точки.

Если D = 1, вам нужно учитывать только две (+1) точки за раз. Поместите первую точку в начало. Поместите вторую точку на положительную сторону начала координат. Вы можете разместить третью точку относительно происхождения, но поместите ее справа или слева от нее в зависимости от расстояния до первой точки и т. Д.

Если D = 2, укажите точку 1 в точке происхождения, укажите на положительное сторона на оси х, третья точка на положительной стороне оси y в зависимости от расстояния. Начиная с четвертого пункта, вы можете использовать любые две размещенные точки для размещения следующего и использовать любую другую точку для уточнения опций (будут два варианта).

Аналогично D = 3. Поместите первые три точки на плоскость ху (z = 0) для всех трех. Затем поместите четвертую точку в постильную часть z axist. И так далее.

Возвращаясь к гравитации: Ваша проблема сложна, потому что вы не можете точно разместить массу в начале координат. Таким образом, вам понадобится более 5 баллов для их размещения. Как я показал выше, вам нужно не более 8 баллов.

В случае, если ваша масса равна, вы можете рассчитать расстояние (~ инверсия силы тяжести) и применить случай, когда D = 3.

+0

Можно предположить, что первая точка находится в начале координат, вторая точка по оси x, третья точка имеет z = 0. –

+0

@EgorSkriptunoff, который оставляет нам 28 уравнений и 27 неизвестных? –

+0

@JanDvorak - Да, система может быть неразрешимой –

0

Проблема в том, что мы знаем расстояния n * n между n объектами, как получить их позиции?

1. Put the first one, say a, at (0,0) 
2. Put the second one b at (|b-a|, 0) 
3. For the third one c, it is at the one of the two intersections of the two circles: 
    |p-a|=|c-a| and |p-b|=|c-b|. 
    Solve this system of quadratic equations using the well-known formula, choose 
    either of the solutions as the position of c. 
4. For any other points p, do the same thing as we're done for c, but choose one of the 
    two solutions that is consistent with the distance |p-c|. And check the distance 
    between p and all previous points. If the check fails, return with failure.