power¶
-
class
cvxpy.
power
(x, p, max_denom=1024)[source]¶ Elementwise power function f(x)=xp.
If
expr
is a CVXPY expression, thenexpr**p
is equivalent topower(expr, p)
.Specifically, the atom is given by the cases
p=0f(x)=1constant, positivep=1f(x)=xaffine, increasing, same sign as xp=2,4,8,…f(x)=|x|pconvex, signed monotonicity, positivep<0f(x)={xpx>0+∞x≤0convex, decreasing, positive0<p<1f(x)={xpx≥0−∞x<0concave, increasing, positivep>1, p≠2,4,8,…f(x)={xpx≥0+∞x<0convex, increasing, positive.Note
Generally,
p
cannot be represented exactly, so a rational, i.e., fractional, approximation must be made.Internally,
power
computes a rational approximation top
with a denominator up tomax_denom
. The resulting approximation can be found through the attributepower.p
. The approximation error is given by the attributepower.approx_error
. 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 x≥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,f(x)={xpx≥00x<0can be formed with the composition
power(pos(x), p)
.The symmetric version with full domain,
f(x)=|x|pcan be formed with the composition
power(abs(x), p)
.
Parameters: x : cvx.Variable
p : int, float, or Fraction
Scalar power.
max_denom : int
The maximum denominator considered in forming a rational approximation of
p
.