如何使 4 个向量(所有你知道方向但你可以设置大小)加起来成为一个已知向量?

How to make 4 vectors (all which you know the direction but you can set the magnitude) add up to a known vector?

因此,如果您有 4 个向量,并且您知道它们的方向(所有方向都可能不同),并且您可以更改它们的所有大小,那么如果您希望所有 4 个向量相加,您会将大小设置为多少到另一个你知道的向量?

这似乎是一个有点太具体的问题,但我问这个的原因是我用 kRPC 为 KSP 制作的一个程序,其中有 4 个倾斜的发动机悬停在飞机上,即使整个飞机都是倾斜的.我试着搜索它,但我不知道到底要搜索什么。我对向量的数学知之甚少。谢谢!

据我了解,您正在尝试对向量求和,并且正在寻找特定的解决方案来获得结束向量。在某种程度上,您是在询问如何解决如下所示的问题:

a1V1 + a2V2 + a3V3 + a4V4 = aV

其中 V 是向量,a 是幅值。我假设 V 是固定的(你的计划喷气机的定位方式?)。我还假设你的向量是 3 维的

因此仅从数学角度来看,您有 3 个维度和 4 个参数。这意味着 'a' 之一可以是任何东西。如果不知道确切的向量,我认为我无法提供更多帮助。

就代码而言,求解 'a's 是尝试求解线性方程,通常使用 scipy 的 linalg 来完成: https://docs.scipy.org/doc/scipy-0.15.1/reference/linalg.html 特别是 scipy.linalg.solve()。

同样,如果将 4 个向量与矩阵一起使用,您必须非常了解问题的维度,您将 运行 陷入很多问题。在尝试求解方程之前,必须先确定 'a' 值之一。

编辑:我对这个问题进行了更多的思考,我意识到系统中有一个约束,那就是 'a's 不能为负数。所以看起来系统有独特的解决方案。

不一定总是可行,这取决于向量。从技术上讲,您的目标向量必须在您的四个输入向量的 linear span 中。

可以写成如下矩阵方程:

Ax = b

其中,b 目标向量,x 系数求和系数和 A 通过按列堆叠四个向量而形成的矩阵。当且仅当 A 矩阵可逆时,x 向量才存在。

您可以使用 numpy.linalg.solve 函数解决此问题。

在您的情况下,如果您有 4 个 3 维(或 2 维)向量,您可能会遇到问题:在这种情况下,不仅有一个解决方案,而且会变得棘手。实际上,您需要放弃一个(或两个)向量以仅保留 3(或 2)个独立向量。

您仍然可以使用 numpy.linalg.lstsq 来获得近似解。