HD_Mouse
HD_Mouse

Reputation: 577

Non-linear optimization with unit vector constraint

I have a 3x3 matrix, E, and I'm trying to solve this optimization problem:

|| E * t || = minimum

where t is the solution I'm looking for and it MUST be a unit vector (represented as a 3x1 matrix). || x || denotes the euclidean distance of x.

Is there a library that can help me solve this problem? I've found a couple of solve functions in various libraries, but I can't seem to find one that'll let me put on the additional constraint that t must be a unit vector. Can I solve this programmatically without a library then?

Upvotes: 1

Views: 704

Answers (1)

comingstorm
comingstorm

Reputation: 26107

Looks like an eigenvector-type problem to me -- your minimum should be the smallest absolute value among the eigenvalues of E.

Do a singular value decomposition (SVD) of the matrix E (this operation should be available as part of any good linear algebra library). This will give you a factorization of E as:

E =  U diag V*

where diag is a diagonal matrix with nonnegative diagonal values, and U and V are orthonormal.

Find the smallest diagonal element of diag; the corresponding row of V* (or column of V) is your solution for t.

This value for t will be a unit vector because V is orthonormal, and the resulting vector E t will be smallest because U and V preserve vector length.

Upvotes: 5

Related Questions