Deploying a Pauli Hamiltonian¶
To use QCIS to print.
Step 1: Import Required Modules¶
[1]:
from isqham.circuit.qcis import Qcis
from isqham.deployHamiltonian import Deployer
from isqham.qubitEncoding import JordanWignerEncoding
Step 2: Construct a Fermionic Hamiltonian¶
Here, we define a small Hamiltonian using creation and annihilation operators, then export it to the Pauli basis.
[2]:
qcis = Qcis()
encoding = JordanWignerEncoding
p = (
1 * encoding.c(0) * encoding.cd(0)
+ 1.5 * encoding.c(1) * encoding.cd(1)
+ 0.7 * encoding.c(0) * encoding.cd(0) * encoding.c(1) * encoding.cd(1)
)
h = p.exportPauliHamiltonian()
Step 3: Deploy Hamiltonian Time Evolution Circuit¶
We now deploy the exponential of the Hamiltonian using Trotterization (with N=1
step) for a time t=0.1
. Print the generated quantum circuit using QCIS.
[3]:
deployer = Deployer(qcis)
deployer.expHt(h=h, t=0.1, N=1)
RZ Q0 -0.135
RZ Q1 -0.18500000000000003
H Q0
CZ Q1 Q0
H Q0
RZ Q0 0.034999999999999996
H Q0
CZ Q1 Q0
H Q0
[3]:
<isqham.deployHamiltonian.Deployer at 0x7f12701794f0>
Summary¶
Used Jordan-Wigner encoding to build a Hamiltonian
Exported it to a Pauli Hamiltonian
Used
Deployer.expHt()
to generate a quantum circuit for ( e^{-iHt} )The circuit is stored in QCIS and can be further analyzed or simulated