|Produces the projection onto the antisymmetric subspace|
|Other toolboxes required||none|
|Related functions|| SymmetricProjection|
|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.
- PA = AntisymmetricProjection(DIM)
- PA = AntisymmetricProjection(DIM,P)
- PA = AntisymmetricProjection(DIM,P,PARTIAL)
- PA = AntisymmetricProjection(DIM,P,PARTIAL,MODE)
- 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 . 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. Because P! grows very quickly, this method is only practical when P is small.
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
Click here to view this function's source code on github.