Skip to content

qiu_hamiltonian_simulation.time_independent.direct

Time evolution under quadratic phases, applied directly by phase circuits.

Classes:

PositionDomainEvolutionQuadratic

PositionDomainEvolutionQuadratic(quadratic_signal: QuadraticSignal)

Bases: QuantumCircuit

The unitary e^(i f(x)) for a quadratic signal f on a position axis.

The basis state |k> is multiplied by e^(i f(x_k)), e.g. for the potential V over the time t, f = -t V / hbar.

Parameters:

  • quadratic_signal (QuadraticSignal) –

    The quadratic signal on a position axis of 2**n samples.

Attributes:

Source code in packages/qiu-hamiltonian-simulation/src/qiu_hamiltonian_simulation/time_independent/direct.py
27
28
29
30
31
32
33
34
35
36
37
38
39
def __init__(self, quadratic_signal: QuadraticSignal) -> None:
    """Initialize the evolution.

    Args:
        quadratic_signal: The quadratic signal on a position axis of `2**n`
            samples.
    """
    require_position_domain_axis(quadratic_signal.axis)
    self.quadratic_signal = quadratic_signal

    psi_reg = QuantumRegister(num_qubits_of(quadratic_signal.axis), name=r"\psi")
    super().__init__(psi_reg, name="Position Domain Evolution")
    self.compose(polynomial_phase_circuit(quadratic_signal), psi_reg, inplace=True)

quadratic_signal instance-attribute

quadratic_signal: QuadraticSignal = quadratic_signal

The quadratic signal f.

MomentumDomainEvolutionQuadratic

MomentumDomainEvolutionQuadratic(quadratic_signal: QuadraticSignal, fourier_method: SynthesisMethod = GATE)

Bases: QuantumCircuit

The unitary e^(i f(p)) for a quadratic signal f on a momentum axis.

The state is transformed to the momentum basis, see fourier, multiplied by e^(i f(p_k)) and transformed back, e.g. for the kinetic energy T over the time t, f = -t T / hbar.

Parameters:

  • quadratic_signal (QuadraticSignal) –

    The quadratic signal on a Fourier domain axis of 2**n samples in the FFT ordering.

  • fourier_method (SynthesisMethod, default: GATE ) –

    How the Fourier transforms are represented.

Attributes:

Source code in packages/qiu-hamiltonian-simulation/src/qiu_hamiltonian_simulation/time_independent/direct.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def __init__(
    self,
    quadratic_signal: QuadraticSignal,
    fourier_method: SynthesisMethod = SynthesisMethod.GATE,
) -> None:
    """Initialize the evolution.

    Args:
        quadratic_signal: The quadratic signal on a Fourier domain axis of
            `2**n` samples in the `FFT` ordering.
        fourier_method: How the Fourier transforms are represented.
    """
    require_momentum_domain_axis(quadratic_signal.axis)
    self.quadratic_signal = quadratic_signal

    num_qubits = num_qubits_of(quadratic_signal.axis)
    psi_reg = QuantumRegister(num_qubits, name=r"\psi")
    super().__init__(psi_reg, name="Momentum Domain Evolution")

    self.compose(
        to_momentum_basis(num_qubits, fourier_method), psi_reg, inplace=True
    )
    self.compose(polynomial_phase_circuit(quadratic_signal), psi_reg, inplace=True)
    self.compose(
        to_position_basis(num_qubits, fourier_method), psi_reg, inplace=True
    )

quadratic_signal instance-attribute

quadratic_signal: QuadraticSignal = quadratic_signal

The quadratic signal f.