Scilab Function
Last update : 1/5/2008

me_llt2d - 2D Moreau envelope, LLT algorithm

Calling Sequence

[M,g,Conjpartial,Conj] = me_llt2d(Xr,Xc,f,Sr,Sc)

Parameters

Description

Compute numerically the discrete Moreau envelope of a set of spatial points (Xr(i1),Xc(i2),f(i1,i2)) at slopes (Sr(j1),Sc(j2)), i.e.

                                                  2                   2
    M(j1,j2) =  min [ f(i1,i2) + (Sr(j1) - Xr(i1)) + (Sc(j2) - Xc(i2))  ].
           i1,i2
It reduces computation to one dimension, and computes the Legendre conjugate through the formula
           2                                                      2
M(j) = s(j) - 2 g*(j) with g*(j) = max [ s(j) * x(i) - 1/2 * (x(i) + f(i)) ]
                                    i
thereby resulting in a theta(n*m + m1*m2) linear-time algorithm.

Examples

        function f=f(lambda,x),f=lambda * x.^2,endfunction
        function g=g(lambda1,lambda2,x,y),g=f(lambda1,x)+f(lambda2,y),endfunction
        lambda1=1;lambda2=2;
        x1=(-10:10)';x2=(-5:5)';
        [X, Y]=ndgrid(x1,x2);F=g(lambda1,lambda2,X,Y);
        s1=(-4:4)';s2=(-5:6)';
        Xr=x1;Xc=x2;Sr=s1;Sc=s2;
        desired=me_llt2d(x1,x2,F,s1,s2);
        //1d computation for separable function
        Ms1=me_direct(x1,f(lambda1,x1),s1);
        Ms2=me_direct(x2,f(lambda2,x2),s2);
        t1 = Ms1 * ones(1,size(Ms2,1));
        t2 = ones(size(Ms1,1),1) * Ms2';
        correct=t1+t2;
        b = and(correct == desired);
  

See Also

me_brute2d,  me_direct2d,  me_nep2d,  me_pe2d,  me_llt,  

Author

Yves Lucet, University of British Columbia, BC, Canada

Bibliography

See me_llt

Used Function

Computation is reduced to one dimension, which is then handled by lft_llt.