FilterNormalForm
FilterNormalForm | |
Computes the filter normal form of an operator | |
Other toolboxes required | none |
---|---|
Related functions | IsSeparable OperatorSchmidtDecomposition OperatorSinkhorn |
Function category | Entanglement and separability |
FilterNormalForm is a function that computes the filter normal form of a bipartite operator RHO (see Section IV.D of ^{[1]} for an introductory discussion of the filter normal form). Note that if RHO is not full rank, it may not have a filter normal form and hence an error may be produced by this function.
Contents
Syntax
- XI = FilterNormalForm(RHO)
- [XI,GA,GB] = FilterNormalForm(RHO)
- [XI,GA,GB,FA,FB] = FilterNormalForm(RHO,DIM)
- [XI,GA,GB,FA,FB] = FilterNormalForm(RHO,DIM,TOL)
Argument descriptions
Input arguments
- RHO: An positive semidefinite operator (typically a density matrix) that acts on a bipartite Hilbert space. This operator will have its filter normal form computed.
- DIM (optional, default has RHO acting on two subsystems of equal size): A vector containing the dimensions of the two subsystems on which RHO acts.
- TOL (optional, default sqrt(eps)): The numerical tolerance used when computing the filter normal form.
Output arguments
- XI: A vector containing the coefficients of the filter normal form of RHO, as defined in ^{[1]}.
- GA,GB (optional): Cells of mutually orthonormal matrices in the filter normal form of RHO.
- FA,FB (optional): The local filtering operations used to convert RHO into its filter normal form.
To be explicit, the relationship between RHO and the output arguments is that kron(FA,FB)*RHO*kron(FA,FB)' == (eye(length(RHO)) + TensorSum(XI,GA,GB))/length(RHO). In usual math notation, this means that
\((F_A \otimes F_B)\rho(F_A \otimes F_B)^\dagger = \frac{1}{d_A d_B}\big(I + \displaystyle\sum_{k} \xi_k G_k^A \otimes G_k^B\big).\)
Examples
Finding and verifying the filter normal form
The following code computes the filter normal form of a random density matrix. The fact that FA and FB implement a local filter to this form is then verified (within reasonable numerical error).
>> rho = RandomDensityMatrix(9); >> [xi,GA,GB,FA,FB] = FilterNormalForm(rho); >> norm((eye(9) + TensorSum(xi,GA,GB))/9 - kron(FA,FB)*rho*kron(FA,FB)') ans = 6.8088e-016
Using the filter normal form to detect entanglement
As noted in ^{[1]}, the coefficients XI of the filter normal form provide useful information about the entanglement of RHO. For example, if both subsystems have the same dimension D then we can conclude that RHO is entangled if sum(XI) > D^2 - D. Thus the following code generates a random two-qutrit density matrix and then determines that it is entangled:
>> d = 3; >> rho = RandomDensityMatrix(d^2); >> xi = FilterNormalForm(rho); >> [sum(xi), d^2-d] ans = 6.3611 6.0000
Low-rank states may not have a filter normal form
It is known^{[2]} that all full-rank density matrices have a filter normal form. However, low-rank density matrices may not have a filter normal form (although they usually do) – an error will be produced by this script when low-rank problems occur. The following code generates a random rank-2 density matrix in \(M_3 \otimes M_3\) just fine, but is unable to compute the filter normal form of a low-rank state that is constructed specifically so that it does not have a filter normal form:
>> xi = FilterNormalForm(RandomDensityMatrix(9,0,2)); % no errors will come from this >> rho = kron(diag([1/2,1/2,0]),eye(3)/3); >> xi = FilterNormalForm(rho); Error using FilterNormalForm (line 68) The state RHO can not be transformed into a filter normal form. This is often the case if RHO is not of full rank.
Source code
Click on "expand" to the right to view the MATLAB source code for this function.
%% FILTERNORMALFORM Computes the filter normal form of an operator
% This function has one required argument:
% RHO: a density matrix
%
% XI = FilterNormalForm(RHO) is a vector of the coefficients in RHO's
% filter normal form (see Section IV.D of [1]), which are useful for
% showing that RHO is entangled.
%
% The filter normal form is not guaranteed to exist if RHO is not full
% rank. If a filter normal form can not be found, an error is returned.
%
% This function has two optional input arguments:
% DIM (default has both subsystems of equal dimension)
% TOL (default sqrt(eps))
%
% This function has four optional output arguments:
% GA,GB: cells of mutually orthonormal matrices
% FA,FB: invertible matrices
%
% [XI,GA,GB,FA,FB] = FilterNormalForm(RHO,DIM,TOL) returns XI, GA, GB,
% FA, FB such that (eye(length(RHO)) + TensorSum(XI,GA,GB))/length(RHO)
% equals kron(FA,FB)*RHO*kron(FA,FB)'. In other words, FA and FB are
% matrices implementing the local filter, XI is a vector of coefficients
% in the filter normal form, and GA and GB are cells of matrices in the
% tensor-sum decomposition of the filter normal form.
%
% DIM is a 1-by-2 vector containing the dimensions of the subsystems on
% which RHO acts. TOL is the numerical tolerance used when constructing
% the filter normal form.
%
% URL: http://www.qetlab.com/FilterNormalForm
%
% References:
% [1] O. Gittsovich, O. Guehne, P. Hyllus, and J. Eisert. Unifying several
% separability conditions using the covariance matrix criterion. Phys.
% Rev. A, 78:052319, 2008. E-print: arXiv:0803.0757 [quant-ph]
% requires: OperatorSchmidtDecomposition.m, OperatorSinkhorn.m,
% opt_args.m, PartialTrace.m, PermuteSystems.m,
% SchmidtDecomposition.m, Swap.m
%
% author: Nathaniel Johnston (nathaniel@njohnston.ca)
% package: QETLAB
% last updated: October 3, 2014
function [xi,GA,GB,FA,FB] = FilterNormalForm(rho,varargin)
lrho = length(rho);
% set optional argument defaults: dim=sqrt(length(rho)), tol=sqrt(eps)
[dim,tol] = opt_args({ round(sqrt(lrho)), sqrt(eps) },varargin{:});
% allow the user to enter a single number for dim
if(length(dim) == 1)
dim = [dim,lrho/dim];
if abs(dim(2) - round(dim(2))) >= 2*lrho*eps
error('FilterNormalForm:InvalidDim','If DIM is a scalar, it must evenly divide length(RHO); please provide the DIM array containing the dimensions of the subsystems.');
end
dim(2) = round(dim(2));
end
try
[sigma,F] = OperatorSinkhorn(rho,dim);
catch err
% Operator Sinkhorn didn't converge.
if(strcmpi(err.identifier,'OperatorSinkhorn:LowRank'))
error('FilterNormalForm:NoFNF','The state RHO can not be transformed into a filter normal form. This is often the case if RHO is not of full rank.');
else
rethrow(err);
end
end
% Do some post-processing to make the output more useful and consistent
% with the literature.
pd = prod(dim);
[xi,GA,GB] = OperatorSchmidtDecomposition(sigma - trace(sigma)*eye(pd)/pd,dim);
xi = pd*xi;
FA = F{1};
FB = F{2};
References
- ↑ ^{1.0} ^{1.1} ^{1.2} O. Gittsovich, O. Gühne, P. Hyllus, and J. Eisert. Unifying several separability conditions using the covariance matrix criterion. Phys. Rev. A, 78:052319, 2008. E-print: arXiv:0803.0757 [quant-ph]
- ↑ J. M. Leinaas, J. Myrheim, and E. Ovrum. Geometrical aspects of entanglement. Phys. Rev. A, 74:012313, 2006. E-print: arXiv:quant-ph/0605079