cuquantum.densitymat.DenseOperator

class cuquantum.densitymat.DenseOperator(data, callback=None)[源码]

来自数据缓冲区和可选回调的密集基本算符。

参数
  • data – 算符元素的数据缓冲区。

  • callback – 带有签名 (t, args) -> np.ndarray 的 CPU 回调函数。

注意

  • 将在数据缓冲区上创建副本,并且可以通过 data 属性访问。

  • 返回的数组在形状和数据类型方面需要与提供的数据缓冲区一致。当此实例参与 OperatorOperatorActioncompute 方法时,数据缓冲区将被更新。

示例

>>> import numpy as np
>>> from cuquantum.densitymat import DenseOperator

假设我们想在维度为 3 的希尔伯特空间上构造一个创建算符作为 DenseOperator。它可以直接从数据缓冲区构造为:

>>> data = np.array([
>>>     [0, 0, 0],
>>>     [1.0, 0, 0],
>>>     [0, np.sqrt(2), 0],
>>> ])
>>> dense_op = DenseOperator(data)

方法

__add__(other: Union[DenseOperator, MultidiagonalOperator]) DenseOperator[源码]

将一个基本算符添加到此实例并返回一个新的 DenseOperator

__init__(data: Union[numpy.ndarray, cupy.ndarray], callback: Optional[Callable[[float, Sequence], numpy.ndarray]] = None) None[源码]

从数据缓冲区和可选回调初始化一个密集基本算符。

__matmul__(other: Union[DenseOperator, MultidiagonalOperator]) DenseOperator[源码]

在此实例和一个基本算符之间执行矩阵乘法,并返回一个新的 DenseOperator

__mul__(scalar: numbers.Number) DenseOperator[源码]

从左侧用标量乘以该实例。

__rmul__(scalar: numbers.Number) DenseOperator[源码]

从右侧用标量乘以该实例。

__sub__(other: Union[DenseOperator, MultidiagonalOperator]) DenseOperator[源码]

从此实例中减去一个基本算符,并返回一个新的 DenseOperator

copy() DenseOperator[源码]

返回密集基本算符的副本。

dag() DenseOperator[源码]

返回此实例的共轭复转置。

to_array(t: Optional[float] = None, args: Optional[Sequence] = None, device: str = 'cpu') Union[numpy.ndarray, cupy.ndarray][源码]

返回密集基本算符的数组形式。

参数
  • t – 回调中的时间变量,仅当回调不是 None 时才需要。

  • args – 回调中的附加参数,仅当回调不是 None 时才需要。

  • device – 返回数组的设备。默认为 "cpu"

返回值

指定设备上密集基本算符的数组形式。

属性

data

基本算符的数据缓冲区。