Hola! En este breve artículo voy a desarrollar de la manera más amena posible la forma en que se trabaja en coordenadas esféricas con las representaciones de coordenadas y momentos en mecánica cuántica. Normalmente las coordenadas cartesianas rectangulares suelen ser inútiles desde el punto de vista teórico y computacional a la hora de realizar cálculos dentro de la física atómica y molecular. Por supuesto que también mostraré una implementación en Python para hacer estas transformaciones. En todo este artículo voy a utilizar el sistema de unidades naturales que se denominan unidades atómicas (, la unidad de distancia es el radio de Bohr y la masa y la carga del electrón también son la unidad).
Generalidades
En mecánica cuántica cuando trabajamos en el formalismo no relativista con la notación de Dirac (la de los bra – kets), lo hacemos en un mundo en el cual los kets y operadores O son entes abstractos que nada dicen de coordenadas en ningún espacio. En sí, trabajamos con entes con características de espacios vectoriales.
La pregunta es, cómo trabajar con coordenadas y remitirnos a la mecánica ondulatoria. Para ello lo que se hace es definir la conexión hacia los espacios de coordenadas y momentos a partir de un par de definiciones:
(1)
y
(2)
Estas funciones de


También es bien sabido cómo pasar de una de las representaciones a la otra. El cambio entre representaciones se puede realizar simplemente haciendo una transformación de Fourier. Se define el núcleo de transformación


(3)
donde la integral se extiende sobre todas las posibilidades de valores que pueda tomar , y explicícitamente en estas representaciones esto resulta en:
(4)
Con estas relaciones en mente vamos a desarrollar los cambios de representación en coordenadas esféricas.
Coordenadas esféricas
De todas los sistemas coordenados que se pueden elegirse, las coordenadas esféricas son las adecuadas para trabajar problemas que presentan simetrías de pelotas o similares (también para trabajar con objetos que tienen la pinta de conos funcionan perfecto). En coordenadas esféricas las funciones de onda se expresan en términos de la distancia a un centro y los ángulos polares
y
. En este punto es importante que si no recordás las coordenadas esféricas te tomes unos minutos y repases.
En coordenadas esféricas, el operador de Hamilton para una partícula en la representación de coordenadas tiene una parte radial
, y otra angular que está relacionada con el momento angular como debe ser. No vamos a escribir en este artículo el Hamiltoniano en coordenadas esféricas, sólo vamos a decir que es un operador, que tiene sus propias autofunciones y autovalores (energías), y que dependiendo de la forma de la energía potencial puede separarse la parte radial de la parte angular (para potenciales puramente radiales). La parte angular de la energía cinética
se corresponde con el momento angular total al cuadrado
y tiene sus propios autokets y autovalores, de la siguiente manera:
. Estos kets forman una base ortonormal y sus correspondientes funciones en la representación de las coordenadas son los famosísimos armónicos esféricos:
(5)
Supongamos que tenemos una función de onda que representa un sistema físico en este sistema de coordenadas (puede ser un electrón en un átomo), la función completa será:
(6)
donde la función describe la densidad de probabilidad radial de la partícula. La pregunta entonces es, ¿cómo es la función en la representación de los momentos para esta partícula?
El espacio de los momentos en coordenadas esféricas
Vimos que para pasar de la representación de las coordenadas hacia la de los momentos había que hacer una transformada de Fourier como se muestra en la Ecuación (4). El problema es que el núcleo de transformación es un producto escalar en coordenadas cartesianas rectangulares. Para poder continuar, lo que haremos es utilizar la expresión de la onda plana en coordenadas esféricas. En los libros siempre nos muestran esta expansión (que llaman desarrollo en ondas parciales para la onda plana):
(7)
donde las son las funciones de Bessel esféricas, y además tenemos los armónicos esféricos para los ángulos de las coordenadas y de los momentos por separado (siempre respecto de un eje arbitrario). Pero nosotros necesitamos la función compleja conjugada de la onda plana ¿Cómo se obtiene? Simplemente conjugando todo (importante tener en claro que las funciones de Bessel esféricas son reales, mientras que los armónicos esféricos no). Entonces:
(8)
Ahora, poniendo todo este desarrollo dentro de la Ecuación (4), alternando el orden de suma e integración y sacando todo lo que no depende de las coordenadas podemos encontrar una expresión que en principio parece complicada y molesta, pero resulta que es más amable de lo que parece. Si además separamos todo lo que tiene que ver con integración radial de angular en el elemento de volumen nos queda lo siguiente:
(9)
donde la integracion angular va sobre todas las direcciones posibles. La integración angular no es más que la contracción entre dos elementos de la base de funciones angulares (ver Eq(5), y observar que es el operador unidad que define la relación de clausura) es decir que las integrales darán como resultado simplemente las deltas de Kronecker
y
, y por lo tanto las sumatorias se eliminarán y la expresión de la función en el espacio de momentos (en coordenadas esféricas) resulta:
(10)
Como les anticipé, la expresión de la Ecuación (10) es simple, y para terminar de transformar nuestra función del espacio de coordenadas, sólo resta hacer la integración radial. Para este fin vamos a hacer un código en Python 3 que nos permita obtener la integral de manera numérica para algunas funciones radiales
Implementación en Python 3 para las funciones del átomo de hidrógeno
Las funciones radiales del hidrógeno son conocidas, y tienen la forma de una exponencial por un polinomio, utilizaremos el estado fundamental y el primer excitado
con todas sus degeneraciones. Estas funciones radiales
son:

