AntisymmetricProjection

AntisymmetricProjection is a function that computes the orthogonal projection onto the antisymmetric subspace of two or more subsystems. The output of this function is always a sparse matrix.

Syntax

 * PA = AntisymmetricProjection(DIM)
 * PA = AntisymmetricProjection(DIM,P)
 * PA = AntisymmetricProjection(DIM,P,PARTIAL)
 * PA = AntisymmetricProjection(DIM,P,PARTIAL,MODE)

Argument descriptions

 * DIM: The dimension of each of the subsystems.
 * P (optional, default 2): The number of subsystems.
 * PARTIAL (optional, default 0): If PARTIAL = 1</tt> then PA</tt> isn't the orthogonal projection itself, but rather a matrix whose columns form an orthonormal basis for the antisymmetric subspace (and hence PA*PA'</tt> is the orthogonal projection onto the antisymmetric subspace).
 * MODE</tt> (optional, default -1): A flag that determines which of two algorithms is used to compute the antisymmetric projection. If MODE = -1</tt> then this script chooses which algorithm it thinks will be faster based on the values of DIM</tt> and P</tt>. If you wish to force the script to use a specific one of the algorithms (not recommended!), they are as follows:
 * MODE = 0</tt>: Computes the antisymmetric projection by explicitly constructing an orthonormal basis of the antisymmetric subspace. The method for constructing such a basis is a modification of the procedure described for the symmetric subspace in . This method is typically fast when DIM</tt> is small compared to P</tt>.
 * MODE = 1</tt>: Computes the antisymmetric projection by averaging all P!</tt> permutation operators (in the sense of the PermutationOperator</tt> function). Permutation operators corresponding to an even permutation are given a weight of +1, while permutation operators corresponding to an odd permutation are given a weight of -1. Because P!</tt> grows very quickly, this method is only practical when P</tt> is small.

Two subsystems
To compute the antisymmetric projection on two-qubit space, the following code suffices: Note that the output of this function is always sparse. If you want a full matrix (not recommended for even moderately large DIM</tt> or <tt>P</tt>), you must explicitly convert it using MATLAB's built-in full function.

More subsystems and <tt>PARTIAL</tt>
To compute a matrix whose columns form an orthonormal basis for the symmetric subspace of three-qutrit space, set <tt>PARTIAL = 1</tt>:

Note that <tt>PA</tt> is an isometry from the antisymmetric subspace (which is one-dimensional in this case) to the full three-qutrit space. In other words, <tt>PA'*PA</tt> is the identity matrix (i.e., the scalar 1 here) and <tt>PA*PA'</tt> is the orthogonal projection onto the antisymmetric subspace, which we can verify as follows:

When <tt>DIM</tt> is too small
When <tt>DIM < P</tt>, the antisymmetric subspace is zero-dimensional, as verified in the <tt>DIM = 4, P = 6</tt> case by the following line of code: