# Norm function class hierarchy¶

## Base class¶

class pyunlocbox.functions.norm(lambda_=1, y=0, w=1, A=None, At=None, tight=True, nu=1, *args, **kwargs)[source]

Base class which defines the attributes of the norm objects.

See generic attributes descriptions of the pyunlocbox.functions.func base class.

Parameters: lambda_ : float, optional Regularization parameter $$\lambda$$. Default is 1. y : array_like, optional Measurements. Default is 0. w : array_like, optional Weights for a weighted norm. Default is 1. A : function or ndarray, optional The forward operator. Default is the identity, $$A(x)=x$$. If A is an ndarray, it will be converted to the operator form. At : function or ndarray, optional The adjoint operator. If At is an ndarray, it will be converted to the operator form. If A is an ndarray, default is the transpose of A. If A is a function, default is A, $$At(x)=A(x)$$. tight : bool, optional True if A is a tight frame, False otherwise. Default is True. nu : float, optional Bound on the norm of the operator A, i.e. $$||A(x)||^2 \leq \nu ||x||^2$$. Default is 1.

## L1-norm¶

class pyunlocbox.functions.norm_l1(lambda_=1, y=0, w=1, A=None, At=None, tight=True, nu=1, *args, **kwargs)[source]

L1-norm function object.

See generic attributes descriptions of the pyunlocbox.functions.norm base class.

Notes

• The L-1 norm of the vector x is given by $$\lambda ||w \cdot (A(x)-y)||_1$$
• The L1-norm proximal operator evaluated at x is given by $$\min_z \frac{1}{2} ||x-z||_2^2 + \gamma ||w \cdot (A(z)-y)||_1$$ where $$\gamma = \lambda \cdot T$$ This is simply a soft thresholding.

Examples

>>> import pyunlocbox
>>> f = pyunlocbox.functions.norm_l1(verbosity='low')
>>> f.eval([1, 2, 3, 4])
norm_l1 evaluation : 1.000000e+01
10
>>> f.prox([1, 2, 3, 4], 1)
array([ 0.,  1.,  2.,  3.])


## L2-norm¶

class pyunlocbox.functions.norm_l2(lambda_=1, y=0, w=1, A=None, At=None, tight=True, nu=1, *args, **kwargs)[source]

L2-norm function object.

See generic attributes descriptions of the pyunlocbox.functions.norm base class.

Notes

• The squared L-2 norm of the vector x is given by $$\lambda ||w \cdot (A(x)-y)||_2^2$$
• The squared L2-norm proximal operator evaluated at x is given by $$\min_z \frac{1}{2} ||x-z||_2^2 + \gamma ||w \cdot (A(z)-y)||_2^2$$ where $$\gamma = \lambda \cdot T$$
• The squared L2-norm gradient evaluated at x is given by $$2 \lambda \cdot At(w \cdot (A(x)-y))$$

Examples

>>> import pyunlocbox
>>> f = pyunlocbox.functions.norm_l2(verbosity='low')
>>> x = [1, 2, 3, 4]
>>> f.eval(x)
norm_l2 evaluation : 3.000000e+01
30
>>> f.prox(x, 1)
array([ 0.33333333,  0.66666667,  1.        ,  1.33333333])