目录描述

  • 海森堡模型的基态计算
  • 1.二自旋
  • 2. 二自旋代码
  • 3.退火算法
  • 4.退火算法代码

海森堡模型的基态计算

1.二自旋

定义磁场中二自旋的海森堡(Heisenberg)模型:
H^(hα)=∑α=x,y,z[s^1αs^2α+hα(s^1α+s^2α)]\hat{H}(h^\alpha) = \sum_{\alpha = x,y,z}[\hat{s}_1^\alpha\hat{s}_2^\alpha+h^\alpha(\hat{s}_1^\alpha+\hat{s}_2^\alpha)]H^(hα)=α=x,y,z∑​[s^1α​s^2α​+hα(s^1α​+s^2α​)]
H^\hat{H}H^表示哈密顿量
按理说s^1αs^2α\hat{s}_1^\alpha\hat{s}_2^\alphas^1α​s^2α​为4x4的矩阵,s^1α,s^2α\hat{s}_1^\alpha,\hat{s}_2^\alphas^1α​,s^2α​与hαh^\alphahα乘积下为一个2x2的矩阵,解决方法为为:s^1α,s^2α\hat{s}_1^\alpha,\hat{s}_2^\alphas^1α​,s^2α​分别直积上一个2x2的单位阵
其中,hαh^\alphahα定义为沿自旋α\alphaα方向的外磁场。
下面我们考虑自旋1/2,选择s^z\hat{s}^zs^z本征态作为基矢
为简便起见:设hx=hy=0,hz=hh^x = h^y =0,h^z = hhx=hy=0,hz=h
显而易见,H^\hat{H}H^不能写成多个单体算符的直积(把海森堡模型当作一个二体算符来处理)


H^\hat{H}H^的系数可看作是2 × 2 × 2 × 2的四阶张量或4 × 4矩阵,计算步骤为:
(a)获得各个自旋算符的矩阵;
(b)计算 s^1αs^2α\hat{s}_1^\alpha\hat{s}_2^\alphas^1α​s^2α​,为2 × 2 × 2 × 2张量;
(c)计算 s^1αI2\hat{s}_1^\alpha I_2s^1α​I2​与I1s^2αI_1\hat{s}_2^\alphaI1​s^2α​,为2 × 2 × 2 × 2张量;
(d)将各项求和,进行本征值分解获得最终结果(对H的系数矩阵进行本征值分解,求最小的本征向量与本征值,于是把基态计算出来)


显然,得到哈密顿量之后,可直接调用求解最低本征态的函数计算基态及基态能.

2. 二自旋代码

# 生成自旋算符的函数
def spin_operator_one_half():op = dict()op['i'] = np.eye(2)  # Identityop['x'] = np.zeros((2, 2))op['x'][0, 1] = 1 / 2op['x'][1, 0] = 1 / 2op['y'] = np.zeros((2, 2), dtype=np.complex)op['y'][0, 1] = 1j / 2op['y'][1, 0] = -1j / 2op['z'] = np.zeros((2, 2))op['z'][0, 0] = 1 / 2op['z'][1, 1] = -1 / 2return op# 生成二自旋海森堡哈密顿量
def heisenberg_hamilt(j, h):""":param j: list,耦合参数[Jx, Jy, Jz]:param h: list,外磁场[hx, hy, hz]:return H: 哈密顿量"""op = spin_operator_one_half()H = j[0]*np.kron(op['x'], op['x']) + j[1]*np.kron(op['y'], op['y']) + \j[2]*np.kron(op['z'], op['z']) #np.kron(a,b)两个阵列的Kronecker乘积(张量积)H += h[0] * (np.kron(op['x'], op['i']) + np.kron(op['i'], op['x']))H += h[1] * (np.kron(op['y'], op['i']) + np.kron(op['i'], op['y']))H += h[2] * (np.kron(op['z'], op['i']) + np.kron(op['i'], op['z']))if np.linalg.norm(np.imag(H)) < 1e-20:#np.imag()返回复杂参数的虚部H = np.real(H)#np.real()返回复杂参数的实部。return Hhamilt = heisenberg_hamilt([1, 1, 1], [0, 0, 0])  # 无磁场的二自旋海森堡哈密顿量
print('零磁场下海森堡哈密顿量 = ')
print(hamilt)

3.退火算法

