10. Pulsos de luz

Autor:Luis Miguel Sánchez Brea
Revisor:José Luis Vilas Prieto

Desde el punto de vista docente, muchos de los aspectos ópticos se tratan con ondas armónicas planas, que tienen una extensión espacio-temporal infinita. Más usuales desde el punto de vista práctico son los pulsos de luz, que tienen una extensión temporal finita. Las ondas que tienen una extensión espacial finita se tratan en temas de difracción.

Herramientas utilizadas en este tutorial:

  • numpy: manipulación básica de arrays
  • scipy: tratamiento de datos matemáticos
  • matplotlib.pyplot: visualización de datos similar a matplotlib

Descarga de archivos:



10.1. Introducción

Un pulso temporal ‘plano’ se puede tratar como una suma infinita de ondas armónicas planas, pues forman una base. Para calcular los componentes de cada una de las ondas armónicas de frecuencia \omega que componen el pulso se tiene que realizar una transformación de Fourier temporal,

\mathbf{E}\left(z,t\right)=\int_{-\infty}^{\infty}\mathbf{E}_{0,\omega}e^{i(k_{\omega}z-\omega t)}d\omega,

donde \mathbf{E}_{0,\omega} es la amplitud compleja de cada una de las ondas planas. Para calcular esta amplitud se tiene que recurir a la transformación de Fourier inversa

\mathbf{E}_{0,\omega}=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}\mathbf{E}\left(z=0,t\right)e^{i\omega t}dt,

Existen dos casos particularmente útiles como son el pulso gaussiano y el pulso de exponencial, que discutiremos brevemente a continuación.

10.2. Espectros de distintos tipos de pulso

10.2.1. Pulso gaussiano

El caso gaussiano tiene la forma

\mathbf{E}_{0,\omega}=\mathbf{E}_{0}exp\left[-\frac{(\omega-\omega_{0})^{2}}{2\Delta\omega^{2}}\right].

donde \omega_{0} es la frecuencia central del pulso y \Delta\omega^{2} es la anchura espectral del pulso.

Si la onda se propaga por un medio no dispersivo de índice de refracción n, introduciendo E_{0,\omega} en E(z,t) se obtiene que el campo resulta

\mathbf{E}\left(z,t\right)=\sqrt{2\pi}\Delta\omega\mathbf{E}_{0}exp\left[-\frac{(z\, n/c-t)^{2}}{2/\Delta\omega^{2}}\right]e^{i(z\, n/c-t)\omega_{0}}.

donde se observa que la amplitud y la fase se mueven con la misma velocidad.

En el siguiente código se muestra cómo generar una gráfica con el espectro gaussiano y el pulso generado.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------
"""pulso de gauss"""

from __future__ import division
import locale

#Modulos empleados
import scipy as sp
import matplotlib.pyplot as plt

#Unidades
sg = 1
Hz = 1 / sg	#hertzio

