排列不变性

class Dicke(
N,
hamiltonian=None,
emission=0.0,
dephasing=0.0,
pumping=0.0,
collective_emission=0.0,
collective_dephasing=0.0,
collective_pumping=0.0,
)[source]

构建Lindbladian和Liouvillian矩阵的Dicke类。

Parameters:
N: int

二级系统的数量。

hamiltonianQobj

迪克基中的哈密顿量。

矩阵的维度是 (nds, nds),其中 nds 是 Dicke 状态的数量。哈密顿量可以使用由 jspin 函数给出的算子来构建。

emission: float

非相干发射系数(也称为非辐射发射)。 默认值:0.0

dephasing: float

局部去相位系数。 默认值:0.0

pumping: float

非相干泵浦系数。 默认值:0.0

collective_emission: float

集体(超辐射)发射系数。 默认值:0.0

collective_pumping: float

集体泵浦系数。 默认值:0.0

collective_dephasing: float

集体失相系数。 默认值:0.0

Attributes:
N: int

二级系统的数量。

hamiltonianQobj

迪克基中的哈密顿量。

矩阵的维度是 (nds, nds),其中 nds 是 Dicke 状态的数量。哈密顿量可以使用在“dicke”基中由 jspin 函数给出的算子来构建。

emission: float

非相干发射系数(也称为非辐射发射)。 默认值:0.0

dephasing: float

局部去相位系数。 默认值:0.0

pumping: float

非相干泵浦系数。 默认值:0.0

collective_emission: float

集体(超辐射)发射系数。 默认值:0.0

collective_dephasing: float

集体失相系数。 默认值:0.0

collective_pumping: float

集体泵浦系数。 默认值:0.0

nds: int

迪克态的数量。

dshape: tuple

希尔伯特空间在Dicke或非耦合基中的形状。 默认值: (nds, nds).

示例

>>> from qutip.piqs import Dicke, jspin
>>> N = 2
>>> jx, jy, jz = jspin(N)
>>> jp = jspin(N, "+")
>>> jm = jspin(N, "-")
>>> ensemble = Dicke(N, emission=1.)
>>> L = ensemble.liouvillian()
c_ops()[source]

在全希尔伯特空间2^N中构建坍缩算子。

Returns:
c_ops_list: list

在2^N希尔伯特空间中包含坍缩算子的列表。

coefficient_matrix()[source]

为对角问题构建ODE的系数矩阵。

Returns:
M: ndarray

ODE dp/dt = Mp 的系数矩阵 M。 p 是密度矩阵 rho 在 Dicke 基中对角矩阵元素的向量。

lindbladian()[source]

构建耗散动力学的Lindbladian超算子。

Returns:
lindbladianQobj

Lindbladian 矩阵作为 qutip.Qobj

liouvillian()[source]

使用Dicke基构建总Liouvillian。

Returns:
liouvQobj

系统的Liouvillian矩阵。

pisolve(initial_state, tlist)[source]

更快地求解对角哈密顿量和初始状态。

Parameters:
initial_stateQobj

初始状态指定为qutip.Qbj类型的密度矩阵。

tlist: ndarray

一个用于积分的时间步长列表的一维numpy数组

Returns:
result: list

一个类型为qutip.piqs.Result的字典,用于保存演化的结果。

class Pim(
N,
emission=0.0,
dephasing=0,
pumping=0,
collective_emission=0,
collective_pumping=0,
collective_dephasing=0,
)[source]

排列不变矩阵类。

使用生成排列不变矩阵的参数初始化类,该矩阵演化给定的对角初始状态 p 如下:

dp/dt = Mp

Parameters:
N: int

二级系统的数量。

emission: float

非相干发射系数(也称为非辐射发射)。 默认值:0.0

dephasing: float

局部去相位系数。 默认值:0.0

pumping: float

非相干泵浦系数。 默认值:0.0

collective_emission: float

