Skip to main content
IBM Quantum Platform

groups_have_uniform_coeffs

groups_have_uniform_coeffs(op, *, atol=1e-08, abs=True)

Renvoie, pour chaque groupe, si tous ses coefficients sont numériquement égaux.

Avec abs (valeur par défaut), on compare les amplitudes des coefficients, ce qui correspond à l'hypothèse group_coeff_means() posée par lorsqu'il calcule la moyenne de abs(coeff). Sans cela, les coefficients doivent correspondre exactement. Il convient de noter qu'un groupe hermitien peut légitimement ne pas satisfaire à cette forme plus stricte, puisqu'une paire conjuguée à coefficients complexes présente des amplitudes égales mais des coefficients inégaux. Si l'opérateur ne suit aucun groupe, cette fonction renvoie None.

Un groupe vide ou ne comportant qu'un seul terme est, par définition, uniforme.

Remarque

Il ne s'agit pas d'une forme plus faible de groups_are_hermitian(): l'une n'implique pas l'autre. Des coefficients uniformes ne suffisent pas à rendre un groupe hermitien, et un groupe hermitien peut présenter des grandeurs de signes différents.

>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.terms.grouping import groups_have_uniform_coeffs
>>> op = FermionOperator.from_dict(
...     {
...         ((True, 0), (False, 1)): 1.0j,
...         ((True, 1), (False, 0)): -1.0j,
...     }
... )
>>> op.groups = [0, 0]
>>> groups_have_uniform_coeffs(op)  # equal magnitudes
[True]
>>> groups_have_uniform_coeffs(op, abs=False)  # but not equal coefficients
[False]

Paramètres

  • op – l'opérateur dont les groupes doivent être vérifiés.
  • atol – Précision numérique au-delà de laquelle les coefficients sont considérés comme égaux. Cette valeur est définie par défaut sur 1e-8.
  • abs – Indique s’il faut comparer les grandeurs des coefficients plutôt que les coefficients eux-mêmes. Cette valeur est définie par défaut sur True.

Retours

Un indicateur par index de groupe, ou None si l'opérateur ne suit aucun groupe.

Augmentations

TypeError – si n'est op pas un type d'opérateur pris en charge (voir OperatorTrait).

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.