Hi Mark, thank you for your detailed and timely reply. I am not sure if I understand you correctly and here is my understanding. What you mean is > beta = max([lambda_max(P*A1 + A1’P) lambda_max(PA2+A2’*P)])
is an undocumented statement, and it is not clear what P is used to evaluate this statement because this statement is not put after cvx_end.
So I try to change my code, make the statement documented and have the following new example
A1 = [-10 2;1 -14];
A2 = [-8 1;3 -20];
variable P(2,2) symmetric
PA1 + A1’P <= -1e-3eye(2,2)
PA2 + A2’P <= -1e-3eye(2,2)
P >= 1e-3eye(2,2)
beta_1 = max( [lambda_max(-1(PA1 + A1’P)) lambda_max(-1(PA2+A2’P))] )
alpha_1 = min( [lambda_min(-1(PA1 + A1’P)) lambda_min(-1(PA2+A2’P))] )
beta_1 - 100alpha_1 <= 0
beta_2 = max([lambda_max(-1*(PA1 + A1’P)) lambda_max(-1(PA2+A2’P))]);
alpha_2 = min([lambda_min(-1(PA1 + A1’P)) lambda_min(-1(PA2+A2’*P))]);
disp(beta_1 - 100alpha_1);
disp(beta_2 - 100alpha_2);
In this new example, beta_1 and alpha_1 are variables used for optimization constraints, so I think they are documented. However, beta_1 is not equal beta_2, and alpha_1 is not equal to alpha_2, which means the optimal P is not used to evaluate beta_1 and alpha_1.
Perhaps some intermediate P is used to evaluate beta_1 and alpha_1, which is not a problem. What I am not sure about is if the optimal P satisfies the constraint when the values of beta_1 and alpha_1 are not corresponding to the optimal P.
Thank you again for your patient reply.