我有一个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是具有非负对角线值的对角矩阵,而UV是正交的。

找到diag的最小对角线元素; V*的对应行(或V的列)是t的解决方案。
t的此值将是一个单位 vector ,因为V是正交的,并且由于E tU保留了 vector 长度,因此所得的 vector V将最小。

关于c++ - 具有单位 vector 约束的非线性优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12713381/

10-11 23:00
查看更多