环境

玻色子环境

class BosonicEnvironment(T: float = None, tag: Any = None)[source]

开放量子系统的玻色环境。它由其光谱密度和温度或等效地由其功率谱或其双时间自相关函数来表征。

使用其中一个类方法 from_spectral_density, from_power_spectrumfrom_correlation_function 来 从这些特征函数之一手动构建环境,或者使用预定义的子类,例如 DrudeLorentzEnvironment, UnderDampedEnvironmentOhmicEnvironment

玻色环境提供了多种方法来用多指数相关函数近似环境,例如可以在HEOM求解器中使用。近似环境表示为ExponentialBosonicEnvironment

所有玻色子环境都可以通过直接拟合它们的相关函数与多指数假设(approx_by_cf_fit)或通过将它们的谱密度拟合为洛伦兹函数的和(approx_by_sd_fit)来近似,这些方法对应于具有已知多指数分解的欠阻尼环境。子类可能提供额外的近似方法,例如在Drude-Lorentz环境的情况下,DrudeLorentzEnvironment.approx_by_matsubaraDrudeLorentzEnvironment.approx_by_pade

Parameters:
Toptional, float

这个环境的温度。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

approx_by_cf_fit(
tlist: ArrayLike,
target_rsme: float = 2e-05,
Nr_max: int = 10,
Ni_max: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
full_ansatz: bool = False,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]][source]

通过使用多指数假设拟合其相关函数,生成对此环境的近似。指数的数量是基于将归一化均方根误差降低到给定阈值以下迭代确定的。

具体来说,实部和虚部通过以下模型函数进行拟合:

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} \operatorname{Re}\Bigl[ (a_k + \mathrm i d_k) \mathrm e^{(b_k + \mathrm i c_k) t}\Bigl] , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} \operatorname{Im}\Bigl[ (a'_k + \mathrm i d'_k) \mathrm e^{(b'_k + \mathrm i c'_k) t} \Bigr].\end{split}\]

如果参数 full_ansatzFalse\(d_k\)\(d'_k\) 被设为零,模型函数简化为

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} a_k e^{b_k t} \cos(c_{k} t) , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} a'_k e^{b'_k t} \sin(c'_{k} t) .\end{split}\]

简化版本提供了更快的拟合速度,然而它无法处理具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,因为\(\sin(0) = 0\)

Parameters:
tlistarray_like

执行拟合的时间范围。

target_rmseoptional, float

期望的归一化均方根误差(默认2e-5)。可以设置为None,以仅使用最大模式数(Nr_maxNi_max)进行一次拟合。

Nr_maxoptional, int

用于拟合实部的最大模式数(默认值为10)。

Ni_maxoptional, int

用于拟合虚部的最大模式数(默认值为10)。

guessoptional, list of float

参数的初始猜测 \(a_k\), \(b_k\) 等。 相同的初始猜测用于所有k值,以及实部和虚部。如果 full_ansatz 为 True,guess 是一个大小为4的列表,否则,它是一个大小为3的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\), \(b_k\) 等的下界。 所有 k 值的下界相同,并且适用于实部和虚部。如果 full_ansatz 为 True,lower 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\), \(b_k\) 等的上限。 所有 k 值以及实部和虚部使用相同的上限。如果 full_ansatz 为 True,upper 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的相关函数添加不确定性,即为拟合添加余地。如果相关函数在时间范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

full_ansatzoptional, bool (default False)

如果将此设置为False,则参数\(d_k\)都将设置为零。完整的ansatz,包括\(d_k\),通常会导致拟合速度显著减慢,并且通常需要手动调整guesseslowerupper。另一方面,完整的ansatz可以导致更好的拟合,使用更少的指数,特别是对于具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,简化ansatz将始终给出\(\operatorname{Im}[C(0)] = 0\)。当使用默认值的完整ansatz时,如果拟合时间过长,我们建议手动选择猜测值和边界。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“Nr”

用于拟合相关函数实部的项数。

“Ni”

用于拟合相关函数虚部的项数。

“fit_time_real”

拟合相关函数实部所花费的时间(以秒为单位)。

“fit_time_imag”

拟合相关函数虚部所花费的时间(以秒为单位)。

“rmse_real”

在拟合相关函数的实部时获得的归一化均方误差。

“rmse_imag”

在拟合相关函数的虚部时获得的归一化均方误差。

“params_real”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的实部。

“params_imag”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的虚部。

“summary”

一个字符串,总结了关于拟合的信息。

approx_by_sd_fit(
wlist: ArrayLike,
Nk: int = 1,
target_rmse: float = 5e-06,
Nmax: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]][source]

通过用欠阻尼项的总和拟合其频谱密度,生成此环境的近似值。每个欠阻尼项实际上就像一个欠阻尼环境。我们使用已知的欠阻尼环境的指数分解,为每个项保留Nk个Matsubara项。欠阻尼项的数量是基于将归一化均方根误差降低到给定阈值以下而迭代确定的。

具体来说,光谱密度通过以下模型函数拟合:

\[J(\omega) = \sum_{k=1}^{N} \frac{2 a_k b_k \omega}{\left(\left( \omega + c_k \right)^2 + b_k^2 \right) \left(\left( \omega - c_k \right)^2 + b_k^2 \right)}\]
Parameters:
wlistarray_like

执行拟合的频率范围。

Nkoptional, int

在每个模式中保留的松原项数量(默认值为1)。

target_rmseoptional, float

期望的归一化均方根误差(默认5e-6)。可以设置为None以仅使用最大模式数(Nmax)进行一次拟合。

Nmaxoptional, int

用于拟合的最大模式数(默认值为10)。

guessoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的初始猜测值。对于所有 k 值,使用相同的初始猜测值。 如果没有提供 guesslowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的下界。所有 k 值使用相同的下界。 如果没有提供 guesslowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的上限。所有 k 值使用相同的上限。 如果没有提供 guesslowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的光谱密度添加不确定性,即为拟合添加余地。如果光谱密度在频率范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“N”

拟合中使用的欠阻尼项的数量。

“Nk”

每个欠阻尼项中包含的松原模式数量。

“fit_time”

拟合所花费的时间(以秒为单位)。

“rmse”

拟合中获得的归一化均方误差。

“params”

拟合参数(形状为Nx3的数组)。

“summary”

一个字符串,总结了关于拟合的信息。

abstract correlation_function(
t: float | ArrayLike,
*,
eps: float = 1e-10,
) float | ArrayLike[source]

这个环境的两时间自相关函数。有关QuTiP使用的定义的具体信息,请参阅玻色环境的用户指南。

如果相关函数没有已知的解析表达式,它将通过快速傅里叶变换从功率谱中导出。

如果功率谱也没有已知的解析表达式,它将从谱密度中导出。在这种情况下,必须指定此环境的温度。

Parameters:
tarray_like or float

评估相关函数的时间点。

epsoptional, float

在功率谱是从谱密度推导出来的情况下使用;请参阅BosonicEnvironment.power_spectrum的文档。

classmethod from_correlation_function(
C: Callable[[float], complex] | ArrayLike,
tlist: ArrayLike = None,
tMax: float = None,
*,
T: float = None,
tag: Any = None,
args: dict[str, Any] = None,
) BosonicEnvironment[source]

从提供的相关函数构造一个玻色环境。提供的函数仅用于时间\(t \geq 0\)。在时间\(t < 0\)时,强制使用对称关系\(C(-t) = C(t)^\ast\)

Parameters:
Ccallable or array_like

相关函数。可以作为Python函数或数组提供。当使用函数时,签名应为

C(t: array_like, **args) -> array_like

其中 t 是时间,args 是一个包含函数其他参数的字典。

tlistoptional, array_like

相关函数采样的时间(如果它作为数组提供)。

tMaxoptional, float

指定相关函数在区间 [-tMax, tMax] 之外基本上为零。用于数值积分目的。

Toptional, float

环境温度。(只有在提供温度的情况下,才能从相关函数计算此环境的光谱密度。)

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

argsoptional, dict

相关函数 C 的额外参数。

classmethod from_power_spectrum(
S: Callable[[float], float] | ArrayLike,
wlist: ArrayLike = None,
wMax: float = None,
*,
T: float = None,
tag: Any = None,
args: dict[str, Any] = None,
) BosonicEnvironment[来源]

使用提供的功率谱构建一个玻色环境。

Parameters:
Scallable or array_like

功率谱。可以作为Python函数或数组提供。当使用函数时,签名应为

S(w: array_like, **args) -> array_like

其中 w 是频率,args 是一个包含函数其他参数的字典。

wlistoptional, array_like

功率谱采样的频率(如果它作为数组提供)。

wMaxoptional, float

指定功率谱在区间 [-wMax, wMax] 之外基本上为零。用于数值积分目的。

Toptional, float

环境温度。(只有在提供温度的情况下,才能从功率谱计算此环境的光谱密度。)

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

argsoptional, dict

功率谱 S 的额外参数。

classmethod from_spectral_density(
J: Callable[[float], float] | ArrayLike,
wlist: ArrayLike = None,
wMax: float = None,
*,
T: float = None,
tag: Any = None,
args: dict[str, Any] = None,
) BosonicEnvironment[source]

使用提供的谱密度构建一个玻色环境。 提供的函数仅用于频率 \(\omega > 0\)。在频率 \(\omega \leq 0\) 时,根据 QuTiP 使用的定义,谱密度为零。有关在负频率处支持的谱密度的说明,请参阅用户指南中的 玻色环境

Parameters:
Jcallable or array_like

频谱密度。可以作为Python函数或数组提供。当使用函数时,签名应为

J(w: array_like, **args) -> array_like

其中 w 是频率,args 是一个包含函数其他参数的元组。

wlistoptional, array_like

频谱密度被采样的频率(如果它作为数组提供)。

wMaxoptional, float

指定频谱密度在区间 [-wMax, wMax] 之外基本上为零。用于数值积分目的。

Toptional, float

环境温度。(只有在提供温度的情况下,才能从光谱密度计算此环境的相关函数和功率谱。)

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

argsoptional, dict

光谱密度 S 的额外参数。

abstract power_spectrum(
w: float | ArrayLike,
*,
eps: float = 1e-10,
) float | ArrayLike[source]

这个环境的功率谱。有关QuTiP使用的定义的具体信息,请参阅玻色环境的用户指南。

如果没有已知的功率谱的解析表达式,它将从谱密度中导出。在这种情况下,必须指定此环境的温度。

如果光谱密度也没有已知的解析表达式,功率谱将通过快速傅里叶变换从相关函数中导出。

Parameters:
warray_like or float

评估功率谱的频率。

epsoptional, float

要从频谱密度推导出零频率功率谱,必须对频谱密度进行数值微分。在这种情况下,此参数用作数值微分中的有限差分。

abstract spectral_density(w: float | ArrayLike) float | ArrayLike[源代码]

这个环境的光谱密度。对于负频率,将返回零值。有关QuTiP使用的定义的具体信息,请参阅玻色环境的用户指南。

如果光谱密度的解析表达式未知,它将从功率谱中导出。在这种情况下,必须指定此环境的温度。

如果功率谱也没有已知的解析表达式,它将通过快速傅里叶变换从相关函数中导出。

Parameters:
warray_like or float

评估频谱密度的频率。

class DrudeLorentzEnvironment(
T: float,
lam: float,
gamma: float,
*,
Nk: int = 10,
tag: Any = None,
)[来源]

基类:BosonicEnvironment

