Solvers accept matrix initial point x0
, where
matrix means an array of any size. They also accept matrix bounds lb
and ub
.
Here's how solvers handle matrix arguments.
Internally, solvers convert matrix arguments into
vectors before processing. For example, x0
becomes x0(:)
.
For an explanation of this syntax, see the A(:)
entry
in colon
.
For output, solvers reshape the solution x
to
the same size as the input x0
.
When x0
is a matrix, solvers pass x
as
a matrix of the same size as x0
to both the objective
function and to any nonlinear constraint function.
Linear constraints, though,
take x
in vector form, x(:)
.
In other words, a linear constraint of the form
A*x ≤ b
or Aeq*x
= beq
takes x
as a vector, not a matrix. Ensure
that your matrix A
or Aeq
has
the same number of columns as x0
has elements,
or the solver will error.