如何将4个矢量(所有这些矢量都知道方向,但可以设置大小)相加为一个已知矢量



所以,如果你有4个向量,你知道它们的方向(所有方向都可能不同),你可以改变它们的所有幅度,如果你想让所有4个向量加成另一个你知道的向量,你会把幅度设置为多少?

这可能看起来有点太具体了,但我问这个问题的原因是我用kRPC为KSP制作的一个程序,在这个程序中,4个倾斜的发动机悬停在飞机上,即使整个飞机都倾斜了。我试着搜索它,但我不知道该搜索什么。我对向量的数学不太了解。谢谢

这可能并不总是可能的,它将取决于向量。从技术上讲,目标向量必须在四个输入向量的线性范围内。

您可以将其写成以下矩阵方程:

Ax = b

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

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

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

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

据我所知,您正在尝试求和向量,并且正在寻找一个特定的解决方案来获得结束向量。在某种程度上,你在问如何解决一个看起来像这样的问题:

a1V1+a2V2+a3V3+a4V4=aV

其中V是矢量,a是幻像。我假设V是固定的(你的喷气式飞机的定位方式?)。我还假设你的矢量是三维

因此,仅从数学角度来看,就有3个维度和4个参数。意思是其中一个"a"可以是任何东西。如果不知道确切的矢量,我想我再也帮不了什么了。

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

同样,你必须非常清楚问题的维度,如果你在矩阵中使用4个向量,你会遇到很多问题。在试图求解方程之前,必须先确定其中一个"a"值。

编辑:我对这个问题想了更多,我意识到系统中有一个约束,那就是"a"不能是负数。因此,这个系统似乎有一些独特的解决方案。

相关内容

最新更新