Difference between revisions of "AntisymmetricProjection"
Line 2: | Line 2: | ||
|name=AntisymmetricProjection | |name=AntisymmetricProjection | ||
|desc=Produces the [[projection]] onto the [[antisymmetric subspace]] | |desc=Produces the [[projection]] onto the [[antisymmetric subspace]] | ||
− | |||
|rel=[[SymmetricProjection]]<br />[[SwapOperator]] | |rel=[[SymmetricProjection]]<br />[[SwapOperator]] | ||
+ | |cat=[[List of functions#Permutations_and_symmetry_of_subsystems|Permutations and symmetry of subsystems]] | ||
|upd=November 26, 2012 | |upd=November 26, 2012 | ||
− | |v= | + | |v=0.50}} |
<tt>'''AntisymmetricProjection'''</tt> is a [[List of functions|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. | <tt>'''AntisymmetricProjection'''</tt> is a [[List of functions|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. | ||
Line 25: | Line 25: | ||
===Two subsystems=== | ===Two subsystems=== | ||
To compute the antisymmetric projection on two-qubit space, the following code suffices: | To compute the antisymmetric projection on two-qubit space, the following code suffices: | ||
− | < | + | <syntaxhighlight> |
>> AntisymmetricProjection(2) | >> AntisymmetricProjection(2) | ||
Line 34: | Line 34: | ||
(2,3) -0.5000 | (2,3) -0.5000 | ||
(3,3) 0.5000 | (3,3) 0.5000 | ||
− | </ | + | </syntaxhighlight> |
Note that the output of this function is always sparse. If you want a full matrix (not recommended for even moderately large <tt>DIM</tt> or <tt>P</tt>), you must explicitly convert it using MATLAB's built-in [http://www.mathworks.com/help/matlab/ref/full.html full] function. | Note that the output of this function is always sparse. If you want a full matrix (not recommended for even moderately large <tt>DIM</tt> or <tt>P</tt>), you must explicitly convert it using MATLAB's built-in [http://www.mathworks.com/help/matlab/ref/full.html full] function. | ||
===More subsystems and <tt>PARTIAL</tt>=== | ===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>: | To compute a matrix whose columns form an orthonormal basis for the symmetric subspace of three-[[qutrit]] space, set <tt>PARTIAL = 1</tt>: | ||
− | < | + | <syntaxhighlight> |
>> PA = AntisymmetricProjection(3,3,1) | >> PA = AntisymmetricProjection(3,3,1) | ||
Line 50: | Line 50: | ||
(20,1) 0.4082 | (20,1) 0.4082 | ||
(22,1) -0.4082 | (22,1) -0.4082 | ||
− | </ | + | </syntaxhighlight> |
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: | 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: | ||
− | < | + | <syntaxhighlight> |
>> PA'*PA | >> PA'*PA | ||
Line 65: | Line 65: | ||
3.3307e-016 | 3.3307e-016 | ||
− | </ | + | </syntaxhighlight> |
===When <tt>DIM</tt> is too small=== | ===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: | 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: | ||
− | < | + | <syntaxhighlight> |
>> AntisymmetricProjection(4,6) | >> AntisymmetricProjection(4,6) | ||
Line 75: | Line 75: | ||
All zero sparse: 4096-by-4096 | All zero sparse: 4096-by-4096 | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | {{SourceCode|name=AntisymmetricProjection}} | ||
==References== | ==References== | ||
<references /> | <references /> |
Revision as of 19:17, 23 September 2014
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
- ↑ John Watrous. Lecture 21: The quantum de Finetti theorem, Theory of Quantum Information Lecture Notes, 2008.
- ↑ R.B. Griffiths. Systems of Identical Particles, 33-756 Quantum Mechanics II Course Notes, 2011.