class BogoliubovTransform(transformation_matrix, qubit_mapper=None, *, validate=True, rtol=1e-05, atol=1e-08, **circuit_kwargs)[source]#

Bases: QuantumCircuit

A circuit that performs a Bogoliubov transform.

A Bogoliubov transform effects a unitary basis change that maps the fermionic ladder operators to a new set of ladder operators that also satisfy the fermionic anticommutation relations. That is, it effects a unitary \(U\) such that

\[U a^\dagger_j U^\dagger = b^\dagger_j, \quad j = 1, \ldots, N\]

where the \(\{a_j\}\) are the original fermionic creation operators and the \(\{b_j\}\) are the new fermionic creation operators. The new creation operators are linear combinations of the original ladder operators, and the coefficients of the linear combinations are specified by a matrix \(W\) which determines the unitary \(U\). The matrix \(W\) is either \(N \times N\) or \(N \times 2N\).

If \(W\) is \(N \times N\), then the linear combinations involve only the original creation operators:

\[\begin{split}\begin{pmatrix} b^\dagger_1 \\ \vdots \\ b^\dagger_N \\ \end{pmatrix} = W \begin{pmatrix} a^\dagger_1 \\ \vdots \\ a^\dagger_N \\ \end{pmatrix}.\end{split}\]

If \(W\) is \(N \times 2N\), then the linear combinations involve both the original creation and annihilation operators:

\[\begin{split}\begin{pmatrix} b^\dagger_1 \\ \vdots \\ b^\dagger_N \\ \end{pmatrix} = W \begin{pmatrix} a^\dagger_1 \\ \vdots \\ a^\dagger_N \\ a_1 \\ \vdots \\ a_N \end{pmatrix}.\end{split}\]

The matrix \(W\) is commonly obtained by calling the diagonalizing_bogoliubov_transform() method of the QuadraticHamiltonian class.

Currently, only the Jordan-Wigner Transformation is supported.


  • transformation_matrix (np.ndarray) -- The matrix \(W\) that specifies the coefficients of the new creation operators in terms of the original creation operators. Should be either \(N \times N\) or \(N \times 2N\).

  • qubit_mapper (QubitMapper | None) -- The QubitMapper. The default behavior is to create one using the call JordanWignerMapper().

  • validate (bool) -- Whether to validate the inputs.

  • rtol (float) -- Relative numerical tolerance for input validation.

  • atol (float) -- Absolute numerical tolerance for input validation.

  • circuit_kwargs -- Keyword arguments to pass to the QuantumCircuit initializer.

  • ValueError -- transformation_matrix must be a 2-dimensional array.

  • ValueError -- transformation_matrix must have orthonormal rows.

  • ValueError -- transformation_matrix does not describe a valid transformation of fermionic ladder operators. If the transformation matrix is \(N \times N\), then it should be unitary. If the transformation matrix is \(N \times 2N\), then it should have the block form \((W_1 \quad W_2)\) where \(W_1 W_1^\dagger + W_2 W_2^\dagger = I\) and \(W_1 W_2^T + W_2 W_1^T = 0\).

  • NotImplementedError -- Currently, only the Jordan-Wigner Transform is supported. Please use the qiskit_nature.second_q.mappers.JordanWignerMapper.