Download Jordan-Wigner Transform: Simulation of Fermionic Creation and

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Oscillator representation wikipedia , lookup

Tensor operator wikipedia , lookup

Bra–ket notation wikipedia , lookup

Transcript
Jordan-Wigner Transform: Simulation of Fermionic
Creation and Annihilation Operators in a Quantum
Computer
by José Luis Gómez-Muñoz
http://homepage.cem.itesm.mx/lgomez/quantum/
[email protected]
Introduction
The Jordan-Wigner transform allows us to take a system of interacting Fermions (second quantization, occupation notation),
and map it into an equivalent model of interacting spins, which can then, in principle, be simulated using standard techniques
in a quantum computer. This enables to use quantum computers to simulate systems of interacting Fermions, as explained by
Michael A. Nielsen, "The Fermionic canonical relations and the Jordan-Wigner transform", 2005, published in his personal
blog. Here is a copy of that document:
http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
NOTE:
This could be an efficient implementation of fermionic operators in a quantum computer. However, in this "normal"
computer, these calculations are very slow. If you need faster calculations with these operators, and you do not care about
their possible implementation in a quantum computer, these documents might be useful for you:
Algebra of operators and commutators. Mathematica file: http://homepage.cem.itesm.mx/lgomez/quantum/v7algebra.nb
Algebra of operators and commutators. PDF file: http://homepage.cem.itesm.mx/lgomez/quantum/v7algebra.pdf
Load the Package
First load the Quantum`Computing` package. Write:
Needs["Quantum`Computing`"];
then press at the same time the keys ˜-Û to evaluate. Mathematica will load the package.
Needs@"Quantum`Computing`"D
Quantum`Computing` Version 2.2.0. HJune 2010L
A Mathematica package for Quantum Computing
in Dirac bra−ket notation and plotting of quantum circuits
by José Luis Gómez−Muñoz
Execute SetComputingAliases@D in order to use
the keyboard to enter quantum objects in Dirac's notation
SetComputingAliases@D must be executed again in each new notebook that is created
2
v7jordanwigner.nb
In order to use the keyboard to enter quantum objects write:
SetComputingAliases[ ];
then press at the same time the keys ˜-Û to evaluate. The semicolon prevents Mathematica from printing the help
message. Remember that SetComputingAliases[ ] must be evaluated again in each new notebook:
SetComputingAliases@D;
Annihilation Operator in terms of Pauli Operators
This is the definition of a fermionic annihilation operator in terms of Pauli operators and the operator
0\·X1 .Pauli
operators σ,kˆ produce the correct sign when acting on a ket (or, equivalent, produce the correct commutation relations) and
the operator
annihilates the corresponding fermion (qubit).
0\·X1
nfermions = 3;
j−1
a@j_D :=
⊗ σ,kˆ
k=1
⊗ J−
0ˆj ^ ⋅ Z1ˆj
N⊗
nfermions
⊗
σ,mˆ
m=j+1
Each qubit represents a fermionic state. A qubit value of "zero" means that the state is not occupied; "one" means the
fermionic state is occupied. Here the the annihilation operator a[2] annihilates the second fermionic state, 1ˆ2 Ø0ˆ2 .
1ˆ1 , 1ˆ2 , 0ˆ3 ]E
QuantumEvaluateAa@2D ⋅
1ˆ1 , 0ˆ2 , 0ˆ3 ]
If the annihilation operator is applied to a ket with the corresponding fermionic state equal to "zero" (nonoccupied), then the
ket is "destroyed":
1ˆ1 , 0ˆ2 , 0ˆ3 ]E
QuantumEvaluateAa@2D ⋅
0
Here we can see the action of the annihilation operator a[2] in any possible basis ket for a three fermionic-states system.
Notice the negative signs, which depend on the occupation of the previous fermionic states:
QuantumTableForm@a@2DD
Input
Output
0
0ˆ1 ,
0ˆ3 ]
0
1
0ˆ1 , 0ˆ2 , 1ˆ3 ]
0
2
0ˆ1 , 1ˆ2 , 0ˆ3 ]
−
0ˆ1 , 0ˆ2 , 0ˆ3 ]
3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
−
0ˆ1 , 0ˆ2 , 1ˆ3 ]
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
0
5
1ˆ1 , 0ˆ2 , 1ˆ3 ]
0
0ˆ2 ,
6
1ˆ1 ,
0ˆ3 ]
1ˆ1 , 0ˆ2 , 0ˆ3 ]
7
1ˆ1 , 1ˆ2 , 1ˆ3 ]
1ˆ1 , 0ˆ2 , 1ˆ3 ]
1ˆ2 ,
v7jordanwigner.nb
Here we can see the action of the annihilation operator a[3] in any possible basis ket for a three fermionic-states system.
Notice the negative signs, which depend on the occupation of the previous fermionic states:
QuantumTableForm@a@3DD
Input
Output
0
0ˆ1 ,
0ˆ2 ,
0ˆ3 ]
0
1
0ˆ1 ,
0ˆ2 ,
1ˆ3 ]
−
2
0ˆ1 , 1ˆ2 , 0ˆ3 ]
0
3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
5
1ˆ1 , 0ˆ2 , 1ˆ3 ]
6
1ˆ1 , 1ˆ2 , 0ˆ3 ]
0
7
1ˆ1 ,
1ˆ3 ]
−
1ˆ2 ,
0ˆ1 , 0ˆ2 , 0ˆ3 ]
0ˆ1 , 1ˆ2 , 0ˆ3 ]
0
1ˆ1 , 0ˆ2 , 0ˆ3 ]
1ˆ1 , 1ˆ2 , 0ˆ3 ]
Creation Operator in terms of Pauli Operators
This is the fermionic annihilation operator that was defined above:
a@jD
−1+j
−
⊗ σ,kˆ ⋅
k=1
0ˆj ^ ⋅ Z1ˆj
3
⋅
⊗ σ,mˆ
m=j+1
The fermionic creation operator is the hermitian conjugate of the annihilaton operator. Press [ESC]her[ESC] for the hermitian-conjugate template, or use the "Quantum Notation" Palette, in the menu Palettes of Mathematica:
a@jD†
3
−
⊗ σ,mˆ
m=j+1
†
⋅
1ˆj ^ ⋅ Z0ˆj
−1+j
⋅
†
⊗ σ,kˆ
k=1
Each qubit represents a fermionic state. A qubit value of "zero" means that the state is not occupied; "one" means the
fermionic state is occupied. Here the the creation operator a@2D† "creates" a fermion in the second fermionic state, 0ˆ2 Ø1ˆ2 .
Notice the negative sign. This sign depends on the occupation of the previous fermionic states:
QuantumEvaluateAa@2D† ⋅
−
0ˆ1 , 0ˆ2 , 0ˆ3 ]E
0ˆ1 , 1ˆ2 , 0ˆ3 ]
If the creation operator is applied to a ket with the corresponding fermionic state equal to "one" (occupied), then the ket is
"destroyed":
3
4
v7jordanwigner.nb
QuantumEvaluateAa@2D† ⋅
0ˆ1 , 1ˆ2 , 0ˆ3 ]E
0
Here we can see the action of the creation operator a@2D† in any possible basis ket for a three fermionic-states system.
Notice the negative signs, which depend on the occupation of the previous fermionic states:
QuantumTableFormAa@2D† E
Input
Output
0
0ˆ1 , 0ˆ2 , 0ˆ3 ]
−
0ˆ1 , 1ˆ2 , 0ˆ3 ]
1
0ˆ1 , 0ˆ2 , 1ˆ3 ]
−
0ˆ1 , 1ˆ2 , 1ˆ3 ]
2
0ˆ1 , 1ˆ2 , 0ˆ3 ]
0
3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
0
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
1ˆ1 , 1ˆ2 , 0ˆ3 ]
5
1ˆ1 ,
1ˆ3 ]
1ˆ1 , 1ˆ2 , 1ˆ3 ]
6
1ˆ1 , 1ˆ2 , 0ˆ3 ]
0
7
1ˆ1 , 1ˆ2 , 1ˆ3 ]
0
0ˆ2 ,
Here we can see the action of the creation operator a@3D† in any possible basis ket for a three fermionic-states system.
Notice the negative signs, which depend on the occupation of the previous fermionic states:
QuantumTableFormAa@3D† E
Input
Output
0
0ˆ1 ,
0ˆ3 ]
−
1
0ˆ1 , 0ˆ2 , 1ˆ3 ]
0
2
0ˆ1 , 1ˆ2 , 0ˆ3 ]
3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
5
1ˆ1 , 0ˆ2 , 1ˆ3 ]
0
6
1ˆ1 , 1ˆ2 , 0ˆ3 ]
−
7
1ˆ1 ,
1ˆ3 ]
0
0ˆ2 ,
1ˆ2 ,
0ˆ1 , 0ˆ2 , 1ˆ3 ]
0ˆ1 , 1ˆ2 , 1ˆ3 ]
0
1ˆ1 , 0ˆ2 , 1ˆ3 ]
1ˆ1 , 1ˆ2 , 1ˆ3 ]
Commutation Relations
This is the fermionic annihilation operator that was defined above. TraditionalForm gives a format closer to the format used
in papers and textbooks:
TraditionalForm@a@jDD
j-1
-
≈Jsk` N
k=1
3
0\X1
≈ Ism` M
m= j+1
v7jordanwigner.nb
The anticommutator of annihilation and creation operators of the same state give the identity. Press [ESC]anti[ESC] for the
anticommutator template and [ESC]her[ESC] for the hermitian conjugate, or use the "Quantum Notation" Palette, in the
menu Palettes of Mathematica.This calculation is too slow, see the Note at the beginning of this document:
PauliExpandAQa@2D, a@2D† U+ E
σ,1ˆ ⋅ σ,2ˆ ⋅ σ,3ˆ
The PauliIdentities->False option transforms the identity operators to the number one.This calculation is too slow, see the
Note at the beginning of this document:
PauliExpandAQa@2D, a@2D† U+ , PauliIdentities → FalseE
1
Anticommutator of annihilation and creation in different fermionic states:
PauliExpandAQa@2D, a@3D† U+ E
0
Annihilate two times destroys any ket, therefore this anticommutator is zero:
PauliExpand@Pa@2D, a@2DT+ D
0
Annihilate in different states does not destroy any ket, however the anticommutator is zero, see below the True-tables to
understand this result:
PauliExpand@Pa@2D, a@3DT+ D
0
Here we see why the previous anitcommutator Pa@2D, a@3DT+ =a[2]·a[3]+a[3]·a[2] is zero: a[3]·a[2] gives kets with
opposite sign to those given by a[2]·a[3]:
5
6
v7jordanwigner.nb
Grid@88QuantumTableForm@a@2D ⋅ a@3DD, QuantumTableForm@a@3D ⋅ a@2DD<<, Dividers → AllD
Input
Output
Input
Output
0
0ˆ1 , 0ˆ2 , 0ˆ3 ]
0
0
0ˆ1 , 0ˆ2 , 0ˆ3 ]
0
1
0ˆ1 , 0ˆ2 , 1ˆ3 ]
0
1
0ˆ1 , 0ˆ2 , 1ˆ3 ]
0
0ˆ1 ,
0ˆ3 ]
0
2
0ˆ1 ,
0ˆ3 ]
0
2
3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
−
0ˆ1 , 0ˆ2 , 0ˆ3 ] 3
0ˆ1 , 1ˆ2 , 1ˆ3 ]
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
0
4
1ˆ1 , 0ˆ2 , 0ˆ3 ]
0
5
1ˆ1 , 0ˆ2 , 1ˆ3 ]
0
5
1ˆ1 , 0ˆ2 , 1ˆ3 ]
0
6
1ˆ1 , 1ˆ2 , 0ˆ3 ]
0
6
1ˆ1 , 1ˆ2 , 0ˆ3 ]
0
7
1ˆ1 , 1ˆ2 , 1ˆ3 ]
−
1ˆ1 , 0ˆ2 , 0ˆ3 ] 7
1ˆ1 , 1ˆ2 , 1ˆ3 ]
1ˆ2 ,
1ˆ2 ,
0ˆ1 , 0ˆ2 , 0ˆ3 ]
1ˆ1 , 0ˆ2 , 0ˆ3 ]
Special Products of Annihilation and Creation Operators
This is the fermionic annihilation operator that was defined above. TraditionalForm gives a format closer to the format used
in papers and textbooks:
TraditionalForm@a@jDD
j-1
-
≈Jsk` N
k=1
3
0\X1
≈ Ism` M
m= j+1
Next expression evaluates to σ,2ˆ (times the identities in the other qubits/fermionic-states). This can be useful to write
Hamiltionians, see the last two pages of http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
PauliExpandAa@2D ⋅ a@2D† − a@2D† ⋅ a@2DE
σ,1ˆ ⋅ σ,2ˆ ⋅ σ,3ˆ
The PauliIdentities->False option transforms the identity operators to the number one.This calculation is too slow, see the
Note at the beginning of this document:
PauliExpandAa@2D ⋅ a@2D† − a@2D† ⋅ a@2D, PauliIdentities → FalseE
σ,2ˆ
Next expression evaluates to σ,1ˆ ⋅ σ,2ˆ (times the identities in the other qubits/fermionic-states). This can be useful to
write Hamiltionians, see the last two pages of http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
PauliExpandAIa@1D† − a@1DM ⋅ Ia@2D† + a@2DME
σ,1ˆ ⋅ σ,2ˆ ⋅ σ,3ˆ
v7jordanwigner.nb
The PauliIdentities->False option transforms the identity operators to the number one.This calculation is too slow, see the
Note at the beginning of this document:
PauliExpandAIa@1D† − a@1DM ⋅ Ia@2D† + a@2DM, PauliIdentities → FalseE
σ,1ˆ ⋅ σ,2ˆ
Next expression can be useful to write Hamiltionians, see the last two pages of http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
PauliExpandAIa@1D† + a@1DM ⋅ Ia@2D† − a@2DME
− σ,1ˆ ⋅ σ,2ˆ ⋅ σ,3ˆ
The PauliIdentities->False option transforms the identity operators to the number one.This calculation is too slow, see the
Note at the beginning of this document:
PauliExpandAIa@1D† + a@1DM ⋅ Ia@2D† − a@2DM, PauliIdentities → FalseE
− σ,1ˆ ⋅ σ,2ˆ
Next expression can be useful to write Hamiltionians, see the last two pages of http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
PauliExpandAIa@1D† − a@1DM ⋅ Ia@2D† − a@2DME
− σ,1ˆ ⋅ σ ,2ˆ ⋅ σ,3ˆ
The PauliIdentities->False option transforms the identity operators to the number one.This calculation is too slow, see the
Note at the beginning of this document:
PauliExpandAIa@1D† − a@1DM ⋅ Ia@2D† − a@2DM, PauliIdentities → FalseE
− σ,1ˆ ⋅ σ ,2ˆ
Next expression can be useful to write Hamiltionians, see the last two pages of http://homepage.cem.itesm.mx/lgomez/quantum/NielsenJordanWigner.pdf
PauliExpandAIa@1D† + a@1DM ⋅ Ia@2D† + a@2DME
− σ,1ˆ ⋅ σ,2ˆ ⋅ σ,3ˆ
TraditionalForm[] gives a format closer to the format of papers and textbooks:
7
8
v7jordanwigner.nb
TraditionalFormAPauliExpandAIa@1D† + a@1DM ⋅ Ia@2D† + a@2DMEE
-Â s
1 s2 s3
TeXForm can be used to generate expression for papers and books
TeXFormATraditionalFormAPauliExpandAIa@1D† + a@1DM ⋅ Ia@2D† + a@2DMEEE
-i \sigma _1^{\mathcal{Y}}\sigma _2^{\mathcal{X}}\sigma
_3^{\mathit{0}}
NOTE:
This could be an efficient implementation of fermionic operators in a quantum computer. However, in this "normal"
computer, these calculations are very slow. If you need faster calculations with these operators, and you do not care about
their possible implementation in a quantum computer, these documents might be useful for you:
Algebra of operators and commutators. Mathematica file: http://homepage.cem.itesm.mx/lgomez/quantum/v7algebra.nb
Algebra of operators and commutators. PDF file: http://homepage.cem.itesm.mx/lgomez/quantum/v7algebra.pdf
by José Luis Gómez-Muñoz
http://homepage.cem.itesm.mx/lgomez/quantum/
[email protected]