描述了一个具有光谱密度的Drude-Lorentz玻色环境

\[J(\omega) = \frac{2 \lambda \gamma \omega}{\gamma^{2}+\omega^{2}}\]

(参见[BoFiN23]中的公式15)。

Parameters:
Tfloat

环境温度。

lamfloat

耦合强度。

gammafloat

频谱密度截止频率。

Nkoptional, int, defaults to 10

用于计算相关函数的Pade指数数量。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

approx_by_cf_fit(
tlist: ArrayLike,
target_rsme: float = 2e-05,
Nr_max: int = 10,
Ni_max: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
full_ansatz: bool = False,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过使用多指数假设拟合其相关函数,生成对此环境的近似。指数的数量是基于将归一化均方根误差降低到给定阈值以下迭代确定的。

具体来说,实部和虚部通过以下模型函数进行拟合:

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} \operatorname{Re}\Bigl[ (a_k + \mathrm i d_k) \mathrm e^{(b_k + \mathrm i c_k) t}\Bigl] , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} \operatorname{Im}\Bigl[ (a'_k + \mathrm i d'_k) \mathrm e^{(b'_k + \mathrm i c'_k) t} \Bigr].\end{split}\]

如果参数 full_ansatzFalse\(d_k\)\(d'_k\) 被设为零,模型函数简化为

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} a_k e^{b_k t} \cos(c_{k} t) , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} a'_k e^{b'_k t} \sin(c'_{k} t) .\end{split}\]

简化版本提供了更快的拟合速度,然而它无法处理具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,因为\(\sin(0) = 0\)

Parameters:
tlistarray_like

执行拟合的时间范围。

target_rmseoptional, float

期望的归一化均方根误差(默认2e-5)。可以设置为None,以仅使用最大模式数(Nr_maxNi_max)进行一次拟合。

Nr_maxoptional, int

用于拟合实部的最大模式数(默认值为10)。

Ni_maxoptional, int

用于拟合虚部的最大模式数(默认值为10)。

guessoptional, list of float

参数的初始猜测 \(a_k\), \(b_k\) 等。 相同的初始猜测用于所有k值,以及实部和虚部。如果 full_ansatz 为 True,guess 是一个大小为4的列表,否则,它是一个大小为3的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\), \(b_k\) 等的下界。 所有 k 值的下界相同,并且适用于实部和虚部。如果 full_ansatz 为 True,lower 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\), \(b_k\) 等的上限。 所有 k 值以及实部和虚部使用相同的上限。如果 full_ansatz 为 True,upper 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的相关函数添加不确定性,即为拟合添加余地。如果相关函数在时间范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

full_ansatzoptional, bool (default False)

如果将此设置为False,则参数\(d_k\)都将设置为零。完整的ansatz,包括\(d_k\),通常会导致拟合速度显著减慢,并且通常需要手动调整guesseslowerupper。另一方面,完整的ansatz可以导致更好的拟合,使用更少的指数,特别是对于具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,简化ansatz将始终给出\(\operatorname{Im}[C(0)] = 0\)。当使用默认值的完整ansatz时,如果拟合时间过长,我们建议手动选择猜测值和边界。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“Nr”

用于拟合相关函数实部的项数。

“Ni”

用于拟合相关函数虚部的项数。

“fit_time_real”

拟合相关函数实部所花费的时间(以秒为单位)。

“fit_time_imag”

拟合相关函数虚部所花费的时间(以秒为单位)。

“rmse_real”

在拟合相关函数的实部时获得的归一化均方误差。

“rmse_imag”

在拟合相关函数的虚部时获得的归一化均方误差。

“params_real”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的实部。

“params_imag”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的虚部。

“summary”

一个字符串,总结了关于拟合的信息。

approx_by_matsubara(
Nk: int,
combine: bool = True,
compute_delta: Literal[False] = False,
tag: Any = None,
) ExponentialBosonicEnvironment[source]
approx_by_matsubara(
Nk: int,
combine: bool = True,
compute_delta: Literal[True] = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, float]

通过截断其Matsubara展开来生成此环境的近似值。

Parameters:
Nkint

包含的松原项数量。总的来说,相关函数的实部将包含Nk+1项,虚部包含1项。

combinebool, default True

是否将具有相同频率的指数合并。

compute_deltabool, default False

是否计算并返回近似差异(见下文)。

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

deltafloat, optional

近似差异。即,Drude-Lorentz环境的真实相关函数与Nk指数项之和的差异大约为2 * delta * dirac(t),其中dirac(t)表示Dirac delta函数。 它可以用来创建一个“终止器”项,添加到系统动力学中以考虑这种差异,参见 system_terminator

approx_by_pade(
Nk: int,
combine: bool = True,
compute_delta: Literal[False] = False,
tag: Any = None,
) ExponentialBosonicEnvironment[source]
approx_by_pade(
Nk: int,
combine: bool = True,
compute_delta: Literal[True] = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, float]

通过截断其Pade展开来生成此环境的近似值。

Parameters:
Nkint

包含的Pade项数。总的来说,相关函数的实部将包含Nk+1项,虚部包含1项。

combinebool, default True

是否将具有相同频率的指数合并。

compute_deltabool, default False

是否计算并返回近似差异(见下文)。

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

deltafloat, optional

近似差异。即,Drude-Lorentz环境的真实相关函数与Nk指数项之和的差异大约为2 * delta * dirac(t),其中dirac(t)表示Dirac delta函数。 它可以用来创建一个“终止器”项,添加到系统动力学中以考虑这种差异,参见 system_terminator

