cvxpy.atoms.elementwise package¶
All of the atoms listed here operate elementwise on expressions. For example,
exp
exponentiates each entry of
expressions that are supplied to it.
abs¶
entr¶
exp¶
huber¶
-
class
cvxpy.atoms.elementwise.huber.
huber
(x, M=1)[source]¶ Bases:
cvxpy.atoms.elementwise.elementwise.Elementwise
The Huber function
\[\begin{split}\operatorname{Huber}(x, M) = \begin{cases} 2M|x|-M^2 & \text{for } |x| \geq |M| \\ |x|^2 & \text{for } |x| \leq |M|. \end{cases}\end{split}\]\(M\) defaults to 1.
- Parameters
x (
Expression
) – The expression to which the huber function will be applied.M (
Constant
) – A scalar constant.
kl_div¶
log¶
log1p¶
-
class
cvxpy.atoms.elementwise.log1p.
log1p
(x)[source]¶ Bases:
cvxpy.atoms.elementwise.log.log
Elementwise \(\log (1 + x)\).
logistic¶
maximum¶
minimum¶
power¶
-
class
cvxpy.atoms.elementwise.power.
power
(x, p, max_denom=1024)[source]¶ Bases:
cvxpy.atoms.elementwise.elementwise.Elementwise
Elementwise power function \(f(x) = x^p\).
If
expr
is a CVXPY expression, thenexpr**p
is equivalent topower(expr, p)
.For DCP problems, the exponent p must be a numeric constant. For DGP problems, p can also be a scalar Parameter.
Specifically, the atom is given by the cases
\[\begin{split}\begin{array}{ccl} p = 0 & f(x) = 1 & \text{constant, positive} \\ p = 1 & f(x) = x & \text{affine, increasing, same sign as $x$} \\ p = 2,4,8,\ldots &f(x) = |x|^p & \text{convex, signed monotonicity, positive} \\ p < 0 & f(x) = \begin{cases} x^p & x > 0 \\ +\infty & x \leq 0 \end{cases} & \text{convex, decreasing, positive} \\ 0 < p < 1 & f(x) = \begin{cases} x^p & x \geq 0 \\ -\infty & x < 0 \end{cases} & \text{concave, increasing, positive} \\ p > 1,\ p \neq 2,4,8,\ldots & f(x) = \begin{cases} x^p & x \geq 0 \\ +\infty & x < 0 \end{cases} & \text{convex, increasing, positive}. \end{array}\end{split}\]Note
For DCP problems,
p
cannot be represented exactly, so a rational, i.e., fractional, approximation must be made. (No such approximation is made for DGP problems.)Internally,
power
computes a rational approximation top
with a denominator up tomax_denom
. Increasingmax_denom
can give better approximations.When
p
is anint
orFraction
object, the approximation is usually exact.Note
The final domain, sign, monotonicity, and curvature of the
power
atom are determined by the rational approximation top
, not the input parameterp
.For example,
>>> from cvxpy import Variable, power >>> x = Variable() >>> g = power(x, 1.001) >>> g.p Fraction(1001, 1000) >>> g Expression(CONVEX, POSITIVE, (1, 1)) results in a convex atom with implicit constraint :math:`x \geq 0`, while >>> g = power(x, 1.0001) >>> g.p 1 >>> g Expression(AFFINE, UNKNOWN, (1, 1))
results in an affine atom with no constraint on
x
.When \(p > 1\) and
p
is not a power of two, the monotonically increasing version of the function with full domain,\[\begin{split}f(x) = \begin{cases} x^p & x \geq 0 \\ 0 & x < 0 \end{cases}\end{split}\]can be formed with the composition
power(pos(x), p)
.The symmetric version with full domain,
\[f(x) = |x|^p\]can be formed with the composition
power(abs(x), p)
.
- Parameters
x (
cvxpy.Variable
) –p (
int
,float
,Fraction
, orParameter.
) – Scalar power.p
may be a Parameter in DGP programs, but not in DCP programs.max_denom (
int
) – The maximum denominator considered in forming a rational approximation ofp
; only relevant when solving as a DCP program.