这个小注释是关于如何绘制精美图片的,还有一些关于物理的知识,而关于玻莫夫量子力学的知识很少被提及。

小介绍
正如任何科幻小说和伪科学胡话喜欢告诉我们的,例如电影《秘密》一样,微观世界的定律与我们习惯的经典定律有很大不同。
在量子力学世界中,波动函数给出的概率决定了一切。
psi (例如,那些对细节感兴趣的人可以在
文章“从量子化学的角度看Muon催化。第一部分:普通氢与μon氢”中找到 )。
诸如
Schrödinger猫 ,
海森堡(Heisenberg)的不确定性原理和
贝尔(Bell)不等式 之类的各种有趣事物的腿都是从量子力学的概率性质中成长出来的。
但是所有带有各种电子轨道的图片都没有回答“电子如何在太空中飞行”的问题。 为了弄清这种情况,物理学家花了很多时间,但是无法应付。 但是
戴维·波姆 (
David Bohm) (以
Aaronov-Bohm效应而为人所熟知 )最终创造了
一种量子力学的形式主义(他的名字) ,在
量子力学中仍然存在着量子粒子沿其运动的轨迹。 而且,与
费曼路径积分不同,每个粒子的该路径恰好是一个。 此属性从根本上允许您跟踪粒子的运动,并比较经典粒子和量子粒子的运动,本文将对此进行介绍。
不仅形式主义实际上,没有人对形式主义本身特别感兴趣,但是从这种形式主义中,人们可以构造一种量子力学的解释,由于经典力学看似简单,它却受到某些怪胎的爱戴(不多,因为进入这一行业并不容易)。
我们将不讨论这种解释(以及其他解释)。
经典和量子轨迹
我们将考虑一个相当无聊的系统:几个质子场中的一个电子。 您可以在“从量子化学的角度看Muon催化”一文的
第一部分和
第二部分中了解该系统以及经典力学和量子力学。
牛顿第二定律给出了一定势中粒子运动的经典问题:
m ddotx=F
其中
m是粒子质量,
x是坐标,
F是作用在粒子上的力,并且
ddotx= fracd2xdt2 -粒子的时间或加速度坐标的二阶导数。 如果只有势力在系统中起作用,则该力可以通过一个新实体表示,势能
V为
F=− fracdVdx
在我们的例子中,在几个质子场中的电子

