1. 课程导入与问题界定
薛定谔方程是量子力学的运动方程,但在绝大多数实际势场中,它没有解析解。一维方势阱、谐振子、氢原子这类问题可以手算,而双势阱隧穿、含时外场驱动、多体相互作用、无序势中的局域化等问题,只能依靠数值方法。本课程的目标不是推导方程,而是建立一套可复现的求解流程:给定势场与边界条件,选择离散格式,控制误差,并对结果给出可信度判断。
先明确约定。本课程统一采用一维定态形式
-ħ²/(2m) · d²ψ/dx² + V(x)ψ = Eψ
坐标 x 向右为正,波函数在无穷远处趋于零;束缚态能量 E 为实数且离散。含时部分采用 iħ ∂ψ/∂t = Ĥψ,时间正向演化。所有图示与公式均遵循这一约定,后续章节不再重复说明。
核心挑战:三个互相牵制的量
数值求解薛定谔方程,本质是在三个量之间做权衡:空间离散步长 h、计算域长度 L、能量精度要求。步长越小,二阶差分对曲率的近似越好,但矩阵维度按 1/h 增长;计算域越长,越能容纳衰减缓慢的波函数尾部,但同样增加维度;而高激发态波函数振荡剧烈,对 h 的要求比基态苛刻得多。一个常见的教学示例是无限深方势阱:取 L=1(原子单位),基态能量解析值为 π²/2 ≈ 4.9348。若用 N=100 个格点、h=0.01 的中心差分,基态能量误差约在 10⁻⁴ 量级;而第 10 个激发态误差会放大约两个数量级。这说明“一套参数打天下”是不可行的,必须先估计目标态的空间频率。
第二个挑战来自边界。真实束缚态在边界处应指数衰减,但数值上只能截断。若把边界强制为零(狄利克雷条件),相当于把粒子关进一个更大的盒子,能量会被系统性抬高;若截断位置太近,波函数尾部被削掉,能量偏低或出现虚假振荡。合理做法是让 L 至少覆盖波函数衰减到 10⁻⁶ 量级的位置,并在收敛性测试中检查 L 加倍后能量是否稳定。
第三个挑战是算法选择与误差传播的耦合。打靶法实现简单,但对初值敏感,高激发态容易漏根;有限差分加矩阵对角化稳健,但存储为 O(N²);有限元在复杂势场中灵活,但组装成本高;虚时演化适合求基态,却难以直接给出激发态。方法本身没有绝对优劣,关键在于误差是否可控、是否可诊断。
误差来源分类
把误差拆开看,才能逐项压制。按来源可分为四类:
- 截断误差:差分公式用有限项近似导数,h² 项被丢弃。它随 h 减小而下降,但受浮点舍入限制,h 过小反而使总误差回升。
- 边界误差:计算域截断与边界条件近似引入的系统偏差,通常表现为能量整体平移,可通过 L 收敛测试识别。
- 迭代与舍入误差:本征求解器的收敛容差、矩阵条件数、双精度舍入共同决定。病态矩阵会让小残差对应大能量偏差。
- 模型误差:势场本身被简化(如把软势近似为硬壁)、有效质量取常数、忽略自旋轨道耦合等,这类误差不会因加密网格而消失。
下图把求解流程与四类误差的作用位置对应起来,便于在排障时定位问题出在哪一环。
一个可操作的误差诊断示例
以谐振子 V(x)=½ω²x²(取 m=1、ω=1)为例,解析能级为 Eₙ=n+½。假设用 N=400、L=12 的中心差分求解前 5 个能级,得到基态 E₀≈0.5003、第四激发态 E₄≈4.503。此时可做两步检验:把 L 从 12 增到 24,若 E₀ 变化小于 10⁻⁶,说明边界误差已压到可接受水平;再把 N 从 400 增到 800,若 E₄ 的变化约为 E₀ 变化的 16 倍(高激发态对 h 更敏感),则符合二阶收敛预期。若某一步变化异常大或符号反转,应优先怀疑矩阵组装错误或边界条件施加位置错误,而不是继续加密网格。
课程路线图
后续内容按“从静到动、从简到繁、从算到判”组织。第一阶段建立定态问题的离散与求解能力:有限差分矩阵法、打靶法、边界条件处理与能级排序。第二阶段进入含时演化:Crank–Nicolson 格式的酉性、时间步长与相位误差、波包传播与概率守恒检验。第三阶段处理实际复杂情形:有限元与非均匀网格、虚时演化求基态、高激发态的正交化策略。第四阶段聚焦误差控制与验证:收敛阶实测、残差监控、解析基准对比、常见病态案例排障。每一阶段都要求给出可复现的参数、可观察的中间量和明确的判据,而不是只跑出图就结束。
学习本课程不需要预先掌握高等数值分析,但需要熟悉线性代数中的本征值问题、微积分中的泰勒展开,以及至少一种科学计算语言(Python/NumPy、MATLAB 或 Julia 均可)。所有示例参数都会明确标注为教学设定,读者应把它们当作可修改的起点,而非唯一正确答案。