• No se han encontrado resultados

Implementación de algoritmos para la manipulación de curvas concoides en diseño geométrico

N/A
N/A
Protected

Academic year: 2020

Share "Implementación de algoritmos para la manipulación de curvas concoides en diseño geométrico"

Copied!
153
0
0

Texto completo

(1)Implementación de algoritmos para la manipulación de Curvas Concoides en Diseño Geométrico. Valerio Morán Coco Julio de 2013.

(2) A mis padres, porque a ellos se lo debo todo..

(3) Agradecimientos Me llena de orgullo escribir estas lı́neas, en las que al fin, con la finalización de este trabajo, puedo expresar la gran satisfacción que siento por la culminación de una etapa, la finalización de mis estudios como Ingeniero Técnico de Telecomunicación en la especialidad de Sistemas de Telecomunicación. Sin duda en esta etapa, y como en todas en la vida, ha habido momentos mejores y peores, pero absolutamente siempre y en todos ellos, he tenido el apoyo incondicional de mi familia, de mis padres y mis hermanos. Sin duda alguna, sin ellos no habrı́a sido posible. También ha sido fundamental para mı́, especialmente en la realización de este trabajo, el apoyo, el cariño y la comprensión de mi pareja, a ella también le doy las gracias. El hecho de haber compaginado la realización de este proyecto con un trabajo a jornada completa, no ha sido una tarea fácil. En ese sentido, agradezco enormemente la ayuda y el apoyo que mi tutora, Juana Sendra, me ha brindado. Porque además ha sabido transmitirme a la prefección los conocimientos necesarios y despertar aún más en mi el interés en algo que siempre me ha gustado, las matemáticas. También agradezco las enseñazas que me han transmitido todos los profesores que me han impartido clase. Y a todos los compañeros de la escuela que me han acompañado en el camino. Por último, no podrı́a cerrar estas lı́neas sin hacer mención a mi mejor amigo y también un apasionado de la ingenierı́a, Roberto, y con quien tantos buenos momentos he pasado y por supuesto espero seguir pasando. De corazón, muchas gracias a todos.. 3.

(4) Índice general 1. Curvas Concoide. 11. 1.1. Construcción geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2. Cálculo de la concoide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3. Concoides clásicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.1. Concoide de Nicómedes . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.2. Limaçón de Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2. Marco Matemático. 21. 2.1. Análisis de racionalidad de las curvas concoides . . . . . . . . . . . . . . . . 21 2.2. Algoritmo de parametrización de la concoide . . . . . . . . . . . . . . . . . 25 3. Programación en Maple. 29. 3.1. Introducción a la programación en Maple . . . . . . . . . . . . . . . . . . . 29 3.1.1. Estructura básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.2. Breve recorrido por Maple . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2. Creación de un paquete en Maple . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3. Creación de una página de ayuda en Maple . . . . . . . . . . . . . . . . . . 36 4. Creación de un paquete Maple para el tratamiento de curvas Concoide 40 4.1. Creación del paquete Conchoid . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.1. Procedimiento getImplConch . . . . . . . . . . . . . . . . . . . . . . 41 4.1.2. Procedimiento plotImplConch . . . . . . . . . . . . . . . . . . . . . . 43 4.1.3. Procedimiento getParamCoch . . . . . . . . . . . . . . . . . . . . . . 45 4.1.4. Procedimiento checkParam . . . . . . . . . . . . . . . . . . . . . . . 49 4.1.5. Paquete Conchoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2. Creación de las páginas de ayuda . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2.1. Página de ayuda del procedimiento getImplConch . . . . . . . . . . 55 4.

(5) 4.2.2. Página de ayuda del procedimiento plotImplConch . . . . . . . . . . 56 4.2.3. Página de ayuda del procedimiento getParamCoch . . . . . . . . . . 57 4.2.4. Página de ayuda del procedimiento checkParam . . . . . . . . . . . . 59 5. Atlas de curvas Concoide. 60. 5.1. Curvas Cónicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.1.1. Circunferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.1.2. Parábola. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69. 5.1.3. Elipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.1.4. Hipérbola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.2. Curvas Clásicas de grado superior. . . . . . . . . . . . . . . . . . . . . . . . 97. 5.2.1. Cardioide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.2.2. Rosa de tres hojas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.2.3. Trisectriz de Maclaurin . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.2.4. Folium de Descartes . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.2.5. Tacnode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.2.6. Conchoide de Sluze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.2.7. Epitrocoide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.2.8. Ramphoid Cuspidal . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.2.9. Lemniscata de Bernouilli. . . . . . . . . . . . . . . . . . . . . . . . . 130. 5.3. Tabla Resumen de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6. Aplicaciones de las Curvas Concoide. 135. 6.1. Aplicaciones en la antigüedad . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.2. Aplicaciones en la actualidad . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7. Superficie Concoide. 148. 8. Bibliografı́a. 151. 5.

(6) Abstract This project is set up in the framework of Symbolic Computation as well as in the implementation of algebraic-geometric problems that arise from Computer Aided Geometric Design (C.A.G.D.) applications. We address problems related to conchoid curves. The importance of these curves is the fundamental role that they play in current applications as medicine, optics, electromagnetism, construction, etc. The main goal of this project is to design and implement some algorithms to solve problems in studying, calculating and generating conchoid curves with symbolic computation techniques. For this purpose, we program our implementations in the symbolic system “Maple”. The project consists of two differentiated parts, one more theoretical part and another part more practical. The first one includes the description of conchoid curves as well as the basic ideas about the concept and its basic properties. More precisely, we introduce in this part the mathematical analysis of the rationality of the conchoids, and we present the algorithms that will be implemented. Furthermore, the reader will be briefly introduced in Maple programming. On the other hand, the second part of this project is totally original. In this more practical part, the author presents the implemented algorithms and a Maple package that includes them, as well as their help pages. These implemented procedures will be check and illustrated with some classical and well known curves, collecting the main properties of the conchoid curves obtained in a brief atlas. Finally, a compilation of the most important applications where conchoids play a fundamental role, and a brief introduction to the conchoids of surfaces, subject of several studies today and where this project could be very useful, are presented.. 6.

(7) Resumen Este proyecto se enmarca dentro de la Computación Simbólica y de los fundamentos matemáticos del Diseño Geométrico Asistido por Ordenador (CAGD). Se abordará uno de los problemas principales en el ámbito del CAGD y que es la manipulación de las Curvas Concoide. La importancia del avance en la manipulación de las curvas concoide radica en el papel fundamental que desempeñan en múltiples aplicaciones en la actualidad dentro de campos de diversa ı́ndole tales como la medicina, la óptica, el electromagnetismo, la construcción, etc. El objetivo principal de este proyecto es el diseño e implementación de algoritmos para el estudio, cálculo y manipulación de curvas concoides, utilizando técnicas propias del Cálculo Simbólico. Esta implementación se ha programado utilizando el sistema de computación simbólica Maple. El proyecto consiste en dos partes bien diferenciadas, una parte teórica y otra más práctica. La primera incluye la descripción geomética y definición formal de curvas concoide, ası́ como las ideas y propiedades básicas. De forma más precisa, se presenta un estudio matemático sobre el análisis de racionalidad de estas curvas, explicando los algoritmos que serán implementados en las segunda parte, y que constituye el objetivo principal de este proyecto. Para cerrar esta parte, se presenta una pequeña introduccción al sistema y a la programación en Maple. Por otro lado, la segunda parte de este proyecto es totalmente original, y en ella el autor desarrolla las implementaciones en Maple de los algoritmos presentados en el parte anterior, ası́ como la creación de un paquete Maple que las recoge. Por último, se crean las páginas de ayudas en el sistema Maple para la correcta utilización del paquete matemático anteriormente mencionado. Una vez terminada la parte de implementación, se aplican los algoritmos implementados a una colección de curvas clásicas conocidas, recogiendo los datos y resultados obtenidos en un atlas de curvas. 7.

(8) Finalmente, se presenta una recopilación de las aplicaciones más destacadas en las que las concoides desempeñan un papel importante ası́ como una breve reseña sobre las concoides de superficies, objeto de varios estudios en la actualidad y a los que se considera que el presente proyecto les puede resultar de gran utilidad.. 8.

(9) Introducción Los contenidos de este proyecto se enmarcan dentro de la Computación Simbólica y de los fundamentos matemáticos del Diseño Geométrico Asistido por Ordenador (CAGD). En particular, se pretende mostrar cómo se pueden resolver los problemas en el estudio, cálculo y generación de las curvas concoide con técnicas de computación simbólica, implementando en el sistema Maple los algoritmos principales para tal fı́n. El diseño asistido por ordenador (CAD) es el uso de sistemas informáticos para ayudar en la creación, modificación, análisis u optimización de un diseño. El diseño asistido por ordenador se utiliza en muchos campos, y en concreto el aplicado a modelos geométricos es conocido como Diseño Geométrico Asistido por Ordenador (CAGD). Originalmente los problemas en CAGD fueron tratados con técnicas numéricas, aunque en los últimos años, la comunidad del CAGD ha comenzado a interesarse por la utilización de métodos simbólicos y/o métodos hı́bridos simbólico–numéricos para la resolución de sus problemas. Uno de los problemas en el campo del Diseño Asistido por Ordenador es la manipulación de las curvas concoide. El concepto de concoide es muy intuitivo geométricamente y básicamente se define la concoide C(C) de una curva C, para un foco A(a, b) y una distancia fija d > 0, como el conjunto de puntos Q en la recta AP a una distancia d de un punto P moviéndose en la curva C. La importancia del avance en la manipulación de las curvas concoide radica en el papel fundamental que desempeñan en múltiples aplicaciones en la actualidad dentro de campos de diversa ı́ndole tales como la medicina, la óptica, el electromagnetismo, la construcción, etc. El proyecto se estructura en 7 capı́tulos. En el primer capı́tulo se define el concepto de concoide, se describe su proceso de construcción y se presentan las dos concoides clásicas más importantes: el “concoide de Nicómedes”, y el “Limaçón de Pascal”. En el 9.

