Z W Z Y O Y Z W X O O X X Y O X Z Y Geometrı́a Diferencial de objetos inmersos en En con Mathematica ® Josel Antonio Mechato Durand1 jmechatod1@upao.edu.pe Ricardo Velezmoro León2 rvelezmorol@unp.edu.pe Robert Ipanaqué Chero3 ripanaquec@unp.edu.pe www.unp.edu.pe/pers/ripanaque 11 de abril de 2020 1 Dpto. de Ciencias, Universidad Privada Antenor Orrego, Piura, PERÚ de Matemática, Universidad Nacional de Piura, Piura, PERÚ 3 Dpto. de Matemática, Universidad Nacional de Piura, Piura, PERÚ 2 Dpto. Introducción El desarrollo de los sistemas de cálculo simbólico (Mathematica, Maple, Maxima, etc.) con respecto a las técnicas para trazar objetos gráficos y realizar cálculos engorrosos hace indispensable incluir estos en el desarrollo de los cursos que lo permitan. De hecho, las interpretaciones geométricas y la velocidad para realizar cálculos resultan grandes aliados para desarrollar investigaciones productivas en diversos temas matemáticos. Este libro nace con la finalidad de contar con bibliografı́a propia y acorde con el desarrollo de las investigaciones que los autores vienen realizando en la lı́nea de investigación denominada Geometrı́a y Cálculo Simbólico. Se pretende que sirva como libro texto para los cursos de Geometrı́a Diferencial que se imparten en la Escuela Profesional de Matemática de la Facultad de Ciencias de la Universidad Nacional de Piura. Para estudiar este libro se necesitan algunos conocimientos de cálculo, álgebra lineal y lenguaje Wolfram elementales. Estos conocimientos se imparten en cursos previos en la escuela antes mencionada. El sistema de cálculo simbólico que se ha elegido para elaborar este libro es el Mathematica. Esto, gracias a su versatilidad en la manipulación de las salidas gráficas, a su potente programación funcional, a su simplificada programación basada en reglas, a la bien nutrida red de colaboradores a nivel mundial y a que se cuenta con una licencia de la versión 11.0.2 solventada por las autoridades de la Universidad Nacional de Piura en el año 2019. El Notebook del Mathematica en el que figuran todos los códigos incluidos en este libro se puede descargar desde: https://sites.google.com/site/ripanaque/docencia El contenido de este libro se divide en x capı́tulos. En el capı́tulo uno se establece la técnica, basada en el teorema de Pohlke, para graficar proyecciones de objetos gráficos inmersos en En sobre la pantalla plana de una ii INTRODUCCIÓN computadora. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en xx capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. El contenido de este libro se divide en x capı́tulos. Índice general Introducción 1. Trazado de objetos gráficos inmersos en En 1.1. El espacio euclidiano En . . . . . . . . . . . . . . 1.2. Las primitivas y el trazado de los objetos gráficos 1.3. Segmento rectilı́neo dirigido . . . . . . . . . . . . 1.4. Sistema coordenado lineal . . . . . . . . . . . . . 1.5. Trazado de objetos gráficos inmersos en E . . . . 1.6. Trazado de funciones de E en E . . . . . . . . . . 1.7. Sistema coordenado rectangular bidimensional . . 1.8. Trazado de objetos gráficos inmersos en E2 . . . . 1.9. Trazado de funciones de E en E2 . . . . . . . . . 1.10. Trazado de funciones de E2 en E . . . . . . . . . 1.11. Sistema coordenado rectangular tridimensional . . 1.12. El teorema de Pohlke y las proyecciones . . . . . 1.13. Proyecciones de E3 en E2 . . . . . . . . . . . . . . 1.14. Trazado de objetos gráficos inmersos en E3 . . . . 1.15. Trazado de funciones de E en E3 . . . . . . . . . 1.16. Trazado de funciones de E2 en E2 . . . . . . . . . 1.17. Trazado de funciones de E3 en E . . . . . . . . . 1.18. Proyecciones de E4 en E3 . . . . . . . . . . . . . . 1.19. Trazado de objetos gráficos inmersos en E4 . . . . 1.20. Trazado de gráficos inmersos en En . . . . . . . . 1.21. Ejercicios . . . . . . . . . . . . . . . . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 4 17 18 19 20 23 24 29 34 40 42 45 53 62 66 73 81 89 99 105 iv ÍNDICE GENERAL 1 Trazado de objetos gráficos inmersos en En En este capı́tulo se sientan las bases para realizar el trazado de objetos gráficos en diversos espacios euclidianos, claro está, teniendo en cuenta nuestras limitaciones perceptivas: esto es el hecho que nuestra visión es bidimensional [5]. La teorı́a incluida en las secciones 1.3, 1.4, 1.7 y 1.11 se ha tomado del libro de Charles Lehmann [13], algunas definiciones provienen del libro de Barret O’Neill [19] (ampliadas a En ) y las visualizaciones se realizan en el sistema de cálculo simbólico Mathematica v. 11.0.2 [9, 28]. 1.1 El espacio euclidiano En Definición 1. El espacio euclidiano de n-dimensiones En es el conjunto de todas las n-adas ordenadas de números reales Una n-ada ası́ p = (p1 , . . . , pn ) se llama punto de En . En el álgebra lineal se demuestra que En es, de manera natural, un espacio vectorial sobre los números reales. De hecho, si p = (p1 , . . . , pn ) y q = (q1 , . . . , qn ) son puntos de En , su suma será el punto p + q = (p1 + q1 , . . . , pn + qn ) . El producto escalar de un punto p = (p1 , . . . , pn ) por el número a es el punto ap = (a p1 , . . . , a pn ) . Se verifica con facilidad que estas dos operaciones satisfacen los axiomas de un espacio vectorial. 2 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Definición 2. Si a cada punto p en Em le corresponde un solo punto q en En , entonces este será función de p y simbólicamente se escribe q = F (p) = (f1 (p), . . . , fn (p)) . Definición 3. Dada la función F : Em → En , el conjunto al cual pertenecen todos los puntos p en Em para los cuales se determinan puntos q en En , en virtud de F , se llama dominio (D) de la función. Y el conjunto al cual pertencen todos los puntos q obtenidos, rango (R). Definición 4. Dada la función F : D ⊆ Em → R ⊆ En , el gráfico de F es el conjunto G(F ) = {(p, F (p)) | p ∈ D} , que es un subconjunto de Em+n . Definición 5. Sean x1 , . . . , xn las funciones de valores reales en En tales que para cada punto p = (p1 , . . . , pn ) x1 (p) = p1 , . . . , xn (p) = pn . Estas funciones x1 , . . . , xn se llaman funciones coordenadas naturales de En . Definición 6. Se dice que una función en D ⊆ En de valores reales f es diferenciable (o infinitamente diferenciable, o clase C ∞ ) siempre que existan (en D) todas las derivadas parciales de f , de todos los órdenes, y que son continuas. EL ESPACIO EUCLIDIANO En 3 En las próximas secciones se hará referencia constante al trazado de la gráfica de funciones, por tal motivo analizaremos algunos ejemplos. 1. Sea f : E → E la función f = (x2 ). La gráfica de esta función es el conjunto G(f ) = { p1 , p21 | p1 ∈ E} que es subconjunto de E2 . 2. Sea α : h0, πi ⊂ E → E2 la función α = (cos(10t), sin(10t)). La gráfica de esta función es el conjunto G(α) = {(p1 , cos (10p1 ) , sin (10p1 )) | p1 ∈ h0, πi} que es subconjunto de E3 . 3. Sea f : E2 → E la función f = (x2 + y 2 ). La gráfica de esta función es el conjunto G(f ) = { p1 , p2 , p21 + p22 | (p1 , p2 ) ∈ E2 } que es subconjunto de E3 . 4. Sea F : E2 → E2 la función F = (u2 − v 2 , u2 + v 2 ). La gráfica de esta función es el conjunto G(F ) = { p1 , p2 , p21 − p22 , p21 + p22 | (p1 , p2 ) ∈ E2 } que es subconjunto de E4 . 5. Sea F : C → C la función F = (z 2 ). Poniendo z = x + i y se obtiene z 2 = (x + i y)2 = x2 − y 2 + i (2xy) . Además, desde que C es isomorfo a E2 , gracias al isomorfismo que asocia el número complejo a + i b con el par ordenado (a, b), es posible afirmar que la gráfica de esta función es el conjunto G(F ) = { p1 , p2 , p21 − p22 , 2p1 p2 | (p1 , p2 ) ∈ E2 } que es subconjunto de E4 . 4 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.2 Las primitivas del Mathematica y el trazado de los objetos gráficos El Mathematica posee su propio lenguaje de programación; este es el lenguaje Wolfram y fue desarrollado por la compañı́a Wolfram Research (fundada por Stephen Wolfram, matemático autor del sistema de cálculo simbólico Mathematica). Para el trazado de objetos gráficos el lenguaje Wolfram cuenta con las llamadas primitivas: Point, Line y Polygon. Estas primitivas, en realidad, son unos identificadores ya que al ejecutar el código que las incluye se obtiene como salida la misma entrada. Para trazar estas primitivas el lenguaje Wolfram incorpora las funciones Graphics y Graphics3D. Mathematica Fijado de los valores de algunas opciones de las funciones Graphics y Graphics3D. Esto se hace con la finalidad de no repetir tales asignaciones cada vez que se utilice alguna de estas funciones. In[1]:= SetOptions[Graphics3D, Axes → True]; SetOptions[Graphics, Frame → True, Axes → True]; SetOptions[Plot, Frame → True]; Mathematica La primitiva Point como identificador del punto pt. In[2]:= Out[2]= pt = Point[{0.5, 0.5}] Point[{0.5, 0.5}] Mathematica Trazado del punto pt con la función Graphics. In[3]:= Out[3]= Graphics[{PointSize[Large], RGBColor[0.4, 0.5, 0.7], pt}] Ver figura 1.1 (izquierda) Mathematica La primitiva Point como identificador de los puntos pts. In[4]:= Out[4]= pts = Point[{{−1, −2}, {0, 1}, {2, 3}}] Point[{{−1, −2}, {0, 1}, {2, 3}}] LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS 3 0.7 2 0.6 1 0.5 0 0.4 -1 0.3 0.3 0.4 0.5 0.6 0.7 -2 -1.0-0.5 0.0 0.5 1.0 1.5 2.0 Figura 1.1 Mathematica Trazado de los puntos pts con la función Graphics. In[5]:= Out[5]= Graphics[{PointSize[Large], RGBColor[0.4, 0.5, 0.7], pts}] Ver figura 1.1 (derecha) Mathematica La primitiva Point como identificador del punto pt3d. In[6]:= Out[6]= pt3d = Point[{−1, 3, 1}] Point[{−1, 3, 1}] Mathematica Trazado del punto pt con la función Graphics. In[7]:= Out[7]= Graphics3D[{PointSize[Large], RGBColor[0.4, 0.5, 0.7], pt3d}] Ver figura 1.2 (izquierda) Mathematica La primitiva Point como identificador de los puntos pts3d. In[8]:= Out[8]= pts3d = Point[{{−1, 3, 1}, {1, −1, 0.5}, {1.5, 1, 2.5}}] Point[{{−1, 3, 1}, {1, −1, 0.5}, {1.5, 1, 2.5}}] Mathematica Trazado de los puntos pts3d con la función Graphics3D. In[9]:= Out[9]= Graphics3D[{PointSize[Large], RGBColor[0.4, 0.5, 0.7], pts3d}] Ver figura 1.2 (derecha) 5 6 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.2 2.0 1.5 2.0 1.0 1.5 1.0 0.5 0.5 0.0 0.0 -0.5 -1.0 -1.0 -0.5 -0.5 0.0 0.5 -1.0 -1.0 -0.5 1.0 0.0 Figura 1.3 Mathematica La primitiva Line como identificador de la lı́nea li. In[10]:= Out[10]= li = Line[{{−1, −1}, {1, 2}}] Line[{{−1, −1}, {1, 2}}] Mathematica Trazado de la lı́nea li con la función Graphics. In[11]:= Out[11]= Graphics[{Thick, RGBColor[0.4, 0.5, 0.7], li}] Ver figura 1.3 (izquierda) 0.5 1.0 1.5 2.0 LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS Figura 1.4 Mathematica La primitiva Line como identificador de la lı́nea quebrada liq. In[12]:= Out[12]= liq = Line[{{−1, −1}, {1, 2}, {1.5, −0.5}, {2, 1}}] Line[{{−1, −1}, {1, 2}, {1.5, −0.5}, {2, 1}}] Mathematica Trazado de la lı́nea quebrada liq con la función Graphics. In[13]:= Out[13]= Graphics[{Thick, RGBColor[0.4, 0.5, 0.7], liq}] Ver figura 1.3 (derecha) Mathematica La primitiva Line como identificador de la lı́nea li3d. In[14]:= Out[14]= li3d = Line[{{−1, −1, −1}, {1, 2, −0.5}}] Line[{{−1, −1, −1}, {1, 2, −0.5}}] Mathematica Trazado de la lı́nea li con la función Graphics. In[15]:= Out[15]= Graphics3D[{Thick, RGBColor[0.4, 0.5, 0.7], li3d}] Ver figura 1.4 (izquierda) Mathematica La primitiva Line como identificador de la lı́nea quebrada liq3d. In[16]:= Out[16]= liq3d = Line[{{−1, −1, −1}, {1, 2, −0.5}, {1.5, −0.5, 0}, {2, 1, 0.5}}] Line[{{−1, −1, −1}, {1, 2, −0.5}, {1.5, −0.5, 0}, {2, 1, 0.5}}] 7 8 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 2.0 1.5 1.0 0.5 0.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.5 Mathematica Trazado de la lı́nea quebrada liq3d con la función Graphics3D. In[17]:= Out[17]= Graphics3D[{Thick, RGBColor[0.4, 0.5, 0.7], liq3d}] Ver figura 1.4 (derecha) Mathematica La primitiva Polygon como identificador del polı́gono pol. In[18]:= Out[18]= pol = Polygon[{{−1, −1}, {0, 2}, {1, 0}}] Polygon[{{−1, −1, −1}, {1, 2, −0.5}{−1, −1}, {0, 2}, {1, 0}}] Mathematica Trazado del polı́gono pol con la función Graphics. In[19]:= Out[19]= Graphics3D[{Red, EdgeForm[Blue], pol}] Ver figura 1.5 (izquierda) Mathematica La primitiva Polygon como identificador del polı́gono pol3d. In[20]:= Out[20]= pol3d = Polygon[{{−1, −1, 0}, {0, 2, 2}, {1, 0, 1}}] Polygon[{{−1, −1, 0}, {0, 2, 2}, {1, 0, 1}}] Mathematica Trazado del polı́gono pol3d con la función Graphics3D. In[21]:= Graphics3D[pol3d] LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS 1.0 1.0 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0.0 -1.0 -0.5 0.0 0.5 1.0 0.0 -1.0 -0.5 0.0 0.5 9 1.0 Figura 1.6 Out[21]= Ver figura 1.5 (derecha) Para implementar las diversas funciones que trazan objetos gráficos el lenguaje Wolfram utiliza las primitivas. Por ejemplo, de acuerdo con la definición 4, la gráfica de f = (x2 ) (Ej. 1, Sec. 1.1) es el conjunto G(f ) = {(p1 , f (p1 )) | p1 ∈ E} que es subconjunto de E2 . Para generar algunos puntos de la gráfica de esta función es posible utilizar la función incorporada Table y luego afectar los mismos con alguno de los identificadores para finalmente realizar el trazado con la función incorporada Graphics. Mathematica Definición de la función f = x2 . In[22]:= f [x ]:=x2 Mathematica Generando algunos puntos de la gráfica de f con la función incorporada Table. Estos puntos son almacenados en la variable pts. In[23]:= pts = Table [{p1 , f [p1 ]} , {p1 , −1, 1, 0.01}] ; Mathematica Trazado de la gráfica de los puntos pts. In[24]:= Out[24]= Graphics[Point[pts]] Ver figura 1.6 (izquierda) Mathematica Trazado de la gráfica de los puntos pts unidos mediante una lı́nea. In[25]:= Out[25]= Graphics[Line[pts]] Ver figura 1.6 (derecha) 10 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Incluso, es posible definir la nueva función Graf para trazar la gráfica de funciones de E en E. Mathematica Definición de la nueva función Graf. In[26]:= Graf[fx , {x , xmin , xmax }]:= Module[{f, pts}, f = Function[x, fx]; pts = Table[{x, f [x]}, {x, xmin, xmax, 0.01}]; Graphics[Line[pts]] ] Mathematica Trazado de la gráfica de la función f = x2 con la nueva función Graf. In[27]:= Out[27]= Graf [x2 , {x, −1, 1}] Ver figura 1.6 (derecha) La nueva función, Graph, devuelve resultados satisfactorios, no obstante, el código es elemental. No se ha realizado ningún análisis con respecto a las concavidades, puntos de inflexión, etc. de las gráficas a trazar. Una función con código optimizado y que ha sido implementada después de analizar exhaustivamente las gráficas de las funciones a trazar es la función incorporada Plot. Mathematica Trazado de la gráfica de la función f = x2 con la función incorporada Plot. In[28]:= Out[28]= Plot [x2 , {x, −1, 1}] Ver figura 1.7 Mathematica InputForm muestra cómo el lenguaje Wolfram construye esta gráfica. La salida deja ver que usa el identificador Line y la función Graphics. In[29]:= Out[29]= Plot [x2 , {x, −1, 1}] //InputForm Graphics [{. . . , Line [{{−1., 1.}, {−0.999387, 0.998774}, {−0.998773, 0.997548}, . . . , {0.998627, 0.997256}, {0.999314, 0.998628}, {1., 1.}}]}, Charting`Private`Tag$37611#1]}}, {DisplayFunction → Identity, . . . , Ticks → {Automatic, Automatic}}] LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS 11 1.0 0.8 0.6 0.4 0.2 0.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.7 Según Out[29] , en realidad, la función incorporada Plot genera una tabla de puntos de la gráfica de f , los afecta con el indentificador Line y luego realiza el trazado con la función incorporada Graphics. Supóngase ahora, a modo de otro ejemplo, que se desea trazar la gráfica de la función f = (x2 + y 2) (Ej. 3, Sec. 1.1). Mathematica Definición de la función f = (x2 + y 2 ). In[30]:= f [x , y ]:=x2 + y 2 Mathematica Aquı́ se generan algunos puntos de la gráfica de f y se almacenan en la variable pts3d. In[31]:= pts3d = Table [{p1 , p2 , f [p1 , p2 ]} , {p1 , −1, 1, 0.1} , {p2 , −1, 1, 0.1}] ; Mathematica Trazado de la gráfica de los puntos pts3d In[32]:= Out[32]= Graphics3[Point/@pts3d] Ver figura 1.8, (izquierda) Mathematica Trazado de la gráfica de los puntos pts3d In[33]:= Out[33]= Graphics3 [{Line/@pts3d, Line/@Transpose[pts3d]}] Ver figura 1.8 (derecha) 12 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.8 Figura 1.9 Mathematica Código para generar polı́gonos a partir de pts3d. In[34]:= pol = Map[Partition[#, 2, 1]&, Transpose[Partition[#, 2, 1]&/@pts3d]/. {{a : { , , }, b : { , , }}, {c : { , , }, d : { , , }}} :> Polygon[{a, b, d, c}]; Mathematica Trazado los polı́gonos generados a partir de pts3d. In[35]:= Out[35]= Graphics3D[{Directive[Yellow, EdgeForm[Black]], pol}] Ver figura 1.9 LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS 13 Mathematica Ampliación de definición de la nueva función Graf. In[36]:= Graf[fxy , {x , xmin , xmax }, {y , ymin , ymax }]:= Module[{f, pts, pol}, f = Function[{x, y}, fxy]; pts = Table[{x, y, f [x, y]}, {x, xmin, xmax, 0.1}, {y, ymin, ymax, 0.1}]; pol = Map[Partition[#, 2, 1]&, Transpose[Partition[#, 2, 1]&/@pts]]/. {{a : { , , }, b : { , , }}, {c : { , , }, d : { , , }}} Polygon[{a, b, d, c}]; Graphics3D[{Directive[Yellow, EdgeForm[Black]], pol}] ] Mathematica Trazado de la gráfica de la función f = x2 + y 2 con la nueva función Graf. In[37]:= Out[37]= Graf [x2 + y 2 , {x, −1, 1}, {y, −1, 1}] Ver figura 1.9 Mathematica Trazado de la gráfica de la función f = x2 + y 2 con la función incorporada Plot3D. In[38]:= Out[38]= Plot3D [x2 + y 2, {x, −1, 1} , {y, −1, 1} , BoxRatios → Automatic] Ver figura 1.10 Mathematica InputForm muestra cómo el lenguaje Wolfram construye esta gráfica. La salida deja ver que usa el identificador Polygon y la función Graphics3D. In[39]:= Out[39]= Plot3D [x2 + y 2, {x, −1, 1} , {y, −1, 1}] //InputForm Graphics3D [GraphicsComplex[ {{−1., −1., 2.}, {−0.857143, −1., 1.73469}, . . . , {0.125, −8.326672684688674 ∗ ∧ − 17, 0.015625}}, {{{EdgeForm[], Specularity[GrayLevel[1], 3], . . . GraphicsGroup[Annotation[{ Polygon [{{1001, 850, 124}, {319, 539, 49}, {1072, 1268, 536}, {1073, 1269, 537}, . . . , }], {DisplayFunction → Identity, . . .] 14 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.10 Queda claro que, según Out[39] , la función incorporada Plot3D genera una tabla de puntos de la gráfica de f (con la ayuda de potentes algoritmos), los afecta con el indentificador Polygon y luego realiza el trazado con la función incorporada Graphics3D. En el siguiente ejemplo se apreciará de modo enfático lo relativo a los algoritmos que están detrás de los resultados gráficos que muestra el lenguaje Wolfram. Se va a definir una nueva función, ImplicitPlot, para trazar la gráfica de objetos gráficos en E2 definidos por ecuaciones. La definición de esta nueva función está basada en el método de bisección ampliado para ser aplicado a funciones de dos variables [8]. Mathematica Definición del método de bisección en el lenguaje Wolfram [1]. In[40]:= Bisection[fun , var , a , b , TOL ]:= Module[{f = Function[var, fun], A = a, B = b, FA, q, FQ}, FA = f [a]; While[0.5(B − A) ≥ TOL, q = 0.5(A + B); FQ = f (q); If[FQ = 0 ∨ |FQ| < TOL, Return[q]; Break]; If[FAFQ > 0, A = q; FA = FQ, B = q]; ]; q] LAS PRIMITIVAS Y EL TRAZADO DE LOS OBJETOS GRÁFICOS 15 Mathematica Definición de un intervalo bidimensional [1]. In[41]:= Interval2D[{a , b }, {c , d }]:=Polygon[{{a, c}, {b, c}, {b, d}, {a, d}}] Mathematica Definición de un mallado bidimensional [1]. In[42]:= Mesh2D[a , b , n , c , d , m ]:=Flatten[Outer[Interval2D, Partition[Subdivide[a, b, n], 2, 1], Partition[Subdivide[c, d, m], 2, 1], 1]] Mathematica Definición de la nueva función ImplicitPlot [1]. In[43]:= ImplicitPlot[ Equal[left , right ], {x , xmin , xmax }, {y , ymin , ymax }]:= Module[{f, cc, v1, v2, v3, v4, vv, l, r, psi, fv, t, p}, f = Function[{x, y}, left − right]; cc = Line[DeleteDuplicates[({v1, v2, v3, v4} = First[#]; vv = Partition[{v1, v2, v3, v4, v1}, 2, 1]; ({l, r} = #; psi[t ]:=l(1 − t) + rt; fv[t ]:=f @@psi[t]; Which[ fv[0] = 0, psi[0], fv[1] = 0, psi[1], fv[0]fv[1] < 0, p = Bisection(fv[t], t, 0, 1, 0.001); psi[p], True, Nothing] )&/@vv)]]&/@Mesh2D[xmin, xmax, 20, ymin, ymax, 20]/. Line[{{a , b }}]:>Nothing/.Line[{}]:>Nothing; Graphics[cc] ] Mathematica Trazado de la circunferencia x2 + y 2 = 1. In[44]:= Out[44]= ImplicitPlot [x2 + y 2 = 1, {x, −1, 1}, {y, −1, 1}] Ver figura 1.11 (izquierda) Mathematica Trazado del folio de Descartes x3 + y 3 − 3xy = 0. In[45]:= Out[45]= ImplicitPlot [x3 + y 3 − 3xy = 0, {x, −2, 2}, {y, −2, 2}] Ver figura 1.11 (derecha) 16 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.0 1.5 1.0 0.5 0.5 0.0 0.0 -0.5 -1.0 -0.5 -1.5 -1.0 -1.0 -0.5 0.0 0.5 -2.0 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 1.0 Figura 1.11 2 1 0 -1 -2 -2 -1 0 1 2 Figura 1.12 Mathematica Trazado del folio de Descartes con la función incorporada ContourPlot. In[46]:= Out[46]= ContourPlot [x3 − 3xy + y 3 = 0, {x, −2, 2}, {y, −2, 2}, Axes → True] Ver figura 1.12 Mathematica InputForm muestra cómo el lenguaje Wolfram construye esta gráfica. La salida deja ver que usa el identificador Line y la función Graphics. In[47]:= ContourPlot [x3 − 3xy + y 3 = 0, {x, −2, 2}, {y, −2, 2}, Axes → True] //InputForm SEGMENTO RECTILÍNEO DIRIGIDO 17 Figura 1.13 Out[47]= Graphics [GraphicsComplex[ {{−2., 1.10671}, {−1.95916, 1.07143}, . . . , {1.07143, −1.95916}, {1.10671, −2.}}, {{{}{}, Tooltip[{Directive[RGBColor[0.368417, 0.506779, 0.709798], . . . Line [{1, 2, 3, 4, 5, 6, 7, 8, 9, . . . , 448, 449, 450}]}, . . .] Desde luego, que los algoritmos en los que se basa el lenguaje Wolfram son más complejos pero se ha querido explicar al lector cómo es que el lenguaje Wolfram traza las gráficas. Todas las otras funciones incorporadas (NumberLinePlot, ParametricPlot, ParametricPlot3D, ContourPlot3D, etc.) usan las primitivas para cumplir este objetivo. El lector puede constatar esto utilizando, según se ha explicado, la función incorporada InputForm. 1.3 Segmento rectilı́neo dirigido La porción de una lı́nea recta comprendida entre dos de sus puntos se llama segmento rectilı́neo o simplemente segmento. Los dos puntos se llaman extremos del segmento. Ası́, en la figura 1.13, para la recta l, AB es un segmento cuyos extremos son A y B. La longitud del segmento AB se representa por AB. El segmento AB es generado por un punto que se mueve a lo largo de la recta l de A hacia B. Se dice entonces que el segmento AB está dirigido de A a B, e indicamos esto por medio de una flecha como en la figura 1.13. En este caso, el punto A se llama origen o punto inicial y el punto B extremo o punto final. Es posible también obtener el mismo segmento dirigiéndolo de B a A, entonces B es el origen y A el extremo, y el segmento se designa BA. El sentido de un segmento dirigido se indica siempre escribiendo primero el origen o punto inicial. Desde el punto de vista de la Geometrı́a elemental, las longitudes de los segmentos dirigidos, AB y BA, son las mismas. En este curso (como en Geometrı́a analı́tica), sin embargo, se hace una distinción entre los signos de estas longitudes. Ası́, especificamos, arbitrariamente, que un segmento dirigido en un sentido será considerado de longitud positiva, mientras que otro, dirigido en sentido opuesto, será considerado como un segmento de 18 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.14 longitud negativa. De acuerdo con esto, si especificamos que el segmento dirigido AB tiene una longitud positiva, entonces el segmento dirigido BA tiene una longitud negativa, y escribimos AB = −BA . 1.4 Sistema coordenado lineal Consideremos (Fig. 1.14) una recta X ′ X cuya dirección positiva es de izquierda a derecha, y sea O un punto fijo sobre esta lı́nea. Tomemos una longitud conveniente como unidad de medida; si A es un punto de X ′ X distinto de O y situado a su derecha, la longitud OA puede considerarse como unidad de longitud. Si p es un punto cualquiera de X ′ X situado a la derecha de O y tal que el segmento dirigido Op, de longitud positiva, contiene p1 veces a la unidad adoptada de longitud, entonces diremos que el punto p corresponde al número positivo p1 . Análogamente, si p′ es un punto cualquiera de X ′ X situado a la izquierda de O y tal que el segmento dirigido Op′ tenga una longitud negativa de p′1 unidades, entonces diremos que el punto p′ corresponde al número negativo p′1 . De esta manera, cualquier número real p1 puede representarse por un punto p situado sobre la recta X ′ X. Y recı́procamente, cualquier punto dado p situado sobre la recta X ′ X representa un número real, cuyo valor numérico es igual a la longitud del segmento Op y cuyo signo es positivo o negativo según que p esté a la derecha o a la izquierda de O. De acuerdo con esto, se ha construido un esquema por medio del cual se establece una correspondencia biunı́voca entre puntos de una recta y los números reales. Tal esquema se llama sistema coordenado. En este caso, como todos los puntos están sobre la misma recta, el sistema se llama sistema unidimensional o sistema coordenado lineal. Con referencia a la figura 1.14, la recta X ′ X se llama eje y el punto O es el origen del sistema coordenado lineal. El número real p1 correspondiente al punto p se llama coordenada del punto p y se representa por (p1 ). Evidentemente, de acuerdo con las convenciones adoptadas, el origen O tiene por coordenada (0) y el punto A tiene por coordenada (1). El punto p con su coordenada (p1 ) es la representación TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E 19 goemétrica o gráfica del número real p1 , y la coordenada (p1 ) es la representación analı́tica del punto p. Ordinariamente escribiremos el punto p y su coordenada, tal como sigue: p = (p1 ). Es importante hacer notar que la correspondencia establecida por el sistema coordenado lineal es única. Es decir, a cada número corresponde uno y solamente un punto sobre el eje, y a cada punto del eje corresponde uno y solamente un número real. 1.5 Trazado de objetos gráficos inmersos en E En E es posible encontrar objetos gráficos de dimensión 0: puntos y dimensión 1: segmentos (comúnmente llamadas intervalos). En el caso de los intervalos, Mathematica sólo contempla intervalos cerrados [23]. Mathematica Fijado de valores para las opciones Spacings y PlotStyle de la función NumberLinePlot y para la opción Frame de la función Graphics. In[48]:= SetOptions [NumberLinePlot, Spacings → 0, PlotStyle → {Directive[PointSize[Large]]}] ; SetOptions [Graphics, Frame → False] ; A continuación se trazan puntos, puntos solución de ecuaciones en una variable (puntos dados en forma implı́cita), intervalos y regiones de la recta. Mathematica √ √ Trazado de los puntos − 5 , (1), 2 y (π). In[50]:= Out[50]= √ √ NumberLinePlot − 5, 1, 2, π Figura 1.15 (arriba) Mathematica Trazado de los puntos solución de x2 + x − 1 = 0. In[51]:= Out[51]= NumberLinePlot [x2 + x − 1 = 0, {x, −4, 4}] Figura 1.15 (abajo) Mathematica √ Trazado de los segmentos −3, − 2 y [0, 5]. In[52]:= Out[52]= √ NumberLinePlot Interval −3, − 2 , Interval[{0, 5}] Figura 1.16 (arriba) 20 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En -2 -1 0 -2 -4 1 2 3 2 0 4 Figura 1.15 -4 -6 - 0 4 6 -2 0 2 4 6 -4 - 0 4 Figura 1.16 Mathematica Trazado de la región I : −2 < x ≤ 3 ∨ 4 < x < 5. In[53]:= Out[53]= NumberLinePlot [−2 < x ≤ 3 ∨ 4 < x < 5, {x, −3, 6}] Figura 1.16 (centro) Mathematica Trazado de la región I : In[54]:= Out[54]= (x+1)(x2 +1) (x−1)2 (x+2) NumberLinePlot ≥ 0. (x+1)(x2 +1) (x−1)2 (x+2) ≥ 0, {x, −5, 4} Figura 1.16 (abajo) 1.6 Trazado de funciones de E en E Empezaremos esta sección asumiendo que sólo se cuenta con el sistema coordenado lineal; de ser ası́, el trazado de una función f : E → E se limitarı́a a trazar la transformación de un punto o una región de E después de aplicar f , ya que la gráfica de f es un subconjunto de E2 (Def. 4). 21 TRAZADO DE FUNCIONES DE E EN E f 0 1 2 3 4 , , 0 4 6 8 f -1 0 1 2 3 , , 0 2 4 6 8 10 Figura 1.17 Mathematica Fijado de valores para la opción Frame de la función Graphics y de valores para las opciones Spacings y PlotStyle de la función NumberLinePlot. In[55]:= SetOptions[Graphics, Frame → False]; SetOptions[NumberLinePlot, Spacings → 0, PlotStyle → {Directive[Thick, PointSize[Large]]}]; Mathematica Definición de la función f = x2 . In[57]:= f [x ]:=x2 Mathematica Trazado de la función f = x2 transformando el punto (2). In[58]:= Out[58]= {NumberLinePlot[2], TO[f ], NumberLinePlot[f [2]]} Figura 1.17 (arriba) Mathematica Trazado de la función f = x2 transformando los puntos (−1), (2), (3). In[59]:= Out[59]= {NumberLinePlot[{−1, 2, 3}], TO[f ], NumberLinePlot[f [{−1, 2, 3}]]} Figura 1.17 (abajo) 22 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En f -4 - 0 4 , , - -1 0 1 3 4 f -1.0 -0.5 0.0 0.5 1.0 , , 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 f -1.0 -0.5 0.0 0.5 1.0 , , Figura 1.18 Mathematica Trazado de la función f = x2 transformando los puntos solución de x2 + x − 1 = 0. In[60]:= Out[60]= {NumberLinePlot [x2 + x − 1 = 0, {x, −4, 4}] , TO[f ], NumberLinePlot [f [x2 + x − 1 = 0] , {x, −2, 4}]} Figura 1.18 (arriba) Mathematica Trazado de la función f = x2 transformando el segmento [−1, 1]. In[61]:= Out[61]= {NumberLinePlot[Interval[{−1, 1}]], TO[f ], NumberLinePlot[f [Interval[{−1, 1}]]]} Figura 1.18 (centro) Mathematica Trazado de la función f = x2 transformando la región I : −1 ≤ x < 1. In[62]:= Out[62]= {NumberLinePlot[−1 ≤ x < 1, {x, −1, 1}], TO[f ], NumberLinePlot[f [−1 ≤ x < 1], {x, 0, 1}]} Figura 1.18 (abajo) SISTEMA COORDENADO RECTANGULAR BIDIMENSIONAL 23 Esta forma de trazar una función es común en espacios de dimensión mayor que uno (por ejemplo, recordando que C es isomorfo con E2 , en el trazado de funciones de C en C); no obstante, al utilizar esta forma para el trazado de funciones de E en E no serı́a posible realizar la interpretación geométrica de objetos matemáticos como la recta tangente, la derivada, los máximos y mı́nimos, etc. La relevancia de la interpretación geométrica está en que muchas veces se ha partido de tal interpretación para desarrollar las definiciones formales de tales objetos matemáticos [16]. Algo similar se apreciará en la sección 1.19 con el trazado de las proyecciones de funciones complejas. 1.7 Sistema coordenado rectangular bidimensional A partir de la publicación del libro La Géométrie del célebre matemático René Descartes [6] se empezó a establecer el sistema coordenado rectangular bidimensional para trazar curvas planas y facilitar el estudio analı́tico de las mismas. Este sistema, indicado en la figura 1.19, consta de dos rectas dirigidas X ′ X y Y ′ Y , llamadas ejes de coordenadas, perpendiculares entre sı́. La recta X ′ X se llama eje X; Y ′ Y es el eje Y , y su punto de intersección O, el origen.Estos ejes coordenados dividen al plano en cuatro regiones llamadas cuadrantes numerados tal se indica en la figura 1.19. Según esta figura la dirección positiva del eje X es hacia la derecha; la dirección positiva del eje Y , hacia arriba. Todo punto p del plano puede localizarse por medio del sistema rectangular. En efecto, se traza pA perpendicular al eje X y pB perpendicular al eje Y . La longitud del segmento dirigido OA se representa por p1 y se llama abcisa de p; la longitud del segmento dirigido OB se representa por p2 y se llama ordenada de p. Los dos números reales, p1 y p2 , se llaman coordenadas de p y se representan por (p1 , p2 ). Según la figura 1.19, las abcisas medidas sobre el eje X a la derecha de O son positivas y a la izquierda, negativas; las ordenadas medidas sobre Y arriba de O son positivas y abajo negativas. Los signos de las coordenadas en cada cuadrante están indicados en la figura 1.19. Es evidente que a cada punto p del plano coordenado le corresponden uno y solamnete un par de coordenadas (p1 , p2 ). Recı́procamente, un par de coordenadas (p1 , p2 ) cualesquiera determina uno y solamente un punto en el plano coordenado. Por tanto, es posible decir que el sistema coordenado rectangular en el plano establece una correspondencia biunı́voca entre cada punto del plano y un par ordenado de números reales. 24 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.19 1.8 Trazado de objetos gráficos inmersos en E2 En E2 es posible encontrar objetos gráficos de dimensión 0: puntos, dimensión 1: lı́neas (rectas o curvas) y dimensión 2: superficies planas (confinadas a E2 , sin escapar a E3 ). En el caso de las regiones planas RegionPlot traza las mismas sin hacer distinción entre las abiertas y las cerradas [23]. Mathematica Fijado de valores para las opciones Frame y Axes de las funciones Graphics, ContourPlot y RegionPlot. In[63]:= SetOptions[Graphics, Frame → True, Axes → True]; SetOptions[ContourPlot, Frame → True]; SetOptions[RegionPlot, Frame → True]; A continuación se trazan puntos, lı́neas, curvas solución de una ecuación en dos variables (puntos de E2 que satisfacen una ecuación implı́cita) y regiones del plano. Mathematica √ √ 1 Trazado de los puntos (−1, −2), − 2, 1 , 3, 2 y (1, −1). In[66]:= Out[66]= Graphics [{AbsolutePointSize[7], √ 0.7], RGBColor[0.4, √ 0.5, Point[{−1, −2}], Point − 2, 1 , Point 3, 12 , Point[{1, −1}]}] Figura 1.20 (izquierda) 25 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E2 1.0 0.5 0.5 0.0 -0.5 0.0 -1.0 -0.5 -1.5 -2.0 -1.0 -0.5 0.0 0.5 1.0 -2.5 1.5 -2.0 -1.5 -1.0 -0.5 0.0 Figura 1.20 Mathematica Obtención de la solución de In[67]:= Out[67]= ( x2 + x + y 2 = 1 , x2 − y 2 = 1 . (almacenada en la variable pts). pts = Solve [{x2 + x + y 2 = 1, x2 − y 2 = 1} , {x, y}, Reals] /. (var → val ) :> val √ 1q1 √ 1 − 17 − 1 , −2 2 17 + 1 , 4 √ 1q1 √ 1 − 17 − 1 , 2 2 17 + 1 4 Mathematica Trazado de los puntos pts (vea In[68]:= Out[68]= In[129] para utilizar DiscretizeRegion). Graphics [{AbsolutePointSize[7], RGBColor[.4, .5, .7], Point[pts]}] Figura 1.20 (derecha) Mathematica Trazado de la lı́nea que une los puntos (−1, −1) y (2, 1). In[69]:= Out[69]= Graphics [{Thick, RGBColor[.4, .5, .7], Line[{{−1, −1}, {2, 1}}]}] Figura 1.21 (izquierda) Mathematica Trazado de lus puntos que satisfacen 2x + 3y − 1 = 0 (lı́nea recta). In[70]:= Out[70]= ContourPlot[2x + 3y − 1 = 0, {x, −3, 3}, {y, −3, 3}] Figura 1.21 (derecha) 26 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 3 2 1.0 1 0.5 0 0.0 -1 -0.5 -1.0 -1.0 -2 -3 -0.5 0.0 0.5 1.0 1.5 2.0 -3 -2 -1 0 1 2 Figura 1.21 Mathematica Trazado de los puntos que satisfacen x3 − 3xy + y 3 = 0. In[71]:= Out[71]= ContourPlot [x3 − 3xy + y 3 = 0, {x, −3, 3}, {y, −3, 3}] Figura 1.22 (izquierda) Mathematica Trazado del polı́gono cuyos vértices son los puntos −1, − 21 , (1, 1), 2, − 31 . In[72]:= Out[72]= Graphics [{RGBColor[0.4, 0.5,0.7], Polygon −1, −12 , {1, 1}, 2, −31 Figura 1.22 (derecha) Mathematica Trazado de la región D : 2x + y − 4 > 0 ∧ 3x − 2y − 6 < 0 ∧ x − 3y + 5 > 0. In[73]:= Out[73]= RegionPlot [2x +1 y −4 > 0 ∧ 3x − 2y − 6 < 0 ∧ x − 3y + 5 > 0, 1 x, −2, 4 , y, −2, 3 Figura 1.23 (izquierda) Mathematica Trazado de la región D : x4 + x2 y 2 + y 4 < 1. In[74]:= Out[74]= RegionPlot [x4 + x2 y 2 + y 4 < 1, {x, −1, 1}, {y, −1, 1}] Figura 1.23 (derecha) 3 27 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E2 3 2 1 1.0 0 0.5 -1 0.0 -2 -3 -3 -2 -1 0 1 2 3 -0.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 Figura 1.22 3.0 1.0 0.5 0 1 0.0 1.0 0 -0.5 0.0 -0 0 1 2 3 4 -1.0 -1.0 Figura 1.23 -0.5 0.0 0.5 1.0 28 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.0 0.8 0.6 0.4 0.2 0.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.24 El siguiente ejemplo, en el que se interpreta geométricamnete la derivada de una función en un punto de su dominio, remarca la ventaja de usar un sistema coordenado bidimensional para trazar la gráfica de una función de E en E, que como ya sabemos es un subconjunto de E2 (Sec. 1.1). Mathematica Fijado de valores para las opciones Frame y Axes de la función Plot. In[75]:= SetOptions[Plot, Frame → True, Axes → True]; Mathematica Trazado de la función f = x2 en un sistema coordenado rectangular bidimensional. In[76]:= Out[76]= Plot [x2 , {x, −1, 1}] Figura 1.24 Mathematica Interpretación geométrica de la derivada como la pendiente de la recta tangente a la gráfica de la función f = x2 , −1 ≤ x ≤ 1, en el punto (x0 ) = (0.5) de su dominio. In[77]:= Out[80]= f [x ] := x2 ; x0 = 0.5; Lt = (x − x0)f ′ [x0] + f [x0]; Plot[{f [x], Lt}, {x, −1, 1}, Epilog → {AbsolutePointSize[7], Point[{x0, f [x0]}]}] Figura 1.25 29 TRAZADO DE FUNCIONES DE E EN E2 1.0 0.5 0.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.25 1.9 Trazado de funciones de E en E2 El Mathematica incorpora la función ParametricPlot para trazar la gráfica de las imágenes de funciones que van de E en E2 . De acuerdo con la definción 4, las gráficas de estas funciones son subconjuntos de E3 . Para trazar las triadas que conforman la gráfica de estos subconjuntos el Mathematica incorpora la función ParametricPlot3D. Mathematica Fijado de valores para ciertas opciones. In[81]:= SetOptions[NumberLinePlot, Spacings → 0, PlotStyle → {Directive[Thick, PointSize[Large]]}]; SetOptions[Graphics, Frame → True]; SetOptions[ParametricPlot, Frame → True] Mathematica Definición de una regla de transformación para dar formato a un punto cualquiera. In[84]:= rule = {p : Point[ ] :> {PointSize[Large], RGBColor[0.4, 0.5, 0.7], p}}; Mathematica Definición de las funciones: OPoint y CPoint para trazar puntos abiertos y cerrados, respectivamente. In[85]:= CPoint[p ]:={RGBColor[0.4, 0.5, 0.7], PointSize[Large], Point[p]} OPoint[p ]:= {RGBColor[0.4, 0.5, 0.7], PointSize[Large], Point[p], GrayLevel[1], PointSize[Medium], Point[p]} 30 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.0 0.5 0.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.26 Mathematica Trazado de la gráfica de la imagen de la función (u) → (sin u, sin 2u). In[87]:= Out[87]= ParametricPlot[{Sin[u], Sin[2u]}, {u, 0, 2π}] Figura 1.26 Mathematica Definición de la función α = (cos u, sin u). In[88]:= α[u ]:={Cos[u], sin[u]} Mathematica Trazado de la función α = (cos u, sin u) transformando el punto (2). Note que se está aplicando la regla: rule, definida en In[84] . In[89]:= Out[89]= {NumberLinePlot[2, Frame → False], TO[α], Graphics[Point[α[2]]]/. rule} Figura 1.27 Mathematica Trazado de la función α = (cos u, sin u) transformando los puntos (−2), (1), (3). Aquı́ también se está aplicando la regla: rule, definida en In[84] . In[90]:= Out[90]= {NumberLinePlot[{−2, 1, 3}, Frame → False], TO[α], Graphics [Point [α[{−2, 1, 3}]//Transpose]] /. rule} Figura 1.28 31 TRAZADO DE FUNCIONES DE E EN E2 α 1.0 0 1 2 3 4 , , 0.8 0.6 -0.8 -0.6 -0.4 - 0.0 Figura 1.27 α -2 -1 0 1 2 3 , 0.0 , - -1.0 -0.8 -0.6 -0.4 - Figura 1.28 0.0 0.4 32 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En α 0.0 -4 - 0 4 , , - -1.0 0.0 0.4 0.6 0.8 Figura 1.29 Mathematica Obtención de la solución de u2 + u − 1 = 0 (almacenada en la variable pts). In[91]:= Out[91]= pts = Solve [u2 + u − 1 = 0, u, Reals] /. {var → val } :> val √ 1 √ 1 , − 5 − 1 5 − 1 2 2 Mathematica Trazado de la función α = (cos u, sin u) transformando los puntos pts. In[92]:= Out[92]= {NumberLinePlot [u2 + u − 1 = 0, {u, −4, 4}, Frame → False] , TO[α], Graphic[Point[α/@pts]]/. rule} Figura 1.29 Mathematica Trazado de la función α = (cos u, sin u) transformando el segmento [−1, 1]. In[93]:= Out[93]= {NumberLinePlot[Interval[{−1, 1}], Frame → False], TO[α], ParametricPlot[α[u], {u, −1, 1}, Epilog → {Point[{α[−1], α[1]}]}]/. rule} Figura 1.30 Mathematica Trazado de la función α = (cos u, sin u) transformando la región I : 0 ≤ u < 2π. In[94]:= Out[94]= {NumberLinePlot[0 < u < 2π, {u, 0, 2π}, Frame → False], TO[α], ParametricPlot[α[u], {u, 0, 2π}, Epilog → {OPoint[α[0]], OPoint[α[2π]]}]} Figura 1.31 33 TRAZADO DE FUNCIONES DE E EN E2 α 0.5 -1.0 -0.5 0.0 0.5 1.0 , , 0.0 -0.5 0.60.81.0 Figura 1.30 α 1.0 0.5 0 1 2 3 4 5 6 7 , , 0.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.31 α 1.0 0.8 0.6 -1.0 -0.5 0.0 0.5 1.0 , , 0.4 0.2 0.0 -1.0 Figura 1.32 -0.5 0.0 0.5 1.0 34 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Mathematica √ Definición de la función α = u, 1 − u2 . In[95]:= √ α[u ]:={u, 1 − u2 } Mathematica √ Trazado de la función α = u, 1 − u2 transformando la región I : −1 < qu < 1. In[96]:= Out[96]= {NumberLinePlot[−1 < u < 1π, {u, −1, 1}, Frame → False], TO[α], ParametricPlot[α[u], {u, −1, 1}, Epilog → {OPoint[α[−1]], OPoint[α[1]]}]} Figura 1.32 Esta forma de trazar una función de E en E2 no permite realizar la interpretación geométrica de la derivada direccional, por ejemplo; y el Mathematica no incluye un comando para trazar la gráfica de estas funciones. Sin embargo, en la sección 1.14 se describirá una forma de trazar tales gráficas. 1.10 Trazado de funciones de E2 en E El Mathematica incorpora las funciones RegionPlot y ParametricPlot para trazar la gráfica de los dominios de funciones que van de E2 en E. De acuerdo con la definción 1.52, las gráficas de estas funciones son subconjuntos de E3 y el Mathematica incorpora la función Plot3D para trazar estas gráficas. Mathematica Fijado de los valores de algunas opciones. In[97]:= SetOptions[NumberLinePlot, Spacings → 0, PlotStyle → {Directive[Thick, PointSize[Large]]}]; SetOptions[Graphics, Frame → True]; SetOptions[ParametricPlot, Frame → True]; SetOptions[RegionPlot, Frame → True]; Mathematica Definición de la regla de transformación rule. In[98]:= rule = {p : Point[ ] :> {PointSize[Large], RGBColor[0.4, 0.5, 0.7], p}}; 35 TRAZADO DE FUNCIONES DE E2 EN E f 1.0 0.8 0.6 , , 0.4 0.0 0.5 1.0 1.5 2.0 2.5 0.2 0.0 -1.4 -1.2 -1.0 -0.8 -0.6 Figura 1.33 Mathematica Definición de la función f = (x2 + y 2 ). In[99]:= f [x , y ]:=x2 + y 2 Mathematica Trazado de la función f = (x2 + y 2 ) transformando el punto (−1, 0.5), Aquı́ se aplica la regla rule para cambiar la presentación del punto. In[100]:= Out[100]= {Graphics[ Point[pt = {−1, 0.5}]]/. rule, TO[f ] NumberLinePlot[f @@pt, Frame → False]} Figura 1.33 Mathematica Trazado de la función f = (x2 + y 2 ) transformando los puntos (−1, 1), (−1, 0), (1, 0.5), Aquı́ también se aplica la regla rule para cambiar la presentación de los puntos. In[101]:= Out[101]= Graphics[ Point[pts = {{−1, 1}, {−1, 0}, {1, 0.5}}]]/.rule, TO[f ], NumberLinePlot[f @@#&/@pts, Frame → False]} Figura 1.34 36 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En f 1.0 0.8 0.6 0.4 , , 0.0 0.5 1.0 1.5 2.0 0.0 0.5 1.0 1.5 2.0 0.2 0.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.34 f 1.0 0.5 0.0 , , -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.35 Mathematica Trazado de la función f = (x2 + y 2 ) transformando los puntos solución del sistema ( x2 + y 2 − xy = 1 , . x2 − y 2 + xy = 1 . In[102]:= Out[102]= {dr = DiscretizeRegion [ ImplicitRegion [x2 + y 2 − xy = 1 ∧ x2 − y 2 + xy = 1, {x, y}] , BaseStyle → {PointSize → Absolute[7]}] , TO[f ], NumberLinePlot[f @@#&/@MeshCoordinates[dr], Frame → False]} Figura 1.35 Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos solución del sistema x2 + y 2 = 1. In[103]:= Out[103]= {cp = ContourPlot [x2 + y 2 = 1, {x, −1, 1}, {y, −1, 1}] , TO[f ], NumberLinePlot[f @@#&/@cp[[1, 1]], Frame → False]} Figura 1.36 37 TRAZADO DE FUNCIONES DE E2 EN E f 1.0 0.5 0.0 , , 0.0 0.2 0.4 0.6 0.8 1.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.36 f 1.0 0.5 0.0 , , 0.0 0.5 1.0 1.5 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.37 Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos solución del sistema x4 + y 4 = 1. In[104]:= Out[104]= {cp = ContourPlot [x2 + y 2 = 1, {x, −1, 1}, {y, −1, 1}] , TO[f ], NumberLinePlot[f @@#&/@cp[[1, 1]], Frame → False]} Figura 1.37 Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos de la forma (sin(u), sin(2u)), 0 < u < 2π. In[105]:= Out[105]= {pp = ParametricPlot[{sin(u), sin(2u)}, {u, 0, 2π}], TO[f ], NumberLinePlot[f @@#&/@Cases[pp, Line, ∞][[1, 1]], Frame → False]} Figura 1.38 38 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En f 1.0 0.5 0.0 , , 0.0 0.5 1.0 1.5 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.38 f 1.0 0.5 0.0 , , 0.0 0.2 0.4 0.6 0.8 1.0 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.39 Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos de la forma (v sin(u), v sin(2u)), 0 < u < 2π, 0 < v < 1. In[106]:= Out[106]= {pp = ParametricPlot[{v sin(u), v sin(2u)}, {u, 0, 2π}, {v, 0, 1}], TO[f ], NumberLinePlot[f @@#&/@pp[[1, 1]], Frame → False]} Figura 1.40 Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos que conforman la región x2 + y 2 < 1. In[107]:= Out[107]= {rp = RegionPlot [x2 + y 2 < 1, {x, −1, 1}, {y, −1, 1}] , TO[f ], NumberLinePlot[f @@#&/@rp[[1, 1]], Frame → False]} Figura 1.39 39 TRAZADO DE FUNCIONES DE E2 EN E f 1.0 0.5 0.0 , , 0.0 0.5 1.0 1.5 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.40 f 1.0 0.5 0.0 , , -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.41 0.0 0.5 1.0 1.5 40 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Mathematica Trazado de f = (x2 + y 2 ) transformando los puntos que conforman la región x4 + y 4 < 1. In[108]:= Out[108]= {rp = RegionPlot [x4 + y 4 < 1, {x, −1, 1}, {y, −1, 1}] , TO[f ], NumberLinePlot[f @@#&/@rp[[1, 1]], Frame → False]} Figura 1.41 1.11 Sistema coordenado rectangular tridimensional Consideremos tres planos mutuamente perpendiculares que se cortan en el punto común O, tal como se indica en la figura 1.42 (izquieda). Como el punto en el espacio tridimensional va a localizarse con referencia a estos elementos, los planos se llaman planos coordenados y el punto O origen del sistema de coordenadas rectangulares tridimensionales. Los ejes coordenados X ′ X, Y ′ Y , Z ′ Z se llaman, respectivamente, el eje X, el Y y el Z. Estos ejes son rectas dirigidas, cuya dirección positiva está indicada en cada uno por una flecha. Cada plano coordenado se designa por los dos ejes coordenados que contiene. Ası́, el plano coordenado que contiene al eje X y al eje Y se llama plano XY ; análogamente, tenemos los planos XZ y Y Z. Los tres planos coordenados dividen el espacio en ocho regiones llamadas octantes. El octante determinado por la partes positivas de los ejes coordenados se llama primer octante; no se acostumbra asignar ningún número a los siete restantes. Sea p un punto cualquiera del espacio tridimensional. Su posición pude determinarse haciendo pasar por p planos paralelos a los tres planos coordenados y considerando los puntos A, B y C en que cortan a los ejes X, Y y Z, respectivamente. Estos planos, juntos con los coordenados forman un parelelpı́pedo recto rectangular. Evidentemente, la posición de p con relación al sistema de coordenadas está determinada por sus distancias a los planos coordenados. Estas distancias están dadas por las longitudes de los segmentos dirigidos OA, OB y OC, llamados p1 , p2 y p3 respectivamente. Entonces los tres números reales p1 , p2 y p3 constituyen la coordenada p1 , la coordenada p2 y la coordenada p3 de p. Cada coordenada se mide a partir de origen O sobre el eje coordenado correspondiente, y es positiva o negativa según que su dirección sea la misma o la opuesta a la de la dirección positiva del eje. Para el punto p (Fig. 1.42, derecha) todas las coordenadas son positivas, y el punto está en el primer octante. Las coordenadas p1 , p2 , p3 de cualquier punto p se escriben en ese orden, se encierran entre paréntesis y el punto se representa por p = (p1 , p2 , p3 ). SISTEMA COORDENADO RECTANGULAR TRIDIMENSIONAL 41 Figura 1.42 Figura 1.43 Un punto p en el espacio tridimensional tiene una y solamente una terna de coordenadas (p1 , p2 , p3 ) relativa a un sistema coordenado rectangular especificado. Recı́procamente, una terna de coordenadas (p1 , p2 , p3 ) determina uno y solamente un punto p en el espacio tridimensional con respecto a un sistema coordenado fijo. Es importante escribir las coordenas (p1 , p2 , p3 ) de un punto p del espacio tridimensional en su propio orden, ya que la posición de una coordenada en el conjunto indica a lo largo de qué eje se mide la coordenada particular. Por esto, las coordenadas de un punto en el espacio tridimensional forman una terna ordenada de números reales. Por tanto, en vista de la discución previa, es posible decir que un sistema de coordenadas rectangulares en el espacio tridimensional establece una correspondencia biunı́voca entre cada punto del espacio tridimensional y una terna ordenada de números reales. 42 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.12 El teorema de Pohlke y las proyecciones Los dibujos rupestres indican que el trazado el objetos gráficos inmersos en E3 data de tiempos inmemoriales [7, 10]. El ser humano siempre ha tenido la necesidad de representar de gráficamente el mundo que lo rodea. Por ejemplo, la figura 1.43 muestra los dibujos de un ser sobrenatural con atributos felinos (izquierda) y de un rinoceronte (derecha). Sin embargo, la gran limitación, hasta hace más de un quinquenio, ha sido el hecho que se pretendı́a dibujar objetos o seres del espacio que percibimos (3D) sobre una superficie plana (2D) 1 . Se podrı́a argumentar que la escultura no presenta tal limitación y, menos aún, la reciente impresión 3D. No obstante, no debe perderse de vista que el constante desarrollo de la matemática exigı́a el trazado de objetos gráficos gobernados por expresiones analı́ticas (reglas de correspondencia, ecuaciones e inecuaciones). Esto se manejó bastante bien para E2 pero no ası́ para E3 , de hecho carecı́a de toda practicidad realizar una escultura para cada objeto gráfico inmerso en E3 . Algo similar ocurrirı́a con las impresiones 3D. Ante tal situación se optó por trazar las proyecciones lineales de los objetos gráficos inmersos en E3 siguiendo, de alguna manera, el camino trazado por los pintores y que conllevó al desarrollo de la geometrı́a descriptiva. En la geometrı́a descriptiva una proyección lineal denota tanto el mapeo de E3 en E2 , llamado plano de proyección, como la imagen resultante de aplicar dicho mapeo a un objeto. La imagen plana de un objeto inmerso en E3 se encuentra pasando una lı́nea a través de cada punto del objeto y encontrando las intersecciones de estas lı́neas con el plano de proyección. Estas lı́neas, los proyectores, emanan de un único punto llamado centro de proyección. Cuando el centro de proyección es infinito, de modo que todos los proyectores son paralelos, la proyección se conoce como proyección paralela. Cuando el centro de proyección está a una distancia finita del plano de proyección, se produce una proyección en perspectiva. La clasificación de las proyecciones paralelas está determinada por el ángulo entre los proyectores. y el plano de proyección. Cuando los proyectores son perpendiculares al plano de proyección, la proyección es ortográfica; de lo contrario, es oblicua. Las proyecciones ortográficas se representan como proyecciones ortográficas de vista múltiple o proyecciones axonométricas. Las proyecciones axonométricas se clasifican de acuerdo con la orientación del plano de proyección, es decir, los ángulos entre el plano de proyección y los ejes de coordenadas. Si los tres ángulos son iguales, la proyección es isométrica; si solo dos ángulos son iguales, el 1 Actualmente, ya se cuenta con plumas de impresión 3D que prometen salvar tal limitación [25]. EL TEOREMA DE POHLKE Y LAS PROYECCIONES 43 Figura 1.44 Figura 1.45 resultado es una proyección dimétrica. Si todos los ángulos son diferentes, la proyección es trimétrica (Figs. 1.44,1.45,1.46,1.47) [3]. En el año 1853 el pintor y profesor de geometrı́a descriptiva, de nacionalidad alemana, Karl Wilhelm Pohlke establece un teorema, a modo de declaración geométrica, el cual es publicado en 1860 sin demostración en la primera parte de su libro que trataba de geometrı́a descriptiva. La primera prueba rigurosa elemental fue dada por H. A. Schwarz en 1864, en aquella época estudiante de Pohlke [15]. Teorema 1. (Teorema de Pohlke) Tres lı́neas de cualquier longitud que parten de un punto en un plano formando diferentes ángulos siempre se pueden considerar como una proyección paralela (sesgada) de tres lı́neas de la misma longitud perpendiculares entre sı́. 44 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.46 Figura 1.47 El teorema de Pohlke formaliza lo que ya se usaba desde la época egipcia [17], pero es esta formalización la que permite manipular matemáticamente las proyecciones. Las grandes aliadas que van a servir para acelerar cálculos y trazados de las proyecciones son las computadoras electromecánicas programables que hacen su aparición entre los años 1930 y 1940 [23]. En la década de los cincuenta se creaba por primera vez la disciplina de Gráficos por Computadora (Computer Graphics) como una herramienta de visualización para cientı́ficos e ingenieros en centros de investigación gubernamentales y corporativos como Bell Labs y Boeing [24]. Luego, a inicios de la década de los sesenta se empieza a socializar el trazado de objetos gráficos inmersos en E3 como proyecciones sobre la pantalla de un computador (porción de E2 ) [2, 26]. La figura 1.48 muestra la rudimentaria proyección de dos poliedros (izquierda) y de las curvas parámetro de una esfera (derecha). Figura 1.48 PROYECCIONES DE E3 EN E2 45 Figura 1.49 Como se aprecia en estas dos proyecciones aún no se habı́an desarrollado los algoritmos de iluminación, árboles BSP, Z-buffer, etc. para simular los acabados que nos ofrecen los gráficos actuales (Fig. 1.49). 1.13 Proyecciones de E3 en E2 Debido a que las matemáticas requieren el trazado de objetos gráficos gobernados por expresiones analı́ticas, ya que el teorema de Pohlke formaliza el uso de las proyecciones y en vista que la computadora es una herramienta fundamental para acelerar cálculos y trazado de gráficos; es preciso definir matemáticamente cualquier poryección de E3 en E2 y visualizar su efecto con algún software especializado, en nuestro caso: el Mathematica. Es preciso señalar que en esta sección utilizaremos únicamente funciones del Mathematica para trazar objetos gráficos en E2 (Plot y ParametricPlot) con la finalidad de mostrar las técnicas básicas que están detrás de las funciones que aparentemente trazan gráficos en E3 (Plot3D y ParametricPlot3D). Además, esto servirá como referencia para cuando se llegue a la sección en la que se tratarán las proyecciones de E4 en E3 . Dada la proyección de las aristas de un cubo, por el teorema de Pohlke, es posible seleccionar las proyecciones de los ejes coordenados tal como se muestra en la figura 1.50 (izquierda), por ejemplo. De esta manera el sistema ŌX̄ Ȳ Z̄ podrá ser obtenido como una proyección del sistema OXY Z (Fig. 1.50, izquierda). Ası́, la imagen p̄ de un punto p = (p1 , p2 , p3 ) queda detemrinada por cuatro pasos, emepezando del punto Ō: 1) avanzar p1 unidades en dirección X̄, luego 2) avanzar p2 unidades en dirección Ȳ , después 3) avanzar p3 unidades en dirección Z̄ y 4) marcar el punto como p̄ (Fig. 1.50, derecha). Es preciso mencionar que se recomienda multiplicar los números p1 , p2 , p3 por los factores 0 < vp1 , vp2 , vp3 ≤ 1 (1.1) 46 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.50 con la finalidad de obtener una mejor proporción en el trazado [3]. La figura 1.50 muestra una proyección para la cual la elección de los ejes X̄, Ȳ , Z̄ no es la más común. A continuación se definirá una proyección que es la de uso más común en la mayorı́a n de textos o matemáticos. Para esto se proyectará el sistema generado por O;~i, ~j, ~k , con ejes X, Y, Z, sobre el sistema generado por {O ′ ; ~e1 , ~e2 }, con ejes X ′ , Y ′ [20]. Defı́nase la proyección P : E3 → E2 para la cual se cumple que 1 1 1 ~ , P i = − √ (~e1 + ~e2 ) = − √ , − √ 2 2 2 P ~j = ~e1 = (1, 0) , P ~k = ~e2 = (0, 1) (Fig. 1.51). Sea p = (p1 , p2 , p3 ) un punto arbitrario de E3 entonces, considerando un resultado del álgebra lineal, ! p 1 − √12 1 0 p2 . (1.2) P (p) = P (p1 , p2 , p3 ) = 1 − √2 0 1 p3 La ecuación p = (p1 , p2 , p3 ) se proyecta sobre el 1.2 indica que el punto p p punto p′ = − √12 + p2 , − √12 + p3 . Esta proyección es llamada proyección dimétrica. Un ejemplo más se obtiene al considerar otra de las proyecciones más comunes (Fig. 1.52). El resultado es la llamada proyección isométrica 1.3. √3 √3 p1 −2 0 2 P (p1 , p2 , p3 ) = p2 . (1.3) − 21 − 12 1 p3 PROYECCIONES DE E3 EN E2 47 90° 135° 135° Figura 1.51 120° 120° 120° Figura 1.52 Mathematica Fijado de los valores de algunas opciones de la función Graphics. In[109]:= SetOptions[Graphics, Frame → True, Axes → True]; Mathematica Elección de las proyecciones de ~i, ~j y ~k. Note que aquı́: P ~i = − √12 , − √12 , P ~j = (1, 0), P ~k = (0, 1) y vp1 = 35 , vp2 = vp3 = 1 (Ec. 1.1). Por comodidad se almacenan las proyecciones en la variable M . In[110]:= M = {pi, pj, pk} = o o nn − 5√3 2 , − 5√3 2 , {1, 0} , {0, 1} ; 48 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 1.0 0.8 0.6 0.4 0.2 0.0 -0.2 -0.4 -0.4 -0.2 0.0 0.2 0.4 0.6 0.8 1.0 Figura 1.53 Mathematica Definición de la proyección P . Se elige esta forma de multiplicar matrices, a diferencia de las ecuaciones 1.2 y 1.3, por conveniencia para el lenguaje Wolfram. In[111]:= P [{p1 , p2 , p3 }]:={p1, p2, p3}.M Mathematica Coordenadas de la proyección del punto p = (1, 1, 1). In[112]:= Out[112]= P [{1, 1, 1}] n 1 − 5√3 2 , 1 − 3 √ 5 2 o Mathematica Trazado de la proyección de la gráfica del punto p = (1, 1, 1). In[113]:= Out[113]= Graphics[{Point[P [{1, 1, 1}]], Arrow[{{0, 0}, #}]&/@M}] Figura 1.53 Mathematica Dado que la gráfica de α = (cos(10t), sin(10t)) es un conjunto de puntos de E3 (Ej. 2, Sec. 1.1), se usa la función incorporada Table para generar cierta cantidad de estos puntos. In[114]:= helix = Table[{t, cos(10t), sin(10t)}, {t, 0, π, 0.01}]; prohelix = P /@helix; 49 PROYECCIONES DE E3 EN E2 1.0 1.0 0.5 0.5 0.0 0.0 -0.5 -0.5 -1.0 -1.0 -1.5 -1.5 -2.0 -2.0 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 Figura 1.54 Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función α. In[116]:= Out[116]= Graphics[{Point[prohelix], Arrow[{{0, 0}, #}]&/@M}] Figura 1.54 (izquieda) Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función α unidos mediante lı́neas. In[117]:= Out[117]= Graphics[{Line[prohelix], Arrow[{{0, 0}, #}]&/@M}] Figura 1.54 (derecha) Mathematica Puesto que la gráfica de f = x2 + y 2 es un conjunto de puntos de E3 (Ej. 3, Sec. 1.1), se usa la función incorporada Table para generar algunos de estos puntos. In[118]:= graf = Table [{x, y, x2 + y 2 } , {x, −1, 1, 0.05}, {y, −1, 1, 0.05}] ; prograf = Map[P, graf, {2}]; Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función f . In[120]:= Out[120]= Graphics[{Point/@prograf, Arrow[{{0, 0}, #}]&/@M}] Figura 1.55 (izquieda) 50 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 2.0 2.0 1.5 1.5 1.0 1.0 0.5 0.5 0.0 0.0 -1.0 -0.5 0.0 0.5 1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.55 Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función f unidos mediante lı́neas. In[121]:= Out[121]= Graphics [{Line/@prograf, Line/@Transpose[prograf], Arrow[{{0, 0}, #}]&/@M}] Figura 1.55 (derecha) Mathematica Breve código para construir polı́gonos cuyos vértices son los puntos proyectados de la gráfica de f . In[122]:= prograf = Map [Partition[#, 2, 1]&, Transpose[Partition[#, 2, 1]&/@graf]] /. {{a : { , , }, b : { , , }}, {c : { , , }, d : { , , }}} :> Polygon[P /@{a, b, d, c}]; Mathematica Trazado de polı́gonos cuyos vértices son las proyecciones de los puntos de la gráfica de f . In[123]:= Out[123]= Graphics [{Directive[Yellow, EdgeForm[Black]], prograf, Black, Arrow[{{0, 0}, #}]&/@M}] Figura 1.56 (izquierda) 51 PROYECCIONES DE E3 EN E2 1.0 2.0 0.5 1.5 1.0 0.0 0.5 -0.5 0.0 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.56 Mathematica Con base en la función incorporada ContourPlot se ha implementado la nueva función ImplicitPlot3D para trazar la proyección de la gráfica de algunos puntos que satisfacen x2 + y 2 + z 2 = 1 unidos mediante lı́neas (ver el Notebook). In[124]:= Out[124]= ImplicitPlot3D [x2 + y 2 + z 2 = 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}] Figura 1.56 (derecha) Las expresiones analı́ticas de una proyección (Ecs. 1.2, 1.3) permiten obtener la proyección de objetos gráficos de E3 en E2 , de acuerdo con la elección de los ejes X̄, Ȳ , Z̄. Sin embargo, todas las proyecciones obtenidas en esta sección carecen de movimiento en E3 ; aunque es posible simular tal movimiento usando el producto matricial R = RZ (θ3 ) , RY (θ2 ) , RX (θ1 ) , que sirve para representar una rotación alrededor de los ejes Z, Y y X [12]. Mathematica Definición de la matriz de rotación alrededor de los ejes Z, Y y X. In[125]:= R3D[θ1 , θ2 , θ3 ]:=RotationMatrix[θ3, {0, 0, 1}]. RotationMatrix[θ2, {0, 1, 0}].RotationMatrix[θ1, {1, 0, 0}]; 52 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 4 4 Z X 2 2 Y 0 0 Y X Z -2 -2 -4 -4 -2 0 2 4 -4 -4 -2 0 2 4 Figura 1.57 Mathematica Código para trazar la simulación de rotación de la gráfica de la figura 1.54 (derecha). La figura 1.57 muestra algunas vistas. In[126]:= Out[126]= Animate[ {pir, pjr, pkr} = P [#.R3D[θ, θ, θ]]&/@IdentityMatrix[3]; prohelix = P /@(helix/. {a , b , c } :> {a, b, c}.R3D[θ, θ, θ]); Show[Graphics[{ MapThread[{Arrow[{{0, 0}, 3#1}], Text[#2, 3#1]}&, {{pir, pjr, pkr}, {”X”, ”Y ”, ”Z”}}], }, PlotRange → {{−4, 4}, {−4, 4}}], Graphics[Line[prohelix]]], {θ, 0, 2π}, AnimationRunning → False] Figura 1.57 Obviamente, los resultados gráficos obtenidos en esta sección son rudimentarios pero su objetivo ha sido mostrar las técnicas básicas en las que se basan las funciones incorporadas en el Mathematica para trazar gráficos en E3 . Su utilidad se apreciará mejor en la sección 1.18. En la siguiente sección se apreciarán proyecciones de objetos gráficos de 3 E en E2 hechas con funciones incorporadas en el Mathematica las cuales dan la total impresión de no ser proyecciones, sino que realmente se están visualizando en E3 . Esto es gracias al desarrollo de diversos algoritmos, los cuales aprovecharemos en la sección 1.18 para visualizar la proyección de objetos inmersos en E4 . TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E3 53 1.14 Trazado de objetos gráficos inmersos en E3 En E3 es posible encontrar objetos gráficos de dimensión 0: puntos, dimensión 1: lı́neas (rectas o curvas), dimensión 2: superficies (planas o en E3 ) y sólidos (confinados a E3 , sin escapar a E4 ). Mathematica Fijado de valores para la opción Axes de la función Graphics3D. In[127]:= SetOptions[Graphics3D, Axes → True]; Mathematica √ √ 1 1 Trazado de los puntos (−1, −2, −1), − 2, 1, 0 , 3, 2 , 4 y 1, −1, − 21 . In[128]:= Out[128]= Graphics3D [{AbsolutePointSize[7], 0.5, 0.7], √ RGBColor[0.4, √ Point[{−1, −2, −1}], Point − 2, 1, 0 , Point 3, 12, 41 , Point 1, −1, −12 Figura 1.58 (izquierda) Mathematica 2 2 2 x + y + z = 1 , 2 2 Trazado de los puntos solución de x − y + z 2 = 1 , x − y2 + z = 1 . In[129]:= Out[129]= . DiscretizeRegion [ImplicitRegion [ x2 + y 2 + z 2 = 1 ∧ x2 − y 2 + z 2 = 1 ∧ x − y 2 + z = 1, {x, y, z}] , BaseStyle → {PointSize → Absolute[7]}, Boxed → True] Figura 1.58 (derecha) Mathematica Trazado de la lı́nea que une los puntos (−1, −1, −1) y 2, 1, 12 . In[130]:= Out[130]= Graphics3D [{Thick, RGBColor[.4, .5, .7], Line[{{−1, −1, −1}, {2, 1, 21}}] Figura 1.21 (izquierda) 54 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.58 Figura 1.59 Mathematica Trazado de los puntos solución de In[131]:= Out[131]= ( x + y − 2z = 1 , x−y −z = 1. . DiscretizeRegion [ImplicitRegion[ x + y − 2z = 1 ∧ x − y − z = 1, {x, y, z}], BaseStyle → {Thick, PointSize → Absolute[0]}, Boxed → True] Figura 1.59 (derecha) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E3 55 Figura 1.60 Mathematica Trazado de los puntos solución de In[132]:= Out[132]= ( x2 + y 2 + z 2 = 1 , 2 x − 21 + y 2 = 14 . . DiscretizeRegion [ImplicitRegion [ i 2 x2 + y 2 + z 2 = 1 ∧ x − 21 + y 2 = 14, {x, y, z} , MaxCellMeasure → 0.000001, BaseStyle → {Thick, PointSize → Absolute[0]}, Boxed → True] Figura 1.60 (izquierda) Mathematica Trazado de los puntos solución de x3 + y 3 + z 3 − 3xy − 3xz − 3yz = 0. In[133]:= Out[133]= ContourPlot3D[x3 + y 3 + z 3 − 3xy − 3xz − 3yz = 0, {x, −5, 4}, {y, −5, 4}, {z, −5, 4}] Figura 1.60 (derecha) Mathematica Trazado de los puntos solución de x3 +y 3 +z 3 +3xyz = 1. Este conjunto podrı́a considerarse otra silla de montar de mono ([19], p. 237). In[134]:= Out[134]= ContourPlot3D[x3 + y 3 + z 3 + 3xyz = 1, {x, −5, 5}, {y, −5, 5}, {z, −5, 5}, ViewPoint → {3.2, 1, 0.2}] Figura 1.61 (izquierda) 56 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.61 Mathematica Trazado de un cubo unitario. In[135]:= Out[135]= Graphics3D(Cuboid[]) Figura 1.61 (derecha) Mathematica Trazado de la región D : −1 < x < 1 ∧ −1 < y < 1 ∧ −1 < z < 1 (sólido en E3 ). In[136]:= Out[136]= RegionPlot3D[−1 < x < 1 ∧ −1 < y < 1 ∧ −1 < z < 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}] Figura 1.62 (izquierda) Mathematica Trazado de la región D : x4 + x2 y 2 z 2 + y 4 + z 4 < 1 (sólido en E3 ). In[137]:= Out[137]= RegionPlot3D [x4 + y 4 + z 4 + x2 y 2z 2 < 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}] Figura 1.62 (derecha) Los siguientes ejemplos, en los que se hacen interpretaciones geométricas de la derivada de una función de E2 en E (matriz jacobiana) y de la derivada direccional del mismo tipo de funciones, se remarca la ventaja de usar un TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E3 57 Figura 1.62 sistema coordenado tridimensional para trazar las gráficas de funciones que son subconjuntos de E3 (Sec. 1.1). Bueno, teniendo en cuenta siempre que, en realidad, se trata de proyecciones de objetos gráficos del espacio tridimensional sobre el plano. Adicionalmente, más adelante, se incluyen ejemplos de otros subconjuntos de E2 , esto es las gráficas de funciones de E en E2 y de funciones de E2 en E. Mathematica Interpretación geométrica de las derivadas parciales como generadores del plano tangente a la gráfica de la función f = (x2 + y 2 ), −1 < x < 1 ∧ −1 < y < 1, en el punto (x0 , y0 ) = (0.5, −0.75) de su dominio. In[138]:= Out[142]= f [x , y ]:=x2 + y 2 {x0, y0} = {0.5, −0.75}; d = 0.75; Pt = f [1,0] [x0, y0], f [0,1] [x0, y0] .({x, y} − {x0, y0}) + f [x0, y0]; Show[ Graphics3D[{AbsolutePointSize[7], Point[{x0, y0, f [x0, y0]}]}], Plot3D[f [x, y], {x, −1, 1}, {y, −1, 1}], Plot3D[Pt, {x, x0 − d, d + x0}, {y, y0 − d, d + y0}, PlotStyle → Directive[Opacity[0.8], Blue]] ] Ver figura 1.63 (izquierda) 58 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.63 Mathematica Interpretación geométrica de la derivada direccional de la función f = (x2 +y 2 ) en dirección del vector ~v = (cos(t), sin(t)). In[143]:= Out[149]= f [x , y ]:=x2 + y 2 {x0, y0} = {−0.5, 0.5}; t = 3π/4; {v1, v2} = {Cos[t], Sin[t]}/2; grd = f [1,0] [x0, y0], f [0,1] [x0, y0] .{v1, v2}; pp = {x0, y0, 0}; vp = {v1, v2, 0}; pe = {x0, y0, f [x0, y0]}; ve = {v1, v2, grd}; Show[ Graphics3D[{PointSize[Large], Blue, Point[pp], Black, Arrow[Tube[{pp, pp + vp}]]}], Graphics3D[{PointSize[Large], Blue, Point[pe], Red, Arrow[Tube[{pe, pe + ve}]]}], Plot3D[{0, f [x, y]}, {x, −1, 1}, {y, −1, 1}, PlotStyle → Opacity[0.7], Mesh → False] ] Figura 1.63 (derecha) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E3 59 Figura 1.64 Como se aprecia en la tercera lı́nea de In[143] en la interpretación geométrica de la derivada direccional se ha definido el vector dirección, de la misma, en términos del seno y coseno del parámetro t. De esta manera el lector podrá cambiar el valor de t para indicar una dirección arbiraria. Para el trazado de las gráficas de otras funciones cuyas gráficas también son subconjuntos de E3 se exponen dos formas de realizar el trazado. Una es usando reglas de transformación que se aplican a salidas obtenidas con funciones incorporadas, tales como Table, ParametricPlot y RegionPlot; y la otra es directamente con la función incorporada ParametricPlot3D. En el último caso debe verse a esta función como excelente generadora de de triadas de puntos vinculados mediante una lı́nea ya que si se quiere ser estricto, ParametricPlot3D, traza gráficas de imágenes de funciones (rango) cuyas gráficas son subconjuntos de E4 . Mathematica Trazado de la función (u) → (u, cos(u), sin(u)) a partir de la generación de una tabla de triadas con la función icorporada Table. In[150]:= Out[151]= pts = Table {u, cos(10u), sin(10u)}, u, 0, π2 , 0.01 ; Graphics3D[{Line[pts]}] Ver figura 1.64 (izquierda) Mathematica Trazado de la función (u) → (u, cos(u), sin(u)) a partir de la generación de una tabla de triadas mediante la función incorporada ParametricPlot3D. In[152]:= Out[152]= ParametricPlot3D {u, cos(10u), sin(10u)}, u, 0, π2 Ver figura 1.64 (derecha) 60 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.65 Mathematica Definición de la función f = (x2 + y 2 ). In[153]:= f [x , y ]:=x2 + y 2 Mathematica Trazado de la función (u) → (sin(u), sin(2u), f (sin(u), sin(2u))) a partir de la modificación de la salida proporcionada por la función incorporada ParametricPlot. In[154]:= Out[155]= pts = Table {u, cos(10u), sin(10u)}, u, 0, π2 , 0.01 ; Graphics3D[{Line[pts]}] Ver figura 1.65 (izquierda) Mathematica Trazado de la función (u) → (sin(u), sin(2u), f (sin(u), sin(2u))) a partir la generación de una tabla de triadas mediante la función incorporada ParametricPlot3D. In[156]:= Out[156]= ParametricPlot3D {u, cos(10u), sin(10u)}, u, 0, π2 Ver figura 1.65 (derecha) Mathematica Trazado de la función (u, v) → (v sin(u), v sin(2u), f (v sin(u), v sin(2u))) a partir de la modificación de la salida proporcionada por la función incorporada ParametricPlot. In[157]:= Out[158]= pol = ParametricPlot[{v sin(u), v sin(2u)}, {u, 0, 2π}, {v, 0, 1}, Mesh → True][[1]]; Graphics3D[{pol/. {x ?NumericQ, y ?NumericQ} :> {x, y, f [x, y]}}] Ver figura 1.66 (izquierda) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E3 61 Figura 1.66 Mathematica Trazado de la función (u, v) → (v sin(u), v sin(2u), f (v sin(u), v sin(2u)))) a partir la generación de una tabla de triadas mediante la función incorporada ParametricPlot3D. In[159]:= Out[159]= ParametricPlot3D[{vSin[u], vSin[2u], f [vSin[u], vSin[2u]]}, {u, 0, 2π}, {v, 0, 1}] Ver figura 1.66 (derecha) Mathematica Trazado de la función f = x2 + y 2 , a partir de su dominio, mediante la modificación de la salida proporcionada por la función incorporada RegionPlot. In[160]:= Out[161]= pol = RegionPlot [x8 + y 8 + x4 y 4 < 1, {x, −1, 1}, {y, −1, 1}, Mesh → True] [[1]]; Graphics3D{pol/. {x ?NumericQ, y ?NumericQ} :> {x, y, f [x, y]}}] Ver figura 1.67 (izquierda) Mathematica Trazado de la función f = RegionFunction. In[162]:= Out[162]= x2 + y 2 especificando su dominio mediante la opción Plot3D [x2 + y 2, {x, −1, 1}, {y, −1, 1}, BoxRatios →Automatic, RegionFunction → #18 + #28 + #12 #22 < 1& Ver figura 1.67 (derecha) 62 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.67 1.15 Trazado de funciones de E en E3 La función incorporada ParametricPlot3D del Mathematica permite trazar las imágenes de funciones que van de E en E3 . De acuerdo con la definición 1.1 las gráficas de estas funciones son subconjuntos de E4 y el Mathematica no incorpora ninguna función para trazar estas gráficas. Mathematica Fijado de los valores de algunas opciones. In[163]:= SetOptions[Graphics3D, Axes → True]; SetOptions[NumberLinePlot, Spacings → 0, PlotStyle → {Directive[Thick, PointSize[Large]]}]; Mathematica Denifición de la regla rule que permitirá dar formato al trazo de los puntos. In[166]:= rule = {p : Point[ ] :> {PointSize[Large], RGBColor[0.4, 0.5, 0.7], p}}; Mathematica Definición de las funciones OPoint y CPoint que permiten trazar puntos incluidos y excluidos de una gráfica, según sea el caso. In[168]:= OPoint(p ):={RGBColor(0.4, 0.5, 0.7), PointSize[Large], Point[p], GrayLevel[1], PointSize[Medium], Point[p]} CPoint(p ):={RGBColor[0.4, 0.5, 0.7], PointSize[Large], Point[p]} 63 TRAZADO DE FUNCIONES DE E EN E3 α 0 1 2 3 4 , , Figura 1.68 Mathematica Definición de la función α = 3 cos(u), 3 sin(u), 9 cos2 (u) . In[171]:= α[u ]:= {3 cos(u), 3 sin(u), 9 cos2 (u)} Mathematica Trazado de la función α transformando el punto (2). In[172]:= Out[172]= NumberLinePlot[2, Frame → False], TO[α], Graphics3D[Point[α(2)]]/. rule (Ver figura 1.68) Mathematica Trazado de la función α transformando los puntos (−1, 2, 3.5). In[173]:= Out[173]= NumberLinePlot[{−1, 2, 3.5}, Frame → False], TO[α], Graphics3D[Point[α(2)]]/. rule (Ver figura 1.69) Mathematica Cálculo de los puntos solución de u2 + u − 1 = 0 y su almacenamiento en la variable pts. In[174]:= pts = Solve [u2 + u − 1 = 0, u, R] /. {var → val } :→ val Mathematica Trazado de la función α transformando los puntos pts. In[175]:= Out[175]= {NumberLinePlot [u2 + u − 1 = 0, {u, −4, 4}, Frame → False] , TO[α], Graphics3D(Point[α/@pts])/. rule} (Ver figura 1.70) 64 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En α -1 0 1 2 3 4 , , Figura 1.69 α -4 -2 0 2 4 , , Figura 1.70 α -1.0 -0.5 0.0 0.5 1.0 , , Figura 1.71 TRAZADO DE FUNCIONES DE E EN E3 65 α 0 1 2 3 4 5 6 7 , , Figura 1.72 Mathematica Trazado de la función α transformando el intervalo [−1, 1]. In[176]:= Out[176]= NumberLinePlot[Interval[{−1, 1}], Frame → False], TO[α], Show[ ParametricPlot3D[α[u], {u, −1, 1}], Graphics3D[{Point[{α[−1], α[1]}]}]/. rule ]} (Ver figura 1.71) Mathematica Trazado de la función α transformando la región 0 < u < 2π. In[177]:= Out[177]= {NumberLinePlot[0 < u < 2π, {u, 0, 2π}, Frame → False], TO[α], Show[ ParametricPlot3D[α[u], {u, 0, 2π}], Graphics3({OPoint[α[0]], OPoint[α[2π]]}) ]} (Ver figura 1.72) Mathematica √ Definición de la función α = u, u, 1 − u2 . In[178]:= √ α[u ]:= u, u, 1 − u2 66 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En α -1.0 -0.5 0.0 0.5 1.0 , , Figura 1.73 Mathematica Trazado de la función α transformando la región −1 < u < 1. In[179]:= Out[179]= {NumberLinePlot[−1 < u < 1, {u, −1, 1}, Frame → False], TO[α], Show[ ParametricPlot3D[α[u], {u, −1, 1}], Graphics3({OPoint[α[−1]], OPoint[α[1]]}) ]} (Ver figura 1.73) 1.16 Trazado de funciones de E2 en E2 En esta sección utilizaremos las funciones incorporadas que se ejemplificaron en la sección 1.8 para trazar los dominios y rangos de funciones definidas de E2 en E2 . Además, con base en el isormofismo que existe entre C y E2 , en la parte final se abordan algunos ejemplos que involucran funciones complejas transformando subconjuntos de C. Como el lector podrá apreciar, esta es la forma común en que la mayorı́a de textos presenta el trazado de las funciones complejas. Debe quedar claro que en tales ejemplos se trazan el dominio y el rango de dichas funciones pues la gráfica de las mismas es un subconjunto de C2 , isomorfo a E4 (Sec. 1.1). 67 TRAZADO DE FUNCIONES DE E2 EN E2 F 1.0 -0.8 -1.0 0.8 -1.2 0.6 -1.4 , , 0.4 -1.6 -1.8 0.2 -2.0 -2.2 0.0 -1.4 -1.2 -1.0 -0.8 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 -0.6 Figura 1.74 Mathematica Fijado de los valores de algunas opciones. In[180]:= SetOptions[Graphic, Frame → True, Axes → True]; SetOptions[RegionPlot, PlotRange → All, AspectRatio → Automatic]; SetOptions[ParametricPlot, Frame → True, PlotRange → All, AspectRatio → Automatic]; SetOptions[ContourPlot, PlotRange → All, AspectRatio → Automatic]; Mathematica Definición de la regla rule. Esta regla permitirá dar formato al trazado de los puntos. In[181]:= r = {p : Point[ ] :> {PointSize[Large], RGBColor[.4, .5, .7], p}}; Mathematica Definición de la función F = u2 − v 2 , u − v . In[182]:= F [u , v ]:= {u2 − v 2 , u − v} Mathematica Trazado de la función F transformando el punto (−1, 0.5). In[183]:= Out[183]= {pt = Graphics[Point[{−1, 0.5}]]/. r, TO[F ], pt/. {x ?NumericQ, y ?NumericQ} :> F [x, y]} (Ver figura 1.74) 68 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 0.5 F 0.0 1.0 0.8 -0.5 0.6 0.4 , 0.0 -1.0 , -1.0 0.2 -0.5 0.0 0.5 1.0 -1.5 -2.0 0.0 0.2 0.4 0.6 0.8 1.0 Figura 1.75 1.0 F 1.0 0.5 0.5 0.0 , 0.0 , -0.5 -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.0 0.0 0.2 0.4 0.6 0.8 1.0 Figura 1.76 Mathematica Trazado de la función F transformando los puntos (−1, 1), (−1, 0), (1, 0.5). In[184]:= Out[184]= {pts = Graphics[Point[{{−1, 1}, {−1, 0}, {1, 0.5}}]]/. r, TO[F ], pts/. {x ?NumericQ, y ?NumericQ} :> F [x, y]} (Ver figura 1.75) Mathematica Trazado de la función F transformando los puntos solución de In[185]:= Out[185]= ( x2 − xy + y 2 = 1 , x2 + xy − y 2 = 1 . {dr = DiscretizeRegion[ ImplicitRegion [x2 − xy + y 2 = 1 ∧ x2 + xy − y 2 = 1, {x, y}] , BaseStyle → {PointSize → Absolute[7]}], TO[F ], Graphics(Point[(F @@#1&)/@MeshCoordinates[dr]])/. r} (Ver figura 1.76) . 69 TRAZADO DE FUNCIONES DE E2 EN E2 F 1.5 1.0 1.0 0.5 0.5 0.0 , , 0.0 -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 Figura 1.77 F 1.5 1.0 1.0 0.5 0.5 0.0 , , 0.0 -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 -1.5 1.0 -0.5 0.0 0.5 1.0 Figura 1.78 Mathematica Trazado de la función F transformando los puntos solución de x4 + y 4 = 1. In[186]:= Out[186]= {cp = ContourPlot [x4 + y 4 = 1, {x, −1, 1}, {y, −1, 1}] , TO[F ], cp/. {x ?NumericQ, y ?NumericQ} :> F [x, y]} (Ver figura 1.77) Mathematica Trazado de la función F transformando los puntos de la forma (sin(u), sin(2u)), 0 < u < 2π. In[187]:= Out[187]= {pp = ParametricPlot[{Sin[u], Sin[2u]}, {u, 0, 2π}], TO[F ], pp/. {x ?NumericQ, y ?NumericQ} :> F [x, y]} (Ver figura 1.78) 70 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F 1.5 1.0 1.0 0.5 0.5 0.0 , 0.0 , -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 -1.5 1.0 -0.5 0.0 0.5 1.0 Figura 1.79 F 1.5 1.0 1.0 0.5 0.5 0.0 , , 0.0 -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 Figura 1.80 Mathematica Trazado de la función F transformando los puntos de la forma (v sin(u), v sin(2u)), 0 < u < 2π, 0 < v < 1. In[188]:= Out[188]= {pp = ParametricPlot[{vSin[u], vSin[2u]}, {u, 0, 2π}, {v, 0, 1}], TO[F ], pp/. {x ?NumericQ, y ?NumericQ} :> F [x, y]} (Ver figura 1.79) Mathematica Trazado de la función F transformando los puntos de la región x4 + y 4 < 1. In[189]:= Out[189]= {rp = RegionPlot [x4 + y 4 < 1, {x, −1, 1}, {y, −1, 1}] , TO[F ], rp/. {x ?NumericQ, y ?NumericQ} :→ F [x, y]} (Ver figura 1.80) 71 TRAZADO DE FUNCIONES DE E2 EN E2 F 1.5 1.0 1.0 0.5 0.5 0.0 , , 0.0 -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.5 -0.5 0.0 0.5 1.0 Figura 1.81 Mathematica Definición de la función compleja F = z 2 . In[190]:= F [z ]:=z 2 Mathematica Trazado de la función F transformando los puntos de la forma (sin(u) + i sin(2u)). In[191]:= Out[191]= {pp = ParametricPlot[ReIm[Sin[u] + ISin[2u]], {u, 0, 2π}], TO[F ], pp/. {x ?NumericQ, y ?NumericQ} :> ReIm[F [x + iy]]} (Ver figura 1.81) Mathematica Trazado de la función F transformando los puntos de la forma (v sin(u) + iv sin(2u)). In[192]:= Out[192]= {pp = ParametricPlot[ReIm[vSin[u] + IvSin[2u]], {u, 0, 2π}, {v, 0, 1}], TO[F ], pp/. {x ?NumericQ, y ?NumericQ} :> ReIm[F [x + iy]]} (Ver figura 1.82) Mathematica Trazado de la función F transformando los puntos que satisfacen máx(|x| , |y|) = 1. In[193]:= Out[193]= {cp = ContourPlot[Max[Abs[x], Abs[y]] = 1, {x, −1.1, 1.1}, {y, −1.1, 1.1}], TO[F ], cp/. {x ?NumericQ, y ?NumericQ} :> ReIm[F [x + iy]]} (Ver figura 1.83) 72 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F 1.5 1.0 1.0 0.5 0.5 0.0 , , 0.0 -0.5 -0.5 -1.0 -1.0 -1.0 -0.5 0.0 0.5 1.0 -1.5 -0.5 0.0 0.5 1.0 Figura 1.82 2 F 1.0 1 0.5 0.0 , , 0 -0.5 -1 -1.0 -1.0 -0.5 0.0 0.5 1.0 -2 -1.0 -0.5 0.0 0.5 1.0 Figura 1.83 2 F 1.0 1 0.5 0.0 , , 0 -0.5 -1 -1.0 -1.0 -0.5 0.0 0.5 1.0 -2 -1.0 -0.5 Figura 1.84 0.0 0.5 1.0 TRAZADO DE FUNCIONES DE E3 EN E 73 Mathematica Trazado de la función F transformando los puntos de la región máx(|x| , |y|) < 1. In[194]:= Out[194]= {cp = ContourPlot[Max[Abs[x], Abs[y]] < 1, {x, −1, 1}, {y, −1, 1}], TO[F ], cp/. {x ?NumericQ, y ?NumericQ} :> ReIm[F [x + iy]]} (Ver figura 1.84) 1.17 Trazado de funciones de E3 en E En esta sección trazaremos el dominio y rango de funciones de E3 en E. Para tal fin utilizaremos las funciones incorporadas ejmeplificadas en la sección 1.14. Adicionalmente, como se aprecia en los dos ejemplos finales de esta sección, se ha modificado la función incorporada ParametricPlot3D para que trace sólidos en E3 . Mathematica Fijado de los valores de algunas opciones. In[195]:= SetOptions[NumberLinePlot, Spacings → 0, PlotStyle → {Directive[Thick, PointSize[Large]]}]; SetOptions[Graphics3D, Axes → True]; Mathematica Definición de la regla de transformación rule que permitirá dar fromato al trazado de los piuntos. In[196]:= rule = {p : Point[ ] :> {PointSize[Large], RGBColor[0.4, 0.5, 0.7], p}}; Mathematica Definición de la función F = x2 + y 2 + z 2 . In[197]:= F [x , y , z ]:=x2 + y 2 + z 2 Mathematica Trazado de la función F transformando el punto (−1, 0.5, 1). In[198]:= Out[198]= {Graphics3D[Point[pt = {−1, 0.5, 1}]]/. rule, TO[F ], NumberLinePlot[F @@pt, Frame → False]} (Ver figura 1.85) 74 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F , , 0 1 2 3 4 5 0.0 0.5 1.0 1.5 2.0 2.5 0.0 0.2 Figura 1.85 F , , Figura 1.86 F , , Figura 1.87 0.4 0.6 0.8 1.0 75 TRAZADO DE FUNCIONES DE E3 EN E Mathematica Trazado de la función F transformando los puntos (−1, 1, 0.5), (−1, 0, 1), (1, 0.5, 0.25). In[199]:= Out[199]= {Graphics3D[ Point[pts = {{−1, 1, 0.5}, {−1, 0, 1}, {1, 0.5, 0.25}}]]/.rule, TO[F ], NumberLinePlot[F @@#&/@pts, Frame → False]} (Ver figura 1.86) Mathematica Trazado de la función 2 2 2 x − xyz + y + z = 1, x2 + xyz − y 2 − z 2 = 1 , . 2 x + xyz + y 2 − z 2 = 1 . In[200]:= Out[200]= F transformando los puntos solución de {dr = DiscretizeRegion[ ImplicitRegion [x2 − xyz + y 2 + z 2 = 1 ∧ x2 + xyz − y 2 − z 2 = 1∧ x2 + xyz + y 2 − z 2 = 1, {x, y, z}] , BaseStyle → {PointSize → Absolute[7]}, Boxed → True], TO[F ], NumberLinePlot[F @@#&/@MeshCoordinates[dr], Frame → False]} (Ver figura 1.87) Mathematica Trazado de la función F transformando los puntos solución de In[201]:= Out[201]= ( x2 + (z − 1)2 = 4 , y 2 + (z + 1)2 = 3 . . {dr = DiscretizeRegion[ ImplicitRegion [x2 + (z − 1)2 = 4 ∧ y 2 + (z + 1)2 = 3, {x, y, z}] , BaseStyle → {Thick, PointSize → Absolute[0]}, Boxed → True], TO[F ], NumberLinePlot[F @@#&/@MeshCoordinates[dr], Frame → False]} (Ver figura 1.88) 76 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F , , 0 1 2 3 4 5 Figura 1.88 F , , 0 20 40 60 80 100 0 20 40 60 80 100 Figura 1.89 F , , Figura 1.90 77 TRAZADO DE FUNCIONES DE E3 EN E F , , 0 1 2 3 Figura 1.91 Mathematica Trazado de la función F transformando los puntos de la forma 3 cos(u), 3 sin(u), 9 cos2 (u) , 0 < u < 2π. In[202]:= Out[202]= {pp = ParametricPlot3D [{3Cos[u], 3Sin[u], 9Cos[u]2 } , {u, 0, 2π}] , TO[F ], NumberLinePlot[(F @@#1&)/@Cases[pp, Line, ∞][[1, 1]], Frame → False]} (Ver figura 1.89) Mathematica Trazado de la función F transformando los 2 3v cos(u), 3v sin(u), 9v cos (u) , 0 < u < 2π, 0 < v < 1. In[203]:= Out[203]= puntos de la forma {pp = ParametricPlot3D [{3vCos[u], 3vSin[u], 9vcos[u]2 } , {u, 0, 2π}, {v, 0, 1}], TO[F ], NumberLinePlot[F @@#&/@pp[[1, 1]], Frame → False]} (Ver figura 1.90) Mathematica Trazado de la función F transformando los puntos de la gráfica de la función f = (x2 + y 2 ) tales que x8 + y 8 + x2 y 2 < 1. In[204]:= Out[204]= {rp = Plot3D [x2 + y 2 , {x, −1, 1}, {y, −1, 1}, BoxRatios → Automatic, RegionFunction → #18 + #28 + #12 #22 < 1& , TO[F ], NumberLinePlot[F @@#&/@rp[[1, 1]], Frame → False]} (Ver figura 1.91) 78 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F , , 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 Figura 1.92 F , , Figura 1.93 Mathematica Trazado de la función F transformando los puntos solución de x2 + y 2 + z 2 = 1. In[205]:= Out[205]= {cp = ContourPlot3D [x2 + y 2 + z 2 = 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}], TO[F ], NumberLinePlot[(F @@#1&)/@cp[[1, 1]], Frame → False]} (Ver figura 1.92) Mathematica Trazado de la función F transformando los puntos de la región x2 + y 2 + z 2 < 1. In[206]:= Out[206]= {rp = RegionPlot3D [x2 + y 2 + z 2 < 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}], TO[F ], NumberLinePlot[F @@#&/@rp[[1, 1]], Frame → False]} (Ver figura 1.93) TRAZADO DE FUNCIONES DE E3 EN E 79 Figura 1.94 Al comparar las gráficas de las figuras 1.92 y 1.93 se observa que la imagen (rango) es la misma. Esto no deberı́a ser ası́, pero sucede que la salida, que deberı́a ser un sólido (objeto tridimensional), en realidad es algo similar a una cáscara (objeto bidimensional). Por tal motivo, ambas imágenes recaen en el punto (1), cuando lo correcto es que en la primera figura sı́ sea el punto (1) y en la segunda, el intervalo h−1, 1i. Es decir, los algoritmos en los que se basa el lenguaje Wolfram empiezan a tener limitaciones en el trazado de sólidos. Mathematica Trazado de un mallado que aproxima al sólido −1 < x < 1 ∧ −1 < y < 1 ∧ −1 < z < 1 como una terna de puntos de la forma (x, y, z). In[207]:= Out[207]= ParametricPlot3D[{x, y, z}, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}] (Ver figura 1.94) Mathematica Trazado de la función F transformando los puntos de la forma {w cos(u) cos(v), w sin(u) cos(v), w sin(v)}, 0 < u < 2π, − π2 < v < π2 , 0 < w < 1 (bola abierta, con centro en el origen y radio 1). Note que este caso la imagen se aproxima al intervalo h−1, 1i. In[208]:= Out[208]= {pp = ParametricPlot3D[ {wCos[u]Cos[v], wSin[u]Cos[v],wSin[v]}, {u, 0, 2π}, v, − π2 , π2 , {w, 0, 1} , TO[F ], NumberLinePlot[F @@#&/@Flatten[ Cases[pp, GraphicsComplex[p , q ] :> p, ∞], 1], Frame → False]} (Ver figura 1.95) 80 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En F , , 0.0 0.2 0.4 0.6 0.8 1.0 Figura 1.95 F , , 0 1 2 3 4 5 Figura 1.96 Mathematica Trazado de la función F transformando los puntos de la forma v(cos(4u) + 1) cos(u), v sin(u)(cos(4u) + 1), w, 0 < u < 2π, 0 < v < 1, 0 < w < 1. In[209]:= Out[209]= {pp = ParametricPlot3D[ {v(Cos [4u] + 1)Cos[u], vSin[u](Cos[4u] + 1), w}, {u, 0, 2π}, {v, 0, 1} , {w, 0, 1}] , TO[F ], NumberLinePlot[F @@#&/@Flatten[ Cases[pp, GraphicsComplex[p , q ] :> p, ∞], 1], Frame → False]} (Ver figura 1.96) PROYECCIONES DE E4 EN E3 81 Figura 1.97 Figura 1.98 1.18 Proyecciones de E4 en E3 El teorema de Pohlke fue formulado para realizar proyecciones de E3 en E ; sin embargo, es posible expandirlo de manera natural para realizar proyecciones de E4 en E3 [14, 22, 29]. Por ejemplo, tomando en cuenta que la proyección del eje X en la figura 1.51 está sobre la prolongación de la diagonal de un cuadrado (Fig.1.97, izquierda) es posible extender esta idea para proyectar el sistema OXY ZW sobre el sistema ŌX̄ Ȳ Z̄ W̄ , eligiendo los ejes tal como se muestra en la figura 1.97 (derecha). Note que la proyección del eje X se elije de tal manera que descansa sobre la prolongación ) Ȳ W̄ = < ) Z̄ W̄ = 90◦ y ) Ȳ Z̄ = < de la diaginal de un cubo, adicionalmente < ◦ ′ ′′ < ) X̄ Ȳ = < ) X̄ Z̄ = < ) X̄ W̄ ≈ 125 15 51.803 . Para encontrar las expresiones analı́ticas de esta n o proyección, se proyectará el sistema coordenado generado ~ ~ ~ ~ por O; i, j, k, l , con ejes X, Y, Z, W , sobre el sistema coordenado generado por {O ′ ; ~e1 , ~e2 , ~e3 }, con ejes X ′ , Y ′ , Z ′ . 2 82 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.99 Defı́nase la proyección P : E4 → E3 para la cual se cumple que (Fig. 1.98) P P P P 1 1 1 1 ~i = − √ (~e1 + ~e2 + ~e3 ) = − √ , − √ , − √ , 3 3 3 3 ~j = ~e1 = (1, 0, 0) , ~k = ~e2 = (0, 1, 0) , ~l = ~e3 = (0, 0, 1) . Sea p = (p1 , p2 , p3 , p4 ) un punto arbitrario de E4 entonces P (p) = P (p1 , p2 , p3 , p4 ) = − √13 − √13 − √13 p 1 1 0 0 p 2 0 1 0 p3 . 0 0 1 p4 (1.4) La ecuación 1.4 indica que el punto p = (p1 , p2 , p3 , p4 ) se proyecta sobre ′ el punto p = − √p13 + p2 , − √p13 + p3 , − √p13 + p4 . Otro ejemplo se obtiene extendiendo la proyección definida en la ecuación 1.3. La figura 1.99 (izquierda) muestra que el origen del sistema ŌX̄ Ȳ Z̄ está localizado en el centroide de un triángulo equilátero y que los ejes van del centroide hacia los vértices del triángulo. Del mismo modo, es posible ubicar el origen del sistema Ō X̄ Ȳ Z̄ W̄ sobre el centroide de un tetraedro equilátero y los ejes yendo del centroide hacia los vértices del tetraedro (Fig. 1.99, derecha). De esta manera se obtiene la proyección (Fig. 1.100) PROYECCIONES DE E4 EN E3 83 Figura 1.100 P (p1 , p2 , p3 , p4 ) = √ −q32 − 23 − 13 √ 2 − q3 2 3 1 −3 √ 2 2 3 0 − 31 p 1 0 p 2 0 p3 . 1 p4 (1.5) Aquı́ los ángulos formados por los ejes, tomados de dos en dos, miden aproximadamente 161◦33′ 54.1842′′. Antes de codificar los resultados es preciso mencionar que aún no contamos con la tecnologı́a apropiada para visualizar proyecciones de E4 en E3 . Para eso serı́a preciso haber desarrollado pantallas tridimensionales, algo parecido a hologramas. La buena noticia es que se está trabajando en el desarrollo de esa tecnologı́a [18]. Por lo cual, en realidad, seguimos visualizando las proyecciones en E2 ; pero el Mathematica disimula bastante bien esta limitación. Otro inconveniente, isorteable hasta hoy, es que no tenemos acceso a E4 para comparar el objeto real con su proyección en E3 , tal como podemos hacer con los objetos en E3 y sus proyecciones en E2 . Mathematica Fijado del valor de la opción Axes de la función Graphics3D. In[210]:= SetOptions[Graphic3Ds, Axes → True]; 84 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.101 Mathematica Elección de las proyecciones de ~i, ~j, ~k y ~l. Note que aquı́: P ~i = − √13 , − √13 , − √13 , P ~j = (1, 0, 0), P ~k = (0, 1, 0), P ~l = (0, 0, 1) y vp1 = 53 , vp2 = vp3 = vp4 = 1 (por extensión de Ec. 1.1). Por comodidad se almacenan las proyecciones en la variable M . In[211]:= M = {pi, pj, pk, pl} = n o 3 3 3 √ √ √ − 5 3 , − 5 3 , − 5 3 , {1, 0, 0} , {0, 1, 0} , {0, 0, 1} ; Mathematica Definición de la proyección P . Se elige esta forma de multiplicar matrices, a diferencia de las ecuaciones 1.2 y 1.3, por conveniencia para el lenguaje Wolfram. In[212]:= P [{p1 , p2 , p3 }]:={p1, p2, p3}.M Mathematica Coordenadas de la proyección del punto p = (1, 1, 1, 1). In[213]:= Out[213]= P [{1, 1, 1}] n √ 1 − 53 , 1 − √ 3 ,1 5 − √ 3 5 o Mathematica Trazado de la proyección de la gráfica del punto p = (1, 1, 1). In[214]:= Out[214]= Graphics3D[{Point[P [{1, 1, 1, 1}]], Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.101 PROYECCIONES DE E4 EN E3 85 Figura 1.102 Mathematica Dado que la gráfica de α = (cos(t), sin(t, cos(2t), sin(2t)) es un conjunto de puntos de E4 , se usa la función incorporada Table para generar cierta cantidad de estos puntos. In[215]:= curve = Table[{cos(t), sin(t), cos(2t), sin(2t)}, {t, 0, 2π, 0.01}]; procurve = P /@curve; Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función α. In[217]:= Out[217]= Graphics3D[{Point[procurve], Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.102 (izquieda) Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función α unidos mediante lı́neas. In[218]:= Out[218]= Graphics3D[{Line[procurve], Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.102 (derecha) Mathematica Dado que la gráfica de f = x2 + y 2 es un conjunto de puntos de E4 , se usa la función incorporada Table para generar algunos de estos puntos. In[219]:= graf = Table [{x, y, z, x2 + y 2 + z 2 } , {x, −1, 1, 0.15}, {y, −1, 1, 0.15}, {z, −1, 1, 0.15}] ; prograf = Map[P, graf, {3}]; 86 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.103 Mathematica Trazado de la proyección de la gráfica de la función f . In[221]:= Out[221]= Graphics3D[{Map[Point, prograf, {2}], Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.103 (izquieda) Mathematica Trazado de la proyección de algunos puntos de la gráfica de la función f unidos mediante lı́neas. In[222]:= Out[222]= Graphics3D[{Map[Line, prograf, {2}], Map[Line, Transpose/@prograf, {2}], Map[Line, Transpose/@Transpose[prograf], {2}], Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.103 (derecha) Mathematica Código para construir polı́gonos cuyos vértices son los puntos proyectados de la gráfica de f. In[223]:= graf1 = Table [{x, y, z, x2 + y 2 + z 2 } , {x, −1, 1, 0.15}, {y, −1, 1, 0.15}, {z, −1, 1, 0.15}]; graf2 = Transpose[Transpose/@graf1]; graf3 = Transpose/@Transpose[Transpose/@Transpose/@graf1]; prograf = Map[Partition[#1, 2, 1]&, PROYECCIONES DE E4 EN E3 87 Figura 1.104 Transpose/@Map[Partition[#, 2, 1]&, #, {2}], {2}]&/@ {graf1, graf2, graf3}; rule = {{a : { , , , }, b : { , , , }}, {c : { , , , }, d : { , , , }}} :> Polygon[P /@{a, b, d, c}]; Mathematica Trazado de polı́gonos cuyos vértices son las proyecciones de los puntos de la gráfica de f . In[224]:= Out[224]= Graphics3D [{Directive[Yellow, EdgeForm[Black]], prograf, Black, Arrow[{{0, 0, 0}, #}]&/@M}] Figura 1.104 (izquierda) Mathematica Con base en la función incorporada ContourPlot3D se ha implementado la nueva función ImplicitPlot4D para trazar la proyección de la gráfica de algunos puntos que satisfacen x2 + y 2 + z 2 + w2 = 1 como vertices de polı́gonos (ver el Notebook). In[225]:= Out[225]= ImplicitPlot4D [x2 + y 2 + z 2 + w 2 = 1, {x, −1, 1}, {y, −1, 1}, {z, −1, 1}, {w, −1, 1}] Figura 1.104 (derecha) Las expresiones analı́ticas de una proyección (Ecs. 1.4, 1.5) permiten obtener la proyección de objetos gráficos de E4 en E3 , de acuerdo con la elección de los ejes X̄, Ȳ , Z̄, W̄ . Sin embargo, todas las proyecciones obtenidas 88 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En en esta sección carecen de movimiento en E4 ; aunque es posible simular tal movimiento usando el producto matricial R = R = RZW (θ6 ) RY W (θ5 ) RY Z (θ4 ) RXW (θ3 ) RXZ (θ2 ) RXY (θ1 ) , que sirve para representar una rotación alrededor de los planos ZW , Y W , Y Z, XW , XZ y XY [11]. Mathematica Definición de la matriz de rotación alrededor de los planos ZW , Y W , Y Z, XW , XZ y XY . In[226]:= R4D[θ1 , θ2 , θ3 , θ4 , θ5 , θ6 ]:= RotationMatrix[θ1, {{0, 0, 1, 0}, {0, 0, 0, 1}}]. RotationMatrix[θ2, {{0, 1, 0, 0}, {0, 0, 0, 1}}]. RotationMatrix[θ3, {{0, 1, 0, 0}, {0, 0, 1, 0}}]. RotationMatrix[θ4, {{1, 0, 0, 0}, {0, 0, 0, 1}}]. RotationMatrix[θ5, {{1, 0, 0, 0}, {0, 0, 1, 0}}]. RotationMatrix[θ6, {{1, 0, 0, 0}, {0, 1, 0, 0}}]; Mathematica Código para trazar la simulación de rotación de la gráfica de la figura 1.102 (derecha). La figura 1.105 muestra algunas vistas. In[227]:= Out[227]= Animate[ {pir, pjr, pkr, plr} = P [#.R4D[θ, θ, θ, θ, θ, θ]]&/@IdentityMatrix[3]; procurve = P /@(curve/. {a , b , c , d } :> {a, b, c, d}.R4D[θ, θ, θ, θ, θ, θ]); Show[Graphics3D[{ MapThread[{Arrow[{{0, 0, 0}, 3#1}], Text[#2, 3#1]}&, {{pir, pjr, pkr, plr}, {”X”, ”Y ”, ”Z”, ”W ”}}], }, PlotRange → {{−3, 3}, {−3, 3}, {−3, 3}}], Graphics3D[Line[procurve]]], {θ, 0, 2π}, AnimationRunning → False] Figura 1.105 Los resultados gráficos obtenidos en esta sección son rudimentarios pero su objetivo ha sido mostrar las técnicas básicas que se podrı́an utilizar para definir nuevas funciones en el Mathematica que permitan trazar gráficos en E4 . TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E4 89 Figura 1.105 1.19 Trazado de objetos gráficos inmersos en E4 En la esta sección se apreciarán proyecciones de objetos gráficos de E en E3 hechas con las técnicas propuestas en la sección previa, pues el Mathematica no incorpora ninguna función para tal fin. 4 En E4 es posible encontrar objetos gráficos de dimensión 0: puntos, dimensión 1: lı́neas (rectas o curvas), dimensión 2: superficies y sólidos e hipersólidos (confinados a E4 , sin escapar a E5 ). Mathematica Fijado de valores para la opción Axes de la función Graphics3D. In[228]:= SetOptions[Graphics3D, Axes → True]; Mathematica Proyecciones de ~i, ~j, ~k y ~l In[229]:= M n = {pi, pj, pk, pl} = o − 5√3 3 , − 5√3 3 , − 5√3 3 , {1, 0, 0} , {0, 1, 0} , {0, 0, 1} ; Mathematica Definición de la proyección P In[230]:= P [{p1 , p2 , p3 , p4 }]:={p1, p2, p3, p4}.M 90 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.106 Mathematica √ √ √ Trazado de la proyección de los puntos (−1, −2, −1, 1) , − 2, 1, 0, −1 , 3, 21 , 41 , 5 , 1, −1, − 21 , 0 . In[231]:= Out[231]= Graphics3D[{(Arrow[{{0, 0, 0}, 2#}]&)/@M, AbsolutePointSize[7], RGBColor[0.4, √ 0.5, 0.7], Point P /@ {−1, −2, −1, 1}, − 2, 1, 0, −1 , √ 1 1 √ 3, 2 , 4 , 5 , 1, −1, − 12 , 0 Ver figura 1.106 (izquierda) Mathematica Puntos solución de un sistema de cuatro ecuaciones y cuatro variables (intersección de cuatro sólidos) almacenados en la variable pts. In[232]:= pts = Solve [w 2 + x2 + y 2 + z 2 = 2 ∧ −w 2 + x2 − y 2 + z 2 = 1∧ −w 2 + x − y 2 + z = 1 ∧ −w + x2 − y + z 2 = 1, {x, y, z, w}] /. (var → val ) :> val; Mathematica Trazado de la proyección de los puntos pts. In[233]:= Out[233]= Graphics3D[{(Arrow[{{0, 0, 0}, 2#}]&)/@M, AbsolutePointSize[7], RGBColor[.4, .5, .7], Point[P /@pts]}] Ver figura 1.106 (derecha) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E4 91 Figura 1.107 Mathematica Trazado de la proyección de la lı́nea que une los puntos (−1, −1, −1, 0.5) , 2, 2, 21 , 1 . In[234]:= Out[234]= Graphics3D[{(Arrow[{{0, 0, 0}, 2#1}]&)/@M, Thick, RGBColor[0.4, 0.5, 0.7], Line[P /@{{−1, −1, −1, 0.5}, 2, 2, 12 , 1 }]}] Ver figura 1.107 (izquierda) Mathematica Solución de un sistema de tres ecuaciones con cuatro variables (intersección de tres sólidos). In[235]:= cc = h 2 2 Solve x2 + y 2 + z 2 + w 2 = 1 ∧ x − 21 + y − 21 + z 2 = 14 ∧ i 1 1 2 2 2 x − 2 + y − z = 8 , {x, y, z, w} /. {y → yx , z → zx , w → wx } :→ {x, yx, zx, wx}; Mathematica Trazado de la proyección del conjunto cc. In[236]:= Out[236]= Show[ Graphics3[{(Arrow[{{0, 0, 0}, #}]&)/@M}], ParametricPlot3D[P /@cc, {x, −1, 2}] ] Ver figura 1.107 (derecha) 92 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.108 Mathematica Trazado de la proyección de la función (t) → (sin(t), cos(t), sin(2t), cos(2t)). In[237]:= Out[237]= Show[ Graphics3D[{(Arrow[{{0, 0, 0}, 2#}]&/@M}], ParametricPlot3D[P [{Sin[t], Cos[t], Sin[2t], Cos[2t]}], {t, 0, 2π}] ] Ver figura 1.108 (izquierda) Mathematica Solución de un sistema de dos ecuaciones con cuatro variables (intersección de dos sólidos). In[238]:= ss = h 2 2 Solve w 2 + x2 + y 2 + z 2 = 1 ∧ x − 21 + y − 12 + z 2 = 41 , {x, y, z, w}]/.{z → zxy , w → wxy } :> {x, y, zxy, wxy}; Mathematica Trazado de la proyección del conjunto ss. Este conjunto es la extensión de la curva de Viviani In[239]:= Out[239]= Show[ Graphics3[{(Arrow[{{0, 0, 0}, #}]&)/@M}], ParametricPlot3D[P /@ss, {x, −1, 2}, {y, −1, 2}] ] Ver figura 1.108 (derecha) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E4 93 Mathematica Trazado de la proyección de la función (u, v) → u + v, u − v, u2 − v 2 , uv . In[240]:= Out[240]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 6#}]&/@M}], ParametricPlot3D [P [{u + v, u − v, u2 − v 2 , uv}] , {u, −2, 2}, {v, −2, 2}] ] Ver figura 1.109 (izquierda) Mathematica Definición de la función F : C → C, F = z 2 . In[241]:= F [z ]:=z 2 Mathematica Definición de una regla de transformación para simplificar entradas de funciones complejas de variable compleja. In[242]:= crule = {a , b } :> P [Flatten[ReIm[{a, b}]]]; Mathematica Trazado de la proyección de la función F : C → C, F = z 2 . In[243]:= Out[243]= Show[ Graphics3D[{(Arrow[{{0, 0, 0}, 6#}]&/@M}], ParametricPlot3D[{u + iv, F [u + iv]}/. crule, {u, −1, 1}, {v, −1, 1}] ] Ver figura 1.109 (derecha) Mathematica Trazado de la proyección de la solución de un sistema de una ecuación y cuatro variables (un sólido). In[244]:= Out[244]= ImplicitPlot4D [x2 + y 2 + z 2 − w = 0, {x, −2, 2}, {y, −2, 2}, {z, −2, 2}, {w, 0, 4}] Ver figura 1.110 (izquierda) 94 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.109 Figura 1.110 Mathematica Trazado de la proyección de la solución de un sistema de una ecuación y cuatro variables (un sólido). In[245]:= Out[245]= ImplicitPlot4D [x2 + y 2 + z 2 − w 2 = 0, {x, −2, 2}, {y, −2, 2}, {z, −2, 2}, {w, −4, 4}] Ver figura 1.110 (derecha) TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E4 95 Figura 1.111 Mathematica Interpretación geométrica de la derivada de la función F = (−0.5 − 0.5i) de su dominio. In[246]:= Out[250]= z 2 en el punto (z0 ) = F [z ]:=z 2 z0 = −0.5 − 0.5i; Pt[z ]:=(z − z0)F ′ [z0] + F [z0] d = 0.75; Show[ Graphics3D[{Arrow[{{0, 0, 0}, 3#}]&/@M}], Graphics3D[{PointSize[Large], Point[{z0, F [z0]}/. crule]}], ParametricPlot3D[{u + iv, F [u + iv]}/. crule, {u, −1, 1}, {v, −1, 1}], ParametricPlot3D[{u + iv, Pt[u + iv]}/. crule, {u, ℜ[z0] − d, d + ℜ[z0]}, {v, ℑ[z0] − d, d + ℑ[z0]}, PlotStyle → Directive[Opacity[0.8], Blue]] ] Ver figura 1.111 96 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En La proyección de la gráfica de las funciones complejas de variable compleja, esto es funciones que van de C en C, ofrece la posibilidad de añadir la interpretación geométrica como una herramienta más para estudiar las propiedades de las mismas [27, 29]. Por ejemplo, el código previo muestra la simulitud en el cálculo del plano tangente a la gráfica de una función compleja ( In[246] ) y de la recta tangente a una función real ( In[77] ). En la figura 1.112 se muestran: 1. trazado de la función f = (x2 ) transformando el intervalo [0.25, 0.75], 2. el trazado de la gráfica de la función f = (x2 ) remarcando el intervalo [0.25, 0.75] y su respectiva imagen (se dibuja en color rojo la porción del gráfica de la función involucrada en la transformación), 3. el trazado de la función F = (z 2 ) transformando la región −1 ≤ ℜ(z) ≤ 1 ∧ −1 ≤ ℑ(z) ≤ 1, y 4. el trazado de la gráfica de la función F = (z 2 ) remarcando la región −1 ≤ ℜ(z) ≤ 1 ∧ −1 ≤ ℑ(z) ≤ 1 y su respectiva imagen (se dibuja en color rojo la porción del gráfica de la función involucrada en la transformación). Al realizar la comparación entre las gráficas se entiende que el trazado que aparece en los textos tradicionales de variable compleja no permite interpretar adecuadamente la gráfica de una función compleja. A continuación se muestra el trazado de la proyección de la gráfica de otros objetos inmersos en E4 . Mathematica Trazado de la proyección de la curva (u) → u, u2 , u3 , u2/3 . In[251]:= Out[251]= Show[ Graphics3D[{Arrow[{{0, 1.3#}]&/@M}], 0, 0}, 2 ParametricPlot3D P u, u , u3 , u2/3 , {u, −1, 1} ] Ver figura 1.113 (izquierda) Mathematica Definición de la función f = x2 + y 2 + z 2 . In[252]:= f [x , y , z ]:=x2 + y 2 + z 2 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN E4 Figura 1.112 97 98 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.113 Figura 1.114 Mathematica Trazado de la proyección de (u) → u + 1, 1 − u, u2 , f u + 1, 1 − u, u2 . In[253]:= Out[253]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 1.3#}]&/@M}], ParametricPlot3D [P [{u + 1, 1 − u, u2 , f [u + 1, 1 − u, u2 ]}] , {u, −1, 1}] ] Ver figura 1.113 (izquierda) TRAZADO DE GRÁFICOS INMERSOS EN En 99 Mathematica Trazado de la proyección de (u, v) → (v sin(u), v sin(2u), cos(u) sin(v), f (v sin(u), v sin(2u), cos(u) sin(v)). In[254]:= Out[254]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 1.3#}]&/@M}], ParametricPlot3D[P [{vSin[u], vSin[2u], Cos[u]Sin[v], f [vSin[u], vSin[2u], Cos[u]Sin[v]]}], {u, 0, 2π}, {v, 0, 1}] ] Ver figura 1.114 (izquierda) Mathematica Trazado de la proyección de (u, v, w) → u, v, w, u2 + v 2 + w2 . In[255]:= Out[255]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 1.3#}]&/@M}], ParametricPlot3D [P [{u, v, w, u2 + v 2 + w 2 }] //Evaluate , {u, −1, 1}, {v, −1, 1}, {w, −1, 1}] ] Ver figura 1.114 (derecha) 1.20 Trazado de gráficos inmersos en En Uilizando la técnica basada en la extensión del teorema de Pohlke es posible trazar las proyecciones de gráficas espacios de dimensión mayor a cuatro. El gran problema está en que las proyecciones se harán en realidad sobre pantallas 2D; salvo cuando ya estén disponibles las “pantallas” 3D, aunque aún ası́ no se sorteará en definitiva este problema. Esto último dificultará bastante la visualización de los diversos objetos, más aún cuando la dimensión sea mucho mayor (como siete u once, por ejemplo). Pero, por el momento estas son las herramientas con las que contamos y tendremos que adaptarnos a ellas. En la sección previa se trazó la proyección de la gráfica de una función de C en C, especı́ficamente la función F = (z 2 ). No obstante, la técnica presentada en este libro nos ha permitido atrevernos a trazar funciones C en C2 , cuya gráfica es un subconjunto de C3 isomorfo a E6 . A la vez, la visualización de esta gráfica nos anima, por ası́ decirlo, a estudiar al geometrı́a diferencial de estas superficies. 100 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En α 1.0 0.5 0.0 , , -0.5 -1.0 -1.0 -0.5 0.0 0.5 1.0 Figura 1.115 Mathematica Definición de una regla de transformación para simplificar entradas de funciones complejas de variable compleja. In[256]:= crule = {a , b } :> P [Flatten[ReIm[{a, b}]]]; Mathematica Definción de la función de C en C2 , α = (cos(z), sin(z)). In[257]:= Mathematica Trazado de la proyección de α = (cos(z), sin(z)). Las funciones coordenadas de esta función nos hacen recordar a la parametrización de la circunferencia α = (cos(t), sin(t)). In[258]:= Out[258]= {ParametricPlot[ReIm[u + iv], {u, −1, 1}, {v, −1, 1}], TO[α], Show[ Graphics3D[{Arrow[{{0, 0, 0}, 2.5#}]&/@M}], ParametricPlot3D α[u + iv]/. crule, {u, 0, 2π}, v, 0, π2 , ColorFunction → (ColorData[Rainbow][#4]&)] ]} Ver figura 1.115 A continuación se explica un procedimiento de obtener proyecciones de objetos gráficos inmersos en E5 sobre E3 (en realidad sobre una pantalla 2D). El procedimiento consiste en realizar la composición de proyecciones de TRAZADO DE GRÁFICOS INMERSOS EN En 101 E5 sobre E4 y luego sobre E3 , mediante el producto de las matrices asociadas a tales proyecciones. Mathematica Fijado del valor de la opción Axes de la función incorporada Graphics3D. In[259]:= SetOptions[Graphics3D, Axes → True]; Mathematica Matriz asociada a una proyección de E4 sobre E3 . In[260]:= M q nn= √ o n √ q o n √ o o 1 3 3 − 2 , − 2 , − 3 , − 23 , 32 , − 13 , 2 3 2 , 0, − 13 , {0, 0, 1} ; Mathematica Matriz asociada a una proyección de E5 sobre E4 . In[261]:= M5 = − 12 , − 12 , − 12 , − 12 , {1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1} ; Mathematica Definición de una proyección de E5 sobre E3 . In[262]:= P5({p1 , p2 , p3 , p4 , p5 }):={p1, p2, p3, p4, p5}.M5.M Mathematica Proyección del punto (1, 1, 1, 1, 1). In[263]:= Out[263]= P5[{1, 1, 1, 1, 1}] n√ o √ 2 3 − , 0, 0 3 2 Mathematica Trazado de la proyección del punto (1, 1, 1, 1, 1). In[264]:= Out[264]= Graphics3D[{Point[P5({1, 1, 1, 1, 1})], MapThread[Text[#1, #2]&, {{X1, X2, X3, X4, X5}, M5.M}], (Arrow[{{0, 0, 0}, #1}]&)/@(M5.M)}] Ver figura 1.116 (iquierda) 102 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Figura 1.116 Mathematica Trazado de la proyección de (t) → sin(t), cos(t), sin(2t), cos(2t), 6t . In[265]:= Out[265]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 2#}]&/@(M5.M), MapThread[Text[#1, {{X1, X2, X3, X4, X5}, M5.M}]}], 2#2]&, ParametricPlot3D P5 Sin[t], Cos[t], Sin[2t], Cos[2t], 6t , {t, 0, 4π}] ] Ver figura 1.116 (derecha) Mathematica Trazado de la proyección de (u, v) → (cos(u) cos(v), sin(u) cos(v), sin(v), cos(2u) cos(2v), sin(2u) cos(2v)). In[266]:= Out[266]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 2#}]&/@(M5.M), MapThread[Text[#1, 2#2]&, {{X1, X2, X3, X4, X5}, M5.M}]}], ParametricPlot3D[P5[{Cos[u]Cos[v], sin[u]Cos[v], Sin[v], Cos[2u]Cos[2v], Sin[2u]Cos[2v]}], {u, 0, 2π}, v, − π2 , π2 ] Ver figura 1.117 (izquierda) TRAZADO DE GRÁFICOS INMERSOS EN En 103 Figura 1.117 Mathematica Trazado de la proyección de (u, v) → (cos(u) cos(v), sin(u) cos(v), sin(v), cos(2u) cos(2v), sin(2u) cos(2v)). In[267]:= Out[267]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 2#}]&/@(M5.M), MapThread[Text[#1, 2#2]&, {{X1, X2, X3, X4, X5}, M5.M}]}], ParametricPlot3D[P5[{Cos[u]Cos[v]Cos[w], Sin[u]Cos[v]Cos[w], w Sin[v]Cos[w], Sin[w], 4 //Evaluate, {u, 0, 4π}, {v, 0, 4π}, {w, 0, 4π}] ] Ver figura 1.117 (derecha) El procedimiento explicado previamente no debe aturdir al lector. De hecho, basta con elegir un número de vectores igual al número de vectores de la base del espacio que se quiere proyectar. Esto se entiende mejor si se extiende el teorema de Pohlke. Teorema 2. (Extensión de teorema de Pohlke) n lı́neas de cualquier longitud que parten de un punto en Em (m < n) formando diferentes ángulos siempre se pueden considerar como una proyección paralela (sesgada) de n lı́neas de la misma longitud perpendiculares entre sı́. 104 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En Con base en esta nueva versión del teorema de Pohlke es posible considerar cinco vectores elejidos al azar para definir una proyección de E5 sobre E3 . Mathematica Matriz asociada a una proyección de E5 sobre E3 . In[268]:= Out[268]= M5 = Normalize/@RandomReal[{−10, 10}, {5, 3}] {{−0.854, −0.504, −0.120}, {0.0763, −0.701, 0.708}, {−0.338, 0.4, −0.851}, {−0.033, −0.54, −0.84}, {−0.437, −0.856, −0.273}} Mathematica Definición de una proyección de E5 sobre E3 . In[269]:= P5[{p1 , p2 , p3 , p4 , p5 }]:={p1, p2, p3, p4, p5}.M5 Mathematica Proyección del punto (1, 1, 1, 1, 1). In[270]:= Out[270]= P5[{1, 1, 1, 1, 1}] {−1.58769, −2.20275, −1.37768} Mathematica Trazado de la proyección del punto (1, 1, 1, 1, 1). In[271]:= Out[271]= Graphics3D[{Point[P5({1, 1, 1, 1, 1})], MapThread[Text[#1, #2]&, {{X1, X2, X3, X4, X5}, M5}], Arrow[{{0, 0, 0}, #}]&/@M5}] Ver figura 1.118 (iquierda) Mathematica Trazado de la proyección de (u, v) → (cos(u) cos(v), sin(u) cos(v), sin(v), cos(2u) cos(2v), sin(2u) cos(2v)). In[272]:= Out[272]= Show[ Graphics3D[{Arrow[{{0, 0, 0}, 2#}]&/@M5, MapThread[Text[#1, 2#2]&, {{X1, X2, X3, X4, X5}, M5}]}], ParametricPlot3D[P5[{Cos[u]Cos[v], sin[u]Cos[v], Sin[v], Cos[2u]Cos[2v], Sin[2u]Cos[2v]}], {u, 0, 2π}, v, − π2 , π2 ] Ver figura 1.118 (derecha) EJERCICIOS 105 Figura 1.118 1.21 Ejercicios 1. Demuestre el teorema de Pohlke extendido. 2. Defina una proyección de E3 sobre E2 designando los ejes de forma similar a como se aprecia en la figura 1.52. 3. Defina una proyección de E3 sobre E2 , eligiendo dos lados concurrentes de un cuadrado y la prolongación de la diagonal “hacia adentro” como proyecciones de ~i, ~j y ~k (vectores canónicos). Designe los ejes de forma similar a como se aprecia en la figura 1.51. 4. Proyecte diversos objetos gráficos con las proyecciones definidas en los dos ejercicios previos. 5. Con base en la extensión del teorema de Pohlke y guiándose de In[268] defina una proyección de de E3 sobre E2 . Proyecte diversos objetos gráficos con esta proyección. 6. De acuerdo con definidos. In[126] , aplique rotación a los sistemas previamente 7. Defina una proyección de E4 sobre E3 designando los ejes de forma similar a como se aprecia en la figura 1.100. 8. Defina una proyección de E4 sobre E3 , eligiendo tres aristas concurrentes de un cubo y la prolongación de la diagonal “hacia adentro” como proyecciones de ~i, ~j, ~k y ~l (vectores canónicos). Designe los ejes de forma similar a como se aprecia en la figura 1.100. 106 TRAZADO DE OBJETOS GRÁFICOS INMERSOS EN En 9. Proyecte diversos objetos gráficos con las proyecciones definidas en los dos ejercicios previos. 10. Con base en la extensión del teorema de Pohlke y guiándose de In[268] defina una proyección de de E4 sobre E3 . Proyecte diversos objetos gráficos con esta proyección. 11. De acuerdo con definidos. In[227] , aplique rotación a los sistemas previamente 12. Defina una proyección de E6 sobre E3 eligiendo las proyecciones de los vectores canónicos en forma aelatoria. 13. Proyecte diversos objetos gráficos con la proyección definida en el ejercicio previo. 14. De acuerdo con definidos. In[227] , aplique rotación a los sistemas previamente 15. Defina una proyección de E7 sobre E3 eligiendo las proyecciones de los vectores canónicos en forma aelatoria. 16. Proyecte diversos objetos gráficos con la proyección definida en el ejercicio previo. 17. Deduzca una parametrización para el conjunto que es la extensión de la curva de Viviani ( In[239] ). Referencias [1] Anto, L.: Aproximación de los ceros de funciones continuas de varias variables reales y valor real mediante el método de bisección con el Mathematica, Tesis de Pregrado, http://repositorio.unp.edu. pe/bitstream/handle/UNP/1892/CIE%20-%20ANT%20-%20MIM%20%202019.pdf?sequence=1&isAllowed=y. Último acceso 01 de Abril de 2020 [2] AT&T Tech Channel: One of the First Computer-Generated Films, https://youtu.be/RocLdMyUG-4. Último acceso 23 de Marzo de 2020 [3] Carlbom, I. and Paciorek, J.: Planar Geometric Projections and Viewing Transformations. ACM Computing Surveys, 10 no. 4, 465–502 (1978) [4] Clements, A.: History of the Computer, http://www.cengage.com/ resource_uploads/\downloads/1111987041_374938.pdf. Last accessed 10 Feb 2020 [5] 4D Euclidean space Homepage, http://eusebeia.dyndns.org/4d/ index. Último acceso 18 de Marzo de 2020 [6] Descartes, R.: La géométrie. Paris: Charles Angot (1664) [7] Fraguas, A.: El arte rupestre prehistórico de África nororiental: nuevas teorı́as y metodologı́as. CSIC - CSIC Press (2009) [8] Gomes, A.: Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms. Springer-Verlag, London (2009) [9] Gray, J.: Mastering Mathematica: Programming Methods and Applications. Academic Press, Inc., USA (1994) 108 REFERENCIAS [10] Gruffroy, J.: El arte rupestre del antiguo Perú. Institut français d’études andines, https://horizon.documentation.ird.fr/exl-doc/pleins_ textes/divers11-03/010019462.pdf (2015) [11] Hoffmann, C. y Zhou, J.: Visualization of Surfaces in Four-Dimensional Space. Purdue University, USA. Report Number 90-960 (1990) [12] Khan Academy Homepage: Rotating 3D shapes, https:// www.khanacademy.org/computing/computer-programming/ programming-games-visualizations/programming-3d-shapes/a/ rotating-3d-shapes. Último acceso 09 de Abril de 2020 [13] Lehmann, C.: Analytic Geometry (Sixth printing). John Wiley, NY (1947) [14] Lindgren, C. E. and Slaby S. M.: Four dimensional descriptive geometry. McGraw-Hill, NY (1968) [15] Manfrin, R.: A proof of Pohlke’s theorem with an analytic determination of the reference trihedron. Journal for Geometry and Graphics 22 no. 2, 195-205 (2017) [16] Maor, E.: e: historia de un número. Libraria (2006) [17] Moravcová, V.: History of descriptive geometry with an emphasis to the boom of descriptive geometry in Austro-Hungarian Empire in the 19th century. Journal for Geometry and Graphics (2014) [18] Miwa, T. et al: 4D Spatial Perception Established through Hypercube Recognition Tasks Using Interactive Visualization System with 3-D Screen. Proceedings of the ACM SIGGRAPH Symposium on Applied Perception, 75-82 (2015) [19] O’Neill, B.: Elementos de Geometrı́a Diferencial. Editorial LimusaWiley, S. A. (1972) [20] Rovenski, V.: Geometry of curves and surfaces with MAPLE. Birkhäuser, Boston (2000) [21] Sakay, Y. y Hashimoto, S.: Interactive Four-Dimensional Space Visualization Using Five-Dimensional Homogeneous Processing for Intuitive Understanding. The Journal of The Institute of Image Information and Television Engineers, 60 no. 10, 1630-1647 (2006) [22] Schreiber, P.: Generalized Descriptive Geometry. Journal for Geometry and Graphics, 6 no. 1, 37-59 (2002) [23] Stack Overflow Homepage: Plotting a number line in Mathematica, https://stackoverflow.com/questions/6797651/ plotting-a-number-line-in-mathematica. Último acceso 21 de Marzo de 2020 [24] The Computer Graphics Book Of Knowledge Homepage: History of Computer Graphics (CG), https://www.cs.cmu.edu/~ph/nyit/ masson/history.htm. Último acceso 23 de Marzo de 2020 [25] 3D Pen Lab: Making The Great Deku Tree, https://youtu.be/ zSGZ-8c0FxE. Último acceso 23 de Marzo de 2020 [26] VintageCG: Sketchpad 3D Graphics, https://youtu.be/t3ZsiBMnGSg. Último acceso 23 de Marzo de 2020 [27] Wugi’s QBComplex Homepage: QBasic en anders gecodeerd gepeins over Complexe Functies, http://home.scarlet.be/wugi/qbComplex.html. Último acceso 09 de Abril de 2020 [28] Wolfram, S.: Una introducción Elemental a Wolfram Language (2da. edición). Wolfram Media, Incorporated, https://www.wolfram.com/ language/elementary-introduction/2nd-ed/index.html.es (2020) [29] Zachariáš, S. and Velichová, D.: Projection from 4D to 3D. Journal for Geometry and Graphics, 4 no. 1, 55-69 (2000) REFERENCIAS Josel Antonio Mechato Durand (Piura, 02 de enero de 1985), matemático peruano por la Universidad Nacional de Piura (UNP). Cursó sus estudios universitarios en la Universidad Nacional de Piura. Obtuvo su título de licenciado en Ciencias Matemáticas y su grado de magíster en Matemática Aplicada en la misma universidad en los años 2013 y 2017, respectivamente. Ha participado como expositor de conferencias y talleres relacionados con geometría y cálculo simbólico en diferentes eventos científicos a nivel nacional, con sedes en ciudades como: Lima, Tingo María, Trujillo, Callao, etc. En el año 2015 es invitado, por dos de sus exprofesores con quienes comparte la autoría de este libro, a participar como colaborador en el Grupo de Investigación en Geometría y Cálculo Simbólico (GIGYCS-UNP) logrando realizar notables contribuciones; esto le permite participar como coautor del artículo "A Mathematica Package for Visualizing Objects Inmersed in R4", publicado en la revista Ciencia Computacional y sus Aplicaciones - ICCSA 2019. Actualmente es catedrático de la Universidad Privada Antenor Orrego, sede Piura, y miembro activo del GIGYCS-UNP. Ricardo Velezmoro León, es un matemático peruano que nació en Paiján-La Libertad, Perú, en 1961. Obtiene el grado de bachiller en Ciencias Físicas y Matemáticas por la Universidad Nacional de Trujillo en el año de 1987. En el mismo año obtiene su Licenciatura en Matemática. En 1988 accede a la cátedra en la Universidad Santiago Antúnez de Mayolo. después de casi tres años recibe una propuesta para postular a la catedra en la Universidad Nacional de Piura, lográndolo en el año de 1990. Concluyó los estudios de Maestría en Matemática Aplicada en la Universidad Nacional de Piura en 2010 y el doctorado en Ciencias de la educación el año 2014. En su actividad profesional se le ha reconocido el modelo para visualizar objetos matemáticos en la cuarta dimensión trabajo realizado en conjunto con Robert Ipanaqué Chero y Josel Mechato Durand, con quienes investiga actualmente. Este trabajo fue expuesto en el ámbito internacional en la ciudad de San Petersburgo – Rusia – ICCSA 2019. Actualmente sigue trabajando en la Universidad Nacional de Piura como docente principal adscrito al Departamento de Matemática y dedica gran parte de su investigación en forma exhaustiva a algunos proyectos de geometría y análisis vectorial, junto con los integrantes del Grupo de Investigación en Geometría y Cálculo Simbólico (GIGYCS-UNP). Back cover Robert Ipanaqué Chero, docente adscrito al Departamento de Matemática de la Universidad Nacional de Piura (UNP), nació en Piura en el año 1970. Inició sus estudios universitarios en la Facultad de Ciencias Físicas y Matemáticas de la UNP en el año 1993. Egresó en 1998 con el grado de bachiller en Matemática. Se tituló como licenciado en Matemática en 2000 y se inició en la cátedra en la UNP en 2001. Se gestó una formación autodidacta, desde el año 1997, en el uso y programación en los sistemas de cálculo simbólico (SCS): Mathematica, Maple y Maxima; logrando realizar contribuciones en las páginas oficiales de dichos sistemas; así como, publicaciones de libros y artículos nacionales e internacionales. A partir del año 2003, bajo la tutela de su exprofesor el Dr. Ricardo Velezmoro León, se inicia en la cátedra del curso Geometría Diferencial (GD). Gracias a su apasionamiento por este curso y a las nuevas ideas propuestas por Velezmoro se embarcan en la investigación en GD con SCS. En el año 2019 logran publicar, conjuntamente con un exalumno en común (Josel A. Mechato Durand), un primer artículo: "A Mathematica Package for Visualizing Objects Inmersed in R4"; el cual fue disertado en San Petersburgo, Rusia, en julio del mismo año. Actualmente, integra el Grupo de Investigación en Geometría y Cálculo Simbólico (GIGYCS-UNP) con cuyos miembros trabaja en equipo en la elaboración de más artículos para ser disertados y publicados en eventos internacionales.