Double-factorized representation of the molecular Hamiltonian¶
This page discusses the double-factorized representation of the molecular Hamiltonian.
Double-factorized representation¶
The molecular Hamiltonian is commonly written in the form
This representation of the Hamiltonian is daunting for quantum simulations because the number of terms in the two-body part scales as
Here each
where
For an exact factorization,
Application to time evolution via Trotter-Suzuki formulas¶
In this section, we discuss how the double-factorized Hamiltonian can be simulated using Trotter-Suzuki formulas.
Brief background on Trotter-Suzuki formulas¶
Trotter-Suzuki formulas are used to approximate time evolution by a Hamiltonian
Time evolution by time
To approximate this operator, the total evolution time is first divided into a number of smaller time steps, called “Trotter steps”:
The time evolution for a single Trotter step is then approximated using a product formula, which approximates the exponential of a sum of terms by a product of exponentials of the individual terms. The formulas are approximate because the terms do not in general commute. A first-order asymmetric product formula has the form
Higher-order formulas can be derived which yield better approximations.
Application to the double-factorized Hamiltonian¶
Using the double-factorized representation, the Hamiltonian is decomposed into
where
and for
We have that
is a quadratic Hamiltonian and can be simulated as described in Orbital rotations and quadratic Hamiltonians, and is a diagonal Coulomb operator (up to an orbital rotation) for , and ffsim includes the function apply_diag_coulomb_evolution for simulating time evolution by such an operator.
Given the ability to simulate each of the individual terms, we can implement Trotter-Suzuki formulas for time evolution by the entire Hamiltonian. This is implemented in ffsim by the function simulate_trotter_double_factorized, which implements higher-order Trotter-Suzuki formulas in addition to the first-order asymmetric formula mentioned previously. The first-order asymmetric formula corresponds to setting the argument
order=0
, which is the default. order=1
corresponds to the first-order symmetric (commonly known as the second-order) formula, order=2
corresponds to the second-order symmetric (fourth-order) formula, and so on.