给定 R3 中的向量列表,会生成多少个独特的平面?

Given a list of vectors in R3 how many unique planes are generated?

在研究球体堆积时,我 运行 遇到了这个问题,我有一个向量列表,我想知道它们生成了多少个平面。我正在生成这些从球体中心指向球体外表面接触点的向量列表,我想知道这些向量中有多少是共面的。例如,我想要一个可以执行以下操作的算法..

给定向量 {1,2,3}、{2,4,6} 和 {0,6,9} 它应该报告只有一个唯一平面由前两个中的任何一个生成第三个。

我所有的尝试都没有成功,因为每次我计算生成了多少架飞机时,我都大大多算了。我觉得这应该是一件容易的事,我也很好奇是否有任何线性代数可以以某种方式来拯救。如果我可以确定生成了多少个平面以及这些平面是什么,我认为很容易确定每个平面中有多少个向量,这是这个问题的最后一部分。如果有人能想到一个更通用的方法来处理任何二维或更大的维度,那实际上是理想的,但现在这就是我所关心的。

您可以使用Gaussian elimination来确定多个向量span的维数。 (由这些的所有线性组合创建的 space - 也称为矩阵的 rank

通过在矩阵的行中写入向量,从向量创建一个矩阵。然后使用高斯消元法并计算仍然具有非零条目的行数。这是跨向量的维度space.

由于您使用来自 R^3 的向量,因此它永远不会大于 3。然而,平面是一个二维向量space,因此您需要找到导致以下结果的所有向量组合一个二维跨度,一旦您实现了高斯消元法,就可以通过迭代向量轻松找到它。

编辑:

一个例子,因为这似乎仍然会导致混淆:

你有一组 3 个向量:(1,0,0); (0,1,0); (0,0,1)

您可以从中创建 3 个不同的平面(通过组合这些向量中的任意两个,您会得到一个不同的平面。)要正式检查该陈述是否正确,您需要对每一对执行以下操作 v1,v2向量数:

  1. 检查 v1、v2 是否线性无关 - 如果不是,则它们不会创建平面,因此您继续选择接下来的两个向量。 (在这个例子中,它们总是线性无关的)
  2. 检查列表中的每个其他矢量,如果它 (v3) 不在创建的平面内(它不与 v1,v2 共面)。为此,请对矩阵 (v1,v2,v3) 使用高斯消去法并确认矩阵的秩为 3。

如果第2步中的矩阵的秩为2,这意味着向量v1、v2、v3是共面的。因此,您可以选择这些向量中的任意两个来生成完全相同的平面。

例如:您从向量 (1,0,0)(0,1,0) 开始。然后你检查其他几个向量,发现其中两个与你的初始向量共面(例如 (1,1,0)(-1,-1,0))。这意味着对于您的独特平面列表,您可以添加由这四个向量中的任意两个生成的平面,但不能添加这些向量的任何其他组合。

注意:这当然也适用于在更高维度中寻找二维平面。您甚至可以检查更高维度的平面,但这需要对您比较的向量数量和检查的等级进行一些调整。