Schur reprentation in CVX code


(PLTB) #1

Hello,
I would like to ask that Schur representation in CVX code. I suppose that i have this Schur:
| a b | >= 0
| c d |
Is this right to code: [a b; c d] >=0?
Because i want to debug my simple code where i implement wrong, so i would like to ask for clearly?

Thank you and best regards,


(Mark L. Stone) #2

c must equal b’.

If using SDP mode (cvx_begin sdp) of CVX, include the constraint [a b;b' d] >= 0 to specify that [a b;b' d] is positive semidefinite.

ff not using SDP mode (cvx_begin) of CVX, include the constraint [a b;b' d] == semidefinite(n) , where n is the dimension of [a b;b' d].

The above doesn’t address Schur complement representation per se. The Schur complement representation involves figuring out which matrix you want to constrain to be positive semidefinite. For instance, see section A.5.5 of http://stanford.edu/~boyd/cvxbook/ . You can search for Schur complement in that book for examples of how to use Schur complements in problem (re)formulation.


(PLTB) #3

Thank you Mark a lot! I figured out my problem based on your explanation.
Because i am using [a b;b’ d]>=0, but i put it in
cvx_begin

cvx_end
Actually, it should be
cvx_begin sdp

cvx_end
Thank you a lot.


(Fred) #4

Hi Mark,

In A.5.5 it says: If A ≻ 0, then X >= 0 if and only if S >= 0.
So can we either say X>=0 or A>0 and S>=0 to equivalently represent the constraint of [A B; B’ D] >=0
I’m kind of confused, any help will be appreciated.


(Mark L. Stone) #5

Let X = [A B;B' D]
S = D - B' * inv(A) * B is the Schur complement of A in X.

So if you know A > 0, then D - B' * inv(A) * B >= 0 is equivalent to X >= 0.

So if A > 0 and you have a constraint D - B' * inv(A) * B >= 0, you can replace that latter constraint with the LMI: [A B;B' D] >= 0 That is how you use Schur complement to create an LMI.


(Fred) #6

I understand the concept clearly now.
Thanks for the explanation.