def pulso_gauss(w0=1, gamma=.1):
	"""Entradas: w0: frecuencia de resonancia
	             gamma: amortiguamiento
	"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)

	t=  sp.linspace(-3/gamma,3/gamma,n_puntos)

	#campo electrico normalizado
	campo=sp.exp(-(gamma*t)**2/2)*sp.cos(w0*t)
     	#espectro normalizado
	Espectro= sp.exp (-0.5*(w-w0)**2/(gamma)**2)

	#Figura con campo y espectro
	plt.figure(figsize=(10,5))

	#Representacion del campo
	plt.subplot(1,2,1)
	plt.plot(t, campo, 'k', linewidth = 2)
	plt.xlabel('$t \; (s)$', fontsize = 18)
	plt.ylabel('$E(t)$', fontsize = 18)

	#Representacion del espectro
	plt.subplot(1,2,2)
	plt.plot(w, Espectro, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('perfil Gaussiano', fontsize = 18)
	plt.tight_layout()


#Representacion de un pulso ejemplo con w0=3*10**15*Hz y gamma=10**14*Hz
pulso_gauss(w0=3*10**15*Hz, gamma=10**14*Hz)
plt.show()

(Source code, png, hires.png, pdf)

../../_images/pulso_gauss.png

10.2.2. Pulso exponencial: perfil de Lorentz

Otro pulso que se utiliza frecuentemente es el pulso exponencial, pues es el modelo clásico de cómo los átomos emiten luz. Una vez excitados pierden energía hasta que vuelven al estado estacionario. El modelo de Lorentz asume que el desplazamiento resulta

\mathbf{r}(t)=\mathbf{r}_{o}e^{-\gamma t/2}e^{-i\omega_{o}t}.

donde \gamma es la constante de decaimiento. Según este modelo de Lorentz el campo generado

\mathbf{E}(z=0,t)=E_{0}\mathbf{u}_{x}e^{-\gamma t/2}e^{-i\omega_{0}t}.

Al realizar la transformada de Fourier resulta que la distribución de frecuencias es compleja (se producen desfases).

\mathbf{E}_{\omega}=\frac{E_{o}\mathbf{u_{x}}}{\gamma/2-i(\omega-\omega_{o})}

En este caso, la densidad de energía espectral, esto es, la cantidad de energía electromagnética por unidad espectral que llega por unidad de superficie

J(\omega)=\varepsilon_{o}c|E_{\omega}|^{2}=J(\omega_{o})\frac{\gamma^{2}/4}{\gamma^{2}/4+(\omega-\omega_{o})^{2}},=J(\omega_{o})\frac{1}{1+4(\omega-\omega_{o})^{2}/\gamma^{2}},

En el siguiente código se muestra cómo generar una gráfica con el espectro gaussiano y el pulso generado.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------
"""pulso de gauss"""

from __future__ import division
import locale
locale.setlocale(locale.LC_NUMERIC, 'C')
import scipy as sp
import matplotlib.pyplot as plt

#Definicion de frecuencia
sg= 1
Hz = 1 / sg	#hertzio

def Lorentziana(w0=1, gamma=.1):
	"""Entradas: w0: frecuencia de resonancia
	             gamma: amortiguamiento
	"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)
	t=  sp.linspace(0,100/w0,n_puntos)

	#campo
	campo=sp.exp(-gamma*t)*sp.cos(w0*t)

    	#Definicion del espectro espectro
	Espectro= 1 / (1 + (w-w0)**2/(gamma/2)**2)

	#Figuras
	plt.figure(figsize=(10,5))

	#Representacion del campo
	plt.subplot(1,2,1)
	plt.plot(t, campo, 'k', linewidth = 2)
	plt.xlabel('$t \; (s)$', fontsize = 18)
	plt.ylabel('$E(t)$', fontsize = 18)

	#Representacion del espectro
	plt.subplot(1,2,2)
	plt.plot(w, Espectro, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('perfil Lorenziano', fontsize = 18)
	plt.tight_layout()

#Representacioni de un pulso lorentziano con w0=3*10**15*Hz, gamma=10**14*Hz
Lorentziana(w0=3*10**15*Hz, gamma=10**14*Hz)
plt.show()

(Source code, png, hires.png, pdf)

../../_images/pulso_lorentz.png

10.2.3. Pulso cuadrado

Desde el punto de vista teórico también es importante un pulso cuadrado, que se obtiene como una función coseno dentro del intervalo y 0 fuera.

\mathbf{r}(t)=\mathbf{r}_{o}e^{-\gamma t/2}e^{-i\omega_{o}t}.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------
"""pulso de gauss"""

from __future__ import division
import locale

#Modulos empleados
import scipy as sp
import matplotlib.pyplot as plt

#Unidades
sg = 1
Hz = 1 / sg	#hertzio

def pulso_gauss(w0=1, gamma=.1):
	"""Entradas: w0: frecuencia de resonancia
	             gamma: amortiguamiento
	"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)

	t=  sp.linspace(-3/gamma,3/gamma,n_puntos)

	#campo electrico normalizado
	campo=sp.exp(-(gamma*t)**200/2)*sp.cos(w0*t)
     	#espectro normalizado
	Espectro= sp.sinc ((w-w0)/(gamma))

	#Figura con campo y espectro
	plt.figure(figsize=(10,5))

	#Representacion del campo
	plt.subplot(1,2,1)
	plt.plot(t, campo, 'k', linewidth = 2)
	plt.xlabel('$t \; (s)$', fontsize = 18)
	plt.ylabel('$E(t)$', fontsize = 18)

	#Representacion del espectro
	plt.subplot(1,2,2)
	plt.plot(w, Espectro, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('perfil sinc', fontsize = 18)
	plt.tight_layout()

#Representacion de un pulso ejemplo con w0=3*10**15*Hz y gamma=10**14*Hz
pulso_gauss(w0=3*10**15*Hz, gamma=10**14*Hz)
plt.show()

(Source code, png, hires.png, pdf)

../../_images/pulso_cuadrado.png

10.3. Suma de dos ondas

Para analizar la propagación de un pulso de luz, en primer lugar haremos la aproximación de