approx_by_sd_fit(
wlist: ArrayLike,
Nk: int = 1,
target_rmse: float = 5e-06,
Nmax: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过用欠阻尼项的总和拟合其频谱密度,生成此环境的近似值。每个欠阻尼项实际上就像一个欠阻尼环境。我们使用已知的欠阻尼环境的指数分解,为每个项保留Nk个Matsubara项。欠阻尼项的数量是基于将归一化均方根误差降低到给定阈值以下而迭代确定的。

具体来说,光谱密度通过以下模型函数拟合:

\[J(\omega) = \sum_{k=1}^{N} \frac{2 a_k b_k \omega}{\left(\left( \omega + c_k \right)^2 + b_k^2 \right) \left(\left( \omega - c_k \right)^2 + b_k^2 \right)}\]
Parameters:
wlistarray_like

执行拟合的频率范围。

Nkoptional, int

在每个模式中保留的松原项数量(默认值为1)。

target_rmseoptional, float

期望的归一化均方根误差(默认5e-6)。可以设置为None以仅使用最大模式数(Nmax)进行一次拟合。

Nmaxoptional, int

用于拟合的最大模式数(默认值为10)。

guessoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的初始猜测值。对于所有 k 值,使用相同的初始猜测值。 如果没有提供 guesslowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的下界。所有 k 值使用相同的下界。 如果没有提供 guesslowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的上限。所有 k 值使用相同的上限。 如果没有提供 guesslowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的光谱密度添加不确定性,即为拟合添加余地。如果光谱密度在频率范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“N”

拟合中使用的欠阻尼项的数量。

“Nk”

每个欠阻尼项中包含的松原模式数量。

“fit_time”

拟合所花费的时间(以秒为单位)。

“rmse”

拟合中获得的归一化均方误差。

“params”

拟合参数(形状为Nx3的数组)。

“summary”

一个字符串,总结了关于拟合的信息。

correlation_function(
t: float | ArrayLike,
Nk: int = None,
**kwargs,
) float | ArrayLike[来源]

计算Drude-Lorentz环境的二次自相关函数。该计算通过求和Pade展开的大量指数来完成。

Parameters:
tarray_like or float

评估相关函数的时间。

Nkint, optional

使用的指数数量。如果未提供,则使用类实例化时提供的值。

power_spectrum(
w: float | ArrayLike,
**kwargs,
) float | ArrayLike[source]

计算Drude-Lorentz环境的功率谱。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(
w: float | ArrayLike,
) float | ArrayLike[source]

计算Drude-Lorentz光谱密度。

Parameters:
warray_like or float

模式的能量。

class UnderDampedEnvironment(
T: float,
lam: float,
gamma: float,
w0: float,
*,
tag: Any = None,
)[来源]

基类:BosonicEnvironment

描述了一个具有频谱密度的欠阻尼环境

\[J(\omega) = \frac{\lambda^{2} \Gamma \omega}{(\omega_0^{2}- \omega^{2})^{2}+ \Gamma^{2} \omega^{2}}\]

(参见[BoFiN23]中的公式16)。

Parameters:
Tfloat

环境温度。

lamfloat

耦合强度。

gammafloat

频谱密度截止频率。

w0float

频谱密度共振频率。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

approx_by_cf_fit(
tlist: ArrayLike,
target_rsme: float = 2e-05,
Nr_max: int = 10,
Ni_max: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
full_ansatz: bool = False,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过使用多指数假设拟合其相关函数,生成对此环境的近似。指数的数量是基于将归一化均方根误差降低到给定阈值以下迭代确定的。

具体来说,实部和虚部通过以下模型函数进行拟合:

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} \operatorname{Re}\Bigl[ (a_k + \mathrm i d_k) \mathrm e^{(b_k + \mathrm i c_k) t}\Bigl] , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} \operatorname{Im}\Bigl[ (a'_k + \mathrm i d'_k) \mathrm e^{(b'_k + \mathrm i c'_k) t} \Bigr].\end{split}\]

如果参数 full_ansatzFalse\(d_k\)\(d'_k\) 被设为零,模型函数简化为

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} a_k e^{b_k t} \cos(c_{k} t) , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} a'_k e^{b'_k t} \sin(c'_{k} t) .\end{split}\]

简化版本提供了更快的拟合速度,然而它无法处理具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,因为\(\sin(0) = 0\)

Parameters:
tlistarray_like

执行拟合的时间范围。

target_rmseoptional, float

期望的归一化均方根误差(默认2e-5)。可以设置为None,以仅使用最大模式数(Nr_maxNi_max)进行一次拟合。

Nr_maxoptional, int

用于拟合实部的最大模式数(默认值为10)。

Ni_maxoptional, int

用于拟合虚部的最大模式数(默认值为10)。

guessoptional, list of float

参数的初始猜测 \(a_k\), \(b_k\) 等。 相同的初始猜测用于所有k值,以及实部和虚部。如果 full_ansatz 为 True,guess 是一个大小为4的列表,否则,它是一个大小为3的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\), \(b_k\) 等的下界。 所有 k 值的下界相同,并且适用于实部和虚部。如果 full_ansatz 为 True,lower 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\), \(b_k\) 等的上限。 所有 k 值以及实部和虚部使用相同的上限。如果 full_ansatz 为 True,upper 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的相关函数添加不确定性,即为拟合添加余地。如果相关函数在时间范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

full_ansatzoptional, bool (default False)

如果将此设置为False,则参数\(d_k\)都将设置为零。完整的ansatz,包括\(d_k\),通常会导致拟合速度显著减慢,并且通常需要手动调整guesseslowerupper。另一方面,完整的ansatz可以导致更好的拟合,使用更少的指数,特别是对于具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,简化ansatz将始终给出\(\operatorname{Im}[C(0)] = 0\)。当使用默认值的完整ansatz时,如果拟合时间过长,我们建议手动选择猜测值和边界。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“Nr”

用于拟合相关函数实部的项数。

“Ni”

用于拟合相关函数虚部的项数。

“fit_time_real”

