AntisymmetricProjection

From QETLAB
Jump to navigation Jump to search
AntisymmetricProjection
Produces the projection onto the antisymmetric subspace

Other toolboxes required none
Related functions SymmetricProjection
SwapOperator
Function category Permutations and symmetry of subsystems

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 then PA isn't the orthogonal projection itself, but rather a matrix whose columns form an orthonormal basis for the antisymmetric subspace (and hence PA*PA' is the orthogonal projection onto the antisymmetric subspace).
  • MODE (optional, default -1): A flag that determines which of two algorithms is used to compute the antisymmetric projection. If MODE = -1 then this script chooses which algorithm it thinks will be faster based on the values of DIM and P. If you wish to force the script to use a specific one of the algorithms (not recommended!), they are as follows:
    • MODE = 0: 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 [1]. This method is typically fast when DIM is small compared to P.
    • MODE = 1: Computes the antisymmetric projection by averaging all P! permutation operators (in the sense of the PermutationOperator 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.[2] Because P! grows very quickly, this method is only practical when P is small.

Examples

Two subsystems

To compute the antisymmetric projection on two-qubit space, the following code suffices:

>> AntisymmetricProjection(2)

ans =

   (2,2)       0.5000
   (3,2)      -0.5000
   (2,3)      -0.5000
   (3,3)       0.5000

Note that the output of this function is always sparse. If you want a full matrix (not recommended for even moderately large DIM or P), you must explicitly convert it using MATLAB's built-in full function.

More subsystems and PARTIAL

To compute a matrix whose columns form an orthonormal basis for the symmetric subspace of three-qutrit space, set PARTIAL = 1:

>> PA = AntisymmetricProjection(3,3,1)

PA =

   (6,1)       0.4082
   (8,1)      -0.4082
  (12,1)      -0.4082
  (16,1)       0.4082
  (20,1)       0.4082
  (22,1)      -0.4082

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

>> PA'*PA

ans =

   (1,1)       1.0000

>> norm(PA*PA' - AntisymmetricProjection(3,3),'fro')

ans =

  3.3307e-016

When DIM is too small

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

>> AntisymmetricProjection(4,6)

ans =

   All zero sparse: 4096-by-4096

Source code

Click here to view this function's source code on github.

References

  1. John Watrous. Lecture 21: The quantum de Finetti theorem, Theory of Quantum Information Lecture Notes, 2008.
  2. R.B. Griffiths. Systems of Identical Particles, 33-756 Quantum Mechanics II Course Notes, 2011.