(10) capı́tulo 2 se entra en el marco matemático del proyecto, definiéndose algunos conceptos claves en primer lugar, y describiendo un estudio sobre la racionalidad de la concoide en segundo lugar. En este capı́tulo se presentan y explican los algoritmos sobre las curvas concoides que serán más tarde implementados. En el capı́tulo 3 se hace una breve introducción de la programación en Maple. En el capı́tulo 4, se implementan los algoritmos anteriormente estudiados mostrando los paquetes Maple creados para la manipulación de las curvas concoide, ası́ como sus correspondientes páginas de ayuda. En el capı́tulo 5, se ilustran y prueban los paquetes creados aplicándolos a una colección de curvas clásicas conocidas, recogiendo los datos y resultados obtenidos en un atlas de curvas. El capı́tulo 6 muestra algunas de las aplicaciones más destacadas en las que podemos encontrar concoides, objeto de varios estudios en la actualidad y a los que se considera que el presente proyecto les puede resultar de gran utilidad. Por último, en el capı́tulo 7, se hace una breve reseña a las concoides de superficies. Para más detalle sobre el contenido de cada capı́tulo, véase las siguientes referencias. Para el capı́tulo 1, sobre curvas concoide, ver [10], [16], [25], [28], [29],[30],[31] y [32]. Para el capı́tulo 2, en el que se trata el marco matemático del proyecto, ver [17]. Para el capı́tulo 3, donde se hace un breve recorrido por las principales utilidades de Maple, ver [18] y [33]. El capı́tulo 4, sobre la implementación de los algoritmos estudiados en capı́tulos anteriores y creación de un paquete Maple junto con sus respectivas páginas de ayuda, ası́ como el atlas de curvas del capı́tulo 5, son materiales originales de este proyecto. Para el capı́tulo 6, donde se describen algunas de las principales aplicaciones de las curvas concoide, ver [2], [3], [8], [9], [11], [12], [15], [20], [21], [22], [23], [24], [26] y [27]. Para el capı́tulo 7, sobre superficies concoide, ver [5], [13] y [14].. 10.

(11) Capı́tulo 1. Curvas Concoide La noción de concoide es clásica y aparece ya alrededor del año 200 a.C. en un contexto matemático, cuando Nicómedes relacciona este concepto con los problemas clásicos de la trisección del ángulo y la duplicación del cubo. El concepto es muy intuitivo y esencialmente consiste en el lugar geométrico de los puntos del plano obtenidos al intersecar rayos o rectas que emanan desde un foco, con la curva inicial y tomar los puntos en esa recta a distancia ±d del punto de intersección. En el presente capı́tulo se describe el concepto de concoide mediante la idea intuitiva de la construcción geométrica de la misma, por un lado, y la explicación del cálculo matemático para su obtención por otro. Además, se describen las dos concoides clásicas más importantes: la concoide de Nicómedes y el Limaçón de Pascal. Para más detalle sobre los temas expuestos en este capı́tulo, veánse: [10], [16], [25], [28], [29],[30],[31] y [32].. 1.1.. Construcción geométrica. La noción de concoide es clásica, y esta se deriva de un punto fijo, una curva plana, y una distancia fija de la siguiente manera: sea C una curva plana irreducible (la curva base), A un punto fijo en el plano (el foco), y d el elemento de campo fijo distinto de cero (la distancia). Entonces, la concoide C de C desde el foco A a una distancia d es el conjunto de puntos Q en la recta de AP a una distancia d de un punto P que se mueve en la curva C. De forma mś precisa, es el conjunto de puntos definido por:. 11.

(12) C(C) = {Q ∈ AP, con P ∈ C, tal que dist(Q, P ) = d}.. (1.1). En la siguiente figura se puede observar, a la izquierda la contrucción geométrica de la concoide, y a la derecha la concoide de un cı́rculo con el foco situado en el mismo cı́rculo.. Figura 1.1: Construcción geométrica de la Concoide. 1.2.. Cálculo de la concoide. A partir de una curva inicial C, un foco A y una distancia d distinta de cero, y en base del método geométrico anteriormente descrito para la obtención de la concoide, se llega al método matemático a través del cual, y mediante la resolución de un sistema de ecuaciones, se llega a la obtención de la concoide C:.  f (ȳ) = 0      r1 ≡ x1 − a − h(y1 − a) = 0. Sistema de ecuaciones que define a la concoide C,.  r2 ≡ x2 − b − h(y2 − b) = 0     2 2 2 c ≡ (x1 − y1 ) + (x2 − y2 ) − d = 0 donde: f (ȳ) = 0 −→ Ecuación implı́cita de la curva inicial C. r1 ≡ x1 − a − h(y1 − a) = 0 y r2 = x2 − b − h(y2 − b) = 0 −→ Ecuaciones paramétricas que definen a la recta que pasa por el foco A y por un punto P de C.. 12.

(13) c ≡ (x1 − y1 )2 + (x2 − y2 )2 − d2 = 0 −→ Circunferencia de radio d y centrada en un P de C. Mediante la resolución de este sistema de ecuaciones se obtendrı́an todos los puntos Q resultantes de la intersección de la curva inicial C, la recta r (descrita por r1 y r2 ) y la circunfencia c. El resultado obtenido, es decir, el conjunto de todos los puntos Q de la intersección descrita, resulta no ser otra que la concoide C de C para un foco A, y una distancia fija d distinta de cero. De entre los diferentes métodos existentes para la resolución de un sistema de ecuaciones, el empleado en este caso para la obtención de la concoide será el método de las bases de Goebner: f (ȳ), r, c. −→. Bases de Gröebner. −→. Concoide. Ejemplo 1.2.1 Sea C la circunferencia de radio 2 y centrada en el origen, definida por la ecuación f (ȳ) = y22 + y12 − 4, el foco A = (−5, 0) y la distancia fija d = 4. La concoide de C para el foco A y la distancia d, viene definida por el sistema de ecuaciones:  y22 + y12 − 4 = 0      x1 + 5 − h(y1 + 5) = 0  x2 − hy2 = 0     2 2 (x1 − y1 ) + (x2 − y2 ) − 16 = 0 Aplicando Gröebner se resuelve el sistema y se llega a la expresión implı́cita de la concoide C de C para el foco A y distancia d fijados: C = 3600 − 856x21 + 744x22 − 400x22 x1 − 400x31 − 15x41 + 1440x1 − 30x22 x21 + 10x51 + x62 + 10x42 x1 + x61 + 20x22 x31 + 3x22 x41 − 15x42 + 3x42 x21 . En la siguiente imagen puede observarse el resultado obtenido de forma gráfica:. 13.

(14) Figura 1.2: Curva C definida por f (ȳ) = y22 + y12 − 4 y su concoide C para A = (−5, 0) y d=4. 1.3.. Concoides clásicos. Como ya se ha comentado y debido principalmente a su utilidad, las dos concoides más importantes son la concoide de Nicómedes y el Limaçón de Pascal. A continuación se describen estas dos concoides.. 1.3.1.. Concoide de Nicómedes. La concoide de Nicómedes fue descubierta alrededor del 200 a.C. por Nicómedes para solucionar el problema de la trisección del ángulo, y se trata de la concoide de una recta l, con el foco A∈l. / Esta curva fue estudiada posteriormente por los matemáticos del siglo XVII, por considerarse como una muestra del nuevo método de la geometrı́a analı́tica y del cálculo. Podrı́a ser utilizada (como fue el propósito de su invención) para resolver los dos problemas clásicos, la duplicación del cubo y la trisección de un ángulo. Por esta razón, Newton sugirió que deberı́a ser tratada como una curva estándar.. 14.

(15) Los pasos para su construcción son los siguientes: 1) Sea una recta l, un punto A∈l, / y una distancia fija d > 0. 2) Se traza una lı́nea m que pasa a través del foco A y de cualquier punto P de la recta l. 3) Se marcan los puntos Q1 y Q2 en m, de tal forma que Q1 P = Q2 P = d. 4) El conjunto de puntos Q1 y Q2 que se obtienen según varı́a P en l forman la Concoide de Nicómedes.. Figura 1.3: Construcción de la Concoide de Nicómedes. La ecuación de la concoide de Nicómedes, en coordenadas polares, y para y = l y A en el origen, viene dada por la expresión: ρ=. l ± d. cosϕ. (1.2). Como puede apreciarse en la figura 1.4, la recta y = l es la ası́ntota de la concoide de Nicómedes en cualquiera de los casos, pero según la relacción entre l y d se dan tres tipos de concoide diferentes: l < d ⇒ curva azul. l = d ⇒ curva roja. l > d ⇒ curva rosa.. 15.

(16) Figura 1.4: Variación de la Concoide de Nicómedes en función de d. Ejemplo 1.3.1 Dada la recta definida por la expresión implı́cita f = y2 − 2, el foco A = (0, 0) y la distancia fija d = 2, se obtiene la concoide de expresión implı́cita: C = 4x21 − 4x32 − 4x2 x21 + x22 x21 + x42 . En la siguiente imagen puede observarse el resultado obtenido de forma gráfica:. Figura 1.5: Concoide de Nicómedes de la recta f = y2 − 2, y con A = (0, 0) y d = 2. 16.

(17) 1.3.2.. Limaçón de Pascal. El Limaçón de Pascal fue descubierto por Étienne Pascal (padre de Blaise Pascal) y nombrado también por el francés Gilles-Personne Roberval en 1650 utilizándolo como ejemplo en sus métodos de elaboración de tangentes. Se trata de la concoide de una circunferencia con el foco situado sobre la propia circunferencia. El nombre Limaçón viene del latı́n limax, que significa caracol. Por ello esta concoide también es conocida como el caracol de Pascal. Su parecido al caparazón de un caracol es evidente. Los pasos para su construcción son los siguientes: 1) Sea un cı́rculo C, un punto A∈C, y una distancia fija d > 0. 2) Se dibuja una lı́nea l que pasa por A y P , donde P es cualquier punto en C. 3) En la lı́nea l, se marcan los puntos Q1 y Q2 de tal forma que Q1 P = Q2 P = d. 4) El conjunto de puntos Q1 y Q2 que se obtienen según varı́a P en el cı́rculo C forman el Caracol de Pascal. En la siguiente figura puede apreciarse el proceso descrito:. Figura 1.6: Construcción del Limaçón de Pascal La ecuación del Caracol de Pascal, en coordenadas polares, viene dada por la expresión: ρ = a + b cos ϕ. 17. (1.3).

