Autor Tema: Dibujar un cuadrado usando series de Fourier

0 Usuarios y 1 Visitante están viendo este tema.

01 Noviembre, 2026, 02:45 pm
Leído 102 veces

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
He intentado dibujar un cuadrado  aproximandolo con series de fourier  basadas en funciones sinusoidales


un cuadrado de lado 1  con lados horizontales y verticales, usé las series de Fourier de las ondas triangulares
 

$$x_N(t)=\frac{8}{\pi^2}\sum_{k=0}^{N-1}
\frac{(-1)^k}{(2k+1)^2}\cos((2k+1)t)\tag{1}$$


$$y_N(t)=\frac{8}{\pi^2}\sum_{k=0}^{N-1}
\frac{1}{(2k+1)^2}\cos\!\left((2k+1)\left(t-\frac{\pi}{2}\right)\right)\tag{2}$$


con $$0\le t\le2\pi\tag{}$$


El segundo coseno equivale a $$\sin((2k+1)t)$$ usé la misma escala en ambos ejes. Debería ver los cuatro lados alineados con los ejes horizontal y vertical y los vértices en $$(\pm1,\pm1)$$.


pero lo veo mas chico y  con precisión de $$N =1000$$ y $$1000$$ divisiones entre $$0$$ y $$2\pi$$ no logro hacer que los vértices converjan a un punto, quedan redondeados...


Es un error  mio o es la estimación que falla, y hay algo mejor...


Si uso


$$x_N(t)=\frac{8}{\pi^2}\sum_{k=0}^{N-1}
\frac{(-1)^k\sin((2k+1)t)}{(2k+1)^2}\tag{3}$$


$$y_N(t)=\frac{8}{\pi^2}\sum_{k=0}^{N-1}
\frac{\cos((2k+1)t)}{(2k+1)^2}\tag{4}$$


Sale bien pero con los vértices en los ejes... No sé por qué uno sí y el otro no


Voy a rotar cada punto $$\pi/4$$ y obtener lo que quiero, pero parece raro que no salga con la serie.

He probado y sí, aproxima pero no logro que los vértices estén en centrado en enteros 1 , lo voy dividir por el promedio del máximo de las coordenadas de un lado... ya que tampoco se corrige  con la inversa de la constante de catalan  hay un 5% de diferencia.
El maximo esta en 0.7075901765110564 no se que numero es ese pero divido por él y se aproxima a un cuadrado  de lado 2 centrado en (0,0) como quiero... pero no entiendo porque tengo que normalizar así. Se parece a $$\sqrt2/2$$....


Ya me di cuenta por qué , si los vértices están en los ejes los lados no miden 2 sino $$\sqrt2$$


Spoiler
En geogebra N=7


[cerrar]
Saludos  \(\mathbb {R}^3\)

02 Noviembre, 2026, 03:14 am
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Me puse a jugar con funciones donde la derivada segunda de una se anule en el vértice.
Supuestamente con eso mejoraría la convergencia de la serie :-) .

Haciendo:
$$x(t)=sign(\cos t) \;\dfrac{1+\cos(2t)}{2}$$
$$y(t)=sign(\sin t) \;\dfrac{1-\cos(2t)}{2}$$

se corresponde a un cuadrado a 45° y en su serie de Fourier los términos decrecen con el cubo.

$$x_f(t)=\dfrac{8}{\pi}\left( \frac{1}{3}\cos t + \frac{1}{3\cdot 5}\cos(3t)- \frac{1}{3\cdot 5\cdot 7}\cos(5t)+ \frac{1}{5\cdot 7\cdot 9}\cos(7t) \cdots \right)$$
$$y_f(t)=\dfrac{8}{\pi}\left( \frac{1}{3}\sin t -\frac{1}{3\cdot 5}\sin(3t)- \frac{1}{3\cdot 5\cdot 7}\sin(5t)- \frac{1}{5\cdot 7\cdot 9}\sin(7t) \cdots \right)$$


02 Noviembre, 2026, 10:54 pm
Respuesta #2

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
Andaba buscando representar cualquier polígono regular  de $$n$$ lados, centrado en el origen o no, de radio circunscrito $$R$$, entonces para representar puntos sobre los lados, necesitamos introducir el parámetro $$t$$ y fue definiendo lados y empece a unir cosas en común

$$t$$ es el parámetro.
$$k$$ determina el lado del polígono,$$k=0,1,\ldots,n-1$$..
$$u$$ determina la posición sobre ese lado.
$$R$$ determina el tamaño, es el radio circunscrito.
$$\varphi$$ es el ángulo inicial de orientación. Para que el vértice inicial no quede sobre el eje x sino un segmento perpendicular al eje $$\varphi=\pi/n$$

