Implements RotatedSecondOrderCone.


class picos.expressions.cone_rsoc.RotatedSecondOrderCone(p=1, dim=None)[source]

Bases: picos.expressions.cone.Cone

The (narrowed or widened) rotated second order cone.

For n \in \mathbb{Z}_{\geq 3} and p \in \mathbb{R}_{> 0}, represents the convex cone

\mathcal{R}_{p}^n = \left\{
    x \in \mathbb{R}^n
    p x_1 x_2 \geq \sum_{i = 3}^n x_i^2 \land x_1, x_2 \geq 0

For p = 2, this is the standard rotated second order cone \mathcal{R}^n obtained by rotating the second order cone \mathcal{Q}^n by \frac{\pi}{4} in the (x_1, x_2) plane.

The default instance of this class has p = 1, which can be understood as a narrowed version of the standard cone. This is more convenient for defining the primal problem but it should be noted that \mathcal{R}_{1}^n is not self-dual, so working with p = 2 may seem more natural when the dual problem is of interest.

Dual cone

The dual cone is

\left(\mathcal{R}_{p}^n\right)^* = \left\{
    x \in \mathbb{R}^n
    \frac{4}{p} x_1 x_2 \geq \sum_{i = 2}^n x_i^2 \land x_1, x_2 \geq 0

The cone is thus self-dual for p = 2.

__init__(p=1, dim=None)[source]

Construct a rotated second order cone.


p (float) – The positive factor p in the definition.

property dual_cone[source]

Implement cone.Cone.dual_cone.

property p

A narrowing (p < 2) or widening (p > 2) factor.