Esta pequeña nota trata sobre cómo dibujar imágenes hermosas, bueno, un poco sobre física, de la que rara vez se habla, sobre la mecánica cuántica de Bomov.

Pequeña introducción
Como le gusta decirnos a cualquier ciencia ficción y sin sentido pseudocientífico, como la película El secreto, las leyes del micromundo son muy diferentes de las clásicas a las que estamos acostumbrados.
En el mundo de la mecánica cuántica, la probabilidad dada por la función de onda rige todo.
psi (los interesados en los detalles pueden ver, por ejemplo, en la
publicación "Catálisis de muones desde el punto de vista de la química cuántica. Parte I: hidrógeno ordinario versus hidrógeno de muones" ).
Las piernas de todo tipo de cosas divertidas, como los
gatos Schrödinger , los
principios de incertidumbre de Heisenberg y
las desigualdades de Bell, surgen de las propiedades probabilísticas de un quantummech.
Pero todas estas imágenes con todo tipo de orbitales de electrones no respondieron a la pregunta "¿cómo vuela un electrón en el espacio". Para aclarar esta situación, los físicos pasaron mucho tiempo, pero no pudieron hacer frente. Pero
David Bohm (conocido por muchos por
el efecto Aaronov-Bohm ) finalmente creó
uno de los formalismos de la mecánica cuántica (nombre de sí mismo) , en el que todavía hay trayectorias a lo largo de las cuales se mueve la partícula cuántica. Y, a diferencia de las
integrales de la ruta de Feynman , esta ruta para cada partícula es exactamente una. Esta propiedad fundamentalmente le permite rastrear el movimiento de partículas y comparar el movimiento de partículas clásicas y cuánticas, que trataremos en este artículo.
no solo formalismoEn realidad, nadie está particularmente interesado en el formalismo en sí, pero a partir de este formalismo se puede construir una de las interpretaciones de la mecánica cuántica, que, debido a la aparente simplicidad de la mecánica clásica, algunos fanáticos adoran (no muchos, porque entrar en este negocio no es muy simple).
No discutiremos esta interpretación (así como otras).
Trayectorias clásicas y cuánticas.
Consideraremos un sistema bastante aburrido: un electrón en el campo de varios protones. Puede leer sobre este sistema, así como sobre la mecánica clásica y cuántica en la
primera y
segunda parte de las publicaciones "Catálisis de muones desde el punto de vista de la química cuántica".
El problema clásico del movimiento de partículas en cierto potencial viene dado por la segunda ley de Newton:
m ddotx=F
donde
m es la masa de partículas,
x es la coordenada,
F es la fuerza que actúa sobre la partícula y
ddotx= fracd2xdt2 - la segunda derivada de la coordenada de la partícula en el tiempo, o aceleración. Si solo actúan fuerzas potenciales en el sistema, entonces la fuerza se puede expresar a través de una nueva entidad, la energía potencial
V como
F=− fracdVdx
En nuestro caso, un electrón en el campo de varios protones,

