paddle_quantum.state.state
量子态类的功能实现。
- class State(data, num_qubits=None, backend=None, dtype=None, override=False)
基类:
object
用于实现量子态的类。
- 参数:
data (Union[paddle.Tensor, np.ndarray, QCompute.QEnv]) – 量子态的数学解析形式。
num_qubits (int, optional) – 量子态所包含的量子比特数。默认为 None,会自动从 data 中推导出来。
backend (paddle_quantum.Backend, optional) – 指定量子态的后端实现形式。默认为 None,使用全局的默认后端。
dtype (str, optional) – 量子态的数据类型。默认为 None,使用全局的默认数据类型。
override (bool, optional) – 是否跳过输入校验,仅限于内部开发使用。默认为
False
。
- 抛出:
ValueError – 无法识别后端
- property ket
得到量子态的列向量形式。
- 抛出:
ValueError – 后端必须为 StateVector。
- 返回:
量子态的列向量形式
- property bra
得到量子态的行向量形式。
- 抛出:
ValueError – 后端必须为 StateVector。
- 返回:
量子态的行向量形式
- normalize()
得到归一化后量子态
- 抛出:
NotImplementedError – 当前后端不支持归一化
- evolve(H, t)
得到经过给定哈密顿量演化后的量子态
- 参数:
H (Union[np.ndarray, paddle.Tensor, Hamiltonian]) – 系统哈密顿量
t (float) – 演化时间
- 抛出:
NotImplementedError – 当前后端不支持量子态演化
- numpy()
得到量子态的数据的 numpy 形式。
- 返回:
量子态的数据的 numpy.ndarray 形式。
- 返回类型:
np.ndarray
- to(backend, dtype, device, blocking)
改变量子态的属性。
- 参数:
backend (str) – 指定量子态的新的后端实现形式。
dtype (str) – 指定量子态的新的数据类型。
device (str) – 指定量子态的新的存储设备。
blocking (str) – 如果为 False 并且当前 Tensor 处于固定内存上,将会发生主机到设备端的异步拷贝。否则会发生同步拷贝。如果为 None,blocking 会被设置为 True,默认 为False。
- 抛出:
NotImplementedError – 仅支持在态向量与密度矩阵之间进行转换
NotImplementedError – 不支持在该设备或blocking上进行转换
- clone()
返回当前量子态的副本。
- 返回:
一个内容和当前量子态都相同的新的量子态。
- 返回类型:
paddle_quantum.State
- property oper_history
储存在QPU后端的算子历史信息
- 返回:
算子的历史信息
- 返回类型:
List[Dict[str, Union[str, List[int], paddle.Tensor]]]
- 抛出:
NotImplementedError – 此属性应仅适用于 QuLeaf 后端。
ValueError – 无法获取算子历史信息,请先运行电路
- expec_val(hamiltonian, shots: int)
量子态关于输入的可观测量的期望值。
- 参数:
hamiltonian (paddle_quantum.Hamiltonian) – 输入的可观测量。
shots (int) – 测量次数。
- 抛出:
NotImplementedError – 所指定的后端必须为量桨已经实现的后端。
- 返回:
该量子态关于可观测量的期望值。
- 返回类型:
float
- measure(shots=0, qubits_idx=None, plot=False, record=False)
对量子态进行测量。
- 参数:
shots (int, optional) – 测量次数。默认为 0,即计算解析解。
qubits_idx (Union[Iterable[int], int], optional) – 要测量的量子态下标。默认为 None,表示全部测量。
plot (bool, optional) – 是否画图。默认为 Flase,表示不画图。
record (bool, optional) – 是否返回原始的测量结果记录。默认为 Flase,表示不返回。
- 抛出:
ValueError – 测量的次数必须大于0。
NotImplementedError – Quleaf后端暂不支持record功能。
NotImplementedError – 所指定的后端必须为量桨已经实现的后端。
NotImplementedError – 输入的量子比特下标有误。
ValueError – 使用record功能要求测量次数必须大于0。
- 返回:
测量结果。
- 返回类型:
dict
- reset_sequence(target_sequence=None)
根据输入顺序重置量子比特顺序
- 参数:
target_sequence (Union[List[int],None]) – 目标顺序,默认为
None
。- 返回:
在输入比特顺序下的量子态
- 返回类型:
paddle_quantum.state.state.State