具有单位向量约束的非线性优化

HD_*_*use 1 c++ algorithm math matrix

我有一个 3x3 矩阵 E,我正在尝试解决这个优化问题:

|| E * t || = minimum
Run Code Online (Sandbox Code Playgroud)

其中 t 是我正在寻找的解决方案,它必须是单位向量(表示为 3x1 矩阵)。|| ×|| 表示 x 的欧几里德距离。

有没有可以帮助我解决这个问题的库?我在各种库中找到了几个求解函数,但我似乎找不到一个可以让我施加附加约束,即 t 必须是单位向量。那么我可以在没有库的情况下以编程方式解决这个问题吗?

com*_*orm 5

对我来说看起来像是一个特征向量类型的问题——你minimum应该是 的特征值中最小的绝对值E

对矩阵 E进行奇异值分解(SVD)(此操作应作为任何优秀线性代数库的一部分提供)。这将为您提供 E 的因式分解:

E =  U diag V*
Run Code Online (Sandbox Code Playgroud)

其中diag是具有非负对角线值的对角矩阵,并且UV是正交的。

找出 的最小对角元素diag;的对应行V*(或列V)是您的解决方案t

这个值t将是一个单位向量,因为它V是正交的,结果向量E t将是最小的,因为UV保持向量长度。