Detailed Balance#
- class pylit.core.detailed_balance.DetailedBalance(tau)#
Bases:
object
Base class for detailed balance computations.
This class stores the inverse temperature parameter \(\beta\), given as the maximum of the provided time axis \(\tau\).
- __init__(tau)#
Initialize the DetailedBalance class.
- Parameters:
tau (
ndarray
) – The time axis.- Raises:
ValueError – If the beta is not positive.
- property beta: float#
Inverse temperature parameter.
- class pylit.core.detailed_balance.OmegaDetailedBalance(tau)#
Bases:
DetailedBalance
- __call__(func)#
Apply detailed balance to a kernel function.
Given a kernel function \(S(\omega)\), this decorator rescales it as:
\[S_{DB}(\omega) = e^{\beta \omega} S(-\omega) + S(\omega)\]where \(\beta = \max \tau\).
- Parameters:
func – An kernel function \(S(\omega)\).
- Returns:
The kernel function fulfilling the detailed balance with respect to \(\beta\)
Examples
>>> import numpy as np >>> def S(omega): return np.exp(-omega**2) >>> db = InverseDetailedBalance(tau=np.array([1.0])) >>> balanced = db(S) >>> balanced(0.5) np.exp(1.0 * 0.5) * np.exp(-(-0.5)**2) + np.exp(-(0.5)**2)
- __init__(tau)#
Initialize the OmegaDetailedBalance by means of its superclass.
- class pylit.core.detailed_balance.TauDetailedBalance(tau)#
Bases:
DetailedBalance
- __call__(func)#
Apply detailed balance to a Laplace transform.
Given a Laplace transform \(F(\tau)\), this decorator returns a symmetrized version of the function:
\[F_{DB}(\tau) = F(\beta - \tau) + F(\tau)\]where \(\beta = \max \tau\).
- Parameters:
func – A Laplace transform \(F(\tau)\).
- Returns:
The detailed balanced Laplace transform.
Examples
>>> import numpy as np >>> def f(tau): return np.exp(-tau) >>> db = ForwardDetailedBalance(tau=np.array([2.0])) >>> balanced = db(f) >>> balanced(0.5) np.exp(-0.5) + np.exp(-(2.0 - 0.5))
- __init__(tau)#
Initialize the TauDetailedBalance by means of its superclass.