Minimum Surface Area

  • The minimum surface area problem

  • Discretization

  • SOCP formulation

The minimum surface area problem

Functional problem statement

Consider a surface in mathbf{R}^3 that is described by a function from the square C := [0,1] times [0,1] to mathbf{R}. The corresponding surface area is

 A(f) := int_C sqrt{1+|nabla f(x,y)|_2^2} : dxdy.

The minimum surface area problem is to find the function f which minimizes the area A(f), subject to boundary values. To be specific, we will assume that we are given values of f on the left and right side of the square, that is

 f(x,0) = l(x), ;; f(x,1) = r(x), ;; x in [0,1],

where l : mathbf{R} rightarrow mathbf{R} and r : mathbf{R} rightarrow mathbf{R} are two given functions.

The above is an infinite-dimensional problem, in the sense that the variable is a function, not a finite-dimensional vector.

Discretization

We can discretize the square with a square grid, with points (ih,jh), 0 le i,j le K, where K is an integer, and where h = 1/K the (uniform) spacing of the grid. We represent the variable of our problem, f, as a matrix F in mathbf{R}^{(K+1) times (K+1)}, with elements F_{ij} = f(ih,jh). Similarly, we represent the boundary conditions as vectors of length L, R,

To approximate the gradient, we start from the first-order expansion of a function of two variables, valid for some small increment h:

 frac{partial F}{partial x}(x,y) approx frac{1}{h}(f(x+h,y) - f(x,y)) .

We obtain that the gradient of F at a grid point can be approximated as

 nabla F (ih,jh) approx  left( begin{array}{c}  K( F_{i+1,j} - F_{i,j})  K(F_{i,j+1} - F_{ij} )  end{array} right) , ;; 0 le i,j le K-1.

SOCP formulation

The discretized version of our problem is thus

 min_{F} : frac{1}{K^2}sum_{0 le i,j le K-1}  left| left( begin{array}{c}  K( F_{i+1,j} - F_{i,j})  K(F_{i,j+1} - F_{ij} )  1 end{array} right) right|_2 ~:~ F(i,0) = l(ih), ;; F(i,1) = r(ih), ;; 0 le i le K.

The CVX syntax for this problem can be as follows.

CVX syntax
>> % input: left_vals and righ_vals, two row vectors of length K+1
>> h = 1/K;
cvx_begin
    variables F(K+1,K+1)
    variables T(K,K)
    minimize( sum(T(:)) )
    subject to
        for j = 1:K, for i = 1:K,
        	norm([K*(F(i+1,j)-F(i,j)); K*(F(i,j+1)-F(i,j)); 1],2) <= T(i,j);
        end, end
        F(1,:) == left_vals;
        F(K+1,:) == right_vals;
cvx_end

Examples

alt text 

Minimal surface area joining two curves (in dark blue).

It is interesting to compare the minimal surface area with one that is obtained by squaring the norms. This corresponds to the QP

 min_{F} : frac{1}{K^2}sum_{0 le i,j le K-1}  left| left( begin{array}{c}  K( F_{i+1,j} - F_{i,j})  K(F_{i,j+1} - F_{ij} )  1 end{array} right) right|_2^2 ~:~ F(i,0) = l(ih), ;; F(i,1) = r(ih), ;; 0 le i le K.
alt text 

A similar problem where surface area is replaced with a least-squares criterion. We observe that, in constrast to the solution above, this new surface has much less ‘‘constant’’ values. In effect the minimal surface area formulation tends to assign zero values to the gradient more aggressively.