The SDP is defined by the following data:
The kth row of holds the symmetric block
diagonal matrix
stored as a vector of length q
The user has a choice of four ways to set up the data. In all cases,
if a matrix has more than one block, it must be stored in sparse
format. If it has only a single block, then it can be stored
either in sparse or in full format, at the user's discretion.
However, in the case of a single block, it is recommended that the
initial
and
be provided as full matrices, as the solutions
will most likely be full, even if the data itself is sparse.
By default, the matrix passed to svec.m is assumed to have
dense blocks. If the user wishes to take advantage of the sparsity in
the blocks of this matrix, then a third, optional parameter
sparseblks can be passed to svec.m. When
, svec.m treats the blocks as sparse,
and returns a sparse vector. These routines preserve the inner
product, i.e. if
and
for matrices
, then
The user must also construct ,
and
.
It requires that the block diagonal matrices be
stored in variables named
. Thus if
m=100, the matrix
must be stored in a variable
A100.
The user
must also construct
,
and
.
When makeA.m is called by the user,
the blocks of the block diagonal data matrices are treated by default
as being dense. If they are sparse, and the user wishes to take
advantage of this sparsity, a third parameter sparseblks
may be passed to the routine makeA.m, and this parameter
should be set to the value 1.
In this case the matrix will be stored using the sparse matrix
storage option.
The data must be stored in a special compact format
that is described in Appendix A.
The routine export.m implements the reverse operation, saving
a problem's data in an ASCII file, in a format recognized by
import.m.