贡献者: 刘煜彬
本篇针对科研小白的一个启蒙。
对于量子力学的数值计算,这一篇是基础中的基础,也是必经之路。我们首先需要知道,在所有的模型中哈密顿量是可以写成一个矩阵。 例如一个最简单的无相互作用的 toy 模型
对于有相互作用的系统,哈密顿量通常不是对角化的。一个简单的例子是带有跃迁项的哈密顿量:
对于 $N=4$ 的情况,哈密顿量矩阵 $\hat{H}$ 可能具有如下形式:
import numpy as np
# 定义哈密顿量矩阵
H = np.array([[V1, t12, t13, t14],
[t21, V2, t23, t24],
[t31, t32, V3, t34],
[t41, t42, t43, V4]])
# 计算本征值和本征向量
eigenvalues, eigenvectors = np.linalg.eigh(H)
print("本征值: ", eigenvalues)
print("本征向量: ", eigenvectors)
在 MATLAB 中,可以使用内置的 eig 函数对矩阵进行对角化。这个函数可以计算矩阵的特征值和特征向量。下面是一个详细的例子,展示如何在 MATLAB 中对一个哈密顿量矩阵进行对角化。
以下是完整的 MATLAB 代码,展示如何定义这个矩阵并对其进行对角化:
% 定义哈密顿量矩阵的元素
V1 = 1.0;
V2 = 2.0;
V3 = 3.0;
V4 = 4.0;
t12 = 0.1;
t13 = 0.2;
t14 = 0.3;
t21 = 0.1;
t23 = 0.4;
t24 = 0.5;
t31 = 0.2;
t32 = 0.4;
t34 = 0.6;
t41 = 0.3;
t42 = 0.5;
t43 = 0.6;
% 构造哈密顿量矩阵
H = [
V1, t12, t13, t14;
t21, V2, t23, t24;
t31, t32, V3, t34;
t41, t42, t43, V4
];
% 计算哈密顿量矩阵的特征值和特征向量
[eigenvectors, eigenvalues] = eig(H);
% 显示特征值和特征向量
disp('特征值:');
disp(diag(eigenvalues));
disp('特征向量:');
disp(eigenvectors);
注意
eigenvalues: 是一个对角矩阵,其对角元素是哈密顿量矩阵的特征值。 如果原始哈密顿量矩阵是 N×N 的,那么 eigenvalues 也是 N×N 的对角矩阵。
eigenvectors: 是一个矩阵,其列向量是对应于特征值的特征向量。 如果原始哈密顿量矩阵是 N×N 的,那么 eigenvectors 也是 N×N 的矩阵。
我们可以发现其实精确对角化其实是一个很简单的事情,就是一个指令就能做到,但是做数值主要是需要对这个模型的本征值和本征态进行进一步的解析,例如求解保真度定义 1 、纠缠熵等对这个模型的物理进行深层次的分析。