42 lines
1.1 KiB
Matlab
Executable File
42 lines
1.1 KiB
Matlab
Executable File
%%*****************************************************************
|
|
%% min sum_k bk*yk
|
|
%% s.t. sum yk*Hk <= 0
|
|
%% y1 = 1
|
|
%% Hk = -hankel(ek) if 1 <= k <= n
|
|
%% = -hankel(0,e(k-n+1)) if n+1 <= k <=2*n-1
|
|
%%
|
|
%% [blk,At,C,b] = sdphankel(n);
|
|
%%*****************************************************************
|
|
%% 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] = sdphankel(n);
|
|
|
|
randn('seed',0);
|
|
tmp = randn(n,n);
|
|
tmp = tmp+tmp';
|
|
X{1} = tmp + norm(tmp,'fro')*speye(n,n);
|
|
%%
|
|
for k = 1:n
|
|
ek = zeros(n,1); ek(k) = -1;
|
|
AA{k} = sparse(hankel(ek));
|
|
end
|
|
zz = zeros(n,1);
|
|
for k = n+1:2*n-1
|
|
ek = zeros(n,1); ek(k-n+1) = -1;
|
|
AA{k} = sparse(hankel(zz,ek));
|
|
end
|
|
blk{1,1} = 's'; blk{1,2} = n;
|
|
At = svec(blk,AA,1);
|
|
C{1} = spconvert([n n 0]);
|
|
b = AXfun(blk,At,[],X);
|
|
%%
|
|
blk{2,1} = 'u'; blk{2,2} = 1;
|
|
ee = zeros(1,2*n-1); ee(1) = 1;
|
|
At{2,1} = ee;
|
|
C{2,1} = 1;
|
|
%%***************************************************
|