63 lines
2.0 KiB
Matlab
Executable File
63 lines
2.0 KiB
Matlab
Executable File
%%***************************************************************
|
|
%% logchebyRcone: logarithmic Chebyshev approximation problem.
|
|
%% Rotated cone formulation.
|
|
%% minimize t
|
|
%% x,t
|
|
%% such that 1/t <= (B(i,:)*x)/f(i) <= t, i = 1:p.
|
|
%%
|
|
%% B = pxm matrix, f = p-vector, p > m.
|
|
%%
|
|
%% e.g. p = 20; m = 5; B = rand(p,m); f = rand(p,1);
|
|
%%--------------------------------------------------------------
|
|
%% [blk,At,C,b,objval,x] = logchebyRcone(B,f,solve);
|
|
%%
|
|
%% B = pxm matrix (p > m).
|
|
%% f = px1 vector, [B(:,j)./f must be positive for each j]
|
|
%% solve = 0 if just want initialization.
|
|
%% = 1 if want to solve the problem.
|
|
%%*****************************************************************
|
|
%% SDPT3: version 4.0
|
|
%% Copyright (c) 1997 by
|
|
%% Kim-Chuan Toh, Michael J. Todd, Reha H. Tutuncu
|
|
%% Last Modified: 16 Sep 2004
|
|
%%*****************************************************************
|
|
|
|
function [blk,At,C,b,objval,x] = logchebyRcone(B,f,solve);
|
|
|
|
if (nargin < 3); solve = 0; end;
|
|
if ~isreal(B); error('B must be real'); end;
|
|
|
|
[p,m] = size(B);
|
|
E = zeros(p,m);
|
|
for j = [1:m]; E(:,j) = B(:,j)./f; end;
|
|
if any(E < 1e-10);
|
|
error(' B(:,j)./f must have all entry positive');
|
|
end
|
|
%%
|
|
blk{1,1} = 'l'; blk{1,2} = p;
|
|
blk{2,1} = 'l'; blk{2,2} = p;
|
|
blk{3,1} = 'r'; blk{3,2} = 3;
|
|
blk{4,1} = 'u'; blk{4,2} = 1;
|
|
At{1,1} = [B, -f, zeros(p,2)];
|
|
At{2,1} = [-B, zeros(p,1), f, zeros(p,1)];
|
|
At{3,1} = [sparse(3,m), -speye(3,3)];
|
|
At{4,1} = [sparse(1,m+2), 1];
|
|
C{1,1} = zeros(p,1);
|
|
C{2,1} = zeros(p,1);
|
|
C{3,1} = zeros(3,1);
|
|
C{4,1} = sqrt(2);
|
|
b = [zeros(m,1); -1; 0; 0];
|
|
%%
|
|
%% convert rotated cone to socp cone
|
|
%%
|
|
[blk,At,C,b] = convertRcone(blk,At,C,b);
|
|
%%
|
|
if (solve)
|
|
[obj,X,y,Z] = sqlp(blk,At,C,b);
|
|
objval = -mean(obj);
|
|
x = y(1:m);
|
|
else
|
|
objval = []; x = [];
|
|
end
|
|
%%***************************************************************
|