(18) En función del radio del cı́rculo y la constante d fijada, tendremos diferentes relacciones de a y b, dándose los siguientes escenarios: |a/b| < 1 ⇒ Limaçón con bucle interno. a = b ⇒ Cardiode. 1 < |a/b| < 2 ⇒ Limaçón con hoyuelo. |a/b| ≥ 2 ⇒ Limaçón convexo. 2a = b ⇒ Trisectriz (no es la trisectriz de Maclaurin). Foco A de la concoide en el centro de C ⇒ Offset −→ Ver ejemplo 1.3.2. Figura 1.7: Limaçón con bucle interno. Figura 1.8: Cardiode. 18.

(19) Figura 1.9: Limaçón con hoyuelo. Figura 1.10: Limaçón convexo. Figura 1.11: Trisectriz (no de Maclaurin). 19.

(20) Ejemplo 1.3.2 Dada la circunferencia definida por la expresión implı́cita f = y22 +y12 −4, el foco A = (0, 0) y la distancia fija d = 1, se obtiene la concoide de expresión implı́cita: C = 9 − 10x22 − 10x21 + x42 + 2x21 x22 + x41 = (x21 − 1 + x22 )(x21 − 9 + x22 ).. Figura 1.12: Limaçón de Pascal de f = y22 + y12 − 4, y con A = (0, 0) y d = 1: Offset. Obsérvese, que en este caso la concoide coincide con la offset de la circunferencia a distancia d = 1; es decir, se obtienen dos circunferencias concéntricas de radio r = 1 y r = 3, que se corresponden con los factores obtenidos en la ecuación implı́cita: C = (x21 − 1 + x22 )(x21 − 9 + x22 ).. 20.

(21) Capı́tulo 2. Marco Matemático En base al trabajo realizado por J. Sendra y J.R. Sendra sobre el estudio de la racionalidad de las concoides, se reflejará en este capı́tulo en primer lugar, las deficiones, teoremas y corolarios más destacados para la compresión del análisis de la racionalidad de la concoide. A continuación se plasmará en un diagrama de flujos todo el proceso que ha de seguirse para el análisis de la racionalidad de la concoide. Finalmente, se presenta el algoritmo de parametrización de las concoides dado en [17].. 2.1.. Análisis de racionalidad de las curvas concoides. Las curvas planas racionales son aquellas que se pueden expresar mediante parametrizaciones racionales, es decir, mediante un par de funciones racionales dependientes de un parámetro. Dichas parametrizaciones representan todos los puntos de la curva, excepto quizás para un número finito de excepciones. Por ejemplo, la parábola definida implı́citamente por y = x2 es racional y admite una parametrización racional del tipo P (t) = (t, t2 ). En este capı́tulo, se analizará el estudio de la racionalidad de las curvas concoides, un requisito fundamental para su aplicación en las diversas áreas del campo del C.A.G.D.(Computer Aided Geometric Design). La pregunta natural que surge a la hora de estudiar la racionalidad de las concoides, es el por qué del estudio de parametrizaciones de las mismas. Puesto que la concoide de una curva es nuevamente una curva, ¿Qué problema hay en calcular la concoide y aplicar los resultados y algoritmos existentes para curvas? La dificultad intrı́nseca que nos encontramos es que el proceso del cálculo de la. 21.

(22) concoide complica considerablemente el objeto geométrico con el que se trabaja. Por ello se buscan razonamientos teóricos que permitan inferir, a partir de la variedad inicial, propiedades de la variedad concoidal. A continuación, vemos con el ejemplo de un curva clásica no demasiado complicada, como es la elipse, cómo se puede complicar el objeto obtenido al calcular su concoide. Ejemplo 2.1.1 Consideramos la elipse definida por la siguiente ecuación implı́cita: f=. y12 y22 + − 1 = 0, g > 0, h > 0, g 6= h g 2 h2. (2.1). y una parametrización racional de la misma:  P =.  g(t2 − 1) 2ht , . t2 + 1 t2 + 1. (2.2). Sin embargo, la ecuación implı́cita de la concoide es: C = −2h4 g 2 b2 a2 d2 + a4 d4 h4 − 2a4 d2 g 2 h4 − 2a2 b2 d4 g 2 h2 + 2a2 b2 d2 g 4 h2 − 4ag 4 x1 x62 − 4ah4 x71 + (8ab2 g 2 h4 + 8ad2 g 2 h4 + 4ab2 d2 g 2 h2 + 8a3 d2 h4 + 4ab2 d2 h4 − 4ag 4 h4 + 8a3 g 2 h4 − 4ad4 h4 )x31 + (−12h4 g 2 d2 a2 − 2b2 d4 g 2 h2 − 2a4 d2 h4 − 2a2 b2 d2 h4 − 2b4 g 2 h4 − 2a2 b2 d2 g 2 h2 + 6a2 g 4 h4 +6a2 d4 h4 −2a4 g 2 h4 −2h4 g 2 b2 d2 +2b2 d2 g 4 h2 −4a2 b2 g 2 h4 +2b2 g 4 h4 −2b4 d2 g 2 h2 )x21 + (4h2 g 4 b2 a2 − 2a2 b2 d2 g 2 h2 − 2a2 b2 d2 g 4 − 2b4 d2 g 4 + 2a4 g 4 h2 + 2a2 g 4 h4 + 2a2 d2 g 4 h2 − 2a4 d2 g 2 h2 − 2a2 d4 g 2 h2 − 2h4 g 2 d2 a2 + 6b2 g 4 h4 + 2b4 g 4 h2 + 12b2 d2 g 4 h2 + 6b2 d4 g 4 )x22 + (4ab2 d4 g 2 h2 − 4a3 g 4 h4 + 8a3 d2 g 2 h4 + 4ab2 d2 g 2 h4 − 4ab2 g 4 h4 − 4a3 d4 h4 − 4ab2 d2 g 4 h2 )x1 + (−8b3 d2 g 4 h2 + 4a2 bd4 g 2 h2 − 4b3 g 4 h4 + 4a2 bd2 g 2 h4 − 4a2 bg 4 h4 − 4a2 bd2 g 4 h2 − 4d4 g 4 b3 )x2 + (4a2 bd2 g 4 + 4a2 bd2 g 2 h2 − 8a2 bg 4 h2 − 8b3 g 4 h2 − 8bd2 g 4 h2 − 4bg 4 h4 − 4bd4 g 4 + 8b3 d2 g 4 )x32 + (−2a2 d2 g 4 + g 4 h4 + 12b2 g 4 h2 + 2d2 g 4 h2 + 4a2 g 4 h2 − 12b2 d2 g 4 + g 4 b4 − 2a2 d2 g 2 h2 + d4 g 4 + a4 g 4 +2a2 b2 g 4 )x42 +(a4 h4 −12a2 g 2 h4 +b4 h4 −2d2 g 2 h4 +g 4 h4 −4b2 g 2 h4 −2b2 d2 h4 +2a2 b2 h4 − 2b2 d2 g 2 h2 +d4 h4 −12a2 d2 h4 )x41 +(−4a3 h4 −4ab2 h4 +8ag 2 h4 +8ad2 h4 )x51 +(−2h4 g 2 +6h4 a2 − 2d2 h4 +2b2 h4 )x61 +(−4a2 bg 4 −8g 4 h2 b+8bd2 g 4 −4b3 g 4 )x52 +(6b2 g 4 +2a2 g 4 −2d2 g 4 +2g 4 h2 )x62 + 2h2 g 4 b4 d2 +g 4 h4 a4 +d4 g 4 b4 +(8abd2 g 4 h2 −8abd2 g 2 h4 +8abg 4 h4 +8ab3 d2 g 2 h2 +8a3 bd2 g 2 h2 − 8abd4 g 2 h2 )x1 x2 + (−20a2 bd2 g 2 h2 + 4a2 bd2 h4 − 4bd2 g 4 h2 − 4bg 4 h4 + 4bd2 g 2 h4 + 4bd4 g 2 h2 + 8a2 bg 2 h4 + 8b3 g 2 h4 )x21 x2 + (−8ab2 g 4 h2 − 8a3 g 4 h2 + 4ad2 g 2 h4 + 4ad4 g 2 h2 − 4ad2 g 4 h2 + 4ab2 d2 g 4 − 20ab2 d2 g 2 h2 − 4ag 4 h4 )x1 x22 + (8h2 bg 2 − 4bg 4 )x21 x52 + (−2g 2 h2 + 2h4 )x61 x22 + (h4 − 4g 2 h2 + g 4 )x41 x42 + (−12b2 g 2 h4 + 10a2 d2 g 2 h2 − 2b4 g 2 h2 − 2a4 g 2 h2 − 4a2 g 2 h4 + 2g 4 h4 − 2b2 d2 g 4 − 2d2 g 2 h4 + 4b2 g 4 h2 + 2d2 g 4 h2 + 12a2 g 4 h2 − 4a2 b2 g 2 h2 − 2a2 d2 h4 + 10b2 d2 g 2 h2 − 2d4 g 2 h2 )x22 x21 + (−8abd2 h4 − 16abg 2 h4 + 16abd2 g 2 h2 )x2 x31 + (16abd2 g 2 h2 + 16abg 4 h2 − 22.

(23) 8abd2 g 4 )x1 x32 + (−8ag 4 h2 + 4ad2 h4 + 8a3 g 2 h2 + 8ab2 g 2 h2 + 8ag 2 h4 − 12ad2 g 2 h2 )x22 x31 + (−2g 2 h2 + 2g 4 )x21 x62 + (8g 2 bh4 − 4bh4 a2 + 4bd2 h4 − 4g 2 bd2 h2 − 4b3 h4 )x2 x41 + (8g 2 bh4 + 8g 2 h2 b3 − 8g 4 h2 b + 4bd2 g 4 + 8g 2 h2 a2 b − 12g 2 bd2 h2 )x32 x21 + (−4a3 g 4 − 4ad2 g 2 h2 − 8ag 4 h2 + 4ad2 g 4 − 4ab2 g 4 )x1 x42 + (−4g 2 h2 b2 − 4h4 g 2 + 4g 2 d2 h2 + 2g 4 h2 + 2h4 a2 − 12g 2 h2 a2 − 2d2 h4 + 6b2 h4 )x41 x22 + (4g 2 d2 h2 − 2d2 g 4 + 2b2 g 4 − 4g 2 h2 a2 + 6a2 g 4 + 4g 4 h2 − 12g 2 h2 b2 − 2h4 g 2 )x21 x42 + (8h2 bg 2 −4h4 b)x32 x41 +(8ag 2 h2 −4h4 a)x22 x51 +(−4ag 4 +8ag 2 h2 )x31 x42 +2a2 b2 g 4 h4 +8abg 4 x1 x52 − 16abg 2 h2 x31 x32 + 8abh4 x51 x2 + g 4 x82 + h4 x81 + h4 b4 g 4 − 4bg 4 x72 − 4bh4 x61 x2 . Podemos observar la complicación computacional que supone trabajar con este dato, por ello, el objeto es estudiar si la curva es racional y trabajar con una representación paramétrica que nos permita manipular mejor la curva.. Se presentan a continuación dos definiciones básicas para el estudio de la racionalidad de la concoide: Definición 2.1.1 Se dice que una parametrización P (t) ∈ K(t)2 está a una distancia racional del foco A si ||P (t) − A||2 = m(t)2 , con m(t) ∈ K. Expresaremos este hecho diciendo que P (t) es RDF o A-RDF si es necesario especificar al foco. Definición 2.1.2 Sea P (t) ∈ K(t)2 una parametrización racional de una curva algebraica plana C. Se define la curva de reparametrización asociada a C, como la curva definida por la parte primitiva con respecto a x2 del numerador de la expresión polinomial dada por el producto interno: (−2x2 , x22 − 1)(P (x1 ) − A) = 0. A continuación, el siguiente teorema caracteriza la racionalidad de las concoides, por medio de la noción de RDF y curva de reparametrización: Teorema 2.1.1 Las siguientes afirmaciones son equivalentes: (1) C es racional y tiene una parametrización RDF. (2) C(C) tiene al menos una componenete simple racional. (3) Existe una parametrización propia de C cuya curva de reparametrización tiene al menos una componente racional.. 23.