集体(超辐射)发射系数。 默认值:0.0

collective_pumping: float

集体泵浦系数。 默认值:0.0

collective_dephasing: float

集体失相系数。 默认值:0.0

Attributes:
N: int

二级系统的数量。

emission: float

非相干发射系数(也称为非辐射发射)。 默认值:0.0

dephasing: float

局部去相位系数。 默认值:0.0

pumping: float

非相干泵浦系数。 默认值:0.0

collective_emission: float

集体(超辐射)发射系数。 默认值:0.0

collective_dephasing: float

集体失相系数。 默认值:0.0

collective_pumping: float

集体泵浦系数。 默认值:0.0

M: dict

一个嵌套字典结构 {row: {col: val}},用于保存矩阵 M 的非零元素

calculate_j_m(dicke_row, dicke_col)[source]

获取特定Dicke空间元素的j和m的值。

Parameters:
dicke_row, dicke_col: int

来自Dicke空间矩阵的行和列

Returns:
j, m: float

j 和 m 的值。

calculate_k(dicke_row, dicke_col)[source]

从Dicke空间中的当前行和列元素获取k值。

Parameters:
dicke_row, dicke_col: int

来自Dicke空间矩阵的行和列。

Returns
——-
k: int

给定Dicke空间元素的矩阵M的行索引。

coefficient_matrix()[来源]

生成控制对角情况动态的矩阵 M。

如果初始密度矩阵和哈密顿量是对角的,系统的演化由简单的常微分方程给出:dp/dt = Mp。

isdicke(dicke_row, dicke_col)[source]

检查矩阵中的元素是否是Dicke空间中的有效元素。 Dicke行:j值索引。Dicke列:m值索引。 如果元素存在于Dicke空间中,函数返回True,否则返回False。

Parameters:
dicke_row, dicke_colint

需要检查的Dicke空间中元素的索引

solve(rho0, tlist)[source]

求解对角态和哈密顿量演化的常微分方程。

tau1(j, m)[source]

计算相对于 (j, m, m) 的系数矩阵元素。

tau2(j, m)[source]

计算相对于 (j, m+1, m+1) 的系数矩阵元素。

tau3(j, m)[source]

计算相对于 (j+1, m+1, m+1) 的系数矩阵元素。

tau4(j, m)[source]

计算相对于 (j-1, m+1, m+1) 的系数矩阵元素。

tau5(j, m)[source]

计算相对于 (j+1, m, m) 的系数矩阵元素。

tau6(j, m)[source]

计算相对于 (j-1, m, m) 的系数矩阵元素。

tau7(j, m)[source]

计算相对于 (j+1, m-1, m-1) 的系数矩阵元素。

tau8(j, m)[source]

计算相对于 (j, m-1, m-1) 的系数矩阵元素。

tau9(j, m)[source]

计算相对于 (j-1, m-1, m-1) 的系数矩阵元素。

tau_valid(dicke_row, dicke_col)[source]

找到适用于给定TLS数量的(dicke_row, dicke_col)值的Tau函数。这将计算有效的tau值并返回一个指定tau函数名称和值的字典。

Parameters:
dicke_row, dicke_colint

需要检查的Dicke空间中的元素索引。

Returns:
taus: dict

一个键值对字典,形式为 {tau: value},包含该Dicke空间元素的行和列的有效taus。

置换不变量子求解器 (PIQS)

该模块通过利用置换对称性和使用Dicke基,计算在存在局部和集体过程的情况下,相同两能级系统(TLS)集合动力学的Liouvillian。它还允许表征密度矩阵的非线性函数。

am(j, m)[source]

计算稍后使用的运算符 am

ap 的作用由以下公式给出: \(J_{-}\lvert j,m\rangle = A_{-}(jm)\lvert j,m-1\rangle\)

Parameters:
j: float

j的值。

m: float

m的值。

Returns:
a_minus: float

\(a_{-}\) 的值。