想要计算基态,不一定要获得完整的哈密顿量
例-海森堡格点模型(无外场 ):H^=∑⟨i,j⟩H^ij,): \widehat{H}=\sum_{\langle i, j\rangle} \widehat{H}_{i j},):H=∑⟨i,j⟩​Hij​, 求和号每一项为二自旋海 森堡哈密顿量 H^ij=∑α=x,y,zs^iαs^jα,\widehat{H}_{i j}=\sum_{\alpha=x, y, z} \hat{s}_{i}^{\alpha} \hat{s}_{j}^{\alpha},Hij​=∑α=x,y,z​s^iα​s^jα​, ⟨i,j⟩\langle i, j\rangle⟨i,j⟩ 遍历图中所有相连的格点对
如图一维海森堡链:

基态计算的退火算法:基本原理为对任意初态∣φ⟩|\varphi\rangle∣φ⟩进行投影
lim⁡β→∞e−βH^∣φ⟩→∣g⟩\lim _{\beta \rightarrow \infty} e^{-\beta \hat{H}}|\varphi\rangle \rightarrow|g\rangle β→∞lim​e−βH^∣φ⟩→∣g⟩
(注: e−βH^e^{-\beta \hat{H}}e−βH^ 的最大本征态为| g⟩;\left.g\right\rangle ;g⟩; 回顾:最大本征问题的幕级数求解法)


例:考虑4个自旋构成的一维海森堡链,退火算法 具体步骤为:
(a)随机初始化量子态 ∣g0⟩i\left|g_{0}\right\rangle_{i}∣g0​⟩i​
(b)计算 ∣gt+1′⟩=e−τH^12e−τH^34∣gt⟩\left|g_{t+1}^{\prime}\right\rangle=e^{-\tau \widehat{H}_{12}} e^{-\tau \widehat{H}_{34}}\left|g_{t}\right\rangle∣∣​gt+1′​⟩=e−τH12​e−τH34​∣gt​⟩ 并归一化结果 iii
(c)计算 ∣gt+1⟩=e−τH^23∣gt+1′⟩\left|g_{t+1}\right\rangle=e^{-\tau \widehat{H}_{23}}\left|g_{t+1}^{\prime}\right\rangle∣gt+1​⟩=e−τH23​∣∣​gt+1′​⟩ 并归一化结果 iii
(d)检查| gt+1g_{t+1}gt+1​ )是否收敘,否则返回至步骤(b)。

退火算法的数学原理:Trotter-Suzuki分解 对于算符 A^\hat{A}A^ 和 B^,\hat{B},B^, 有如下关系
eτ(A^+B^)=eτA^eτB^+τ2[A^,B^]+⋯e^{\tau(\hat{A}+\hat{B})}=e^{\tau \hat{A}} e^{\tau \hat{B}}+\tau^{2}[\hat{A}, \hat{B}]+\cdots eτ(A^+B^)=eτA^eτB^+τ2[A^,B^]+⋯
当 A^\hat{A}A^ 和 B^\hat{B}B^ 对易时 ,eτ(A^+B^)=eτA^eτB^, \quad e^{\tau(\hat{A}+\hat{B})}=e^{\tau \hat{A}} e^{\tau \hat{B}},eτ(A^+B^)=eτA^eτB^
当 τ\tauτ 为小量时(且A^\hat{A}A^ 和 B^\hat{B}B^ 不对易), eτ(A^+B^)−eτA^eτB^=O(τ2)e^{\tau(\hat{A}+\hat{B})}-e^{\tau \hat{A}} e^{\tau \hat{B}}=O\left(\tau^{2}\right)eτ(A^+B^)−eτA^eτB^=O(τ2)
对于上述例子,取 τ\tauτ 为小量, 有
e−τH^≈e−τ(H^12+H^34)e−τH^23=e−τH^12e−τH^34e−τH^23e^{-\tau \widehat{H}} \approx e^{-\tau\left(\widehat{H}_{12}+\widehat{H}_{34}\right)} e^{-\tau \widehat{H}_{23}}=e^{-\tau \widehat{H}_{12}} e^{-\tau \widehat{H}_{34}} e^{-\tau \widehat{H}_{23}} e−τH≈e−τ(H12​+H34​)e−τH23​=e−τH12​e−τH34​e−τH23​
格子示意图如下所示:


