所以,如果你有4个向量,你知道它们的方向(它们都可能不同),你可以改变它们的所有大小,如果你想让所有4个向量加到另一个你知道的向量上,你会把它们的震级设置为什么?
这似乎有点过于具体,但我问这个问题的原因是,我用kRPC为KSP制作了一个程序,在这个程序中,有4个倾斜引擎在一架飞机上盘旋,即使整个飞机都倾斜了。我试着搜索它,但我不知道具体要搜索什么。我对向量的数学不太了解。谢谢!
发布于 2015-04-02 05:12:02
它可能并不总是可能的,它将取决于向量。从技术上讲,目标向量必须位于四个输入向量的线性跨度中。
您可以将它写成以下矩阵方程:
Ax = b
b是目标向量,x是系数求和系数,A是将四个向量按列方向叠加而成的矩阵。x向量存在的当且仅当A矩阵是可逆的。
您可以使用numpy.linalg.solve函数来解决这个问题。
在您的例子中,如果您有4个维数为3(或2)的向量,您可能会遇到问题:在这种情况下,不仅有一个解决方案,而且它变得很棘手。在实践中,您需要丢弃一个(或两个)向量才能保持3个(或2个)独立向量。
不过,您仍然可以使用numpy.linalg.lstsq来获得近似解。
发布于 2015-04-02 05:01:10
据我所知,你试图与向量和,你在寻找一个特定的解决方案,得到一个结束向量。在某种程度上,您在问如何解决如下问题:
a1V1 + a2V2 + a3V3 + a4V4 = aV
其中V是矢量,a是魔法。我假设V是固定的(你的计划喷气机的定位方式?)我也假设你的向量是三维的
从数学上看,你有3个维度和4个参数。意思是'a‘之一可以是任何东西。我认为如果不知道确切的向量,我就不能再帮上忙了。
在代码方面,“a‘s”的求解是试图求解线性方程组,通常使用的方法是使用for的linalg:https://docs.scipy.org/doc/scipy-0.15.1/reference/linalg.html,特别是scipy.linalg.solve()。
同样,你必须非常清楚问题的维度,如果你在矩阵中使用4个向量,你会遇到很多问题。在试图求解方程之前,必须做一些事情来确定其中一个a值。
编辑:我对这个问题做了更多的思考,我意识到系统中有一个约束,那就是‘a’不能是否定的。所以系统似乎有独特的解决方案。
https://stackoverflow.com/questions/29405097
复制相似问题