拟合相关函数实部所花费的时间(以秒为单位)。

“fit_time_imag”

拟合相关函数虚部所花费的时间(以秒为单位)。

“rmse_real”

在拟合相关函数的实部时获得的归一化均方误差。

“rmse_imag”

在拟合相关函数的虚部时获得的归一化均方误差。

“params_real”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的实部。

“params_imag”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的虚部。

“summary”

一个字符串,总结了关于拟合的信息。

approx_by_matsubara(
Nk: int,
combine: bool = True,
tag: Any = None,
) ExponentialBosonicEnvironment[source]

通过截断其Matsubara展开来生成此环境的近似值。

Parameters:
Nkint

包含的松原项数量。总的来说,相关函数的实部将包含Nk+2项,虚部包含2项。

combinebool, default True

是否将具有相同频率的指数合并。

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
ExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

approx_by_sd_fit(
wlist: ArrayLike,
Nk: int = 1,
target_rmse: float = 5e-06,
Nmax: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过用欠阻尼项的总和拟合其频谱密度,生成此环境的近似值。每个欠阻尼项实际上就像一个欠阻尼环境。我们使用已知的欠阻尼环境的指数分解,为每个项保留Nk个Matsubara项。欠阻尼项的数量是基于将归一化均方根误差降低到给定阈值以下而迭代确定的。

具体来说,光谱密度通过以下模型函数拟合:

\[J(\omega) = \sum_{k=1}^{N} \frac{2 a_k b_k \omega}{\left(\left( \omega + c_k \right)^2 + b_k^2 \right) \left(\left( \omega - c_k \right)^2 + b_k^2 \right)}\]
Parameters:
wlistarray_like

执行拟合的频率范围。

Nkoptional, int

在每个模式中保留的松原项数量(默认值为1)。

target_rmseoptional, float

期望的归一化均方根误差(默认5e-6)。可以设置为None以仅使用最大模式数(Nmax)进行一次拟合。

Nmaxoptional, int

用于拟合的最大模式数(默认值为10)。

guessoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的初始猜测值。对于所有 k 值,使用相同的初始猜测值。 如果没有提供 guesslowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的下界。所有 k 值使用相同的下界。 如果没有提供 guesslowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的上限。所有 k 值使用相同的上限。 如果没有提供 guesslowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的光谱密度添加不确定性,即为拟合添加余地。如果光谱密度在频率范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“N”

拟合中使用的欠阻尼项的数量。

“Nk”

每个欠阻尼项中包含的松原模式数量。

“fit_time”

拟合所花费的时间(以秒为单位)。

“rmse”

拟合中获得的归一化均方误差。

“params”

拟合参数(形状为Nx3的数组)。

“summary”

一个字符串,总结了关于拟合的信息。

correlation_function(
t: float | ArrayLike,
**kwargs,
) float | ArrayLike[source]

计算欠阻尼环境的二次自相关函数。

Parameters:
tarray_like or float

评估相关函数的时间。

power_spectrum(
w: float | ArrayLike,
**kwargs,
) float | ArrayLike[来源]

计算欠阻尼环境的功率谱。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(
w: float | ArrayLike,
) float | ArrayLike[来源]

计算欠阻尼谱密度。

Parameters:
warray_like or float

模式的能量。

class OhmicEnvironment(
T: float,
alpha: float,
wc: float,
s: float,
*,
tag: Any = None,
)[source]

基类:BosonicEnvironment

描述了欧姆环境以及亚欧姆或超欧姆环境(取决于参数s的选择)。光谱密度为

\[J(\omega) = \alpha \frac{\omega^s}{\omega_c^{s-1}} e^{-\omega / \omega_c} .\]

这个类需要安装mpmath模块。

Parameters:
Tfloat

环境的温度。

alphafloat

耦合强度。

wcfloat

截止参数。

sfloat

频谱密度中omega的幂。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

approx_by_cf_fit(
tlist: ArrayLike,
target_rsme: float = 2e-05,
Nr_max: int = 10,
Ni_max: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
full_ansatz: bool = False,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过使用多指数假设拟合其相关函数,生成对此环境的近似。指数的数量是基于将归一化均方根误差降低到给定阈值以下迭代确定的。

具体来说,实部和虚部通过以下模型函数进行拟合:

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} \operatorname{Re}\Bigl[ (a_k + \mathrm i d_k) \mathrm e^{(b_k + \mathrm i c_k) t}\Bigl] , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} \operatorname{Im}\Bigl[ (a'_k + \mathrm i d'_k) \mathrm e^{(b'_k + \mathrm i c'_k) t} \Bigr].\end{split}\]

如果参数 full_ansatzFalse\(d_k\)\(d'_k\) 被设为零,模型函数简化为

\[\begin{split}\operatorname{Re}[C(t)] = \sum_{k=1}^{N_r} a_k e^{b_k t} \cos(c_{k} t) , \\ \operatorname{Im}[C(t)] = \sum_{k=1}^{N_i} a'_k e^{b'_k t} \sin(c'_{k} t) .\end{split}\]

简化版本提供了更快的拟合速度,然而它无法处理具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,因为\(\sin(0) = 0\)

Parameters:
tlistarray_like

执行拟合的时间范围。

target_rmseoptional, float

期望的归一化均方根误差(默认2e-5)。可以设置为None,以仅使用最大模式数(Nr_maxNi_max)进行一次拟合。

Nr_maxoptional, int

用于拟合实部的最大模式数(默认值为10)。

Ni_maxoptional, int

用于拟合虚部的最大模式数(默认值为10)。

guessoptional, list of float

参数的初始猜测 \(a_k\), \(b_k\) 等。 相同的初始猜测用于所有k值,以及实部和虚部。如果 full_ansatz 为 True,guess 是一个大小为4的列表,否则,它是一个大小为3的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\), \(b_k\) 等的下界。 所有 k 值的下界相同,并且适用于实部和虚部。如果 full_ansatz 为 True,lower 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\), \(b_k\) 等的上限。 所有 k 值以及实部和虚部使用相同的上限。如果 full_ansatz 为 True,upper 是一个大小为 4 的列表,否则,它是一个大小为 3 的列表。 如果没有提供 guess, lowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的相关函数添加不确定性,即为拟合添加余地。如果相关函数在时间范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

