Learn R Programming

CVXR (version 0.99-7)

p_norm: P-Norm

Description

The vector p-norm. If given a matrix variable, p_norm will treat it as a vector and compute the p-norm of the concatenated columns.

Usage

p_norm(x, p = 2, axis = NA_real_, max_denom = 1024)

Arguments

x

An '>Expression, vector, or matrix.

p

A number greater than or equal to 1, or equal to positive infinity.

axis

(Optional) The dimension across which to apply the function: 1 indicates rows, 2 indicates columns, and NA indicates rows and columns. The default is NA.

max_denom

The maximum denominator considered in forming a rational approximation for \(p\).

Value

An '>Expression representing the p-norm of the input.

Details

For \(p \geq 1\), the p-norm is given by $$\|x\|_p = \left(\sum_{i=1}^n |x_i|^p\right)^{1/p}$$ with domain \(x \in \mathbf{R}^n\). For \(p < 1, p \neq 0\), the p-norm is given by $$\|x\|_p = \left(\sum_{i=1}^n x_i^p\right)^{1/p}$$ with domain \(x \in \mathbf{R}^n_+\).

  • Note that the "p-norm" is actually a norm only when \(p \geq 1\) or \(p = +\infty\). For these cases, it is convex.

  • The expression is undefined when \(p = 0\).

  • Otherwise, when \(p < 1\), the expression is concave, but not a true norm.

Examples

Run this code
# NOT RUN {
x <- Variable(3)
prob <- Problem(Minimize(p_norm(x,2)))
result <- solve(prob)
result$value
result$getValue(x)

prob <- Problem(Minimize(p_norm(x,Inf)))
result <- solve(prob)
result$value
result$getValue(x)

a <- c(1.0, 2, 3)
prob <- Problem(Minimize(p_norm(x,1.6)), list(t(x) %*% a >= 1))
result <- solve(prob)
result$value
result$getValue(x)

prob <- Problem(Minimize(sum(abs(x - a))), list(p_norm(x,-1) >= 0))
result <- solve(prob)
result$value
result$getValue(x)
# }

Run the code above in your browser using DataLab