gusucode.com > qit_matlab_0.10.0工具箱源码程序 > qit/utils/superop_lindblad.m

    function L = superop_lindblad(A, H)
% SUPEROP_LINDBLAD  Liouvillian superoperator for a set of Lindblad operators.
%  L = superop(A [, H])
%
%  A is a cell vector of traceless, orthogonal Lindblad operators.
%  H is an optional Hamiltonian operator.
%
%  Returns the Liouvillian superoperator L corresponding to the
%  diagonal-form Lindblad equation
%
%  \dot{\rho} = inv_vec(L * vec(\rho)) =
%    = -i [H, \rho] +\sum_k (A_k \rho A_k^\dagger -0.5*\{A_k^\dagger A_k, \rho\})

% James D. Whitfield 2009
% Ville Bergholm 2009-2010


if (nargin == 2)
  % Hamiltonian
  iH = i*H;
else
  iH = sparse(0);
end

n_A = prod(size(A));

L = sparse(0);
acomm = sparse(0);
for k=1:n_A
  acomm = acomm +0.5 * A{k}' * A{k};
  L = L +lrmul(A{k}, A{k}'); 
end
L = L +lmul(-acomm -iH) +rmul(-acomm +iH);