function [gi,d]=ps23b(h) % function [gi,d]=ps23b(h) % % given h (n-by-1, h>0, default h=rand(3,1), % minimize r=1/gi^2 subject to d>0, % r*(v(1)+v(n+1))^2-v(1)^2+d'*(h.*v(2:n+1).*v(2:n+1)-v(2:n+1).*v(1:n)) > 0 if nargin<1, h=rand(2,1); end h=h(:); n=length(h); r=msspoly('r'); % r v=msspoly('v',n+1); % v d=msspoly('d',n); % d q=msspoly('Q',nchoosek(n+2,2)); % coefficients of Q pr = mssprog; % initialize program pr.free = r; % register r pr.pos = d; % register d pr.psd = q; % register q Q = mss_v2s(q); % symmetric Q pr.eq = r*(v(1)+v(n+1))^2-v(1)^2+ ... d'*(h.*v(2:n+1).*v(2:n+1)-v(2:n+1).*v(1:n))-v'*Q*v; pr.sedumi = r; % minimize r r=pr({r}); if r>0, gi=1/sqrt(r); % get r else gi=0; end d=pr({d}); % get d