donde el electrón interactúa con cada uno de los protones de acuerdo con la ley de Coulomb
V(R)=−ke2/R
, donde
k es un coeficiente igual a 1 en unidades atómicas,
e es la carga de electrones, y
R es la distancia del electrón al protón.
En este caso, el potencial total que actúa sobre el electrón será igual a
V= sumNn=1Vn(Rn)=− sumNn=1 fracke2Rn
donde el índice
n numera los protones (protones totales
N piezas), y
R n es la distancia desde el electrón hasta el
enésimo protón.
Resolver numéricamente la diferencia, que es la segunda ley de Newton, es una tarea trillada, lo principal es establecer la posición inicial y la velocidad. Si el electrón vuela demasiado rápido, saldrá de la atracción de los protones y volará al infinito, y si solo hay un poco de energía, revoloteará para siempre en el campo de uno de los núcleos, sin visitar nunca a los demás.
Fricción radianteSi tomáramos en cuenta la
fricción radiante , que ocurre debido al hecho de que al moverse con aceleración, el electrón daría parte de su energía al campo electromagnético, emitiéndolo en algún lugar, luego el electrón eventualmente rodaría sobre el núcleo en algún momento.
Entonces, lo que sucede en los clásicos, lo sabemos.
Pero, ¿qué pasará en la dinámica de Bomov?
En este caso, la partícula también se moverá de acuerdo con la segunda ley de Newton con potencial
V=V mathrmC+V mathrmQ donde
V mathrmC - el potencial clásico de la ley de Newton habitual, que en nuestro caso tiene la forma dada anteriormente.
Es decir Además del potencial clásico, otra entidad actuará sobre él: el
potencial cuántico V mathrmQ tener (en el caso 1D) la forma
V mathrmQ=− frac hbar22mA fracd2Adx2
donde
A es la amplitud (módulo) de la función de onda
A=| psi| (
psi=A exp(i varphi) donde
varphi - fase de la función de onda).
Entonces, para obtener la ecuación de movimiento de una partícula cuántica, aún necesitamos saber algo sobre la función de onda.
Sobre opciones ocultasEl formalismo de Bohm es una teoría con parámetros ocultos. Pero dado que el parámetro oculto (función de onda) no es local, los resultados del cálculo en este formalismo aún satisfacen las desigualdades mencionadas por Bell.
En el caso de un protón, sabemos (ver, por ejemplo,
aquí ) la expresión exacta de la función de onda de electrones en el estado fundamental (1s) [
en unidades atómicas ]:
psi(R)= exp(−R)
Sobre normalización y unidadesEn la fórmula para el potencial cuántico, la normalización del numerador se reducirá con el denominador, por lo que no nos preocuparemos.
El argumento del exponente, de hecho, no vale
R y
R/a0 donde
a0 Es el radio de Bohr (0.529 Å). Pero, dado que usamos unidades atómicas, donde
a0=1 , esta unidad de longitud nos podemos permitir no escribir. Puedes leer más sobre esto
aquí .
En el caso de varios protones, en el marco del método de los orbitales moleculares como combinaciones de orbitales atómicos (
MO LKAO , ver
aquí ), el estado fundamental con un grado suficiente de precisión estará dado por la suma de los orbitales 1s de cada uno de los átomos:
psi approx sumNn=1 psin(Rn)= sumNn=1 exp(−Rn)
Ahora, para descubrir el potencial cuántico, solo necesita usar esta expresión.
Bueno <s> d </s>Función
psi como la suma de los orbitales 1s es real, por lo tanto
A= psi .
Como un electrón puede moverse en tres dimensiones, se necesita una derivada unidimensional
A″xx= fracd2Adx2 reemplazar con su generalización tridimensional:
DeltaA=A″xx+A″aa+A″zz . Operador
Delta se puede representar como el cuadrado del
operador nabla :
Delta= nabla2 . También puedes imaginar la distancia
Rn como
Rn= sqrt mathbfR2n donde
mathbfRn Es el vector de radio del electrón en relación con el
enésimo protón.
Entonces
DeltaA= nabla2 psi= sumNn=1 nabla2 psin(Rn)
La primera derivada se considera fácil:
nabla psin(Rn)= nabla exp(−Rn)= exp(−Rn) cdot(−1) cdot frac12 underbrace sqrt mathbfR2nRn cdot2 mathbfRn=− exp(−Rn) cdot frac mathbfRnRn
La segunda derivada ya es algo más complicada:
nabla( nabla exp(−Rn))=− frac mathbfRnRn nabla exp(−Rn)− exp(−Rn) nabla frac mathbfRnRn= exp(−Rn)− frac2 exp(−Rn)Rn
donde
− frac mathbfRnRn nabla exp(−Rn)= exp(−Rn) cdot underbrace left(− frac mathbfRnRn right)21= exp(−Rn) y
− exp(−Rn) nabla frac mathbfRnRn=− exp(−Rn) cdot left( frac overbrace nabla mathbfRn3Rn− frac2 mathbfR2n2R3n right)=− frac2 exp(−Rn)Rn .
El resultado sigue siendo:
Delta psi= overbrace sumNn=1 exp(−Rn) psi− sumNn=1 frac2 exp(−Rn)RnDividiendo todo en
psi=A y multiplicando por
− frac hbar22mtenemos
V mathrmQ=− frac hbar22m left(1− sumNn=1 frac2 exp(−Rn)Rn right)La unidad durante la diferenciación para obtener fuerza desaparecerá, por lo que solo puede salir con seguridad el segundo término.
Como resultado, podemos escribir nuestro potencial cuántico como
V mathrmQ approx frac hbar2m sumNn=1 frac exp(−Rn)Rn
y con esta expresión ya podemos conducir la dinámica de Bohm de un electrón en el campo de muchos protones.
Implementación
Por toda esta desgracia, el código fue escrito en python, está disponible aquí:
Código de Pythonfrom math import * import numpy as np cutoff=5.0e-4 Quantum=True def dist(r1,r2): return np.dot((r1-r2), (r1-r2)) def Vc(r, r0): if dist(r, r0)>=cutoff: return -1.0/dist(r, r0) else: return -1.0/cutoff rH=[]
Solo discutiremos algunos puntos.
La segunda ley de Newton se integra utilizando
el algoritmo Verlet :
x(t+ Deltat)=2x(t)−x(t− Deltat)+ fracF(t)m Deltat2
La posición inicial se genera seleccionando aleatoriamente uno de los protones, se selecciona aleatoriamente una dirección a su alrededor (utilizando coordenadas esféricas). Para establecer la velocidad inicial, debe establecer otra posición anterior. Se selecciona usando otro pequeño vector aleatorio.
Al activar / desactivar el potencial cuántico, cambiamos a modos de movimiento cuántico / clásico.
Bueno, entonces, puedes construir bellas imágenes usando Gnuplot para el átomo de hidrógeno

