哈密顿量模拟
概述
unitarylab_algorithms.hamiltonian_simulation 包提供五种近似哈密顿量 时演算符 的方法。所有方法接受相同的核心输入(H、t、error),在近似策略、线路深度和精度保证上各有不同。
| 方法 | 类 | 策略 |
|---|---|---|
| Suzuki-Trotter 乘积公式演化算法 | TrotterAlgorithm | 乘积公式分解 |
| qDrift 算法 | QDriftAlgorithm | 随机乘积公式 |
| 泰勒级数哈密顿量模拟 | TaylorAlgorithm | 截断 Taylor 级数 |
| 量子信号处理哈密顿量模拟(QSP-HS) | QSPHSAlgorithm | 量子信号处理多项式 |
| Cartan 分解算法 | CartanDecompositionAlgorithm | Lie 代数 Cartan–Lax 流 |
方法选择建议
| 场景 | 推荐方法 |
|---|---|
| 短时演化、简单哈密顿量 | Suzuki-Trotter(一阶或二阶) |
| 随机/概率模拟 | qDrift |
| 高精度、中等深度 | 泰勒级数 |
| 稀疏哈密顿量、长时演化 | QSP-HS |
| 实对称哈密顿量、精确分解 | Cartan 分解 |
Suzuki-Trotter 乘积公式演化算法
背景
Trotter–Suzuki 乘积公式将 近似为 (一阶或更高阶)。该方法实现简单,是工程中最广泛使用的哈密顿量模拟方法。
一阶误差: 二阶(Suzuki):
导入
from unitarylab_algorithms.hamiltonian_simulation.trotter.algorithm import TrotterAlgorithm.run() 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
H | np.ndarray | — | 厄米哈密顿量矩阵(方阵) |
t | float | — | 总演化时间 |
error | float | — | 目标近似误差(为未来自适应实现预留) |
order | int | 1 | Trotter–Suzuki 公式阶数(1 或 2) |
steps | int | 1000 | 时间步数 |
示例
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() 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
H | np.ndarray | — | 厄米哈密顿量矩阵 |
t | float | — | 总演化时间 |
error | float | — | 目标近似误差(为未来实现预留) |
steps | int | 5000 | 随机样本数(越大精度越高) |
示例
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() 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
H | np.ndarray | — | 厄米哈密顿量矩阵 |
t | float | — | 总演化时间 |
error | float | — | 目标近似误差(为未来实现预留) |
degree | int | 15 | Taylor 展开阶数 |
示例
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() 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
H | np.ndarray | — | 厄米哈密顿量矩阵 |
t | float | — | 总演化时间 |
error | float | — | 目标近似误差(为未来实现预留) |
degree | int | 15 | QSP 多项式阶数(越大精度越高) |
beta | float | 0.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() 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
H | np.ndarray | list | — | 实对称哈密顿量 |
t | float | — | 总演化时间 |
error | float | — | 非对角分量范数的停止容差 |
lr | float | (自动) | Lax 流积分基础步长 |
max_steps | int | (自动) | Lax 更新步数上限 |
reps | int | (自动) | 自适应缩放前的迭代预算 |
示例
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可以改善收敛性。
最后更新于