Transformada de Fourier con Sympy

En este notebook usaremos el módulo de matemática simbólica Sympy, que incluye la función fourier_transform.

Primero cargamos el módulo y activamos la opción para que los resultados se despliegen en forma más amigable en el notebook:


In [1]:
from sympy import *
init_printing()

A continuación, definimos algunas variables que usaremos, algunas de ellas definidas como reales, y otras como reales positivos


In [2]:
x, k, xi, t, omega = symbols('x, k, xi, t, omega', real=True)
a, k0, alpha = symbols('a, k_0, alpha', positive=True)

Gaussiana

Como primer ejemplo, definimos una gaussiana


In [3]:
f1 = exp(-a*t**2)
f1


Out[3]:
$$e^{- a t^{2}}$$

La implementación de la función fourier_transform requiere ingresar como argumento la función a transformar, la variable respecto a la cual se calcula la transformada, y el valor de la frecuencia correspondiente. Esto significa que si queremos transformar la función $f(t)$ debemos ingresar $(f,t,\omega/2\pi)$ como argumento:


In [4]:
fourier_transform(f1,t,omega/(2*pi))


Out[4]:
$$\frac{\sqrt{\pi}}{\sqrt{a}} e^{- \frac{\omega^{2}}{4 a}}$$

Sinusoidal amorgtiuada con función gaussiana


In [5]:
f2 = exp(-a*x**2)*cos(k0*x)
f2


Out[5]:
$$e^{- a x^{2}} \cos{\left (k_{0} x \right )}$$

In [6]:
fourier_transform(f2,x,k/(2*pi))


Out[6]:
$$\frac{\sqrt{\pi} \left(e^{\frac{k_{0} \left|{k}\right|}{a}} + 1\right)}{2 \sqrt{a} e^{\frac{1}{4 a} \left(k^{2} + k_{0}^{2} + 2 k_{0} \left|{k}\right|\right)}}$$

Función escalonada


In [7]:
f3 = Heaviside(x+a)*Heaviside(a-x)
f3


Out[7]:
$$\theta\left(a - x\right) \theta\left(a + x\right)$$

In [8]:
Tf3 = fourier_transform(f3,x,k/(2*pi))
Tf3


Out[8]:
$$\frac{i}{k} \left(- e^{2 i a k} + 1\right) e^{- i a k}$$

Esta forma debería ser equivalente a la calculada en clases. Podemos simplificarla un poco:


In [9]:
simplify(Tf3.as_real_imag())[0]


Out[9]:
$$\frac{2}{k} \sin{\left (a k \right )}$$

Delta de Dirac


In [10]:
f4 = DiracDelta(x-xi)
f4


Out[10]:
$$\delta\left(x - \xi\right)$$

In [11]:
fourier_transform(f4,x,k/(2*pi))


Out[11]:
$$e^{- i k \xi}$$