5 votos

¿Cómo utilizar realmente la parametrización de Weierstrass-Enneper para dibujar una superficie mínima?

Estoy interesado en dibujar (con Mathematica por ejemplo) la torre de silla de Scherk generalizada con triple simetría, una forma que encuentro muy atractiva. En un artículo (véase aquí ) He encontrado la siguiente parametrización de Weierstrass-Enneper:

\begin {eqnarray} x&=& \Re \int_ {z_0}^{z_1} \frac {1}{2}f(z)(1-g^2(z))\; \mathrm {d}z \\ y&=& \Re \int_ {z_0}^{z_1} \frac { \mathrm {i}}{2}f(z)(1+g^2(z))\; \mathrm {d}z \\ z&=& \Re \int_ {z_0}^{z_1}f(z)g(z)\; \mathrm {d}z, \\ \end {eqnarray} con $$ f(z)=\frac{1}{z^6+1}\quad \text{and} \quad g(z)=z^2. $$

Por desgracia, no tengo ni idea de cómo utilizar estas fórmulas para dibujar realmente la superficie. Para empezar, ¿qué contorno de integración debo utilizar? ¿Qué es lo que $z_0$ y $z_1$ ¿pretende? Y una vez que conozco los valores de estas integrales (ya sea de forma analítica o numérica), ¿cómo obtengo el $(x(u,v),y(u,v),z(u,v))$ ¿parametrización que pueda alimentar a Mathematica?

Cualquier ayuda será muy apreciada.

4voto

Mark McClure Puntos 14421

He aquí un enfoque que, aunque ingenuo, puede mejorarse considerablemente. Simplemente definiré las funciones $f(w)$ y $g(w)$ y luego las funciones $x(w)$ , $y(w)$ y $z(w)$ en términos de las integrales, asegurando que los valores en el cero son cero. He cambiado la variable compleja $z$ a $w$ para evitar el conflicto con la coordenada cartesiana $z$ . Los parámetros de entrada serán las coordenadas polares $r$ y $t$ con el dominio especificado para describir el disco de la unidad.

Clear[f, g, x1, y1, z1];
f[w_] = 1/(w^6 + 1);
g[w_] = w^2;
x1[w_] = Integrate[f[w] (1 - g[w]^2)/2, w];
(* Make value zero at zero *)
x1[w_] = x1[w] - x1[0];
y1[w_] = Integrate[I*f[w] (1 + g[w]^2)/2, w];
z1[w_] = Integrate[f[w] g[w], w];
ParametricPlot3D[
 Re[{x1[r*Exp[I*t]], y1[r*Exp[I*t]], z1[r*Exp[I*t]]}],
 {r, 0, 1}, {t, 0, 2 Pi}]

enter image description here

Bueno, en realidad no está tan mal. Está claro que tenemos algunos problemas con los cortes de rama y que sólo obtenemos una parte de la superficie, lo que en realidad es de esperar. Lo más fácil es restringir nuestro dominio de entrada a una región que evite los cortes de rama y luego utilizar la pieza resultante, junto con la simetría conocida del resultado deseado para montar la figura final. Aquí hay una pieza que, creo, debería ser un bloque de construcción razonable.

basePic = ParametricPlot3D[
  Re[{x1[r*Exp[I*t]], y1[r*Exp[I*t]], z1[r*Exp[I*t]]}],
  {r, 0, 1}, {t, Pi/3, Pi}, PlotRange -> Automatic,
  PlotPoints -> 100, MaxRecursion -> 8]

enter image description here

Podemos colocar tres copias de esto, giradas simétricamente alrededor del $z$ -eje, reflejar la figura resultante sobre un plano normal a la $z$ -y, por último, traducirlo varias veces para obtener una buena imagen. Aquí está el resultado.

enter image description here

Y aquí está el código, que he aplazado ya que es bastante, bueno, codificado. Realmente todo es cuestión de manipular directamente las primitivas gráficas que forman la basePic.

