排列不变性
- 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,
构建Lindbladian和Liouvillian矩阵的Dicke类。
- Parameters:
- N: int
二级系统的数量。
- hamiltonian
Qobj
迪克基中的哈密顿量。
矩阵的维度是 (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
二级系统的数量。
- hamiltonian
Qobj
迪克基中的哈密顿量。
矩阵的维度是 (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()
- class Pim(
- N,
- emission=0.0,
- dephasing=0,
- pumping=0,
- collective_emission=0,
- collective_pumping=0,
- collective_dephasing=0,
排列不变矩阵类。
使用生成排列不变矩阵的参数初始化类,该矩阵演化给定的对角初始状态 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的行索引。
置换不变量子求解器 (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,
在未耦合基中创建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',
生成相干自旋态(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状态密度矩阵。
- rho:
- 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
密度矩阵。
- rho:
- 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
迪克基中的密度矩阵。
- rho:
- dicke_blocks(rho)[源代码]
在Dicke基中创建块对角密度矩阵的块列表。
- Parameters:
- rho
Qobj
一个维度为 (nds,nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态数量。
- rho
- Returns:
- square_blocks: list of np.ndarray
返回块列表。
- dicke_blocks_full(rho)[source]
给出Dicke基矩阵的完整(2^N维)块列表。
- Parameters:
- rho
Qobj
一个维度为 (nds,nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态数量。
- rho
- 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:
- rho
Qobj
一个维度为 (nds, nds) 的二维块对角矩阵,其中 nds 是 N 个二能级系统的 Dicke 状态的数量。
- rho
- 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
请求基中的激发态密度矩阵。
- state:
- ghz(N, basis='dicke')[source]
生成GHZ态的密度矩阵。
如果参数
basis
是“uncoupled”,那么它会在一个 \(2^N\) 维的希尔伯特空间中生成状态。- Parameters:
- N: int
二级系统的数量。
- basis: str, {“dicke”, “uncoupled”}, default: “dicke”
使用的基础。
- Returns:
- state:
Qobj
请求基中的GHZ态密度矩阵。
- state:
- 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
请求基态下的密度矩阵。
- state:
- identity_uncoupled(N)[source]
在\(2^N\)维希尔伯特空间中生成单位矩阵。
单位矩阵由N个TLS的张量积形成。
- Parameters:
- N: int
二级系统的数量。
- Returns:
- identity:
Qobj
单位矩阵。
- identity:
- 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”基中的所有运算符,或请求的单个运算符。
- j_alg: list or
- 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
迪克梯子的数量。
- purity_dicke(rho)[来源]
计算Dicke基中密度矩阵的纯度。 它考虑了密度矩阵中的退化块。
- Parameters:
- rho
Qobj
在qutip.piqs.jspin(N)的Dicke基中的密度矩阵,适用于N个自旋。
- rho
- 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] 或所请求的操作符。
- spin_operators: list or
注释
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
状态简并。