(24) (4) La curva de reparametrización de cada parametrización propia de C tiene al menos una componente racional. (5) Todas las componenetes de C(C) son racionales. Observación: nótese que el teorema anterior implica que: 1. Las concoides con todas sus componentes racionales sólamente pueden ser generadas por curvas racionales. 2. La racionalidad de todas las componentes de la concoide depende de la curva base y del foco, pero no de la distancia. Los siguientes teoremas caracterizan la racionalidad de las concoide, el primero de ellos para el caso de la concoide de doble racionalidad (por ejemplo dos componentes racionales) y el segundo para el caso de la concoide de una sola compononente racional: Teorema 2.1.2 (Caracterización de doble racionalidad) Sea C una curva racional. Las siguientes afirmaciones son equivalentes: (1) C(C) es reducible. (2) C(C) tiene exactamente dos componentes y son racionales. (3) Existe una parametrización propia RDF de C. (4) Cada parametrización propia de C son RDF. (5) Existe una parametrización propia de C cuya curva de reparametrización es reducible. (6) La curva de reparametrización de toda parametrización propia de C es reducible.. Teorema 2.1.3 (Caracterización de racionalidad) Sea C racional. Las siguientes afirmaciones son equivalentes: (1) C(C) es racional (y por lo tanto irreducible). (2) Existe una parametrización propia de C cuya curva de reparametrización es racional. (3) La curva de reparametrización de toda parametrización propia de C es racional.. 24.

(25) Los siguientes corolarios se deducen directamente de los teoremas anteriores: Corolario 2.1.1 Sea C una curva cónica irreducible, y sea A ∈ C, entonces C(C) es racional.. Corolario 2.1.2 El Limaçón de Pascal es racional.. Corolario 2.1.3 La Concoide de Nicómedes es racional. Y en relacción al corolario 2.1.1, el siguiente teorema: Teorema 2.1.4 Sea C una curva cónica irreducible, y sea A el foco de C, entonces C(C) tiene dos componentes racionales.. Posteriormente, en el cápitulo del atlas de curvas, se mostrará como se cumplen estos teoremas y corolarios.. 2.2.. Algoritmo de parametrización de la concoide. A continuación se detalla el algoritmo CONCH-PARAM de parametrización directa de las concoides de curvas planas, basado en la caracterización y criterios de racionalidad presentados en la sección anterior. Este algoritmo consiste básicamente en lo siguiente: • DADA: una curva racional C, • DECIDE: si la concoide de C, C(C), para un foco A y una distancia d, es racional o no. Decidiéndo tambien la reducibilidad. En caso de racionalidad, • CALCULA: una parametrización racional de sus componentes, a partir sólamente de una paramentrización de la curva inicial. El siguiente diagrama de flujos expone resumidamente los pasos principales del algoritmo, reflejando todo el proceso que sigue el algoritmo para el estudio de la racionalidad de la concoide y su posterior parametrización si la concoide resulta ser racional:. 25.

(26) 26.

(27) Como se puede ver en el diagrama, se parte de una una parametrización racional propia P (t) de C, el foco A y una distancia fija d > 0. Se comprueba en primer lugar si dicha parametrización racional es RDF o no, y para ello, se obtiene la norma al cuadrado del vector P (t) − A. Si la norma al cuadrado de dicho vector es racional, es decir, si se cumple que ||P (t) − A||2 = m2 (t), entonces la parametrización racional P (t) es RDF y el algoritmo procede al cálculo de una parametrización de las dos componentes racionales que tendrı́a la concoide. Por el contrario, si la norma al cuadrado no es racional, entonces la parametrización racional P (t) no es RDF, en cuyo se caso se procederı́a a obtener la curva de reparametrización y se comprobarı́a si es racional o no calculando el género de la misma: si el género de la curva de reparametrización es cero entonces esta es racional. Si la curva de reparametrización es racional entonces la componente concoide es racional y el algoritmo calcula la parametrización racional de la misma. Finalmente, si la curva de reparametrización no es racional, entonces la concoide no es racional y el algoritmo devuelve un mensaje indicándolo. Obsérvese que, el caracter racional de la concoide es independiente del valor de la longitud fija de d > 0. En caso de si racionalidad, el valor de d si determina el valor de la/s componenete/s de la concoide. A continuación, se presenta el algoritmo de una forma más esquemática:. 27.

(28) Algoritmo: CONCH-PARAM (P (t), A, d) Input: una parametrización racional propia P (t) de C, el foco A y una distancia fija d > 0. Output: el carácter racional de la concoide de C, y la/s componente/s de la concoide C(C) si esta resulta ser racional. 1. Calcular el vector P (t) − A. Sea: 2. If ||P (t) − A||2 = 0 then return C(C) = ∅. 3. If ||P (t) − A||2 = m2 (t) then return •  C(C) TIENE DOS COMPONENTES RACIONALES  •  UNA PARAMETRIZACIÓN RACIONAL DE C(C) ES: P (t) ± d. (P (t) − A)  ||P (t) − A||. 4. If ||P (t) − A||2 6= m2 (t) then Determinar polinomio que define a GP (C): ppnx2 (−2x2 , x22 − 1)(P (x1 ) − A) (ppnx2 representa la parte primitiva del numerador respecto a x2 ). 5. Decidir si GP (C) es racional. (Obsérvese que GP (C) es irreducible). 6. If GP (C) no es racional then return  C(C) ES IRREDUCIBLE Y NO RACIONAL  7. Determinar una parametrización racional Q(t) = (Q1 , Q2 ) de GP (C). Return •  C(C) ES RACIONAL  •  UNA PARAMETRIZACIÓN RACIONAL DE C(C) ES: δ(t) ± donde, δ(t) = P (Q1 (t)).. 28. (δ(t) − A)  ||δ(t) − A||.

(29) Capı́tulo 3. Programación en Maple En este cápitulo se hace un breve recorrido por algunos de los concceptos básicos de Maple, introduciendo además conceptos básicos de programación. También se ilustrará la forma de crear un paquete Maple ası́ como una página de ayuda. No es obetivo de este texto profundizar sobre el amplio abanico de posibilidades que ofrece Maple, por lo que para entrar más en detalle sobre ello es conveniente consultar algunos de los múltiples manuales o libros de consulta disponibles. Véase [18] y [33] para más información sobre los puntos expuestos en este capı́tulo.. 3.1.. Introducción a la programación en Maple. Es necesario conocer en primer lugar la estructura de Maple, para a continuación comenzar a adentrarse en las caracterı́sticas básicas de éste, como pueden ser el manejo de números, polinomios, o funciones, la creación de procedimientos o el uso de bucles o condicionantes. Estos serán los aspectos desarrollados en las siguientes dos secciones.. 3.1.1.. Estructura básica. Maple es un sistema de álgebra computacional que contiene más de 3000 comandos distribuidos en un núcleo central, el cual contiene la mayor parte de los comandos y funcionalidades del sistema, y un serie de paquetes y librerı́as sobre temas diversos que pueden ser cargados de forma adicional en función de las necesidades del trabajo a desarrollar. Para obtener un listado de paquetes se emplearı́a la siguiente sentencia:. 29.