y para la molécula H2
+
Como puede ver, las trayectorias clásicas (superior, azul) están muy localizadas o, si el electrón se ve obligado a moverse demasiado rápido, huyen de los núcleos. En el caso cuántico (inferior, rosa), el potencial cuántico permite que los electrones caminen significativamente más lejos del núcleo, y en el caso de la molécula H2
+ , le permite correr de un protón a otro, que es una visualización indirecta de enlaces químicos.
Algunas palabras sobre la creación de imágenes: para crear un efecto de neón, cada trazado se dibuja muchas veces, desde el blanco delgado al negro grueso, a través de las sombras del color de interés. Para la conveniencia de elegir dicha paleta, puede, por ejemplo, usar el sitio
https://www.color-hex.com/Un script de ejemplo se da a continuación.
Guión para Gnuplotunset key
set xyplane relative 0
unset box
set view map
set size ratio -1
unset border
unset xtics
unset ytics
set terminal pngcairo size 2160,4096 backgr rgb "black"
set output "tmp.png"
yshift=-5.0
maxiC=29
maxiQ=29
splot \
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 30.0 lc rgb "#030d19" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 18.0 lc rgb "#071b33" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 17.0 lc rgb "#0a294c" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 16.0 lc rgb "#0e3766" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 15.0 lc rgb "#11457f" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 14.0 lc rgb "#155399" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 13.0 lc rgb "#1861b2" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 12.0 lc rgb "#1c6fcc" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 11.0 lc rgb "#1f7de5" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 10.0 lc rgb "#238bff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 9.0 lc rgb "#3896ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 8. lc rgb "#4ea2ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 7. lc rgb "#65adff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 6. lc rgb "#7bb9ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 5. lc rgb "#91c5ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 4. lc rgb "#a7d0ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 3. lc rgb "#bddcff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 2. lc rgb "#d3e7ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 1. lc rgb "#e9f3ff" not,\
for [i=0:maxiC] sprintf("cmd_%05i.trj", i) wl lw 0.5 lc rgb "#ffffff" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 30.0 lc rgb "#190613" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 18.0 lc rgb "#330c27" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 17.0 lc rgb "#4c123b" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 16.0 lc rgb "#66184f" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 15.0 lc rgb "#7f1e63" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 14.0 lc rgb "#992476" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 13.0 lc rgb "#b22a8a" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 12.0 lc rgb "#cc309e" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 11.0 lc rgb "#e536b2" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 10.0 lc rgb "#ff3dc6" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 9.0 lc rgb "#ff50cb" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 8. lc rgb "#ff63d1" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 7. lc rgb "#ff77d7" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 6. lc rgb "#ff8adc" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 5. lc rgb "#ff9ee2" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 4. lc rgb "#ffb1e8" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 3. lc rgb "#ffc4ed" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 2. lc rgb "#ffd8f3" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 1. lc rgb "#ffebf9" not,\
for [i=0:maxiQ] sprintf("bmd_%05i.trj", i) u 1:($2+yshift):3 wl lw 0.5 lc rgb "#ffffff" not
Conclusión
Las trayectorias de Bomov, aunque difíciles de entender y calcular, le permiten dibujar imágenes hermosas que muestran cuánto más divertido y más rico que la mecánica clásica.
Si tiene comentarios, preguntas, sugerencias: escriba. :)