Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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]