picos.expressions.exp_quadratic¶
Implements QuadraticExpression
.
Classes
- class picos.expressions.exp_quadratic.QuadraticExpression(string, quadraticPart={}, affinePart=AffineExpression.zero(), scalarFactors=None, copyDecomposition=None)[source]¶
Bases:
Expression
A scalar quadratic expression of the form
.
- __init__(string, quadraticPart={}, affinePart=AffineExpression.zero(), scalarFactors=None, copyDecomposition=None)[source]¶
Initialize a scalar quadratic expression.
This constructor is meant for internal use. As a user, you will most likely want to build expressions starting from
variables
or aConstant
.- Parameters
string (str) – A symbolic string description.
quadraticPart – A
dict
mapping PICOS variable pairs to CVXOPT matrices. Each entryrepresents a quadratic form
where
and
refer to the isometric real
vectorizations
that are used by PICOS internally to store the variablesand
, respectively. The quadratic part
of the expression is then given as
.
affinePart (AffineExpression) – The affine part
of the expression.
scalarFactors – A pair
with both
and
scalar real affine expressions representing a known
factorization of the expression.
copyDecomposition (QuadraticExpression) – Another quadratic expression with equal quadratic part whose quadratic part decomposition shall be copied.
- property A¶
An affine-augmented quadratic coefficient matrix, condensed.
For a quadratic expression
, this is
but with zero rows and columns removed.
The vector
y
is a condensed version ofthat refers to this matrix, so that
q.y.T*q.A*q.y
equals the expressionq
.- Raises
ValueError – When the expression is zero.
- property L[source]¶
The
of an
Cholesky decomposition of
Q
.- Returns
A CVXOPT lower triangular sparse matrix.
- Raises
ValueError – When the quadratic part is zero.
ArithmeticError – When the expression is not convex, that is when the matrix
Q
is not numerically positive semidefinite.
- property M[source]¶
The
of an
Cholesky decomposition of
A
.- Returns
A CVXOPT lower triangular sparse matrix.
- Raises
ValueError – When the expression is zero.
ArithmeticError – When the expression can not be written as a squared norm, that is when the extended matrix
A
is not numerically positive semidefinite.
- property Q¶
The coefficient matrix
of the expression, condensed.
This equals the
of the quadratic expression
but with zero rows and columns removed.
The vector
x
is a condensed version ofthat refers to this matrix, so that
q.x.T*q.Q*q.x
equals the quadratic partof the expression
q
.- Raises
ValueError – When the quadratic part is zero.
- property fullroot[source]¶
Affine expression whose squared norm equals the expression.
For a convex quadratic expression
q
, this is equal to the vectorq.M.T*q.y
with zero rows removed.- Construction
For a quadratic expression
with
positive semidefinite, let
be a Cholesky decomposition. Let further
. Then,
Note that removing zero rows from
does not affect the norm.
- Raises
ValueError – When the expression is zero.
ArithmeticError – When the expression is not convex, that is when the quadratic part is not numerically positive semidefinite.
- property is0¶
Whether the quadratic expression is zero.
- property is_squared_norm¶
Whether the expression can be written as a squared norm.
If this is
True
, then the there is a coefficient vectorsuch that
If the expression is also nonzero, then
fullroot
iswith zero entries removed.
- property quadratic_forms¶
The quadratic forms as a map from variable pairs to sparse matrices.
Warning
Do not modify the returned matrices.
Deprecated since version 2.2: This property will be removed in a future release.
- property quadroot[source]¶
Affine expression whose squared norm equals
.
For a convex quadratic expression
q
, this is equal to the vectorq.L.T*q.x
with zero rows removed.- Construction
Let
be the quadratic part of the expression with
positive semidefinite and
a Cholesky decomposition. Then,
Note that removing zero rows from
does not affect the norm.
- Raises
ValueError – When the quadratic part is zero.
ArithmeticError – When the expression is not convex, that is when the quadratic part is not numerically positive semidefinite.
- property rank¶
The length of the vector
quadroot
.Up to numerical considerations, this is the rank of the (convex) quadratic coefficient matrix
of the expression.
- Raises
ArithmeticError – When the expression is not convex, that is when the quadratic part is not numerically positive semidefinite.
- property scalar_factors¶
Decomposition into scalar real affine expressions.
If the expression is known to be equal to
for scalar real affine expressions
and
, this is the pair
(a, b)
. Otherwise, this isNone
.Note that if
, then also
a is b
in the returned tuple.
- property x¶
The stacked variable vector
of the expression, condensed.
This equals the
of the quadratic expression
but entries corresponding to zero rows and columns in
Q
are removed, so thatq.x.T*q.Q*q.x
equals thepart of the expression
q
.- Raises
ValueError – When the quadratic part is zero.
- property y¶
See
A
.- Raises
ValueError – When the expression is zero.
Objects
- picos.expressions.exp_quadratic.PSD_PERTURBATIONS¶
Maximum number of singular quadratic form perturbations.
PICOS uses NumPy either or CHOLMOD to compute a Cholesky decomposition of a positive semidefinite quadratic form
. Both libraries require
to be nonsingular, which is not a requirement on PICOS’ end. If either library rejects
, then PICOS provides a sequence of
PSD_PERTURBATIONS
perturbed quadratic formsfor increasing
until the perturbed matrix is found positive definite or until the largest
was tested unsuccessfully.
If this is zero, PICOS will only decompose quadratic forms that are nonsingular. If this is one, then only the largest epsilon is tested.
- Default value
3