Talk:Beginning with CVX
From Wikimization
(Difference between revisions)
(12 intermediate revisions not shown.) | |||
Line 3: | Line 3: | ||
</pre> | </pre> | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
- | Thanks for the ideas it's great. Thank you very much :D. | ||
- | + | Thanks a lot for all the ideas, they all are greats. | |
- | + | The code still not working. I think I’m making thinks wrong (sure). I have a dude. | |
- | + | The new code could be: | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
<pre> | <pre> | ||
+ | %0)Initialization | ||
+ | clear all; | ||
- | + | %cvx_setup | |
n=2; m=1; | n=2; m=1; | ||
A_a=3*eye(2*n,2*n) | A_a=3*eye(2*n,2*n) | ||
B_a=4*eye(2*n,2*m) | B_a=4*eye(2*n,2*m) | ||
+ | |||
+ | %1)1 | ||
W=eye(4) | W=eye(4) | ||
R=(zeros(2,4)) | R=(zeros(2,4)) | ||
+ | %2)2 | ||
H=W*A_a'+A_a*W-B_a*R-R'*B_a' | H=W*A_a'+A_a*W-B_a*R-R'*B_a' | ||
lamda_W=min(eig(full(W))) | lamda_W=min(eig(full(W))) | ||
lamda_H=max(eig(H)) | lamda_H=max(eig(H)) | ||
- | + | Epsilon1=1e-6; | |
- | Epsilon1= | + | Epsilon2=1e-6; |
- | Epsilon2= | + | %3)3 |
- | + | [v_W,D] = eig( full ( W ) ) | |
- | + | [v_H,D] = eig( full ( H ) ) | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | % | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | [v_W,D] = eig(W) | ||
- | [v_H,D] = eig(H) | ||
- | |||
- | if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2) | ||
- | |||
cvx_begin | cvx_begin | ||
- | |||
variables p1 p2 W(4,4) R(2,4) | variables p1 p2 W(4,4) R(2,4) | ||
+ | if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2) CK=v_W'*W*v_W - Epsilon1*eye(2*n) ; | ||
+ | else CK=-Epsilon2*eye(2*n) - v_H'*H*v_H ; | ||
+ | end | ||
+ | |||
+ | minimize (p1+p2) | ||
- | + | subject to | |
- | + | ||
- | + | ||
- | + | ||
W(1,1)<=p1 | W(1,1)<=p1 | ||
W(2,2)<=p1 | W(2,2)<=p1 | ||
Line 69: | Line 51: | ||
W(3,3)==W(1,1) | W(3,3)==W(1,1) | ||
W(4,4)==W(2,2) | W(4,4)==W(2,2) | ||
- | + | ||
R(1,1)>=-p2 | R(1,1)>=-p2 | ||
R(1,1)<=p2 | R(1,1)<=p2 | ||
R(2,3)==R(1,1) | R(2,3)==R(1,1) | ||
- | |||
R(1,2)>=-p2 | R(1,2)>=-p2 | ||
R(1,2)<=p2 | R(1,2)<=p2 | ||
R(2,4)==R(1,2) | R(2,4)==R(1,2) | ||
- | + | CK == semidefinite(2*n); | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
cvx_end | cvx_end | ||
- | + | lamda_W = min ( eig ( full ( W ) ) ) | |
+ | lamda_H = max ( eig ( full ( H ) ) ) | ||
- | + | R | |
- | + | W=full(W) | |
- | + | K=R/W | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | </pre> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
Current revision
lamda_W=eig(full(W))
Thanks a lot for all the ideas, they all are greats.
The code still not working. I think I’m making thinks wrong (sure). I have a dude.
The new code could be:
%0)Initialization clear all; %cvx_setup n=2; m=1; A_a=3*eye(2*n,2*n) B_a=4*eye(2*n,2*m) %1)1 W=eye(4) R=(zeros(2,4)) %2)2 H=W*A_a'+A_a*W-B_a*R-R'*B_a' lamda_W=min(eig(full(W))) lamda_H=max(eig(H)) Epsilon1=1e-6; Epsilon2=1e-6; %3)3 [v_W,D] = eig( full ( W ) ) [v_H,D] = eig( full ( H ) ) cvx_begin variables p1 p2 W(4,4) R(2,4) if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2) CK=v_W'*W*v_W - Epsilon1*eye(2*n) ; else CK=-Epsilon2*eye(2*n) - v_H'*H*v_H ; end minimize (p1+p2) subject to W(1,1)<=p1 W(2,2)<=p1 W(1,1)>=Epsilon1 W(2,2)>=Epsilon1 W(3,3)==W(1,1) W(4,4)==W(2,2) R(1,1)>=-p2 R(1,1)<=p2 R(2,3)==R(1,1) R(1,2)>=-p2 R(1,2)<=p2 R(2,4)==R(1,2) CK == semidefinite(2*n); cvx_end lamda_W = min ( eig ( full ( W ) ) ) lamda_H = max ( eig ( full ( H ) ) ) R W=full(W) K=R/W