Skip to content

期望值 — 哈密顿量与泡利期望值 ​

期望值计算函数的 API 参考。这些函数计算可观测量算符相对于量子程序制备的量子态的期望值。

expval_hamiltonian ​

计算哈密顿量算符相对于给定程序制备的量子态的期望值。

签名 ​

python
expval_hamiltonian(
    prog: QProg,
    hamiltonian: Hamiltonian,
    shots: int = 1,
    model: NoiseModel = NoiseModel(),
    used_threads: int = 4,
    backend: str = "CPU",
    init_state: list[complex] = []
) -> float

参数 ​

参数类型说明
progQProg制备态的量子程序
hamiltonianHamiltonian哈密顿量算符
shotsint测量 shot 数(默认 1)
modelNoiseModel模拟的噪声模型(默认理想)
used_threadsint并行线程数(默认 4)
backendstr计算后端:"CPU" 或 "GPU"(默认 "CPU")
init_statelist[complex]起始态矢量,替代默认的 |0...0>(0.5.0 新增)

返回 ​

float — 哈密顿量的期望值 ⟨ψ|H|ψ⟩。

示例 ​

python
from pyqpanda3.core import H, CNOT, RX, QProg, expval_hamiltonian
from pyqpanda3.hamiltonian import PauliOperator
from pyqpanda3.hamiltonian import Hamiltonian

# 构建态制备线路
prog = QProg()
prog << H(0) << CNOT(0, 1) << RX(0, 0.5)

# 定义哈密顿量:H = 0.5 * Z0 Z1 + 0.3 * X0
pauli_op = PauliOperator({"Z0 Z1": 0.5, "X0": 0.3})
ham = Hamiltonian(pauli_op)

# 计算期望值
exp_val = expval_hamiltonian(prog, ham, shots=1000)
print(f"Expectation value: {exp_val}")

运行结果:

Expectation value: 0.4387912809451864

数学背景 ​

期望值计算如下:

⟨H⟩=⟨ψ|H|ψ⟩=∑ici⟨ψ|Pi|ψ⟩

其中 H=∑iciPi 是分解为泡利项的形式。

expval_pauli_operator ​

计算泡利算符相对于给定程序制备的量子态的期望值。

签名 ​

python
expval_pauli_operator(
    prog: QProg,
    pauli_operator: PauliOperator,
    shots: int = 1,
    model: NoiseModel = NoiseModel(),
    used_threads: int = 4,
    backend: str = "CPU",
    init_state: list[complex] = []
) -> float

参数 ​

参数类型说明
progQProg制备态的量子程序
pauli_operatorPauliOperator泡利算符
shotsint测量 shot 数(默认 1)
modelNoiseModel模拟的噪声模型(默认理想)
used_threadsint并行线程数(默认 4)
backendstr计算后端:"CPU" 或 "GPU"(默认 "CPU")
init_statelist[complex]起始态矢量,替代默认的 |0...0>(0.5.0 新增),例如先前仿真产生、经 QResult.get_state_vector() 取回的状态

返回 ​

float — 泡利算符的期望值。

示例 ​

python
from pyqpanda3.core import H, QProg, expval_pauli_operator
from pyqpanda3.hamiltonian import PauliOperator

prog = QProg()
prog << H(0)

# 定义泡利算符:Z0
pauli_op = PauliOperator({"Z0": 1.0})

# 计算期望值(对于 |+> 态应该约为 0)
exp_val = expval_pauli_operator(prog, pauli_op, shots=1000)
print(f"Expectation of Z on |+>: {exp_val}")

运行结果:

Expectation of Z on |+>: 0.0

另见 ​

Released under the MIT License.