## Name

pl_me_nep — Moreau envelope for convex functions, NEP algorithm

## Calling Sequence

    [M,P] = pl_me_nep(X,f,S)

## Parameters

X

  column vector. A grid of points on which the function is sampled.

f

  column vector. The value of the function on the grid X: usually f(i)=fu(X(i)) for some function fu.

S

  column vector. The grid on which we want to compute the conjugate: f* is evaluated on S.

M

  column vector. Contains the value of the Moreau envelope M of the function f evaluated on at the points S(j). In other words: M(j) = Min(||S(j) - X(i)||^2 + f(i) | over all indexes i)

P

  proximal mapping, P(j)=Argmin(||S(j) - X(i)||^2 + f(i) | over all indexes i)

## Description

<listitem>

Compute numerically the discrete Moreau envelope of a set of planar points (X(i),f(i)) at slopes S(j), i.e.

                                              2
           M(j) = min f(i) + || s(j) - x(i) ||.
                   i
                                                 2
           P(j) = Argmin f(i) + || s(j) - x(i) ||.
                    i

It uses the non-expansiveness of the proximal (NEP) mapping P to run in linear time theta(n+m) with n=length(X)=length(f) and m=length(S).

The algorithm only returns correct result when the proximal mapping P is `nonexpansive`. Otherwise, the algorithms may return an incorrect result. Classes of functions f that have a nonexpansive proximal mapping include `convex` functions and `prox-regular` functions.

</listitem>

## Examples

        X=[-5:0.5:5]';
        Y=X.^2;
        S=(Y(2:size(Y,1))-Y(1:size(Y,1)-1))./(X(2:size(X,1))-X(1:size(X,1)-1));
        [M,p,P]=pl_me_nep(X,Y,S)

## See Also

pl_me_nep_2d , pl_me_direct , pl_me_llt , pl_me_pe

## Authors

`Yves Lucet`, University of British Columbia, BC, Canada