groups_are_hermitian
groups_are_hermitian(op, *, atol=1e-08)
Gibt für jede Gruppe zurück, ob der durch die Terme dieser Gruppe gebildete Operator hermitesch ist.
Gruppen schreiben keine eigene Bedeutung vor; dies bestätigt eine gängige Konvention, nämlich dass jede Gruppe für sich genommen hermitesch ist. Das ist die Eigenschaft, auf die sich eine randomisierte Produktformel stützt, wenn sie Stichproben aus ganzen Gruppen zieht, da nur eine hermitische Gruppe eine unitäre Zeitentwicklung aufweist. Wenn der Betreiber keine Gruppen verfolgt, gibt diese Funktion. zurück None.
Eine leere Gruppe gilt als hermitisch, da der Nulloperator hermitisch ist.
Dies folgt aus der einseitigen Garantie von is_hermitian(): Ein Eintrag True vom Typ ist immer zuverlässig, während ein False Eintrag vom Typ nur für Operatortypen zuverlässig ist, deren Normalform eine echte kanonische Form ist. Bei den anderen ist die Überprüfung konservativ und kann zu einem Ergebnis führen, das eine Gruppe False betrifft, die tatsächlich hermitisch ist.
Dies wird durch … nicht impliziert (und impliziert auch nichts) groups_have_uniform_coeffs(). Einheitliche Koeffizienten machen eine Gruppe noch nicht hermitisch, und eine hermitische Gruppe kann unterschiedliche Größenordnungen aufweisen.
>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.terms.grouping import groups_are_hermitian
>>> # built from the sparse arrays rather than a dictionary, because only the former
>>> # fixes the term order that the group indices are paired with
>>> op = FermionOperator(
... [1.0, 1.0, 1.0],
... [True, False, True, False, True, False],
... [0, 1, 1, 0, 2, 3],
... [0, 2, 4, 6],
... )
>>> op.groups = [0, 0, 1] # the leading conjugate pair, then one unpaired term
>>> groups_are_hermitian(op)
[True, False]
Parameter
- op – der Operator, dessen Gruppen überprüft werden sollen.
- atol – Die numerische Genauigkeit, bis zu der Koeffizienten als gleich angesehen werden. Dieser Wert ist standardmäßig auf
1e-8. gesetzt.
Rückgabe
Ein Flag pro Gruppenindex oder None falls der Operator keine Gruppen verfolgt.
Erhöhungen
TypeError – wenn kein unterstützter Operatortyp op ist (siehe OperatorTrait).