我有一个3x3的矩阵E,我正在尝试解决此优化问题:
|| E * t || = minimum
其中t是我要寻找的解决方案,它必须是单位 vector (表示为3x1矩阵)。 || x ||表示x的欧式距离。
有图书馆可以帮助我解决这个问题吗?我在各种库中找到了两个求解函数,但是似乎找不到一个可以使我施加t必须为单位 vector 的附加约束的函数。那我可以在没有库的情况下以编程方式解决此问题吗?
最佳答案
在我看来,这是一个本征 vector 类型的问题-您的minimum
应该是E
的本征值中最小的绝对值。
对矩阵E做一个singular value decomposition(SVD)(此操作应作为任何良好的线性代数库的一部分提供)。这将使您将E分解为:
E = U diag V*
其中
diag
是具有非负对角线值的对角矩阵,而U
和V
是正交的。找到
diag
的最小对角线元素; V*
的对应行(或V
的列)是t
的解决方案。t
的此值将是一个单位 vector ,因为V
是正交的,并且由于E t
和U
保留了 vector 长度,因此所得的 vector V
将最小。关于c++ - 具有单位 vector 约束的非线性优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12713381/