full_ansatzoptional, bool (default False)

如果将此设置为False,则参数\(d_k\)都将设置为零。完整的ansatz,包括\(d_k\),通常会导致拟合速度显著减慢,并且通常需要手动调整guesseslowerupper。另一方面,完整的ansatz可以导致更好的拟合,使用更少的指数,特别是对于具有\(\operatorname{Im}[C(0)] \neq 0\)的异常谱密度,简化ansatz将始终给出\(\operatorname{Im}[C(0)] = 0\)。当使用默认值的完整ansatz时,如果拟合时间过长,我们建议手动选择猜测值和边界。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“Nr”

用于拟合相关函数实部的项数。

“Ni”

用于拟合相关函数虚部的项数。

“fit_time_real”

拟合相关函数实部所花费的时间(以秒为单位)。

“fit_time_imag”

拟合相关函数虚部所花费的时间(以秒为单位)。

“rmse_real”

在拟合相关函数的实部时获得的归一化均方误差。

“rmse_imag”

在拟合相关函数的虚部时获得的归一化均方误差。

“params_real”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的实部。

“params_imag”

拟合参数(形状为Nx3或Nx4的数组)用于相关函数的虚部。

“summary”

一个字符串,总结了关于拟合的信息。

approx_by_sd_fit(
wlist: ArrayLike,
Nk: int = 1,
target_rmse: float = 5e-06,
Nmax: int = 10,
guess: list[float] = None,
lower: list[float] = None,
upper: list[float] = None,
sigma: float | ArrayLike = None,
maxfev: int = None,
combine: bool = True,
tag: Any = None,
) tuple[ExponentialBosonicEnvironment, dict[str, Any]]

通过用欠阻尼项的总和拟合其频谱密度,生成此环境的近似值。每个欠阻尼项实际上就像一个欠阻尼环境。我们使用已知的欠阻尼环境的指数分解,为每个项保留Nk个Matsubara项。欠阻尼项的数量是基于将归一化均方根误差降低到给定阈值以下而迭代确定的。

具体来说,光谱密度通过以下模型函数拟合:

\[J(\omega) = \sum_{k=1}^{N} \frac{2 a_k b_k \omega}{\left(\left( \omega + c_k \right)^2 + b_k^2 \right) \left(\left( \omega - c_k \right)^2 + b_k^2 \right)}\]
Parameters:
wlistarray_like

执行拟合的频率范围。

Nkoptional, int

在每个模式中保留的松原项数量(默认值为1)。

target_rmseoptional, float

期望的归一化均方根误差(默认5e-6)。可以设置为None以仅使用最大模式数(Nmax)进行一次拟合。

Nmaxoptional, int

用于拟合的最大模式数(默认值为10)。

guessoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的初始猜测值。对于所有 k 值,使用相同的初始猜测值。 如果没有提供 guesslowerupper,这些参数将自动选择。

loweroptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的下界。所有 k 值使用相同的下界。 如果没有提供 guesslowerupper,这些参数将自动选择。

upperoptional, list of float

参数 \(a_k\)\(b_k\)\(c_k\) 的上限。所有 k 值使用相同的上限。 如果没有提供 guesslowerupper,这些参数将自动选择。

sigmaoptional, float or list of float

为环境的光谱密度添加不确定性,即为拟合添加余地。如果光谱密度在频率范围的某些部分非常小,调整此参数非常有用。更多详情,请参阅scipy.optimize.curve_fit的文档。

maxfevoptional, int

在优化过程中允许拟合参数变化的次数(每次拟合)。

combineoptional, bool (default True)

是否将具有相同频率的指数合并。详情请参见 combine

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
approx_envExponentialBosonicEnvironment

具有多指数相关函数的近似环境。

fit_infodictionary

包含有关拟合的以下信息的字典。

“N”

拟合中使用的欠阻尼项的数量。

“Nk”

每个欠阻尼项中包含的松原模式数量。

“fit_time”

拟合所花费的时间(以秒为单位)。

“rmse”

拟合中获得的归一化均方误差。

“params”

拟合参数(形状为Nx3的数组)。

“summary”

一个字符串,总结了关于拟合的信息。

correlation_function(
t: float | ArrayLike,
**kwargs,
) float | ArrayLike[来源]

使用公式计算欧姆环境的相关函数

\[C(t)= \frac{1}{\pi} \alpha w_{c}^{1-s} \beta^{-(s+1)} \Gamma(s+1) \left[ \zeta\left(s+1,\frac{1+\beta w_{c} -i w_{c} t}{\beta w_{c}} \right) +\zeta\left(s+1,\frac{1+ i w_{c} t}{\beta w_{c}}\right) \right] ,\]

其中 \(\Gamma\) 是伽玛函数,\(\zeta\) 是黎曼 zeta 函数。

Parameters:
tarray_like or float

评估相关函数的时间。

power_spectrum(
w: float | ArrayLike,
**kwargs,
) float | ArrayLike[来源]

计算欧姆环境的功率谱。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(w: float | ArrayLike) float | ArrayLike[来源]

计算欧姆环境的光谱密度。

Parameters:
warray_like or float

模式的能量。

class CFExponent(
type: str | CFExponent.ExponentType,
ck: complex,
vk: complex,
ck2: complex = None,
tag: Any = None,
)[source]

表示环境相关函数的指数分解中的单个指数(简单来说,一种激发模式)。

