1

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

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

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

4

1 回答 1

1

您可以使用高斯消元法来确定几个向量的维span数。(由这些的所有线性组合创建的空间 - 也称为矩阵的秩)

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

由于您使用的向量R^3永远不会大于 3。但是平面是二维向量空间,因此您需要找到导致二维跨度的所有向量组合,这可以通过迭代您的实施高斯消除后的向量。

编辑:

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

你有一组 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))。这意味着对于您的唯一平面列表,您可以添加由这四个向量中的任何两个生成的平面,但不能添加这些向量的任何其他组合。

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

于 2015-06-26T08:32:18.083 回答