我有个问题。我有 N 个对象和 N x N 矩阵 M。每个条目 M(i, j) 包含(一种)相对重力,表示 i 将 j 拉向它(或相反地将它拉离它)的强度。我想通过为每个对象分配一个坐标来将这些 N 个对象放置在二维 R x R 平面上。
有没有这样做的算法/方法?天体物理、物理、化学等方面肯定有一些常用的方法,谢谢大家的帮助。
我有个问题。我有 N 个对象和 N x N 矩阵 M。每个条目 M(i, j) 包含(一种)相对重力,表示 i 将 j 拉向它(或相反地将它拉离它)的强度。我想通过为每个对象分配一个坐标来将这些 N 个对象放置在二维 R x R 平面上。
有没有这样做的算法/方法?天体物理、物理、化学等方面肯定有一些常用的方法,谢谢大家的帮助。
问题是,鉴于我们知道 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.
您有兴趣为每个物体分配坐标 (xi,yi,zi) 和质量 (mi),以使引力一致,对吧?
一次考虑 8 个点。你总共有 32 个未知数和 28 个方程。您可以假设第一个点位于原点,第二个点位于 x 轴上。这意味着,您将有 28 个未知数和 28 个方程。
因此,第一个设备和算法一次解决 8 个点。然后在每次迭代中递增地添加一个点。
===演练===
考虑在 D 维中给定 n 个点。您只有点之间的距离,但没有坐标。目标是找到每个点的坐标。
如果 D=1,您一次只需要考虑两个 (+1) 点。将第一个点放在原点。将第二个点放在原点的正侧。您可以相对于原点放置第三个点,但根据到第一个点的距离等将其放置在它的右侧或左侧...
如果 D=2,将点 1 放在原点,指向 x 轴的正侧,第三个点位于 y 轴的正侧,具体取决于距离。从第四点开始,您可以使用任何两个放置的点来放置下一个,并使用任何其他点来优化选项(将有两个选项)。
与 D=3 类似。将前三个点都放在 xy 平面 (z=0) 上。接下来,放置 z 轴正向部分的第 4 个点。等等。
回到重力: 你的问题很复杂,因为你不能准确地将质量放在原点。所以你需要超过 5 个点来放置它们。正如我上面所展示的,你最多需要 8 分。
如果你的质量都相等,你可以计算距离(~重力的反比)并应用 D=3 时的情况。