primitives = First[Normal[basePic]];
rotate[prim_, t_] := prim /. {
    Line[pts_] :> Line[RotationMatrix[t, {0, 0, 1}].# & /@ pts],
    Polygon[pts_] :> Polygon[RotationMatrix[t, {0, 0, 1}].# & /@ pts]
    };
primitives = 
  Table[Rotate[primitives, t, {0, 0, 1}], {t, {0, 2 Pi/3, 4 Pi/3}}];
primitives = {primitives, primitives /. {
     Line[pts_] :> 
      Line[ReflectionMatrix[{0, 0, 1}].(# - {0, 0, Re[z1[Exp[2 I]]]}) +
          {0, 0, Re[z1[Exp[2 I]]]} & /@ pts],
     Polygon[pts_, VertexNormals -> vn_] :> 
      Polygon[ReflectionMatrix[{0, 0, 
             1}].(# - {0, 0, Re[z1[Exp[2 I]]]}) +
          {0, 0, Re[z1[Exp[2 I]]]} & /@ pts,
       VertexNormals -> (-{#[[1]], #[[2]], #[[3]]} & /@ vn)]}
   };
primitives = {primitives, primitives /. {
     Line[pts_] :> Line[# - {0, 0, 4 Re[z1[Exp[2 I]]]} & /@ pts],
     Polygon[pts_, VertexNormals -> vn_] :> 
      Polygon[# - {0, 0, 4 Re[z1[Exp[2 I]]]} & /@ pts, 
       VertexNormals -> vn]},
   primitives /. {
     Line[pts_] :> Line[# + {0, 0, 4 Re[z1[Exp[2 I]]]} & /@ pts],
     Polygon[pts_, VertexNormals -> vn_] :> 
      Polygon[# + {0, 0, 4 Re[z1[Exp[2 I]]]} & /@ pts, 
       VertexNormals -> vn]}
   };
Graphics3D[primitives, 
   PlotRange -> {{-0.7, 0.7}, {-0.7, 0.7}, {-1.2, 1.8}},
   Axes -> True, ViewPoint -> {0.95, -3.2, 0.54}]

3voto

chaiwalla Puntos 1132

$\newcommand{\Cpx}{\mathbf{C}}$ No es exactamente una respuesta, sino una colección de misceláneas demasiado extensa para un comentario.

Advertencia: Yo nunca he hecho nada de esto; YMMV. :)

Puedes arreglar $z_{0}$ arbitrariamente: una elección diferente equivale a una constante aditiva (es decir, una traslación de la superficie). La cantidad compleja $z_{1} = u + iv$ comprende los parámetros de la superficie. En aras de la brevedad, vamos a denotar la parametrización por $\Phi$ para que (vagamente) $$ \Phi(z_{1}) = \Phi(u, v) = \bigl(x(u, v), y(u, v), z(u, v)\bigr) = (x, y, z). $$ La dificultad próxima para el trazado es que las funciones componentes no son fórmulas cerradas (por ejemplo, funciones elementales explícitas), sino integrales definidas. Si eres capaz de calcular las integrales como funciones elementales (aquí tus integradas son racionales, así que en principio aunque las fracciones parciales pueden ser un lío...), entonces simplemente instruye a su software de trazado en consecuencia.

Si tienes menos suerte, es de suponer que pedirás al software que encuentre valores numéricos para las integrales (como funciones del "límite superior" $z_{1} = u + iv$ ).

Ahora llegamos a la cuestión de qué contorno de integración utilizar. Para empezar, escribamos $\Phi_{\gamma}(z_{1})$ para denotar el valor obtenido al integrar sobre un contorno $\gamma$ . Para entender conceptualmente el efecto de una elección diferente de $\gamma$ puede tener, vamos a sacar algo de "maquinaria pesada", cubriendo espacios.

Las integradas respectivas en la parametrización se definen en algún subconjunto abierto $U$ de $\Cpx$ (en este caso el complemento de la sexta raíz de $-1$ ). La superficie definida por $\Phi$ es un espacio de cobertura de $U$ . La naturaleza del recubrimiento viene determinada por las partes reales de los residuos de las integradas alrededor de cada polo.

Por ejemplo, suponga que elige $z_{0} = 0$ (que ingenuamente parece una buena opción), y quiere encontrar $\Phi(z)$ para algunos $z$ . Dejemos que $\gamma_{0}$ y $\gamma_{1}$ sean contornos arbitrarios de $0$ a $z$ en $U$ . Tenemos que entender cómo $\Phi_{\gamma_{0}}(z)$ difiere de $\Phi_{\gamma_{1}}(z)$ . La idea clave es que el diferencia $$ \Phi_{\gamma_{0}}(z) - \Phi_{\gamma_{1}}(z) $$ es una integral alrededor de un bucle $\gamma$ con sede en $0$ (seguir $\gamma_{0}$ hacia adelante, entonces $\gamma_{1}$ hacia atrás), y como tal es la suma de (partes reales de) los residuos ponderados por los números de bobinado de $\gamma$ sobre cada polo. (En el ejemplo concreto que nos ocupa, los componentes de $\Phi$ contienen $\log$ términos, que dan lugar a los períodos).

En la práctica, lo más fácil es calcular la parte real del residuo de $\Phi$ sobre cada poste. Estos vectores son periodos la superficie parametrizada por $\Phi$ es invariante bajo la traslación por sus períodos. (La adición de un período es precisamente lo que ocurre cuando un contorno se enrolla alrededor de un polo).

Ahora elige un subconjunto denso y simplemente conectado de $U$ (por ejemplo, eliminar seis rayos radiales desde cada polo hasta el infinito), trazar la parte de la superficie obtenida mediante contornos rectos radiales y trasladar la superficie resultante por los períodos para obtener un trozo tan grande como se desee.

Aquí hay algunos enlaces de posible interés. (No estoy afiliado a ninguno de ellos).

3D-XploreMath y el galería de superficies mínimas .

Torre de la silla de montar Scherk en Shapeways (un sitio comercial que ofrece modelos impresos en 3D para su venta).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X