PauliTerm
PauliTerm 表示泡利算符展开中的单项——即作用于特定量子比特的泡利矩阵的张量积,乘以标量系数:
其中
PauliTerm 是 PauliOperator 中最小可独立寻址的单元。您可以检查其系数、枚举各个泡利-量子比特对、将其转换为量子线路或以多种格式提取其原始数据。
方法
coef
python
PauliTerm.coef() -> complex返回此泡利项的复系数。
返回: 一个 complex 数。
to_qcircuit
python
PauliTerm.to_qcircuit() -> QCircuit将此泡利项转换为量子线路。项中的每个非恒等泡利被转换为相应的量子门(X、Y 或 Z)作用于对应量子比特。恒等泡利被跳过。
返回: 表示该项的 QCircuit 对象。
paulis
python
PauliTerm.paulis() -> list[PauliWithQbit]返回组成此项的带有对应量子比特索引的泡利矩阵列表。
返回: PauliWithQbit 对象列表,每个对应项中的一个量子比特。
qubits
python
PauliTerm.qubits() -> tuple[list[int], list[int]]返回此项中涉及的量子比特,分为仅受恒等作用和受非恒等泡利(
返回: 元组 (仅受恒等作用的量子比特, 受非恒等泡利作用的量子比特),每个元素是整数量子比特索引的列表。
max_qbit_idx
python
PauliTerm.max_qbit_idx() -> int返回此项引用的最大量子比特索引。
返回: 一个整数。
data_3tuple_complex_coeff
python
PauliTerm.data_3tuple_complex_coeff() -> tuple[str, list[int], complex]以包含泡利字符串、量子比特索引和复系数的单个元组形式返回内部数据。
返回: 例如 ("XXZ", [0, 1, 4], 1+2j)。
data_2tuple_complex_coeff
python
PauliTerm.data_2tuple_complex_coeff() -> tuple[str, complex]使用稀疏表示法(字符串中仅包含非恒等泡利)以 (泡利字符串, 复系数) 元组形式返回内部数据。
返回: 例如 ("Z0", 0.395+0j)。
data_3tuple_float_coeff
python
PauliTerm.data_3tuple_float_coeff() -> tuple[str, list[int], float]以单个带浮点系数的元组形式返回内部数据。如果系数有非零虚部则抛出错误。
返回: 例如 ("XXZ", [0, 1, 4], 1.0)。
data_2tuple_float_coeff
python
PauliTerm.data_2tuple_float_coeff() -> tuple[str, float]使用稀疏表示法以 (泡利字符串, 浮点系数) 元组形式返回内部数据。
返回: 例如 ("Z0", 0.395)。
示例
检查 PauliOperator 的项
python
from pyqpanda3.hamiltonian import PauliOperator
# 创建 PauliOperator 并检查其各个项
h = PauliOperator({"Z0 Z1": 0.5, "X0": 0.3})
for term in h.terms():
print(f"Coefficient: {term.coef()}")
for pwq in term.paulis():
print(f" Qubit {pwq.qbit()}: {pwq.pauli_char()}")
print()以不同格式提取数据
python
from pyqpanda3.hamiltonian import PauliOperator
h = PauliOperator({"X0 Y1 Z2": 1.5})
term = h.terms()[0]
# 带复系数的 3 元组
print(term.data_3tuple_complex_coeff())
# 输出: ('XYZ', [0, 1, 2], (1.5+0j))
# 带复系数的 2 元组(稀疏字符串)
print(term.data_2tuple_complex_coeff())
# 输出: ('X0 Y1 Z2', (1.5+0j))
# 浮点变体
print(term.data_3tuple_float_coeff())
print(term.data_2tuple_float_coeff())检查量子比特参与情况
python
from pyqpanda3.hamiltonian import PauliOperator
h = PauliOperator({"X0 I1 Z2": 1.0})
term = h.terms()[0]
identity_qubits, pauli_qubits = term.qubits()
print("Identity-only qubits:", identity_qubits) # [1]
print("Non-identity qubits:", pauli_qubits) # [0, 2]另见
- PauliOperator -- 包含 PauliTerms 的多项容器
- PauliWithQbit -- 单个量子比特上的单个泡利矩阵
- Hamiltonian -- 高级哈密顿量封装