(30)   >. ?index,packages. Y para cargar cualquiera de ellos: ' ' >. $ $. with(geometry);. [Apollonius, AreCollinear , AreConcurrent, AreConcyclic, AreConjugate, AreHarmonic, AreOrthogonal , AreParallel , ArePerpendicular , AreSimilar , AreTangent, CircleOfSimilitude, CrossProduct, CrossRatio, DefinedAs, Equation, EulerCircle, EulerLine, ExteriorAngle, ExternalBisector , FindAngle, GergonnePoint, GlideReflection, HorizontalCoord , HorizontalName, InteriorAngle, IsEquilateral , IsOnCircle, IsOnLine, IsRightTriangle, MajorAxis, MakeSquare, MinorAxis, NagelPoint, OnSegment, ParallelLine, PedalTriangle, PerpenBisector , PerpendicularLine, Polar , Pole, RadicalAxis, RadicalCenter , RegularPolygon, RegularStarPolygon, SensedMagnitude, SimsonLine, SpiralRotation, StretchReflection, StretchRotation, TangentLine, VerticalCoord , VerticalName, altitude, apothem, area, asymptotes, bisector , center , centroid , circle, circumcircle, conic, convexhull , coordinates, detail , diagonal , diameter , dilatation, directrix , distance, draw , dsegment, ellipse, excircle, expansion, foci , focus, form, homology, homothety, hyperbola, incircle, inradius, intersection, inversion, line, medial , median, method , midpoint, orthocenter , parabola, perimeter , point, powerpc, projection, radius, randpoint, reciprocation, reflection, rotation, segment, sides, similitude, slope, square, stretch, tangentpc, translation, triangle, vertex , vertices] & &. % %. Una vez cargado el paquete es posible utilizar cualquiera de los comandos que lo componen.. 3.1.2.. Breve recorrido por Maple. De una forma muy resumida, algunos de los conceptos básicos de Maple: Números, polinómios y funciones. Un caracterı́stica esencial de Maple es la precisión en el cálculo. Las operaciones se realizan en modo exacto, aunque también se permite trabajar en coma flotante. Sobre los números racionales, Maple trabaja de manera exacta, de tal forma que al operar dos números racionales se obtiene un número racional totalmente simplificado. Igualmente Maple puede trabajar con números algebraicos con aritmética exacta. 30.

(31) ' ' >. $ $. a:=2000/5000; 2*(1/9+2/9); a :=. 2 5. 2 3 >. sqrt(2); sqrt(2.0); √. 2. 1,414213562. >. b:=(2/7)^(Pi); c:=exp(3)^(1/2); 2 b := ( )π 7 √ c :=. e3. & &. % %. Algunos de los comandos elementales para el manejo de números son: • convert =⇒ Transforma una expresión a la forma indicada. • evalf =⇒ Evalúa numéricamente la expresión con el número de dı́gitos indicados. • ifactor =⇒ Factoriza un número entero. • igcd, ilcm =⇒ Calculan el mcd y mcm, respectivamente. • iquo =⇒ Determina el cociente de una división de números enteros. • irem =⇒ Determnina el resto de una división de números enteros. • % =⇒ El sı́mbolo % se refiere a la última expresión obtenida, % % a la penúltima y % % % a la antepenúltima. 31.

(32) En el manejo de polinomios, algunos comandos elementales son: • degree =⇒ Calcula el grado del polinomio indicado en la variable especificada. • randpoly =⇒ Genera un polinomio aleatorio en las variables especificadas. • coeff/s =⇒ Calcula el/los coeficiente/s del polinomio. • quo =⇒ Calcula el cociente de la división entre dos polinomios respecto a una variable determinada. • rem =⇒ Calcula el resto de la división entre dos polinomios respecto a una variable determinada. • gcd/lmc =⇒ Calcula el mcd/mcm de dos polinomios. • factor =⇒ Factoriza sobre Q el polinomio indicado. Maple también ofrece la posibilidad de definir funciones de distintas formas: como procedimientos (lo veremos más adelante), por medio del operador (− >) o mediante el comando unapply : $ $. ' ' >. f:=unapply(x^3+y^3,x,y); f := (x, y) → x3 + y 3. >. g:=(x)->cos(x); g := x → cos(x). >. f(1,2); g(0); 9. 1 & &. % %. 32.

(33) ' ' >. $ $. h:=g@f; h := g@f. >. h(a,b); cos(a3 + b3 ). & &. % %. Secuencias, listas y conjuntos. Un secuencia es una relacción ordenada de objetos separados por comas. Para crear una secuencia se puede utilizar el operador ”$” o el comando seq(m..n,step). Una lista es una colección de objetos de Maple siguienndos la sintaxis [a1 , a2 , ..., an ], en la que importa el orden de los elementos y la repetición de los mismos. Es decir, una lista es una secuencia cerrada entre corchetes. Un conjunto en Maple es una secuencia encerrada entre llaves. La sitáxis para crear un conjunto es a1 , a2 , ..., an . La propiedad principal que lo diferencia de una lista es que el los cconjuntos no importa el orden de colocación de los elementos ni la repetición de los mismo. Procedimientos Maple Un procedimiento es una colección secuencial finita de comados Maple, escritos en forma coherente con la sintaxis del sistema. La sintáxis general para definir un procedimiento es la siguiente: nombreProc:=proc(x1 :: t1 , ..., xn , tn ) local l1 , ..., lr ; global g1 , ..., gs ; o1 , ..., op (opciones); CUERPO DEL PROCEDIMIENTO end proc; Véase el siguiente sencillo ejemplo, donde se crea un procedimiento para el cálculo del área de la circunferencia: 33.

(34) ' ' >. $ $. areaCirc:=proc(r::positive) pi*r^2 end; areaCirc := proc(r::positive) π ∗ r2 end proc. >. areaCirc(2); 4π. & &. % %. La estructuración del cuerpo principal de un procedimiento en llamadas a (sub)procedimientos más simples se conoce como programación modular. Bucles y Condicionantes Se distinguen los siguientes tipos de bucles simples: • Bucle FOR-FROM-TO-DO-OD for < variable > from < inicio > to < f in > do comando; ... comando; end for; • Bucle FOR-FROM-BY-TO-DO-OD for < variable > from < inicio > by < paso > to < f in > do comando; ... comando; end for; • Bucle FOR-IN-DO-OD for < variable > in < expresion > do comando; ... comando; end for; • Bucle FOR-FROM-TO-WHILE-DO-OD. 34.

(35) for < variable > from < expr. > to < expr. > while < expr. > and < expr. > or < expr. > do comando; ... comando; end for; • Bucle FOR-IN-WHILE-DO-OD for < variable > in < expr. > while < expr. > and < expr. > or < expr. > do comando; ... comando; end for;. La anidación de los bucles simples descritos llevarı́an a la formación de bucles múltiples más coomplejos. Las condicionales permiten ejecutar una secuencia de comandos si se verifican determinadas condiciones. La sintáxis más sencilla es la siguiente: if < Exp.Condicional > then comando; ... comando; else comando; ... comando; end if; Al igual que en el caso de los bucles, la anidación de condicionales simples llevarı́a a la formación de condicionales múltiples más complejos. Combinando bucles y condicionales, se abre un amplio margen de posibilidades.. 3.2.. Creación de un paquete en Maple. Los paquetes Maple son coleccciones de comandos centrados en un área especı́fica, y los cuales pueden ser cargados en la sesión de trabajo Maple siempre que se desee trabajar sobre el área o materia en cuestión. Algunos ejemplos de paquetes son: algcurves, Groebner, Matlab, plots, etc. Como ya se ha comentado en la sección anterior, la forma de cargar un paquete y poder ası́ trabajar con la colección de comandos que lo componene es mediante el comando with(packageName). También es posible cargar solamente uno o varios comandos del paquete.. 35.

(36) El siguiente ejemplo, muestra la forma de crear un paquete en Maple para que posteriormente pueda ser cargado y utilizado, a partir de la definición de diferentes procedimientos: ' '. $ $. MyPackage:=module() export f1,f2; option package; f1:=proc(t) t^5; end proc; f2:=proc(v) (v+2)^2; end proc; end module; >. MyPackage := module() export f1 , f2 ; option package; end module. >. savelib(MyPackage);. >. restart;. >. with(MyPackage); [f1 , f2 ]. >. f1(2)-f2(1); 23. & &. % %. Anotar al respecto que, como se puede observar, la caraterı́stica que diferencia al procedimiento y que permite su uso para la creación del paquete es la opción package dentro del mismo. Además, mediante el comando savelib el paquete se guarda en memoria de forma que pueda ser utilizado en cualquier momemento con tan solo cargarlo con el comando with. El comando savelib almacenará el paquete en el directorio que indique la variable de Maple libname, que puede ser un directorio asignado por defecto o bien un directorio que se asigne por el usuario, tan solo guardando dicho directorio en la variable libname antes de almacenar el paquete en memoria.. 3.3.. Creación de una página de ayuda en Maple. Las páginas de ayuda resultan ser un buen apoyo para la adquisición de cierta destreza en el uso de cualquier caracterı́stica de Maple. Cada comando tiene su correspondiente página de ayuda, a partir de la cual el usuario puede informarse sobre la utilidad del comando, sus parámetros, limitaciones, ejemplos de su uso o enlaces a otros temas relac36.

(37) cionados. En la sección anterior se describió como crear un paquete Maple. Como complemeto importante a ello, se describirá a continuación como crear páginas de ayuda sobre los procedimientos creados y que componen el paquete Maple. La metodologı́a es sencilla y puede resumirse en los siguientes pasos: Se carga la plantilla Maple para la creación de la página de ayuda. La forma de acceder a ella es a través de la ayuda de Maple.. Figura 3.1: Carga de plantilla de página de ayuda Se documenta correctamente.. 37.

(38) Figura 3.2: Plantilla de página de ayuda Se almacena en un archivo de base datos de ayuda de Maple: archivos de extensión .hdb. En este punto, hay que tener en cuenta que el nombre que se indique en el campo Tópico será el que luego se utilice para acceder a la ayuda del procedimiento, por lo que que conviene que sea un nombre que identifique claramente a este. El archivo .hdb puede ser alguno de los almacenados en la memoria de Maple o bien uno creado por el usuario.. 38.

(39) Figura 3.3: Guardar página de ayuda. Figura 3.4: Guardar página de ayuda. Figura 3.5: Búsqueda de una página de ayuda. 39.