电子根据库仑定律与每个质子相互作用
V(R)=−ke2/R
,其中
k是原子单位等于1的系数,
e是电子电荷,
R是从电子到质子的距离。
在这种情况下,作用在电子上的总电势等于
V= sumNn=1Vn(Rn)=− sumNn=1 frackee2Rn\,
其中索引
n表示质子(总共
N个质子),
R n是从电子到第
n个质子的距离。
数值求解微分是牛顿的第二定律,这是一项艰巨的任务,主要是设定初始位置和速度。 如果电子飞得太快,它将脱离质子的吸引力并飞向无穷大,如果只有一点能量,它将永远在一个原子核的场中颤动,永远不会访问另一个原子核。
辐射摩擦如果考虑到
辐射摩擦 ,该
辐射摩擦是由于以下事实而发生的:当加速运动时,电子会将一部分能量提供给电磁场,将其发射到某个地方,那么电子最终将在一段时间内滚动到原子核上。
我们知道经典中发生了什么。
但是Bomov动力学会发生什么?
在这种情况下,粒子还将根据牛顿第二定律运动,
V=V mathrmC+V mathrmQ 在哪里
V mathrmC -普通牛顿定律的经典潜能,在我们的情况下具有上面给出的形式。
即 除了经典势能之外,另一个实体将对其起作用:
量子势能 V mathrmQ 具有(在一维情况下)表格
V mathrmQ=− frac hbar22mA fracd2Adx2
其中
A是波动函数的振幅(模数)
A=| psi| (
psi=A exp(i varphi) 在哪里
varphi -波动函数的相位)。
因此,要获得量子粒子的运动方程,我们仍然需要了解一些有关波函数的知识。
关于隐藏选项鲍姆的形式主义是具有隐藏参数的理论。 但是由于隐藏参数(波动函数)是非局部的,因此这种形式主义的计算结果仍然满足Bell的上述不等式。
对于一个质子,我们知道(例如,
在这里 )电子波函数在基态(1s)中的精确表示(
以原子单位表示 ):
psi(R)= exp(−R)
关于规范化和单位在量子势的公式中,分子的归一化将随着分母而减少,因此我们不必担心。
指数的论点实际上是不值得的
R 和
R/a0 在哪里
a0 是玻尔半径(0.529Å)。 但是,由于我们使用原子单位,因此
a0=1 ,这个长度单位我们负担不起写。 您可以
在此处了解更多信息。
在多个质子的情况下,在分子轨道方法的框架中,作为原子轨道的组合(
MO LKAO ,请参见
此处 ),每个原子的1s轨道之和将给出具有足够精确度的基态:
psi\大约 sumNn=1 psin(Rn)= sumNn=1 exp(−Rn)
现在,要找出量子势,您只需要使用此表达式。
<s> d </ s>功能介绍
psi 因为1s轨道的总和是实数,因此
A=\磅 。
由于电子可以在三个维度上移动,因此需要一维导数
A″xx= fracd2Adx2 用其三维概括代替:
DeltaA=A″xx+A″yy+A″zz 。 操作员
\三角洲 可以表示为
运算符nabla的平方:
Delta= nabla2 。 您也可以想象距离
Rn 怎么
Rn= sqrt mathbfR2n 在哪里
mathbfRn 是电子相对于第
n个质子的半径向量。
然后
DeltaA= nabla2 psi= sumNn=1 nabla2 psin(Rn)
一阶导数被认为是容易的:
nabla psin(Rn)= nabla exp(−Rn)= exp(−Rn) cdot(−1) cdot frac12 underbrace sqrt mathbfR2nRn cdot2 mathbfRn=− exp(−Rn) cdot frac mathbfRnRn
二阶导数已经有些复杂了:
nabla( nabla exp(−Rn))=− frac mathbfRnRn nabla exp(−Rn)− exp(−Rn) nabla frac mathbfRnRn= exp(−Rn)− frac2 exp(−Rn)Rn
在哪里
− frac mathbfRnRn nabla exp(−Rn)= exp(−Rn) cdot underbrace\左(− frac mathbfRnRn right)21= exp(−Rn) 和
− exp(−Rn) nabla frac mathbfRnRn=− exp(−Rn) cdot left( frac overbrace nabla mathbfRn3Rn− frac2 mathbfR2n2R3n right)=− frac2 exp(−Rn)Rn 。
结果仍然是:
Delta psi= overbrace sumNn=1 exp(−Rn) psi− sumNn=1 frac2 exp(−Rn)Rn一切都分成
psi=A 并乘以
− frac hbar22m我们得到
V mathrmQ=− frac hbar22m\左(1− sumNn=1 frac2 exp(−Rn)Rn right)在分化过程中获得力量的单位将消失,因此您可以放心地只剩下第二个学期。
结果,我们可以将量子势记为
V mathrmQ\大约 frac hbar2m sumNn=1 frac exp(−Rn)Rn
有了这个表达式,我们已经可以驱动许多质子场中电子的波姆动力学。
实作
对于所有这些耻辱,代码都是用python编写的,可以在这里找到:
Python代码from 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=[]
我们将只讨论几点。
牛顿第二定律是使用
Verlet算法集成
的 :
x(t+ Deltat)=2x(t)−x(t− Deltat)+ fracF(t)m Deltat2
通过随机选择一个质子来生成初始位置,并在其周围随机选择方向(使用球坐标)。 要设置初始速度,您需要设置另一个先前的位置。 使用另一个小的随机向量选择它。
打开/关闭量子势,我们切换到量子/经典运动模式。
好了,那么您可以使用Gnuplot为氢原子生成精美的图片

对于分子H
2 +
如您所见,经典轨迹(上部,蓝色)要么非常局限,要么,如果电子被迫太快地移动,则其逃离原子核。 在量子情况下(较低的粉红色),量子势能使电子显着离开原子核,而在H2
+分子的情况下,它使您可以从一个质子移动到另一个质子,这是化学键的间接可视化。
关于构建图片的几句话:要创建霓虹灯效果,每条路径都要经过多次绘制,从稀薄的白色到浓密的黑色,穿过感兴趣的颜色的阴影。 为了方便选择这样的调色板,您可以例如使用网站
https://www.color-hex.com/下面给出了一个示例脚本。
Gnuplot的脚本unset 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
结论
Bomov轨迹虽然难以理解和计算,但您可以绘制出精美的图片,这些图片显示出比经典力学更有趣,更丰富的东西。
如果您有意见,问题或建议:请写。 :)