Representación de Weierstrass de las superficies minimales

Las funciones g[t] y w[t] tienen su dominio en el cuerpo de los números complejos

x1[g_, w_][z_] := 
      Integrate[(1 - g[t]^2) w[t]/2, t] /. 
        t -> z
 x2[g_, w_][z_] := 
      Integrate[I (1 + g[t]^2) w[t]/2, t] /. 
        t -> z
 x3[g_, w_][z_] := 
      Integrate[g[t] w[t], t] /. t -> z

minimal[g_, w_][x_, y_] := 
      ComplexExpand[
        Re[{x1[g, w][t], x2[g, w][t], x3[g, w][t]} /. {t -> 
                x + I y}]]

polarminimal[g_, w_][r_, 
        theta_] := minimal[g, w][x, y] /. {x -> r Cos[theta], 
          y -> r Sin[theta]}

Catenoide

c[t_] := t; cc[t_] := 1/t^2;

(El dominio es todo el plano menos el origen)

ParametricPlot3D[polarminimal[c, cc][r, 
        theta], 
{r,  .1, 10}, {theta, 0, 2  Pi}, 
      PlotPoints -> {80, 25}, PlotRange -> All, 
      Compiled -> False, ViewPoint -> {1, 2,  .5}]

Helicoide

(El dominio es todo el plano)

h[t_] := -I Exp[t]; hh[t_] := Exp[-t];

ParametricPlot3D[minimal[h, hh][x, 
        y], 
{x, -2, 2}, {y, -3, 3}, 
      Compiled -> False, ViewPoint -> {1, 2,  .5}]

Superficie de Enneper

(El dominio es todo el plano)

ee[t_] := t; eee[t_] := 1;

ParametricPlot3D[minimal[ee, eee][x, 
        y], 
{x, -4, 4}, {y, -3, 3}, 
      Compiled -> False, ViewPoint -> {1, 2,  .5}]

Superficie de Scherk

(el dominio es el disco unidad)

s[t_] := I t; ss[t_] := 4/(1 - t^4)

ParametricPlot3D[polarminimal[s, ss][r, 
        theta], 
{r, 0,  .9}, {theta, 0, 2  Pi}, 
      Compiled -> False, 
      ViewPoint -> {-2, -4, 1}]

Superficie trompeta

(el domino es todo el plano menos las soluciones de z^3=1)

p[z_] := z^2
pp[z_] := 1/(1 - z^3)^2

ParametricPlot3D[polarminimal[p, pp][r, 
        theta], 
{r, 0, 5}, {theta, 0, 2  Pi}, 
      PlotPoints -> 35, Compiled -> False, 
      ViewPoint -> {1, 2, 1}]