(40) Capı́tulo 4. Creación de un paquete Maple para el tratamiento de curvas Concoide. En la primera sección de este capı́tulo se mostrarán los cuatro procedimientos creados y que conforman el paquete Maple para el análisis y generación de las curvas concoide, objetivo principal de este proyecto. El nombre dado al paquete es intuitivo: Conchoid. En la segunda sección del capı́tulo se mostrarán las páginas de ayuda creadas para que el usuario de Maple pueda tener acceso a una explicación clara de cada uno de los procedientos que conforman el paquete Conchoid.. 4.1.. Creación del paquete Conchoid. El paquete Conchoid está compuesto por los cuatro procedimientos siguientes: getImplConch ⇒ Generación de la ecuación implı́cita de la Concoide. plotImplConch ⇒ Dibujo de la curva inicial y de su concoide. getParamCoch ⇒ Estudio de la racionalidad de la concoide y obtención de su expresión paramétrica si procede. checkParam ⇒ Chequeo de la corresponcia entre la expresión implı́cita y la expresión paramétrica de una curva. 40.

(41)  .   >. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch].  .  . En los siguientes apartados se entrará en detalle en cada uno de estos procedimientos.. 4.1.1.. Procedimiento getImplConch. El procedimiento getImplConch genera, a partir de la expresión implı́cita de una curva, f , de una distancia fija d > 0 y de las coordenadas (a, b) del foco A, la expresión implı́cita de la concoide correspondiente. Una vez realizado el cálculo, este se printa en pantalla y puede ser almacenado en una variable si ası́ se desea. De forma resumida, las entradas y salidas del procedimiento getImplConch son: • INPUT: Sea f la expresión implı́cita de una curva racional dada C, un foco A(a, b) y una distancia fija d > 0. • OUTPUT: Ecuación implı́cita de la concoide de la curva inicial, C(C), para el foco A y la distancia d. El código del procedimiento es el que se muestra a continuación: $ $. ' '. getImplConch := proc (f, d, a, b) local r1, r2, h, c; r1 := x1-a-h*(y1-a); r2 := x2-b-h*(y2-b); c := (x1-y1)^2+(x2-y2)^2-d^2; use Groebner in Basis([f, c, r1, r2], plex(h, y1, y2, x1, x2))[1]; end use; end proc; >. getImplConch := proc(f, d, a, b) local r1 , r2 , h, c; r1 := x1 − a − h ∗ (y1 − a) ; r2 := x2 − b − h ∗ (y2 − b) ; c := (x1 − y1 )2 + (x2 − y2 )2 − d2 ; Groebner : −Basis([f, c, r1 , r2 ], plex(h, y1 , y2 , x1 , x2 ))1 end proc & &. % %. 41.

(42) Breve descripción del procedimiento: La forma en la que el procedimiento genera la concoide está basado en la construcción geométrica de la misma descrita en el capı́tulo 1. Por eso, los pasos que se siguen son los siguientes: 1) Se genera la expresión paramétrica de la recta que pasa por el foco A y corta a la curva en un punto P de la misma: r1 y r2. 2) Se genera la expresión de la cirfunferencia de radio d y centro en P : c. 3) Se resuelve el sistema de ecuaciones formado por la curva inicial, la recta, y la circunferencia definidas, es decir, el sistema de ecuaciones formado por: f , r1, r2 y c. Para resolver el sistema de ecuaciones se aplica el método de las Bases de Groebner (respecto al orden puramente lexicográfico, plex ), y el resultado de dicha resolución es la expresión implı́cita de la concoide que se estaba buscando. A continuación, se ilustra el procedimiento anterior con un ejemplo. Ejemplo 4.1.1 Sea C la parábola definida por la ecuación implı́cita f = y22 − y1 . Para un foco A(0, 0) y una distancia fija d = 1 se puede calcular la expresión implı́cita de la concoide de C utilizando el el procedimiento creado de la siguiente manera: $ $. ' ' >. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2-y1; a:=0: b:=0: d:=1: f := y2 2 − y1. >. CONCHimpl:=getImplConch(f,d,a,b); CONCHimpl := x1 4 + x2 2 x1 2 − x2 4 − 2 x1 x2 4 − 2 x2 2 x1 3 + x2 4 x1 2 + x2 6. & &. % %. 42.

(43) 4.1.2.. Procedimiento plotImplConch. El procedimiento plotImplConch printa en pantalla la concoide de una curva C dada, ası́ como la propia curva inicial, para una longitud concreta de los ejes sobre los que se printan las curvas. De forma resumida, las entradas y salidas del procedimiento plotImplConch son: • INPUT: Sea f la expresión implı́cita de una curva irreducible dada C, un foco A(a, b) y una distancia fija d > 0; sea p la longitud de los ejes en los que se printará la concoide. • OUTPUT: Printado de la concoide generada. El código del procedimiento es el que se muestra a continuación: $ $. ' '. plotImplConch:= proc (f,d,a,b,p) local d1, d2, CONCHimpl; CONCHimpl:=getImplConch(f, d, a, b); use plots in d1 :=implicitplot(subs(x1=x, x2=y, CONCHimpl=0), x=-p..p, y=-p..p, color = blue,numpoints=10000,legend = [Conchoid]); d2 :=implicitplot(subs( y1=x, y2=y, f=0), x=-p..p, y=-p..p, color = red,numpoints=10000,legend = [Initial_Curve]); display({d1, d2}); end use; end proc; >. plotImplConch := proc(f, d, a, b, p) local d1 , d2 , CONCHimpl ; CONCHimpl := getImplConch(f, d, a, b) ; d1 := plots : −implicitplot(subs(x1 = x, x2 = y, CONCHimpl = 0), x = −p..p, y = −p..p, color = blue, numpoints = 10000, legend = [Conchoid ]); d2 := plots : −implicitplot(subs(y1 = x, y2 = y, f = 0), x = −p..p, y = −p..p, color = red , numpoints = 10000, legend = [Initial Curve]); plots : −display({d1 , d2 }) end proc & &. % %. Breve descripción del procedimiento: El procedimiento plotImplConch genera, en primer lugar, la ecuación implı́cita de la concoide de una curva C dada, a partir de la expresión implı́cita dicha curva, f , de una 43.

(44) distancia fija d > 0 y de las coordenadas (a, b) del foco A, y dibuja, en segundo lugar, la concoide obtenida junto con la curva inicial. Para el cálculo de la concoide se emplea el procedimiento getImplConch descrito en el apartado anterior. A continuación, se ilustra el procedimiento anterior con un ejemplo. Ejemplo 4.1.2 Siguiendo con la curva C del ejemplo anterior, definida por la ecuación implı́cita f = y22 − y1. Para un foco A(0, 0) y una distancia fija d = 1 se puede obtener la representación gráfica de la concoide de C utilizando el procedimiento creado de la siguiente manera: $ $. ' ' >. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2-y1; a:=0: b:=0: d:=1: f := y2 2 − y1. >. plotImplConch(f,d,a,b,2);. & &. % %. 44.

(45) 4.1.3.. Procedimiento getParamCoch. El procedimiento getImplConch realiza un análisis de la racionalidad de la concoide, a partir de P , es decir, la expresión paramétrica propia de la curva inicial C, de la distancia fija d > 0 y de las coordenadas (a, b) del foco A. De forma resumida, las entradas y salidas del procedimiento getImplConch son: • INPUT: Sea P la expresión paramétrica propia de una curva racional dada C, un foco A(a, b) y una distancia fija d > 0. • OUTPUT: Resultado del estudio de la racionalidad de la concoide de C, y la expresón paramétrica de la/s componenete/s si esta resulta ser racional. El código del procedimiento es el que se muestra a continuación:. 45.

(46) ' '. $ $. getParamCoch := proc (P, d, a, b) local Num, Dem, m, Gp, Qp, g, Delta, CONCHmas, CONCHmenos, CONCH; with(algcurves): if d>0 then Num := psqrt(numer((P[1]-a)^2+(P[2]-b)^2)); Dem := psqrt(denom((P[1]-a)^2+(P[2]-b)^2)); if Num <> 0 then if Num <> _NOSQRT and Dem <> _NOSQRT then m := Num/Dem; CONCHmas := [simplify(factor(P[1]+d*(P[1]-a)/m)), simplify(factor(P[2]+d* (P[2]-b)/m))]; CONCHmenos := [simplify(factor(P[1]-d*(P[1]-a)/m)), simplify(factor(P[2]-d*(P[2]-b)/m))]; print(‘The Conchoid is reducible, so it is double-rational. Its components can be parametrized by: CONCHmas‘ = CONCHmas, ‘and CONCHmenos‘ = CONCHmenos); print(‘Details of computation: m(t)‘=m); else Gp := subs(t = x1, primpart(numer(-2*x2*(P[1]-a)+(x2^2-1)*(P[2]-b)), x2)); if genus(Gp, x1, x2) <> 0 then print(‘The Conchoid is irreducible and not rational.‘) else Qp := factor(simplify(parametrization(Gp, x1, x2, t))); g := subs(x1 = Qp[1], Qp2 = P[2], Gp); if g <> 0 then Qp = NOPARAM end if; if Qp <> NOPARAM then Delta := simplify(subs(t = Qp[1], P)); CONCH := simplify([Delta[1]+d*(Delta[1]-a)/sqrt((Delta[1]-a)^2+(Delta[2]-b)^2), Delta[2]+d*(Delta[2]-b)/sqrt((Delta[1]-a)^2+(Delta[2]-b)^2)], radical, symbolic); print(‘The Conchoid is irreducible and rational. It can be parametrized by: CONCH‘ = CONCH); print(‘Details of computation: Qp(t)‘=Qp, ‘Delta(t)‘=Delta); else print(‘A mistake has been obtained in parametrization of Gp.‘) end if end if end if else m := 0; print(‘Error, ’f’ must be a curve.‘) end if; else print(‘The value of ’d’ must be bigger than cero.‘) end if; end proc; >. getParamCoch := proc(P, d, a, b) local Num, Dem, m, Gp, Qp, g, ∆, CONCHmas, CONCHmenos, CONCH ; with(algcurves) ; if 0 < d then Num := psqrt(numer((P1 − a)2 + (P2 − b)2 )) ; Dem := psqrt(denom((P1 − a)2 + (P2 − b)2 )) ; & &. % %. 46.

