Talk:Beginning with CVX
From Wikimization
lamda_W=eig(full(W))
Thanks for the ideas it's great. Thank you very much :D.
I have an answer, how to calculate the normalized eigenvector.
Maybe?[v_W]=eig(full(W))/norm ....
I've changed Epsilon1, Epsilon2, they aren't a variable, I think they are constants.
I'm going to see how to initialice (I'm going to research in the references of my article (Cross fingers)
Thanks a lot again.
Here is the new code:
clear all;
n=2; m=1;
A_a=3*eye(2*n,2*n)
B_a=4*eye(2*n,2*m)
W=eye(4)
R=(zeros(2,4))
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=1;
Epsilon2=1;
if(lamda_W>=Epsilon1)
if(lamda_H<=-Epsilon2) para=1
else para = 0
end
else para =0
end
%v_W=eig(W)/(abs(eig(W)))
%v_W=eig(full(W))/abs(full(W))%%normalized eigenvector :|
%v_H=eig(H)/max(eig(H))
while para==0
[v_W,D] = eig(W)
[v_H,D] = eig(H)
if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2)
cvx_begin
variables p1 p2 W(4,4) R(2,4)
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)
H=W*A_a'+A_a*W-B_a*R-R'*B_a'
W - Epsilon1*eye(2*n) == semidefinite(2*n);
Epsilon2*eye(2*n) + H == -semidefinite(2*n);
v_W'*W*v_W>=Epsilon1*eye(4)
cvx_end
else
cvx_begin
variables p1 p2 W(4,4) R(2,4)
minimize (p1+p2)
subject to
W(1,1)>=Epsilon1
W(2,2)>=Epsilon1
W(1,1)<=p1
W(2,2)<=p1
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)
H=W*A_a'+A_a*W-B_a*R-R'*B_a'
W - Epsilon1*eye(2*n) == semidefinite(2*n);
Epsilon2*eye(2*n) + H == -semidefinite(2*n);
v_H'*H*v_H<=-Epsilon2*eye(4)
cvx_end
end
lamda_W=min(eig(full(W)))
lamda_H=max(eig(H))
% v_W=eig(full(W))/max(eig(full(W)))%%Cálculo del normalized eigenvector
% v_H=eig(H)/max(eig(H))
%STOP
if(lamda_W>=Epsilon1)
if(lamda_H<=-Epsilon2) para=1
else para = 0
end
else para =0
end
end
R
W
K=R/W