ap(j, m)[source]

通过应用\(J_+\lvert j,m\rangle\)来计算系数ap

ap 的作用由以下公式给出: \(J_{+}\lvert j, m\rangle = A_{+}(j, m) \lvert j, m+1\rangle\)

Parameters:
j, m: float

在dicke基\(\lvert j, m\rangle\)中j和m的值。

Returns:
a_plus: float

\(a_{+}\)的值。

block_matrix(N, elements='ones')[source]

为Dicke基构造块对角矩阵。

Parameters:
Nint

两级系统的数量。

elementsstr {‘ones’, ‘degeneracy’}, default: ‘ones’
Returns:
block_matrndarray

一个维度为 (nds,nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态数。每个矩阵元素填充为 1 或简并值。

collapse_uncoupled(
N,
emission=0.0,
dephasing=0.0,
pumping=0.0,
collective_emission=0.0,
collective_dephasing=0.0,
collective_pumping=0.0,
)[source]

在未耦合基中创建Lindbladian的崩溃算子(c_ops)

这些运算符处于两级系统(TLS)SU(2) Pauli矩阵的非耦合基中。

Parameters:
N: int

二级系统的数量。

emission: float, default: 0.0

非相干发射系数(也称为非辐射发射)。

dephasing: float, default: 0.0

局部退相干系数。

pumping: float, default: 0.0

非相干泵浦系数。

collective_emission: float, default: 0.0

集体(超辐射)发射系数。

collective_pumping: float, default: 0.0

集体泵浦系数。

collective_dephasing: float, default: 0.0

集体退相干系数。

Returns:
c_ops: list

系统的崩溃操作符列表作为 Qobj

注释

崩溃操作符列表可以提供给qutip.mesolve。 请注意,操作符被放置在一个维度为\(2^N\)的希尔伯特空间中。 因此,该方法仅适用于小的N(大约为10)。

css(
N,
x=0.7071067811865475,
y=0.7071067811865475,
basis='dicke',
coordinates='cartesian',
)[source]

生成相干自旋态(CSS)的密度矩阵。

它可以定义为, \(\lvert CSS\rangle = \prod_i^N(a\lvert1\rangle_i+b\lvert0\rangle_i)\) 其中 \(a = sin(\frac{\theta}{2})\)\(b = e^{i \phi}\cos(\frac{\theta}{2})\)。 默认基是Dicke空间的 \(\lvert j, m\rangle \langle j, m'\rvert\)。 默认状态是对称的CSS, \(\lvert CSS\rangle = \lvert+\rangle\)

Parameters:
N: int

二级系统的数量。

x, y: float, default: sqrt(1/2)

CSS状态的系数。

basis: str {“dicke”, “uncoupled”}, default: “dicke”

使用的基础。

coordinates: str {“cartesian”, “polar”}, default: “cartesian”

如果是极坐标,则系数构造为 \(sin(x/2), cos(x/2)e^(iy)`\)

Returns:
rho: Qobj

CSS状态密度矩阵。

dicke(N, j, m)[source]

在Dicke基中生成一个Dicke态作为纯密度矩阵。

例如,对于N = 2,由\(\lvert j, m\rangle = \lvert 1, 0\rangle\)给出的超辐射态,该状态表示为大小为(nds, nds)或(4, 4)的密度矩阵,其中(1, 1)元素设置为1。

Parameters:
N: int

二级系统的数量。

j: float

Dicke 状态 (j, m) 的特征值 j。

m: float

Dicke 状态 (j, m) 的特征值 m。

Returns:
rho: Qobj

密度矩阵。

dicke_basis(N, jmm1)[源代码]

初始化多个 (j, m, m1) 的 Dicke 状态的密度矩阵。

此函数可用于在Dicke基中构建任意状态 \(\lvert j, m\rangle\langle j, m'\rvert\)。我们为字典jmm1中的每个(j, m, m1)值创建系数。密度矩阵的(i, k)索引到\(\lvert j, m\rangle\)值的映射由cythonized函数jmm1_dictionary给出。根据给定的系数字典为每个(j, m, m1)创建密度矩阵。

Parameters:
N: int

二级系统的数量。

jmm1: dict

一个字典 {(j, m, m1): p},它为 (j, m, m1) 矩阵元素提供密度 p。

Returns:
rho: Qobj

迪克基中的密度矩阵。

dicke_blocks(rho)[源代码]

在Dicke基中创建块对角密度矩阵的块列表。

Parameters:
rhoQobj

一个维度为 (nds,nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态数量。

Returns:
square_blocks: list of np.ndarray

返回块列表。

dicke_blocks_full(rho)[source]

给出Dicke基矩阵的完整(2^N维)块列表。

Parameters:
rhoQobj

一个维度为 (nds,nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态数量。

Returns:
full_blockslist

在2^N空间中为N个量子位扩展的块列表。

dicke_function_trace(f, rho)[source]

计算Dicke密度矩阵上函数的迹。 :param f: rho的泰勒可展开函数。 :type f: 函数 :param rho: Dicke基中的密度矩阵。 :type rho: Qobj

Returns:
resfloat

非线性函数在rho上的轨迹。

energy_degeneracy(N, m)[source]

计算具有相同能量的Dicke态的数量。

使用Decimals类可以探索N > 1000,与内置函数scipy.special.binom不同。

Parameters:
N: int

二级系统的数量。

m: float

总自旋z轴投影特征值。 这与总能量成正比。

Returns:
degeneracy: int

能量简并

entropy_vn_dicke(rho)[来源]

Dicke基密度矩阵的冯·诺伊曼熵。

Parameters:
rhoQobj

一个维度为 (nds, nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态的数量。

Returns:
entropy_dm: float

熵。使用简并度来乘以每个块。

excited(N, basis='dicke')[source]

生成激发态的密度矩阵。

这个状态在默认的Dicke基中由(N/2, N/2)给出。如果参数basis是“uncoupled”,那么它会在一个2**N维的希尔伯特空间中生成状态。

Parameters:
N: int

二级系统的数量。

basis: str, {“dicke”, “uncoupled”}, default: “dicke”

使用的基础。

Returns:
state: Qobj

请求基中的激发态密度矩阵。

ghz(N, basis='dicke')[source]

生成GHZ态的密度矩阵。

如果参数 basis 是“uncoupled”,那么它会在一个 \(2^N\) 维的希尔伯特空间中生成状态。

Parameters:
N: int

二级系统的数量。

basis: str, {“dicke”, “uncoupled”}, default: “dicke”

使用的基础。

Returns:
state: Qobj

请求基中的GHZ态密度矩阵。

ground(N, basis='dicke')[source]

生成基态的密度矩阵。

这个状态在Dicke基中由(N/2, -N/2)给出。如果参数 basis是“uncoupled”,那么它会在一个 \(2^N\)维的希尔伯特空间中生成该状态。

Parameters:
N: int

二级系统的数量。

basis: str, {“dicke”, “uncoupled”}, default: “dicke”

使用的基础。

Returns:
state: Qobj

请求基态下的密度矩阵。

identity_uncoupled(N)[source]

\(2^N\)维希尔伯特空间中生成单位矩阵。

单位矩阵由N个TLS的张量积形成。

Parameters:
N: int

二级系统的数量。

Returns:
identity: Qobj

单位矩阵。

isdiagonal(mat)[source]

检查输入矩阵是否为对角矩阵。

Parameters:
mat: ndarray/Qobj

一个二维的numpy数组

Returns:
diag: bool

根据输入矩阵是否为对角矩阵返回True/False。

jspin(N, op=None, basis='dicke')[source]

计算总代数的集体运算符列表。

默认使用Dicke基\(\lvert j,m\rangle\langle j,m'\rvert\)。否则,使用“非耦合”时,操作符位于\(2^N\)空间中。

Parameters:
N: int

两级系统的数量。

op: str {‘x’, ‘y’, ‘z’, ‘+’, ‘-‘}, optional

该操作符返回‘x’,’y’,’z’,’+’,’-‘。 如果没有给出操作符,则输出是[‘x’,’y’,’z’]的操作符列表。

basis: str {“dicke”, “uncoupled”}, default: “dicke”

操作符的基础。

Returns:
j_alg: list or Qobj

一个qutip.Qobj列表,表示“dicke”或“uncoupled”基中的所有运算符,或请求的单个运算符。

m_degeneracy(N, m)[source]

计算具有相同能量的Dicke状态\(\lvert j, m\rangle\)的数量。

Parameters:
N: int

二级系统的数量。

m: float

总自旋z轴投影特征值(与总能量成正比)。

Returns:
degeneracy: int

m-退化。

num_dicke_ladders(N)[source]

计算Dicke空间中的梯子总数。

对于N个两级系统的集合,它计算存在多少个不同的“j”或块对角矩阵中的块数。

Parameters:
N: int

二级系统的数量。

Returns:
Nj: int

迪克梯子的数量。

num_dicke_states(N)[source]

计算Dicke状态的数量。

Parameters:
N: int

二级系统的数量。

Returns:
nds: int

迪克态的数量。

num_tls(nds)[source]

计算两级系统的数量。

Parameters:
nds: int

迪克态的数量。

Returns:
N: int

二级系统的数量。

purity_dicke(rho)[来源]

计算Dicke基中密度矩阵的纯度。 它考虑了密度矩阵中的退化块。

Parameters:
rhoQobj

在qutip.piqs.jspin(N)的Dicke基中的密度矩阵,适用于N个自旋。

Returns:
purityfloat

量子态的纯度。 对于纯态,纯度为1;对于混合态,纯度为0<=purity<1。

spin_algebra(N, op=None)[源代码]

创建包含自旋算符的列表 [sx, sy, sz]。

操作符是为N个两级系统(TLSs)的集合构建的。列表中的每个元素,即sx,是一个qutip.Qobj对象(自旋矩阵)的向量,因为它包含了N个TLS的SU(2)泡利矩阵的列表。每个TLS操作符sx[i],其中i = 0, …, (N-1),被放置在一个\(2^N\)维的希尔伯特空间中。

Parameters:
N: int

二级系统的数量。

Returns:
spin_operators: list or Qobj

一个qutip.Qobj操作符的列表 - [sx, sy, sz] 或所请求的操作符。

注释

sx[i] 是复合希尔伯特空间中的 \(\frac{\sigma_x}{2}\)

state_degeneracy(N, j)[源代码]

计算迪克态的简并度。

每个状态 \(\lvert j, m\rangle\) 包含 D(N,j) 不可约表示 \(\lvert j, m, \alpha\rangle\)

使用小数来计算更高的分子和分母数字。

Parameters:
N: int

二级系统的数量。

j: float

总自旋特征值(协同性)。

Returns:
degeneracy: int

状态简并。

superradiant(N, basis='dicke')[source]

生成超辐射态的密度矩阵。

这个状态在Dicke基中由(N/2, 0)或(N/2, 0.5)给出。 如果参数basis是“uncoupled”,那么它会在一个2**N维的希尔伯特空间中生成状态。

Parameters:
N: int

二级系统的数量。

basis: str, {“dicke”, “uncoupled”}, default: “dicke”

使用的基础。

Returns:
state: Qobj

在请求的基中的超辐射态密度矩阵。

tau_column(tau, k, j)[source]

确定矩阵中非零元素的列索引,针对特定行 k 和来自 Dicke 空间的 j 值。

Parameters:
tau: str

用于检查此kj的tau函数。

k: int

矩阵M的行,需要计算其非零元素。

j: float

这一行的j的值。