(47) ' '. $ $. if Num 6= 0 then if Num 6= NOSQRT and Dem 6= NOSQRT then m := Num/Dem ; CONCHmas := [simplify(factor(P1 + d ∗ (P1 − a)/m)), simplify(factor(P2 + d ∗ (P2 − b)/m))]; CONCHmenos := [simplify(factor(P1 − d ∗ (P1 − a)/m)), simplify(factor(P2 − d ∗ (P2 − b)/m))]; print(‘The Conchoid is reducible, so it is double − rational . Its components can be parametrized by : CONCHmas‘ = CONCHmas, ‘and CONCHmenos‘ = CONCHmenos); print(‘Details of computation : m(t)‘ = m) else Gp := subs(t = x1 , primpart(numer(−2 ∗ x2 ∗ (P1 − a) + (x2 2 − 1) ∗(P2 − b)), x2 )); if genus(Gp, x1 , x2 ) 6= 0 then print(‘The Conchoid is irreducible and not rational .‘) else Qp := factor(simplify(parametrization(Gp, x1 , x2 , t))) ; g := subs(x1 = Qp 1 , Qp2 = P2 , Gp) ; if g 6= 0 then Qp = NOPARAM end if ; if Qp 6= NOPARAM then ∆ := simplify(subs(t = Qp 1 , P )) ; CONCH := simplify([∆1 + d ∗ (∆1 − a)/sqrt((∆1 − a)2 + (∆2 − b)2 ), ∆2 + d ∗ (∆2 − b)/sqrt((∆1 − a)2 + (∆2 − b)2 )], radical , symbolic); print( ‘The Conchoid is irreducible and rational . It can be parametrized by : CONCH ‘ = CONCH ); print(‘Details of computation : Qp(t)‘ = Qp, ‘Delta(t)‘ = ∆) else print(‘A mistake has been obtained in parametrization of Gp.‘) end if end if end if else m := 0 ; print(‘Error , 0 f 0 must be a curve.‘) end if else print(‘The value of 0 d 0 must be bigger than cero.‘) end if end proc & &. % %. 47.

(48) Breve descripción del procedimiento: Si del análisis realizado a partir de P , d y A se obtiene como resultado que la concoide correspondiente es racional, entonces se calculará la expresión paramétrica de ésta y se printará en pantalla junto con los detalles del cálculo. En caso contrario, es decir, que resulte que la concoide no es racional, entonces no se calculará la expresión de la concoide pero si se mostrará un mensaje en pantalla informando del resultado del análisis. El análisis de la racionalidad de la concoide, y por lo tanto el funcionamiento del procedimiento, sigue exhaustivamente cada uno de los pasos que se muestran en el diagrama de flujos del capı́tulo 2, referente al estudio de la racionalidad de la concoide. Los pasos, de forma resumida, son los siguientes: 1) Se chequea que se cumple la condición d > 0. 2) Se comprueba si la concoide es reducible. 3) Si es reducible entonces la concoide es doblemente racional. En este caso se calculan sus dos componentes y se muestra en pantalla una parametrización racional de cada componente. 4) Si la concoide no es reducible entonces se calcula la curva de reparametrización gp y se analiza su racionalidad. 5) Si el género de gp es igual a cero entonces la concoide será irreducible y racional. En caso contrario la concoide será irreducible y no racional. 6) Si la concoide es irreducible y racional entonces se calculará su expresión paramétrica y se mostrará en pantalla junto con los detalles del cálculo. 7) Si la concoide es irreducible y no racional se mostrará un mensaje en pantalla informando del resultado del análisis.. A continuación, se ilustra el procedimiento anterior con un ejemplo. Ejemplo 4.1.3 Siguiendo con los dos ejemplos anterirores, sea P = [t2 , t] la expresión paramétrica de la parábola definida por la ecuación implı́cita f = y22 − y1 . Para un foco. 48.