在张量网络中,基于退火算法发展出了著名的时间演化块消减算法 [TEBD, PRL98, 070201 (2007)],但是在小尺寸可严格计算的体系中,并没有必要采用退火算法,因为在进行Trotter-Suzuke分解时会额外引入误差
下面引入一种更加直接的计算方法(通常被称为严格对角化算法):
(a)定义线性映射f(∣φ⟩):∣φ⟩→(I−τH^)∣φ⟩=∣φ⟩−τ∑⟨i,j⟩H^ij∣φ⟩f(|\varphi\rangle):|\varphi\rangle \rightarrow(I-\tau \widehat{H})|\varphi\rangle=|\varphi\rangle-\tau \sum_{\langle i, j\rangle} \widehat{H}_{i j}|\varphi\ranglef(∣φ⟩):∣φ⟩→(I−τH)∣φ⟩=∣φ⟩−τ∑⟨i,j⟩​Hij​∣φ⟩
(b)求解线性映射fff的最大本征值与本征态
(其中,

(6)自旋模型基态算法相关推荐

  1. 机器学习三要素之数据、模型、算法

    参考:https://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8/topic/5b1086eccad6fe44db4c1268 1. 机器学习 ...

  2. 讲解AI三大方向的模型与算法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 开课吧教育 公开课:人工智能的模型与算法 AI应用会是人类最好的工具, 是人类智能的延伸和拓展. ...

  3. 收藏 | 机器学习模型与算法最全分类汇总!

    题图 | AltumCode 机器学习模型与算法包括线性回归.对数几率回归.LASSO回归.Ridge回归.LDA.k近邻.决策树.感知机.神经网络.支持向量机.AdaBoost.GBDT.XGBoo ...

  4. 中国工程院院士陈左宁详述:人工智能模型和算法的七大发展趋势

    来源:C114通信网 在近日举行的"第十六届CCF全过高性能计算学术年会"上,中国工程院副院长.中国科协副主席.中国工程院院士陈左宁发表了题为<人工智能进展对算力需求分析&g ...

  5. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片——五个架构设计思维导图

    TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片--五个架构设计思维导图 目录 TF中的Deep Dream实践:利用Inception模型+GD算 ...

  6. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片

    TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片 目录 输出结果 设计思路 代码(部分)实现 输出结果 设计思路 代码(部分)实现 # coding ...

  7. TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片

    TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 # coding:utf-8#TF之DD ...

  8. TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片

    TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 TF之TFDeepDream:生成更大尺寸 ...

  9. 图论模型Floyd算法

    图论模型Floyd算法 一.简介 二.MATLAB执行代码 一.简介 二.MATLAB执行代码 tulun2.m a= [ 0,50,inf,40,25,10;50,0,15,20,inf,25;in ...

最新文章

  1. 15个目标检测开源数据集汇总
  2. 配置ssl证书_Nginx监听443端口配置SSL证书
  3. latex中插入visio矢量图的方法
  4. Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
  5. MATLAB中plot函数的linespec参数
  6. C++普通引用和常引用
  7. SAP UI5 oApplicationFacade - where and when it is initialized
  8. 使用ASP.NET Core 实现Docker的HealthCheck指令
  9. 如何在Linux上使用VIM进行.Net Core开发
  10. zookeeper集群部署 精简版本
  11. java nio集群_java – Hazelcast:连接到远程集群
  12. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境
  13. ubuntu12.04 的 root 用户显示 中文 和 默认显示中文的方法
  14. html中高与行高的区别,CSS中line-height与height有什么区别
  15. 11.频域里的卷积——平滑和模糊,2D例子,低通和高通滤波器_2
  16. JAVAFX输入法的实现
  17. 携程去哪儿合并可行性研究报告
  18. FPGA的工作原理简述
  19. python实现排序算法lowb三人组之插入排序
  20. 用Vue制作图片翻面效果

热门文章

  1. linux mtd 用法,Linux mtd与ubi关系详解,ubi使用命令总结
  2. 如何查看yandex文字搜索广告的搜索词?
  3. “硬核”刘强东是怎么炼成的?
  4. js计算当前时间的为年的第几周,以及周对应的时间范围
  5. 【Busybox】Busybox源码分析-04 | ash和login程序
  6. win10系统分区方案教程
  7. 关于BERT预训练模型,你想知道的都在这~
  8. Ubuntu22.04平台安装mesa
  9. Shiro入门以及Shiro与web整合
  10. JAVA程序设计-头歌实训-------# 第一阶段 Java语言快速入门