Dibujando curvas cerradas con epiciclos
Una introducción al concepto de epiciclos
Considera un punto que se mueve sobre la circunferencia de un círculo.
Si deseas expresar el movimiento de este punto en términos matemáticos, podemos decir que las coordenadas $x$ e $y$ del punto se pueden definir como:
\[
\begin{aligned}
x(t) & = R\cos(\omega t)\\
y(t) & = R\mbox{ sen}(\omega t).\\
\end{aligned}
\]
Donde $R$ es el radio del disco y $\omega$ es la velocidad con la cual el punto está rotando. Este tipo de fórmula se denomina como ecuación paramétrica, si esta ecuación no te es familiar, valdrá la pena leer un como acerca de este tema antes de proseguir.
Ahora veamos algo un poco más complejo: agreguemos un segundo círculo con su propio punto rotando en su circunferencia. Si trazamos el lugar geométrico de este segundo punto, podemos observar una especie de flor:
No es difícil describir matemáticamente este trazo, o curva, un poco más complejo: la posición de este punto es solamente la suma de cada una de las partes anteriores. Más formalmente, el punto en un tiempo $t$ es la posición $(x_1(t), y_1(t))$ con respecto al primer círculo más la posición $(x_2(t), y_2(t))$ del segundo círculo:
\[
\begin{aligned}
x(t) &= R_1\cos(\omega_1 t) + R_2\cos(\omega_2 t)\\
y(t) & = R_1\mbox{ sen}(\omega_1 t) + R_2\mbox{ sen}(\omega_2 t).\\
\end{aligned}
\]
Aquí $R_1$ es el disco de radio del primer círculo y $R_2$ es el radio del segundo. Usaremos un subíndice en adelante para diferenciar entre los radios de los círculos ($R_i$) y la velocidad con la que están rotando ($\omega_i$).
Si agregamos más círculos y variamos sus velocidades y tamaños, podemos incrementar el nivel de complejidad de la curva trazada, la cual se le conoce con el nombre de epiciclo.
Los epiciclos son curvas determinadas por las ecuaciones paramétricas:
\[
\begin{aligned}
x(t) & = \sum_i R_i\cos(\omega_i t + \phi_i)\\
y(t) &= \sum_i R_i\mbox{ sen}(\omega_i t + \phi_i).\\
\end{aligned}
\]
Este nuevo símbolo $\phi_i$ determina la rotation \(i\) inicial en un tiempo $t = 0$, la cual se denomina fase inicial. Si no especificamos esta fase inicial, podemos describir solo epiciclos donde los círculos comienzan alineados, lo cual es solamente una porción de un conjunto de epiciclos.
Vamos ahora a profundizar en las formas que pueden tomar estos epiciclos. ¿Todos los epiciclos tienen que ser "curvas"? Bueno, si tenemos dos círculos que giran en direcciones opuestas, podemos crear una línea recta:
En este caso, como los tamaños de los círculos son los mismos, las componentes $y$ se cancelan entre sí, y obtenemos:
\[
\begin{aligned}
x(t) &= R\cos(\omega t) + R\cos(-\omega t) = R\cos(\omega t) + R\cos(\omega t) = 2R\cos(\omega t)\\
y(t) & = R\mbox{ sen}(\omega t) + R\mbox{ sen}(-\omega t) = R\mbox{ sen}(\omega t) - R\mbox{ sen}(\omega t) = 0.\\
\end{aligned}
\]
De lo cual deducimos que $y(t)$ siempre es zero, lo cual significa que dibujamos una línea recta sobre el eje $x$. ¡Genial! Parece que podemos crear con epiciclos curvas simples como un círculo, curvas complejas, como una especie de flor, y una simple línea recta. Además, parece que cuantos más círculos tengamos, más complejas serán las curvas. Con esta premisa, tal vez si tenemos suficientes círculos, elegimos los tamaños correctos para cada uno de ellos y los giramos a las velocidades adecuadas, podemos crear cualquier curva cerrada, como por ejemplo las siguientes:
Entonces, ¿todos los epiciclos tienen que ser "curvas cerradas"? Como habrás adivinado en este momento, ¡la respuesta es sí! Usando epiciclos, podemos dibujar cualquier curva cerrada, incluso un gato o un dinosaurio:
Sin embargo, todavía hay una pregunta sin responder: ¿exactamente cómo determinamos qué círculos usar y qué tan rápido giran? Para el dibujo del epiciclo de la letra griega $\pi$ mostrada anteriormente, ¿cómo calculamos los valores de los diversos $R_i$, $\omega_i$ y $\phi_i$ para que el dibujo sea el correcto? Vamos a tratar de responder a esta pregunta.
Calculando epiciclos para una curva en general
El primer paso es formalizar el problema. En lugar de decir, la letra griega $\pi$, presentemos una manera matemática de describir lo que queremos. En lugar de describir una curva que quiero trazar, digamos que en lugar de eso solo especifico algunos puntos y luego encuentro una fórmula para ''conectar los puntos'' a la forma que quiero. Esto significa que nuestra entrada es un conjunto de algunos puntos $(x_j, y_j)$, y queremos encontrar los epiciclos que mejor conecten a estos puntos, es decir, encontrar los valores $R_i, \omega_i$ y $\phi_i$ de tal manera que:
\[
\begin{aligned}
x(t) & = \sum_i^N R_i\cos(\omega_i t + \phi_i)\\
y(t) & = \sum_i^N R_i\mbox{ sen}(\omega_i t + \phi_i)\\
\end{aligned}
\]
se aproxima a los puntos tanto como sea posible. Luego, podemos elegir los puntos para dibujar la letra griega $\pi$, resolver las variables y ¡obtener nuestro epiciclo!
Al observar las ecuaciones, verás que introdujimos una nueva variable $N$: como has notado anteriormente, cuanto más círculos tengamos, más nos acercaremos a la curva deseada, así que seremos específicos y estableceremos el problema de la siguiente manera: ''Si solo tenemos $N$ círculos, ¿cuál es la mejor aproximación que podemos hacer?''
Nota: En matemáticas hay muchas maneras de decir ''lo más cerca posible de los puntos''. Usaremos una de las medidas más comunes, llamada error cuadrático medio (la razón principal es porque hará nuestra vida mucho más fácil).
Perfecto, hemos especificado el problema, ¿y ahora qué? ¿Cuál es el siguiente paso? En lo personal, a mí me ha tomado un par de años de exploración para comprender cómo funciona. Después de una ardua investigación, comprendí que hay que usar la famosa fórmula de Euler y una técnica de aproximación de funciones llamada Transformada Discreta de Fourier para resolver este problema de manera no solo elegante, sino también muy fácil de realizar para las computadoras. Advertencia, las cosas se van a poner un poco técnicas de aquí en adelante.
Así es como funciona: notarás que en las ecuaciones anteriores parece haber muchas similitudes entre cómo calculamos $x (t)$ e $y (t)$. De hecho, la única diferencia es que uno usamos $\cos $ y en el otro $\mbox{sen}$. Así que tal vez haya alguna manera de que podamos ''sumar'' las dos ecuaciones para simplificar nuestra vida y solo tenemos que lidiar con una ecuación en lugar de dos. No podemos simplemente agregarlos directamente, porque necesitamos mantener separados los términos $x (t)$ e $y (t)$.
¿Qué pasaría si, en lugar de pensar en nuestros puntos a lo largo de los ejes $x$ e $y$, pensemos en esos puntos como números complejos a lo largo de los ejes real e imaginario? Parece una locura, pero nos permite avanzar:
\[
p_j = x_j + iy_j \\
x(t) + iy(t) = \sum_i^N R_i(\cos(\omega_i t + \phi_i) + i\mbox{ sen}(\omega_i t + \phi_i)).
\]
¡Genial! Tenemos una fórmula y no hemos perdido nada: aún podemos obtener $x$ como la parte real e $y$ como la parte imaginaria de la función. Aquí podemos hacer uso de la fórmula de Euler, y veremos que estamos buscando las variables tales que:
\[
\sum_j^N R_j\exp\bigg(i\left( \omega_j t+ \phi_j\right)\bigg)
\]
se aproximen tanto como sea posible a los puntos complejos $p_j$. Mejor aún, si definimos $X_j=R_j\exp\left(i\, \phi_j\right)$, entonces la fórmula anterior se puede escribir de la siguiente manera:
\[
\sum_j^N X_j\exp\left( i\,\omega_j t\right)
\]
Haremos una suposición final para simplificar las cosas: en lugar de elegir $N$ velocidades arbitrarias, haremos que las velocidades sean $$0 \text{(estacionarias)}, 1, -1, 2, -2, 3, -3, \ldots, N / 2, -N / 2.$$ Con esta simplificación, podemos expresar nuestro problema como:
Encontrar los números complejos $X_i$ para minimizar el error cuadrático medio entre los puntos complejos $p_j$ y la curva
\[
p(t) = \sum_{j=0}^N X_j \exp\left( i\,\frac{2\pi j}{N} t\right).
\]
Resulta que la expresión anterior coincide casi idénticamente con la fórmula conocida como la Transformada de Fourier Discreta. Esto significa que podemos usar esta herramienta en los puntos que tenemos (los que dibujaron la letra griega $\pi$, ¿recuerdas?) y obtener los valores $X_j$ y con base en estos, podemos obtener los $R_j$ y $\phi_j$, sabiendo que $\omega_j = i\,\frac{2 \pi j}{N}$.
Ahora, ¿cómo supimos que debemos usar la transformada de Fourier? Bueno, Fourier transforma fórmulas con muchas funciones $\mbox{sen}$ y $\cos$ en conjuntos de puntos complejos y viceversa. En otras palabras, la transformada de Fourier es una forma de dividir algo, en este caso una curva compleja, en un montón de ondas sinusoidales. Para dar una una explicación detallada acerca de este tema, necesitaremos escribir una entrada nueva de este blog en el futuro.
Así que ahí lo tienen: si especificamos un número de puntos, podemos usar un epiciclo para dibujar aproximadamente una curva que conecta los puntos, y podemos usar la Transformada Discreta de Fourier para descubrir cuál es ese epiciclo.
Stylish Phoenix Bird Silhouette | designed by Vexels
Todas las animaciones fueron creadas usando GeoGebra. En el siguiente enlace puedes acceder a los applets usados: Fourier
Te recomiendo la siguiente entrada para conocer más acerca de la Transformada Discreta de Fourier:
Gracias por llegar al final de este artículo. Si deseas puedes apoyarme en Patreon usando el siguiente enlace:
Become a Patron!Con tu apoyo podré seguir escribiendo y compartiendo artículos y applets de matemáticas.
Hola, espectacular. Espero esa explicación con ansias.
ResponderBorrarGracias. Por supuesto. Es solo que ahora estamos de vacaciones.
BorrarFelices fiestas.
¡Felices fiestas! Y gracias por el blog, es una joya.
BorrarMuchas gracias. Es un gusto para nosotros saber que es de utilidad.
BorrarHola, ya está la explicación acerca de los epiciclos. Saludos.
Borrar