Skip to Content

哈密顿量模拟

概述

unitarylab_algorithms.hamiltonian_simulation 包提供五种近似哈密顿量 时演算符 的方法。所有方法接受相同的核心输入(Hterror),在近似策略、线路深度和精度保证上各有不同。

方法策略
Suzuki-Trotter 乘积公式演化算法TrotterAlgorithm乘积公式分解
qDrift 算法QDriftAlgorithm随机乘积公式
泰勒级数哈密顿量模拟TaylorAlgorithm截断 Taylor 级数
量子信号处理哈密顿量模拟(QSP-HS)QSPHSAlgorithm量子信号处理多项式
Cartan 分解算法CartanDecompositionAlgorithmLie 代数 Cartan–Lax 流

方法选择建议

场景推荐方法
短时演化、简单哈密顿量Suzuki-Trotter(一阶或二阶)
随机/概率模拟qDrift
高精度、中等深度泰勒级数
稀疏哈密顿量、长时演化QSP-HS
实对称哈密顿量、精确分解Cartan 分解

Suzuki-Trotter 乘积公式演化算法

背景

Trotter–Suzuki 乘积公式将 近似为 (一阶或更高阶)。该方法实现简单,是工程中最广泛使用的哈密顿量模拟方法。

一阶误差: 二阶(Suzuki):

导入

from unitarylab_algorithms.hamiltonian_simulation.trotter.algorithm import TrotterAlgorithm

.run() 参数

参数类型默认值说明
Hnp.ndarray厄米哈密顿量矩阵(方阵)
tfloat总演化时间
errorfloat目标近似误差(为未来自适应实现预留)
orderint1Trotter–Suzuki 公式阶数(1 或 2)
stepsint1000时间步数

示例

import numpy as np from unitarylab_algorithms.hamiltonian_simulation.trotter.algorithm import TrotterAlgorithm H = np.array([[2, 1], [1, 3]]) algo = TrotterAlgorithm() result = algo.run(H=H, t=1.0, error=1e-8, order=1, steps=1000) print(result['status'])

快速演示

from unitarylab_algorithms.hamiltonian_simulation.trotter.algorithm import test test()

qDrift 算法

背景

qDrift 是一种随机乘积公式,按系数量级对 Pauli 项进行采样,并以适当缩放角度应用它们。这产生了一个无偏的随机近似,当样本数 增大时收敛到精确演化。

门复杂度: ,其中

导入

from unitarylab_algorithms.hamiltonian_simulation.qdrift.algorithm import QDriftAlgorithm

.run() 参数

参数类型默认值说明
Hnp.ndarray厄米哈密顿量矩阵
tfloat总演化时间
errorfloat目标近似误差(为未来实现预留)
stepsint5000随机样本数(越大精度越高)

示例

import numpy as np from unitarylab_algorithms.hamiltonian_simulation.qdrift.algorithm import QDriftAlgorithm H = np.array([[2, 1], [1, 3]]) algo = QDriftAlgorithm() result = algo.run(H=H, t=1.0, error=1e-8, steps=5000) print(result['status'])

快速演示

from unitarylab_algorithms.hamiltonian_simulation.qdrift.algorithm import test test()

泰勒级数哈密顿量模拟

背景

Taylor 方法将 展开为截断 Taylor 级数到 阶,然后使用酉算符线性组合(LCU)实现每一项。可以用 项达到精度

导入

from unitarylab_algorithms.hamiltonian_simulation.taylor.algorithm import TaylorAlgorithm

.run() 参数

参数类型默认值说明
Hnp.ndarray厄米哈密顿量矩阵
tfloat总演化时间
errorfloat目标近似误差(为未来实现预留)
degreeint15Taylor 展开阶数

示例

import numpy as np from unitarylab_algorithms.hamiltonian_simulation.taylor.algorithm import TaylorAlgorithm H = np.array([[2, 1], [1, 3]]) algo = TaylorAlgorithm() result = algo.run(H=H, t=1.0, error=1e-8, degree=15) print(result['status'])

快速演示

from unitarylab_algorithms.hamiltonian_simulation.taylor.algorithm import test test()

量子信号处理哈密顿量模拟(QSP-HS)

背景

基于 QSP 的哈密顿量模拟构造一个量子线路,通过将 的本征值编码为信号并应用一系列受控酉算符和单比特旋转,来近似时演算符 。对于稀疏哈密顿量,QSP 可达到近最优门复杂度。

门复杂度:

导入

from unitarylab_algorithms.hamiltonian_simulation.qsp.algorithm import QSPHSAlgorithm

.run() 参数

参数类型默认值说明
Hnp.ndarray厄米哈密顿量矩阵
tfloat总演化时间
errorfloat目标近似误差(为未来实现预留)
degreeint15QSP 多项式阶数(越大精度越高)
betafloat0.7数值稳定性预条件因子(

示例

import numpy as np from unitarylab_algorithms.hamiltonian_simulation.qsp.algorithm import QSPHSAlgorithm H = np.array([[2, 1], [1, 3]]) algo = QSPHSAlgorithm() result = algo.run(H=H, t=1.0, error=1e-8, degree=15, beta=0.7) print(result['status'])

快速演示

from unitarylab_algorithms.hamiltonian_simulation.qsp.algorithm import test test()

Cartan 分解算法

背景

Cartan–Lax 流算法通过将 Lie 代数 分解为对称子代数 和反对称空间 ,来分解时演算符。所得线路形式为

要求: 必须是实对称矩阵。

导入

from unitarylab_algorithms.hamiltonian_simulation.cartan.algorithm import CartanDecompositionAlgorithm

.run() 参数

参数类型默认值说明
Hnp.ndarray | list实对称哈密顿量
tfloat总演化时间
errorfloat非对角分量范数的停止容差
lrfloat(自动)Lax 流积分基础步长
max_stepsint(自动)Lax 更新步数上限
repsint(自动)自适应缩放前的迭代预算

示例

import numpy as np from unitarylab_algorithms.hamiltonian_simulation.cartan.algorithm import CartanDecompositionAlgorithm H = np.array([[2, 1], [1, 2]]) algo = CartanDecompositionAlgorithm() result = algo.run(H=H, t=1.0, error=1e-3) print(result['status'])

快速演示

from unitarylab_algorithms.hamiltonian_simulation.cartan.algorithm import test test()

注意事项

  • Cartan 方法目前仅支持矩阵形式的哈密顿量,暂不支持 Pauli 字符串输入。
  • 对于病态哈密顿量,减小 lr 并增大 reps 可以改善收敛性。
最后更新于