Difference between revisions of "AntisymmetricProjection"
m (→Argument descriptions: typo fix) |
(removing red links) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{Function | {{Function | ||
|name=AntisymmetricProjection | |name=AntisymmetricProjection | ||
| − | |desc=Produces the | + | |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 | + | <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. |
==Syntax== | ==Syntax== | ||
| Line 19: | Line 19: | ||
* <tt>PARTIAL</tt> (optional, default 0): If <tt>PARTIAL = 1</tt> then <tt>PA</tt> isn't the orthogonal projection itself, but rather a matrix whose columns form an orthonormal basis for the antisymmetric subspace (and hence <tt>PA*PA'</tt> is the orthogonal projection onto the antisymmetric subspace). | * <tt>PARTIAL</tt> (optional, default 0): If <tt>PARTIAL = 1</tt> then <tt>PA</tt> isn't the orthogonal projection itself, but rather a matrix whose columns form an orthonormal basis for the antisymmetric subspace (and hence <tt>PA*PA'</tt> is the orthogonal projection onto the antisymmetric subspace). | ||
* <tt>MODE</tt> (optional, default -1): A flag that determines which of two algorithms is used to compute the antisymmetric projection. If <tt>MODE = -1</tt> then this script chooses which algorithm it thinks will be faster based on the values of <tt>DIM</tt> and <tt>P</tt>. If you wish to force the script to use a specific one of the algorithms (not recommended!), they are as follows: | * <tt>MODE</tt> (optional, default -1): A flag that determines which of two algorithms is used to compute the antisymmetric projection. If <tt>MODE = -1</tt> then this script chooses which algorithm it thinks will be faster based on the values of <tt>DIM</tt> and <tt>P</tt>. If you wish to force the script to use a specific one of the algorithms (not recommended!), they are as follows: | ||
| − | ** <tt>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 | + | ** <tt>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 <ref>John Watrous. [https://cs.uwaterloo.ca/~watrous/quant-info/lecture-notes/21.pdf Lecture 21: The quantum de Finetti theorem], ''Theory of Quantum Information Lecture Notes'', 2008.</ref>. This method is typically fast when <tt>DIM</tt> is small compared to <tt>P</tt>. |
** <tt>MODE = 1</tt>: Computes the antisymmetric projection by averaging all <tt>P!</tt> permutation operators (in the sense of the <tt>[[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.<ref>R.B. Griffiths. [http://quantum.phys.cmu.edu/qm2/qmc161.pdf Systems of Identical Particles], ''33-756 Quantum Mechanics II Course Notes'', 2011.</ref> Because <tt>P!</tt> grows very quickly, this method is only practical when <tt>P</tt> is small. | ** <tt>MODE = 1</tt>: Computes the antisymmetric projection by averaging all <tt>P!</tt> permutation operators (in the sense of the <tt>[[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.<ref>R.B. Griffiths. [http://quantum.phys.cmu.edu/qm2/qmc161.pdf Systems of Identical Particles], ''33-756 Quantum Mechanics II Course Notes'', 2011.</ref> Because <tt>P!</tt> grows very quickly, this method is only practical when <tt>P</tt> is small. | ||
| 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. | + | 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 /> | ||
Latest revision as of 20:15, 13 April 2015
| 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.5000Note 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.4082Note 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-016When 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-4096Source 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.