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 – 当前后端不支持量子态演化

kron(other)

得到与给定量子态之间的张量积

参数:

other (State) – 给定量子态

返回:

返回张量积

返回类型:

State

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