(49) A(0, 0) y una distancia fija d = 1 se puede realizar un estudio de la racionalidad de la concoide con el procedimiento creado de la siguiennte manera: ' ' >. $ $. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. P:=[t^2, t]; a:=0: b:=0: d:=1: P := [t2 , t]. >. getParamCoch(P,d,a,b);. The Conchoid is irreducible and rational . It can be parametrized by : CONCH = (t4 − 1 + 4 t2 ) (t − 1) (t + 1) t4 − 1 + 4 t2 , ] [ 4 t2 (t2 + 1) 2 (t2 + 1) t Details of computation : Qp(t) = [. Delta(t) = [. (t − 1) (t + 1) , t], 2t. (t − 1)2 (t + 1)2 t2 − 1 , ] 4 t2 2t. & &. 4.1.4.. % %. Procedimiento checkParam. El procedimiento checkParam básicamente comprueba la correspondencia entre la expresión implı́cita de una curva y la expresión paramétrica de la misma. De forma resumida, las entradas y salidas del procedimiento checkParam son: • INPUT: Sea f ∈ R[x, y] la expresión implicita de una curva plana y P (t) ∈ R(t)2 . • OUTPUT: Se comprueba si la parametrización P (t) recorre los puntos de la curva definida por f (en caso de curva irreducible), salvo quizá un número finito de puntos, o si corresponde a una componente de la curva (en caso de curva reducible). El código del procedimiento es el que se muestra a continuación: 49.

(50) ' '. $ $. checkParam := proc (f, P) local g; g := simplify(factor(subs(x1 = P[1], x2 = P[2], f))); if g = 0 then print(‘The set of points given by the parametrization corresponds with the curve, or one component of the curve, defined by the implicit equation.‘) else print(‘The set of points given by the parametrization doesn’t correspond with the curve, or one component of the curve, defined by the implicit equation.‘) end if; end proc; >. checkParam := proc(f, P ) local g; g := simplify(factor(subs(x1 = P1 , x2 = P2 , f ))) ; if g = 0 thenprint(‘The set of points given by the parametrization corresponds with the curve, or one component of the curve, defined by the implicit equation.‘) elseprint(‘The set of points given by the parametrization doesn 0 t correspond with the curve, or one component of the curve, defined by the implicit equation.‘) end if end proc & &. % %. Breve descripción del procedimiento: Este procedimiento fue añadido de forma adicional al paquete Conchoid como herramienta de utilidad para el chequeo de los resultados obtenidos, y sobre todo motivado por la limitación de Maple en el cálculo de parametrizaciones, cuyos resultados no son 100 % fiables. Como se ha indicado, comprueba la correspondencia entre la expresión implı́cita de una curva y la expresión paramétrica de la misma. A continuación, se ilustra el procedimiento anterior con un ejemplo. Ejemplo 4.1.4 Si se analizan los resultados obtenidos en los ejemplos anteriores se podrá comprobar que estos son correctos:. 50.

(51) ' ' >. $ $. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2-y1; P:=[t^2, t]; a:=0: b:=0: d:=1: f := y2 2 − y1. P := [t2 , t]. >. CONCHimpl:=getImplConch(f,d,a,b); CONCHimpl := x1 4 + x2 2 x1 2 − x2 4 − 2 x1 x2 4 − 2 x2 2 x1 3 + x2 4 x1 2 + x2 6. >. getParamCoch(P,d,a,b);. The Conchoid is irreducible and rational . It can be parametrized by : CONCH = (t4 − 1 + 4 t2 ) (t − 1) (t + 1) t4 − 1 + 4 t2 [ , ] 4 t2 (t2 + 1) 2 (t2 + 1) t Details of computation : Qp(t) = [. Delta(t) = [. (t − 1) (t + 1) , t], 2t. (t − 1)2 (t + 1)2 −1 + t2 , ] 4 t2 2t. CONCH:=[1/4*(t^4-1+4*t^2)*(t-1)*(t+1)/t^2/(t^2+1), 1/2*(t^4-1+4*t^2)/(t^2+1)/t]: >. >. checkParam(CONCHimpl,CONCH); The set of points given by the parametrization corresponds with the curve, or one component of the curve, defined by the implicit equation.. & &. % %. 51.

(52) 4.1.5.. Paquete Conchoid. Un vez definidos y probados cada uno de los procedimientos que formaran el paquete Conchoid, se procede a la constituición del paquete como se indica a continuación: $ $. ' '. Conchoid:=module() export getImplConch,plotImplConch,getParamCoch, checkParam; option package; getImplConch := proc (f, d, a, b) local r1, r2, h, c; r1 := x1-a-h*(y1-a); r2 := x2-b-h*(y2-b); c := (x1-y1)^2+(x2-y2)^2-d^2; use Groebner in Basis([f, c, r1, r2], plex(h, y1, y2, x1, x2))[1]; end use; end proc; plotImplConch:= proc (f,d,a,b,p) local d1, d2, CONCHimpl; CONCHimpl:=getImplConch(f, d, a, b); use plots in d1 :=implicitplot(subs(x1=x, x2=y, CONCHimpl=0), x=-p..p, y=-p..p, color = blue,numpoints=10000,legend = [Conchoid]); d2 :=implicitplot(subs( y1=x, y2=y, f=0), x=-p..p, y=-p..p, color = red,numpoints=10000,legend = [Initial_Curve]); display({d1, d2}); end use; end proc; getParamCoch := proc (P, d, a, b) local Num, Dem, m, Gp, Qp, g, Delta, CONCHmas, CONCHmenos, CONCH; with(algcurves): if d>0 then Num := psqrt(numer((P[1]-a)^2+(P[2]-b)^2)); Dem := psqrt(denom((P[1]-a)^2+(P[2]-b)^2)); if Num <> 0 then if Num <> _NOSQRT and Dem <> _NOSQRT then m := Num/Dem; CONCHmas := [simplify(factor(P[1]+d*(P[1]-a)/m)), simplify(factor(P[2]+d*(P[2]-b)/m))]; CONCHmenos := [simplify(factor(P[1]-d*(P[1]-a)/m)), simplify(factor(P[2] -d*(P[2]-b)/m))]; print(‘The Conchoid is reducible, so it is double-rational. Its components can be parametrized by: CONCHmas‘ = CONCHmas, ‘and CONCHmenos‘ = CONCHmenos); print(‘Details of computation: m(t)‘=m); else Gp := subs(t = x1, primpart(numer(-2*x2*(P[1]-a)+(x2^2-1)*(P[2]-b)), x2)); if genus(Gp, x1, x2) <> 0 then print(‘The Conchoid is irreducible and not rational.‘) else Qp := factor(simplify(parametrization(Gp, x1, x2, t))); g := subs(x1 = Qp[1], Qp2 = P[2], Gp);if g <> 0 then Qp = NOPARAM end if; if Qp <> NOPARAM then Delta := simplify(subs(t = Qp[1], P)); CONCH := simplify([Delta[1]+d*(Delta[1]-a)/sqrt((Delta[1]-a)^2+(Delta[2]-b)^2), Delta[2]+d*(Delta[2]-b)/sqrt((Delta[1]-a)^2+(Delta[2]-b)^2)], radical, symbolic); print(‘The Conchoid is irreducible and rational. It can be parametrized by: CONCH‘ = CONCH); print(‘Details of computation: Qp(t)‘ = Qp,‘Delta(t)‘ = Delta) else print(‘A mistake has been obtained in parametrization of Gp.‘) end if end if >. & &. % %. 52.

(53) ' '. $ $. end if else m := 0; print(‘Error, ’f’ must be a curve.‘) end if else print(‘The value of ’d’ must be bigger than cero.‘) end if end proc; checkParam := proc (f, P) local g; g := simplify(factor(subs(x1 = P[1],x2 = P[2],f))); if g = 0 then print(‘The set of points given by the parametrization corresponds with the curve, or one component of the curve, defined by the implicit equation.‘) else print(‘The set of points given by the parametrization doesn’t correspond with the curve, or one component of the curve, defined by the implicit equation.‘) end if end proc; end module; >. Conchoid := module() export getImplConch, plotImplConch, getParamCoch, checkParam; option package; end module >. savelib(’Conchoid’);. >. restart; with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. libname; “C:\Program Files\Maple 16 \lib”,. “C:\Program Files \Maple 16\toolbox\NAG \lib”, “.”. with(LibraryTools): ShowContents("C:\\Archivos de programa\\Maple 16\\toolbox\\NAG\\lib"); >. [[“Conchoid.m”, [2013, 6, 21, 21, 22, 39], 101658217, 221], [“MyPackage.m”, [2013, 6, 10, 17, 51, 21], 101649735, 111], [“MyPackage33.m”, [2013, 4, 10, 11, 53, 32], 101625200, 133], [“NAG.m”, [2011, 5, 19, 7, 2, 8], 1287168, 131941], [“ author .m”, [2011, 5, 19, 7, 2, 16], 101622875, 31]] & &. % %. 53.

(54) Como podemos obervar, puesto que no hemos asignado otro directorio a la variable libname, el procedimiento ha sido almacenado en un directorio asignado por Maple por defecto. Una vez realizada esta acción el paquete puede cargarse en cualquier momento y los procedimientos que lo constituyen pueden ejecutarse en cualquier momento.. 4.2.. Creación de las páginas de ayuda. A continuación, en las siguientes subsecciones se muestran las páginas de ayuda creadas para cada uno de los procedimientos del paquete Conchoid. getImplConch plotImplConch getParamCoch checkParam. 54.

(55) 4.2.1.. Página de ayuda del procedimiento getImplConch. 55.

(56) 4.2.2.. Página de ayuda del procedimiento plotImplConch. 56.

(57) 4.2.3.. Página de ayuda del procedimiento getParamCoch. 57.

(58) 58.

(59) 4.2.4.. Página de ayuda del procedimiento checkParam. 59.

(60) Capı́tulo 5. Atlas de curvas Concoide A continuación se mostrará el funcionamiento y utilidad del paquete Conchoid creado mediante el estudio de la concoide de diferentes curvas. Debido al comportamiento especial de la concoide de las cónicas, en primer lugar, se estudiarán éstas para acabar, en un segundo apartado, con el estudio de algunas curvas clásicas de grado superior a 2.. 5.1.. Curvas Cónicas. En esta sección se estudiará la concoide de las siguientes curvas cónicas irreducibles: Circunferencia Parábola Elipse Hipérbola También se podrá comprobar como se cumple el corolario 2.1.1 y el teorema 2.1.4 descritos en el capı́tulo 2, sobre la racionalidad de la concoide de una curva cónica.. 5.1.1.. Circunferencia. Expresión implı́cita de la concoide:. Sea la curva C correspondiente a una circunferencia de radio r y centrada en el origen, descrita por la expresión implı́cita: 60.

(61) f ≡ y22 + y12 − r2 = 0.. (5.1). Para esta curva la expresı́on implı́cita general de su concoide C es la siguiente: C = −2a2 d2 r2 − 2b2 d2 r2 + a2 r4 + a2 d4 − 8bd2 x2 ax1 − 2bx41 x2 − 4bx21 x32 + (−2r2 a2 − 2r2 d2 − 2r2 b2 + d4 + r4 − 2a2 d2 + 2b2 d2 )x21 + (d4 − 2r2 b2 + r4 + 2a2 d2 − 2b2 d2 − 2r2 a2 − 2r2 d2 )x22 + (4r2 a + 4ad2 )x31 + (−2ad4 − 2ar4 + 4ad2 r2 )x1 + (4d2 br2 − 2d4 b − 2r4 b)x2 + (b2 −2r2 −2d2 +a2 )x42 +(4br2 +4bd2 )x32 +(b2 −2r2 −2d2 +a2 )x41 +(4r2 a+4ad2 )x1 x22 + (2a2 + 2b2 − 4r2 − 4d2 )x21 x22 + (4br2 + 4bd2 )x21 x2 − 2ax51 − 4ax31 x22 − 2ax1 x42 + 3x22 x41 + 3x42 x21 + x62 − 2bx52 + b2 d4 + b2 r4 + x61 = 0. La cual se ha obtenido como se muestra a continuación: $ $. ' ' >. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2+y1^2-r^2; f := y2 2 + y1 2 − r2. >. getImplConch(f,d,a,b);. −2 a2 d2 r2 − 2 b2 d2 r2 + a2 r4 + a2 d4 − 8 b d2 x2 a x1 − 2 b x1 4 x2 − 4 b x1 2 x2 3 + (−2 r2 a2 − 2 r2 d2 − 2 r2 b2 + d4 + r4 − 2 a2 d2 + 2 b2 d2 ) x1 2 + (d4 − 2 r2 b2 + r4 + 2 a2 d2 − 2 b2 d2 − 2 r2 a2 − 2 r2 d2 ) x2 2 + (4 r2 a+ 4 a d2 ) x1 3 + (−2 a d4 − 2 a r4 + 4 a d2 r2 ) x1 + (4 d2 b r2 − 2 d4 b − 2 r4 b) x2 + (b2 − 2 r2 − 2 d2 + a2 ) x2 4 + (4 b r2 + 4 b d2 ) x2 3 + (b2 − 2 r2 − 2 d2 + a2 ) x1 4 + (4 r2 a + 4 a d2 ) x1 x2 2 + (2 a2 + 2 b2 − 4 r2 − 4 d2 ) x1 2 x2 2 + (4 b r2 + 4 b d2 ) x1 2 x2 − 2 a x1 5 − 4 a x1 3 x2 2 − 2 a x1 x2 4 + 3 x2 2 x1 4 + 3 x2 4 x1 2 + x2 6 − 2 b x2 5 + b2 d4 + b2 r4 + x1 6. & &. % %. Veamos ahora algunos ejemplos para valores concretos del foco A y la distancia d: Ejemplo 5.1.1 Sea C la circunferencia cuya expresión implı́cita está descrita por 61.

(62) la exprexión f ≡ y22 + y12 − 4 = 0. Dado el foco A = (0, 0) y la distancia d = 1, se obtiene la exprexión implı́cita de C de la siguiente manera: ' ' >. $ $. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2+y1^2-4; a:=0: b:=0: d:=1: f := y2 2 + y1 2 − 4. >. getImplConch(f,d,a,b); 9 − 10 x2 2 − 10 x1 2 + x2 4 + 2 x1 2 x2 2 + x1 4. >. plotImplConch(f,d,a,b,3);. & &. % %. Ejemplo 5.1.2 Sea C la circunferencia cuya expresión implı́cita está descrita por la exprexión f ≡ y22 + y12 − 4 = 0. Dado el foco A = (−2, 0) y la distancia d = 1, se obtiene la exprexión implı́cita de C de la siguiente manera:. 62.

(63) ' ' >. $ $. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. f:=y2^2+y1^2-4; a:=-2: b:=0: d:=1: f := y2 2 + y1 2 − 4. >. getImplConch(f,d,a,b); 2 x1 2 x2 2 − 9 x1 2 − 9 x2 2 − 4 x1 + 12 + x2 4 + x1 4. >. plotImplConch(f,d,a,b,3);. & &. % %. Estudio de la racionalidad de la concoide: Para el estudio de la racionalidad de la concoide de la circunferencia, fijamos el radio de la circunferencia a un valor concreto, r = 2 en este caso, y también se fija el valor de la distancia d = 1 en este caso: f ≡ y22 + y12 − 4 = 0 63. (5.2).

(64) Cuya expresión paramétrica propia viene dada por la expresión: 2(−1 + t2 ) 4t P = − , 1 + t2 1 + t2 .  (5.3). Sea O el foco de la cónica C, de la circunferencia en este caso. A continuación, se realiza el estudio de la racionalidad, para diferentes posiciones del foco A(a, b) de C: • Foco. de. C. igual. a. foco. de. C. −→. A. =. O. =. (0, 0). ⇒. Concoide reducible y por lo tanto racional. ' ' >. $ $. with(Conchoid); [checkParam, getImplConch, getParamCoch, plotImplConch]. >. a:=0: b:=0: d:=1:. >. P:=[-2*(-1+t^2)/(1+t^2),4*t/(1+t^2)]; P := [−. >. 2 (−1 + t2 ) 4t , ] 1 + t2 1 + t2. getParamCoch(P,d,a,b);. The Conchoid is reducible, so it is double − rational . Its components 6t 3 (−1 + t2 ) can be parametrized by : CONCHmas = [− , ], 1 + t2 1 + t2 −1 + t2 2t and CONCHmenos = [− , ] 2 1+t 1 + t2 Details of computation : m(t) =. 2 + 2 t2 1 + t2. & &. % %. • Foco de C pertenecciente a C (A Concoide irreducible y racional.. 64. ∈. C) −→ A. =. (−2, 0). ⇒.

Referencias

Documento similar