- #1
Kreizhn
- 743
- 1
I'm trying to minimize a function over a rather complicated surface. I'm using an algorithm that takes an initial guess, finds the tangent plane at that point, minimizes using a linear programming algorithm, then (tries to) project back onto the complicated surface.
More specifically, if [itex] \xi [/itex] is a vector and [itex] H(\xi) [/itex] is the surface, I want to solve the linear programming problem
[tex] \min c^T \xi, \quad \text{subject to } \nabla H(\xi) (\xi - \bar \xi) = 0 [/tex]
Now my problem is that I'm having trouble setting up the constraints. This wouldn't normally be difficult, except that my surface is parameterized as
[tex] H(\xi) = X_f(\xi) - X_d [/tex]
where [itex] X_f, X_d [/itex] are matrices.
Normally in these cases [itex] H(\xi) [/itex] is at worst vector-valued and so [itex] \frac{\partial H}{\partial \xi_j} [/itex] is a vector so that [itex] \nabla H(\xi) [/itex] is a matrix. However in this case [itex] \frac{\partial H}{\partial \xi_j} [/itex] is itself a matrix.
How do I handle this? Do I ``vectorize'' [itex] \frac{\partial H}{\partial \xi_j} [/itex]? Do I break it into real and imaginary parts then vectorize? I'm not sure how to handle this.
More specifically, if [itex] \xi [/itex] is a vector and [itex] H(\xi) [/itex] is the surface, I want to solve the linear programming problem
[tex] \min c^T \xi, \quad \text{subject to } \nabla H(\xi) (\xi - \bar \xi) = 0 [/tex]
Now my problem is that I'm having trouble setting up the constraints. This wouldn't normally be difficult, except that my surface is parameterized as
[tex] H(\xi) = X_f(\xi) - X_d [/tex]
where [itex] X_f, X_d [/itex] are matrices.
Normally in these cases [itex] H(\xi) [/itex] is at worst vector-valued and so [itex] \frac{\partial H}{\partial \xi_j} [/itex] is a vector so that [itex] \nabla H(\xi) [/itex] is a matrix. However in this case [itex] \frac{\partial H}{\partial \xi_j} [/itex] is itself a matrix.
How do I handle this? Do I ``vectorize'' [itex] \frac{\partial H}{\partial \xi_j} [/itex]? Do I break it into real and imaginary parts then vectorize? I'm not sure how to handle this.