(11)
Y se encuentran graficadas en la Figura de la izquierda.
Cada una de estas funciones se pueden calcular sobre una grilla uniforme de modo muy sencillo con Python 3, como les muestro en el siguiente snippet para el caso de

import numpy as np x_max = 20 #defino la distancia máxima de mi grilla lin_x = np.linspace(0,x_max,500) #creo una grilla espacial dx = lin_x[1]-lin_x[0] #el espaciado de la grilla R_10 = 2 * np.exp(-lin_x) #La funcion a transformar #verifico la normalizacion aux_to_integrate = np.abs(lin_x*R_10)**2 integral_trpzd = np.sum(aux_to_integrate[1:]+aux_to_integrate[:-1])*(dx/2) print('normaliz:', integral_trpzd) #out: normaliz: 0.9999998280488481
Bien, ahora que tenemos la función radial en una grilla numérica, para hacer las integrales en el dominio de las necesitamos: primero poder definir los parámetros de la grilla correspondientes a
y luego evaluar la función esférica de Bessel. Para esto último, utilizaremos la librería SciPy, que tiene muchas funciones especiales y pertenece al ecosistema de NumPy. A continuación les muestro una manera de realizar la integración para el caso de
from scipy.special import spherical_jn #importamos el módulo que evalúa la función de Bessel esférica n = 1 l = 0 dp=1/x_max #la grilla en p la defino a partir de la grilla x p_max = 1/dx #la grilla en p la defino a partir de la grilla x p_grid = np.linspace(0,p_max,500) P_10=p_grid.copy() #para cada p hago la integral en x for i in range(500): integrando= lin_x**2*spherical_jn(l,lin_x*p_grid[i])*R_10 P_10[i] = np.sqrt(2/np.pi)*np.sum(integrando[1:]+integrando[:-1])*dx/2 #verificamos la normalización aux_to_integrate = np.abs(p_grid*P_10)**2 integral_trpzd = np.sum(aux_to_integrate[1:]+aux_to_integrate[:-1])*(dp/2) print('normaliz:', integral_trpzd) #out: normaliz: 0.9999996263690161

En la Figura de la derecha podemos ver las funciones de ejemplo en la coordenada , que las he llamado
para abreviar. En esta Figura les muestro hasta 3 unidades atómicas de momento para visualizarlas mejor, aunque la grilla de
va mucho más allá. Aquí es importante tener en cuenta para construir la grilla de momentos, que la menor unidad de momento
posible estará relacionada con el largo de la grilla
de manera inversa (Tiene que ver con la ncerteza de Heisenberg). Finalmente, para tener la función en 3D, basta con multiplicarla por
como se ve en la Ecuación (10), y con esto tenemos nuestras funciones en el espacio de los momentos pero en coordenadas esféricas.
Hasta aquí todo así de simple, pero nada en la vida real sucede de este modo. Desde el punto de vista computacional, las grillas equiespaciadas para estas funciones que se concentran en el origen necesitan muchísimos puntos y los cálculos para sistemas físicos se vuelven impracticables, por eso, en otro artículo te voy a contar cómo trabajar con grillas con muchos puntos cerca del origen y pocos afuera.
Espero que este artículo te haya sido útil! Compartilo con quien pueda necesitarlo y dejame tus comentarios abajo.