Elijo la cantidad de puntos a representar de la figura como un múltiplo del número de lados así entonces $$\Delta t=2\pi/N_P $$ con $$N_p=Q\cdot n)\quad to\quad Q\in\mathbb N$$  si $$N_p$$ no fuera múltiplo del número de lados puede ser que algún vértice no quede preciso, cuanto mas grande $$N_p$$ sería mas preciso, pero siendo múltiplo se pueden usar menos puntos ya que los vértices quedan bien definidos.

$$ \alpha=\frac{2\pi}{n} $$

Y hacemos un contador $$r$$ entre  0 y $$N_p-1$$ donde $$t= r\cdot \Delta t$$

$$ u=t\bmod\alpha $$
$$ k=t//\alpha=\left\lfloor\frac{t}{\alpha}\right\rfloor $$
Para el polígono con centro en $$X_o,Y_o$$

Los vértices consecutivos son:

$$ P_k=X_o+R(\cos(k\alpha+\varphi),\sin(k\alpha+\varphi)) $$

$$ P_{k+1}=Y_o+R(\cos((k+1)\alpha+\varphi),\sin((k+1)\alpha+\varphi)) $$

y el resto de puntos los interpolo entre ambos vértices :

$$ \boxed{x(t)=X_o+R\left[\left(1-\frac{u}{\alpha}\right)\cos(k\alpha+\varphi)+\frac{u}{\alpha}\cos((k+1)\alpha+\varphi)\right]} $$

$$ \boxed{y(t)=Y_o+R\left[\left(1-\frac{u}{\alpha}\right)\sin(k\alpha+\varphi)+\frac{u}{\alpha}\sin((k+1)\alpha+\varphi)\right]} $$


Esta parametrización funciona para cualquier $$n\geq3$$, sin necesidad de definir ecuaciones diferentes para cada polígono.

No es una parametrización de Fourier, pero permite dibujar cualquier polígono programando código sencillo, incluso como una función pasando los siguientes parámetros $$X_o,Y_o,R,n,\varphi$$

Para hacerlo con Series de Fourier, me lo pasó la IA

Spoiler
La idea es aproximar la trayectoria poligonal mediante una suma de senos y cosenos.

Un polígono regular de $$n$$ lados, centrado en el origen y con radio circunscrito $$R$$.

Podemos representar sus coordenadas mediante una función compleja:

$$ z(t)=x(t)+iy(t) $$

La parametrización por tramos que recorre los lados tiene una serie de Fourier compleja particularmente interesante:

$$ \boxed{ z(t)=\sum\_{m=-\infty}^{\infty}c_m e^{i(1+mn)t} } $$

donde los coeficientes son:

$$ \boxed{ c_m=\frac{R n^2\sin(\pi/n)}{\pi^2(1+mn)^2} e^{-i\pi/n} } $$

Esta expresión corresponde a una orientación inicial con un vértice en $$(R,0)$$, y $$0\leq t\leq2\pi$$.

Por tanto, separando las partes real e imaginaria:

$$ x(t)=\operatorname{Re}(z(t)) $$

$$ y(t)=\operatorname{Im}(z(t)) $$

para centrarlo en otro punto $$X_o,Y_o$$ solo hay que sumar esas coordenadas a $$[x(t),y(t)]$$

Aproximación mediante una suma finita

Para calcularlo numéricamente, podemos truncar la serie:

$$ \boxed{ z_N(t)= Z_o+\frac{R n^2\sin(\pi/n)}{\pi^2} e^{-i\pi/n} \sum\_{m=-N}^{N} \frac{e^{i(1+mn)t}}{(1+mn)^2} } $$

Cuanto mayor sea $$N$$, mejor será la aproximación al polígono.

La serie representa una curva cerrada que se aproxima al polígono, pero sin exigir que sus lados sean exactamente rectos ni tengan vértices definidos.

Con Fourier se pueden representar todos los polígonos regulares variando solamente $$Z_o$$,$$n$$, $$R$$ y $$t$$, también se lo puede rotar añadiendo $$\varphi$$

$$ \boxed{ z_N(t)= Z_o+\frac{R n^2\sin(\pi/n)}{\pi^2} e^{-i\pi/n+\varphi} \sum\_{m=-N}^{N} \frac{e^{i(1+mn)t}}{(1+mn)^2} } $$
[cerrar]
Saludos  \(\mathbb {R}^3\)