Parameters:
type{“R”, “I”, “RI”, “+”, “-”} or one of CFExponent.types

指数的类型。

“R”和“I”是分别出现在相关扩展的实部和虚部中的玻色子指数。

“RI” 是一个组合的玻色子指数,出现在相关展开的实部和虚部中。组合指数有一个单一的 vkck 是实部展开中的系数,而 ck2 是虚部展开中的系数。

“+” 和 “-” 是费米子指数。

ckcomplex

激励项的系数。

vkcomplex

激励项指数的频率。

ck2optional, complex

对于类型为“RI”的指数,这是虚数展开中的项的系数(而ck是实数展开中的系数)。

tagoptional, str, tuple or any other object

指数的标签(通常是环境的名称)。默认值为None。

Attributes:
fermionicbool

如果指数的类型是费米子类型(即“+”或“-”),则为True,否则为False。

coefficientcomplex

总相关函数中这个激励项的系数(包括实部和虚部)。

exponentcomplex

激励项指数的频率。(vk 的别名。)

All of the parameters are also available as attributes.
types

ExponentType 的别名

class ExponentialBosonicEnvironment(
ck_real: ArrayLike = None,
vk_real: ArrayLike = None,
ck_imag: ArrayLike = None,
vk_imag: ArrayLike = None,
*,
exponents: Sequence[CFExponent] = None,
combine: bool = True,
T: float = None,
tag: Any = None,
)[来源]

基类:BosonicEnvironment

通过其相关函数的指数分解指定的玻色环境。分解中的系数和指数列表可以通过四个列表ck_realvk_realck_imagvk_imag传递,或者作为玻色CFExponent对象的列表传递。

Parameters:
ck_reallist of complex

相关函数实部的展开项系数。相应的频率作为vk_real传递。

vk_reallist of complex

相关函数实部的展开项的频率(指数)。相应的系数作为ck_real传递。

ck_imaglist of complex

相关函数虚部中展开项的系数。相应的频率作为vk_imag传递。

vk_imaglist of complex

相关函数虚部的展开项的频率(指数)。相应的系数作为ck_imag传递。

exponentslist of CFExponent

相关函数的实部和虚部的扩展系数和指数作为CFExponent对象。

combinebool, default True

是否将具有相同频率的指数合并。详情请参见 combine

T: optional, float

环境的温度。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

classmethod combine(
exponents: Sequence[CFExponent],
rtol: float = 1e-05,
atol: float = 1e-07,
) Sequence[CFExponent][源代码]

将具有相同频率的玻色子指数分组,并为每个存在的频率返回一个单独的指数。

Parameters:
exponentslist of CFExponent

要组合的指数列表。

rtolfloat, default 1e-5

在比较频率时使用的相对容差。

atolfloat, default 1e-7

比较频率时使用的绝对容差。

Returns:
list of CFExponent

新的简化指数列表。

correlation_function(
t: float | ArrayLike,
**kwargs,
) float | ArrayLike[source]

计算由这个指数分解表示的相关函数。

Parameters:
tarray_like or float

评估相关函数的时间。

power_spectrum(
w: float | ArrayLike,
**kwargs,
) float | ArrayLike[source]

计算与多指数相关函数对应的功率谱。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(
w: float | ArrayLike,
) float | ArrayLike[来源]

计算与多指数相关函数对应的谱密度。

Parameters:
warray_like or float

模式的能量。

system_terminator(
Q: Qobj,
delta: float,
) Qobj[source]

为给定的近似差异构建终止器。

Parameters:
QQobj

系统耦合操作符。

deltafloat

用有限数量的指数近似环境的近似差异,例如参见 DrudeLorentzEnvironment.approx_by_matsubara

Returns:
terminatorQobj

作用于系统希尔伯特空间的超算子。Liouvillian 项表示所有被忽略的扩展项对系统-环境动力学的贡献。它应该通过将其添加到系统 Liouvillian 中来使用(即 liouvillian(H_sys))。

费米子环境

class FermionicEnvironment(T: float = None, mu: float = None, tag: Any = None)[source]

开放量子系统的费米子环境。它由其谱密度、温度和化学势或等效地由其功率谱或其双时间自相关函数来表征。

该类作为BosonicEnvironment的对应物包含在内,但它目前不支持玻色子环境的所有功能。特别是,费米子环境无法从手动指定的光谱密度、功率谱或相关函数构建。目前实现的费米子环境类型只有洛伦兹环境(LorentzianEnvironment)和具有多指数相关函数的环境(ExponentialFermionicEnvironment)。

Parameters:
Toptional, float

这个环境的温度。

muoptional, float

该环境的化学势。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

abstract correlation_function_minus(
t: float | ArrayLike,
) float | ArrayLike[source]

该环境的自相关函数的“-“分支。 有关QuTiP使用的定义的具体信息,请参阅 fermionic environments 的用户指南。

Parameters:
tarray_like or float

评估相关函数的时间点。

abstract correlation_function_plus(
t: float | ArrayLike,
) float | ArrayLike[source]

该环境的自相关函数的“+”分支。 有关QuTiP使用的定义的具体信息,请参阅 fermionic environments 的用户指南。

Parameters:
tarray_like or float

评估相关函数的时间点。

classmethod from_correlation_functions(
**kwargs,
) FermionicEnvironment[source]

目前尚未实现用户自定义的费米子环境。

classmethod from_power_spectra(
**kwargs,
) FermionicEnvironment[来源]

目前尚未实现用户定义的费米子环境。

abstract power_spectrum_minus(
w: float | ArrayLike,
) float | ArrayLike[source]

此环境的功率谱的“-“分支。有关QuTiP使用的定义的具体信息,请参阅费米子环境的用户指南。

Parameters:
warray_like or float

评估功率谱的频率。

