我的数学能力很一般,也就是初中水平加微积分常识,难道我就不能研究量子化学了吗?答案是否定的,因为我有一定的程序设计能力和较强的钻研能力。
经过半年的研究,搞清楚了一维定态薛定谔方程的数值解法,包括一维自由粒子、一维谐振子和一维氢原子,三种粒子状态。以后还会继续求解二维三维含时间的方程,甚至那个变态的狄拉克方程。
为了研究量子化学,我花了很长时间编写网页程序《多维空间》。这款程序能展现二维到十一维的空间,以及空间内的多维物体,对求解常微分方程及多变量偏微分方程有很大的帮助,本教程多数实验演示都在此平台下进行。程序基于HTML5和JavaScript语言编写,简单小巧易用,把文件”HyperSpace.html”直接拖入浏览器窗口就能直接使用,兼容大多数浏览器。JavaScript是一款极易上手的程序设计语言,我会一步步带领大家展示实验。
这是四维空间下的超立方体。
这是四维空间下的复函数。
常微分方程的解是一元函数,用二维平面上的曲线表示,偏微分方程的解是多元函数,可以用三维以上空间上的曲线网格表示。所谓数值求解,就是用很多很多短的线段拼起这些所求函数的几何图形。这一节我们先来绘制几条线段。打开附件中的Event.js(我用的是gedit,一款强大的代码编辑器)
最上面定义了全局变量,用来控制曲线的粗细。
最下面定义键盘按键事件。
打开Main.js,最下面是绘制线段的程序。
把HyperSpace.html拖到浏览器窗口中,程序显示效果如图。
先来分析一下这个方程,ψ是要求的函数,
我们给定一个初始点,再给定一个x轴的步长h,下一个点的ψ值等于初始点ψ值加上下一个点的一阶导数乘以步长h,这样一步步延伸,延伸的线段就是所求函数的近似值。步长越短,解越精确。
计算第(i)个点的一阶导数。
计算第(i)个点的函数值ψ。
函数初始值设为0.5,自变量x初始值设为 -0.8,常数K初始值设为1,线段步长设为0.01,程序得到如下图像:
用鼠标滚轮可以对视图进行缩放操作;按键盘
所有得到的这些曲线都是方程的解。实验结果是动态的,非常直观,这是无法通过任何理论公式体验到的。
我们把一维定态薛定谔方程的二阶导数放在左边,把右边
先来看一下这个方程的解法,把这个方程的解法搞清楚后,解完整的一维方程就简单多了。
计算第(i)个点的二阶导数。
计算第(i)个点的一阶导数。
计算第(i)个点的函数值ψ。
函数初始值设为0,一阶导数初始值设为1,常数K初始值设为1,线段步长设为0.1,程序得到如下图像:
用鼠标滚轮可以对视图进行缩放操作;按键盘A键曲线加粗;按Z键曲线变细;按↑键步长线段加长;按↓键步长线段减短;按←键整条曲线左右加长;按→键整条曲线左右减短;按
我们得到两个相互交错的正弦曲线,绿色的是一阶导数,黑色的是函数。一阶导数初始值越大,函数的振幅越大;值为零,函数为一条与x轴重合的直线;值为负值,函数相应地以x轴为轴上下翻转。常数k的值越大,函数周期越短,反之越长。
可以看出,借助计算机做重复复杂的计算工作,可以让我们把精力集中到现象的观察中,这样能大大提高新方法的发明及理解。
原子单位制下的所有物理量全部用同一单位a.u.,使用原子单位后,薛定谔方程大大简化,下面是一些常用原子单位。
长度1a.u. = 玻尔半径 = 0.5291772083D-10m
时间1a.u. = 2.418884326505(16)D-17s
速度1a.u. = 2187691.2633(72)m/s
质量1a.u. = 电子质量 = 9.10938188D-31Kg
质子质量 = 1836.1527a.u.
原子量单位(amu) = 碳十二质量的十二分之一 = 1822.88848a.u.
动量1a.u. = 1.99285166(34)D-24Kg*m/s
能量1a.u. = 4.35974417(75)D-18J
角动量1a.u. = 1.05457160D-34J*s
电荷1a.u. = 1.602176462D-19C
力1a.u. = 8.2387225(14)D-8N
真空电容率 = 0.07957747154594767(e^2a0me/h^2)
约化真空电容率1a.u. =
电势能 =
约化普朗克常数1a.u. =
这是一维自由粒子薛定谔方程:
假设我们所求的粒子是电子,质量m就是1a.u.,约化普朗克常数也是1a.u.,上面的方程就化为下面的简单方程。
第1步-预测
预测第(i)个点的二阶导数。
预测第(i)个点的一阶导数。
预测第(i)个点的函数值ψ。
第2步-校正
校正第(i)个点的二阶导数。
校正第(i)个点的一阶导数。
校正第(i)个点的函数值ψ。
第3步-计算
计算第(i)个点的二阶导数。
计算第(i)个点的一阶导数。
计算第(i)个点的函数值ψ。
计算第(i)个点的函数值ρ。
函数初始值设为0,一阶导数初始值设为1,能量E初始值设为1,线段步长设为0.1,程序得到如下图像:
用鼠标滚轮可以对视图进行缩放操作;按键盘A键曲线加粗;按Z键曲线变细;按↑键步长线段加长;按↓键步长线段减短;按←键整条曲线左右加长;按→键整条曲线左右减短;按˂键能量E值增大;按˃键能量E值减小;按PageUp键函数曲线纵向拉长;按PageDown键函数曲线纵向缩短;按
绿色的是一阶导数,黑色的是函数。能量E的值越大,函数周期越短,反之越长。
我们可以看出,数值解法不需要复杂的数学计算,不需要很深的数学功底,通过简单的程序设计就能解决问题。
一维谐振子是量子力学的简谐运动,粒子受中心力场的引力,粒子离中心力场越远引力越大,引力大小跟距离的二次方成正比。
这是一维谐振子薛定谔方程:
假设我们所求的粒子是电子,应用原子单位制,质量m就是1a.u.,约化普朗克常数file:///C:\Temp\ksohtml\wpsED4C.tmp.png也是1a.u.,中心力场设为原点,常数k设为1,上面的方程就化为下面的简单方程。
本节依然采用3步计算法。
第1步-预测
预测第(i)个点的二阶导数。
预测第(i)个点的一阶导数。
预测第(i)个点的函数值ψ。
第2步-校正
校正第(i)个点的二阶导数。
校正第(i)个点的一阶导数。
校正第(i)个点的函数值ψ。
第3步-计算
计算第(i)个点的二阶导数。
计算第(i)个点的一阶导数。
计算第(i)个点的函数值ψ。
计算第(i)个点的函数值ρ。
用鼠标滚轮可以对视图进行缩放操作;按键盘A键曲线加粗;按Z键曲线变细;按↑键步长线段加长;按↓键步长线段减短;按←键整条曲线左右加长;按→键整条曲线左右减短;按˂键能量E值增大;按˃键能量E值减小;按PageUp键函数曲线纵向拉长;按PageDown键函数曲线纵向缩短;按Home键波函数ψ与概率密度函数ρ相切换。
函数初始值设为0,一阶导数初始值设为0.1,能量E初始值设为0.5,线段步长设为0.05,曲线纵向缩放系数设为 -37,从理论上讲,基态能量E为0.5a.u.,但数值解是有误差的,无论多精确,函数右边都会拉起来,按˂键或˃键,微调能量大小,使曲线右边拉到最长,这时的能量值就是数值计算所得到的能量值,跟理论值0.5是有误差的。基态概率密度函数ρ的图像如下图所示:
按Home键,切换到波函数ψ图像,这时函数图像成为一条直线,连续按PageUp键,曲线纵向拉长,得到如下基态波函数ψ的图像:
按Home键,切换回概率密度函数ρ图像,连续按PageDown键,曲线纵向缩回原始状态,连续按˂键,能量不断调大,函数曲线右侧逐渐拉起来,当能量值接近1.5时函数曲线右侧又逐渐落下来,曲线由单峰变为双峰,或者在左上角输入框内填1.5,按能量按钮,直接得到第一激发态概率密度函数ρ的图像,按˂键或˃键,微调能量大小,使曲线右边拉到最长,这时的能量值就是数值计算所得到的能量值,跟理论值1.5也是有误差的。第一激发态概率密度函数ρ的图像如下图所示:
一维谐振子的计算结果是比较完美的,跟理论计算结果吻合得比较好。
把氢原子用圆管束缚起来,当圆管截面半径趋于零时,就得到了一维氢原子。
一维氢原子和一维谐振子运动状态相似,粒子都受中心力场的引力,所不同的是氢原子电子离原子核越远引力越小,引力大小跟距离的倒数成正比。
如果把原子核看做质点,就得到下面的一维氢原子薛定谔方程:
应用原子单位制,电子质量m就是1a.u.,电子电荷e是 - 1a.u.,质子电荷e是1a.u.,约化普朗克常数file:///C:\Temp\ksohtml\wpsF115.tmp.png也是1a.u.,中心力场设为原点,约化真空电容率file:///C:\Temp\ksohtml\wpsF116.tmp.png是1a.u.,上面的方程就化为下面的简单方程。
本节依然采用3步计算法。
第1步-预测
预测第(i)个点的二阶导数。
预测第(i)个点的一阶导数。
预测第(i)个点的函数值ψ。
第2步-校正
校正第(i)个点的二阶导数。
校正第(i)个点的一阶导数。
校正第(i)个点的函数值ψ。
第3步-计算
计算第(i)个点的二阶导数。
计算第(i)个点的一阶导数。
计算第(i)个点的函数值ψ。
计算第(i)个点的函数值ρ。
用鼠标滚轮可以对视图进行缩放操作;按键盘A键曲线加粗;按Z键曲线变细;按↑键步长线段加长;按↓键步长线段减短;按←键整条曲线左右加长;按→键整条曲线左右减短;按˂键能量E值增大;按˃键能量E值减小;按PageUp键函数曲线纵向拉长;按PageDown键函数曲线纵向缩短;按Home键波函数ψ与概率密度函数ρ相切换。
这是理论计算的能级公式(原子单位制)。
函数初始值设为0,一阶导数初始值设为0.1,能量E初始值设为 -0.5,线段步长设为0.01,曲线纵向缩放系数设为 -120,从理论上讲,基态能量E为 -0.5a.u.,但数值解是有误差的,无论多精确,函数右边都会拉起来,按˂键或˃键,微调能量大小,使曲线右边拉到最长,这时的能量值就是数值计算所得到的能量值,跟理论值 -0.5是有误差的。基态概率密度函数ρ的图像如下图所示:
按Home键,切换到波函数ψ图像,这时函数图像成为一条直线,连续按PageUp键,曲线纵向拉长,得到如下基态波函数ψ的图像:
重复上述步骤,得到下面的图像。
这些解是跟理论计算结果一致的,再来看看那些不正常的解。

beefly 发表于 2018-3-17 09:08
复杂一点的一维势,比如双原子分子的几个电子态存在避免交叉,可以做么?
| 欢迎光临 计算化学公社 (http://bbs.keinsci.com/) | Powered by Discuz! X3.3 |