# How to solve these Generalized eigenvalue programming using CVX?

Apparently you did not understand when I said not to start multiple threads with the same topic. Did you study the link Previously provided?

sorry，i have read the book roughly,but i don’t know how to solve this problem using cvx, can you help me? i think my problem is very difficult, i really don not know how to solve this problem.

If you studied that book for that short a time and don’t understand convex formulation of generalized eigenvalue problem, you didn’t study it hard or long enough. This forum is not a crutch for you to avoid intellectual effort.

ok thank you i will read the book again, thank you very much.

Did you CAREFULLY study section 2.2.3 “Generalized eigenvalue problems” of https://web.stanford.edu/~boyd/lmibook/lmibook.pdf , and then the bisection method described in section 4.2.5 “Quasiconvex optimization” of Boyd and Vandenberghe “Convex Optimization” . This may take you some time, especially, if you have to study preceding material in order to understand those sections.

thank you. i learn these section carefully now. thank you very much

``````indent preformatted text by 4 spaces

clc,
clear;
close all;
epsilon = 1e-3;
low_bod = -200;
upper_bod = 200;
iter_num = 100;
Nt = 10;
Ne = 4;
sigma = 1;
H = rand(Nt,Ne);
Pmax = 1;
t = 100;

for iter = 1:100

t =   (low_bod+  upper_bod)/2;
cvx_begin sdp quiet
variable F1(Nt,Nt) hermitian  semidefinite
variable F2(Nt,Nt) hermitian  semidefinite

subject to

lamda_max((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H)) -t<=0

%     subject to
%     real( trace(F1))<=Pmax
real(trace(F1) + trace(F2))<=Pmax

cvx_end

if strcmp(cvx_status,'Solved')
upper_bod = t;
else
low_bod = t;
end
if abs(upper_bod-low_bod)<=epsilon
break;
end
disp(iter)
end

e=eig((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H));
min(e)
``````

hello i want to use bisection algorithm to solve the generalized eigenvalue problem(quasi-convex optimization),but i meet a error in using lamda_max function, can you help me?

First of all, is your original problem a Generalized eigenvalue programming? Can you tell us why?

yes， my original problem a Generalized eigenvalue programming, lambda_max(A,B) is a quasi-convex function, which can be solved by bisection method, so i want to use bisection algorithm to solve this problem

``````indent preformatted text by 4 spaces
clc,
clear;
close all;
epsilon = 1e-3;
low_bod = -200;
upper_bod = 200;
iter_num = 100;
Nt = 10;
Ne = 4;
sigma = 1;
H = rand(Nt,Ne);
Pmax = 1;
t = 100;
lambda0 = 100;
val = zeros(iter_num,1);
for iter = 1:100

cvx_begin quiet
variable F1(Nt,Nt) hermitian  semidefinite
variable F2(Nt,Nt) hermitian  semidefinite
subject to
lambda0*(H'*F2*H+sigma^2*eye(Ne))- (H'*F1*H)==semidefinite(Ne)
(H'*F2*H+sigma^2*eye(Ne)) ==semidefinite(Ne)
real(trace(F1) + trace(F2))<=Pmax
cvx_end

cvx_begin sdp quiet
variable lambda
minimize (lambda)
subject to
lambda*(H'*F2*H+sigma^2*eye(Ne))- (H'*F1*H)==semidefinite(Ne)

cvx_end
lambda0 = lambda;
val(iter) = lambda;

disp(iter)
end

e=eig((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H));
min(e)
``````

i

How did（23) become (27)?

23->27 is based on the figure, i want to alternatively optimize {F1,F2} and lambda to miminize lambda_max，the convergence curve is shown in the second figure,
i not sure this processing is right or not, can you help me?

23->27 is based on the figure, i want to alternatively optimize {F1,F2} and lambda to miminize lambda_max，the convergence curve is shown in the second figure,
i not sure this processing is right or not, can you help me?