abstract power_spectrum_plus(
w: float | ArrayLike,
) float | ArrayLike[source]

此环境的功率谱的“+”分支。有关QuTiP使用的定义的具体信息,请参阅费米子环境的用户指南。

Parameters:
warray_like or float

评估功率谱的频率。

abstract spectral_density(w: float | ArrayLike) float | ArrayLike[source]

这个环境的光谱密度。有关QuTiP使用的定义的具体信息,请参阅费米子环境的用户指南。

Parameters:
warray_like or float

评估频谱密度的频率。

class LorentzianEnvironment(
T: float,
mu: float,
gamma: float,
W: float,
omega0: float = None,
*,
Nk: int = 10,
tag: Any = None,
)[来源]

基础类:FermionicEnvironment

描述了一个具有谱密度的洛伦兹费米环境

\[J(\omega) = \frac{\gamma W^2}{(\omega - \omega_0)^2 + W^2}.\]

(参见[BoFiN23]中的公式46)。

Parameters:
Tfloat

环境温度。

mufloat

环境化学势。

gammafloat

耦合强度。

Wfloat

环境的光谱宽度。

omega0optional, float (default equal to mu)

环境的共振频率。

Nkoptional, int, defaults to 10

用于计算相关函数的Pade指数数量。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

approx_by_matsubara(
Nk: int,
tag: Any = None,
) ExponentialFermionicEnvironment[来源]

通过截断其Matsubara展开来生成此环境的近似值。

Parameters:
Nkint

包含的松原项数量。总共,“+”和“-”相关函数分支将各自包含Nk+1项。

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
The approximated environment with multi-exponential correlation
function.
approx_by_pade(
Nk: int,
tag: Any = None,
) ExponentialFermionicEnvironment[source]

通过截断其Pade展开来生成此环境的近似值。

Parameters:
Nkint

包含的Pade项数。总共,“+”和“-”相关函数分支将各自包含Nk+1项。

tagoptional, str, tuple or any other object

近似环境的标识符(名称)。如果未提供,将从此环境的标签生成一个标签。

Returns:
The approximated environment with multi-exponential correlation
function.
correlation_function_minus(
t: float | ArrayLike,
Nk: int = None,
) float | ArrayLike[source]

计算洛伦兹环境的两次自相关函数的“-“分支。该计算通过求和大量Pade展开的指数来完成。

Parameters:
tarray_like or float

评估相关函数的时间。

Nkint, optional

使用的指数数量。如果未提供,则使用类实例化时提供的值。

correlation_function_plus(
t: float | ArrayLike,
Nk: int = None,
) float | ArrayLike[source]

计算洛伦兹环境的两次自相关函数的“+”分支。该计算通过求和大量Pade展开的指数来完成。

Parameters:
tarray_like or float

评估相关函数的时间。

Nkint, optional

使用的指数数量。如果未提供,则使用类实例化时提供的值。

power_spectrum_minus(
w: float | ArrayLike,
) float | ArrayLike[source]

计算洛伦兹环境的“-“-分支的功率谱。

Parameters:
warray_like or float

评估功率谱的频率。

power_spectrum_plus(
w: float | ArrayLike,
) float | ArrayLike[source]

计算洛伦兹环境的功率谱的“+”分支。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(
w: float | ArrayLike,
) float | ArrayLike[来源]

计算洛伦兹谱密度。

Parameters:
warray_like or float

模式的能量。

class ExponentialFermionicEnvironment(
ck_plus: ArrayLike = None,
vk_plus: ArrayLike = None,
ck_minus: ArrayLike = None,
vk_minus: ArrayLike = None,
*,
exponents: Sequence[CFExponent] = None,
T: float = None,
mu: float = None,
tag: Any = None,
)[source]

基础类:FermionicEnvironment

通过其相关函数的指数分解指定的费米子环境。分解中的系数和指数列表可以通过四个列表ck_plusvk_plusck_minusvk_minus传递,或者作为费米子CFExponent对象的列表传递。

替代构造函数 from_plus_exponentsfrom_minus_exponents 可用于从“+”指数自动计算“-”指数,反之亦然。

Parameters:
ck_pluslist of complex

相关函数+部分的展开项系数。相应的频率作为vk_plus传递。

vk_pluslist of complex

相关函数+部分的展开项的频率(指数)。相应的系数作为ck_plus传递。

ck_minuslist of complex

相关函数的-部分的展开项的系数。相应的频率作为vk_minus传递。

vk_minuslist of complex

相关函数的 - 部分的展开项的频率(指数)。相应的系数作为 ck_minus 传递。

exponentslist of CFExponent

相关函数两部分的扩展系数和指数作为CFExponent对象。

T: optional, float

环境的温度。

mu: optional, float

环境的化学势。

tagoptional, str, tuple or any other object

此环境的标识符(名称)。

correlation_function_minus(
t: float | ArrayLike,
) float | ArrayLike[source]

计算由这个指数分解表示的相关函数的“-”分支。

Parameters:
tarray_like or float

评估相关函数的时间点。

correlation_function_plus(
t: float | ArrayLike,
) float | ArrayLike[source]

计算由该指数分解表示的相关函数的“+”分支。

Parameters:
tarray_like or float

评估相关函数的时间点。

power_spectrum_minus(
w: float | ArrayLike,
) float | ArrayLike[source]

计算对应于多指数相关函数的功率谱的“-“分支。

Parameters:
warray_like or float

评估功率谱的频率。

power_spectrum_plus(
w: float | ArrayLike,
) float | ArrayLike[source]

计算对应于多指数相关函数的功率谱的“+”分支。

Parameters:
warray_like or float

评估功率谱的频率。

spectral_density(
w: float | ArrayLike,
) float | ArrayLike[source]

计算与多指数相关函数对应的谱密度。

Parameters:
warray_like or float

模式的能量。