groups_are_hermitian
groups_are_hermitian(op, *, atol=1e-08)
Indica, para cada grupo, si el operador formado por los elementos de ese grupo es hermitiano.
Los grupos no asignan ningún significado por sí mismos; esto confirma una convención común, a saber, que cada grupo es hermitiano por separado. Esa es la propiedad en la que se basa una fórmula de producto aleatoria cuando toma muestras de grupos completos, ya que solo un grupo hermitiano tiene una evolución temporal unitaria. Si el operador no realiza el seguimiento de ningún grupo, devuelve None.
Un grupo vacío se considera hermitiano, ya que el operador cero lo es.
Esto hereda la garantía unidireccional de is_hermitian(): una entrada True es siempre fiable, mientras que una False entrada solo es fiable para los tipos de operadores cuya forma normal sea una forma canónica genuina. En los demás casos, la comprobación es conservadora y puede dar False como resultado un grupo que, de hecho, es hermitiano.
Esto no se deduce de (ni implica) groups_have_uniform_coeffs(). El hecho de que los coeficientes sean uniformes no implica que un grupo sea hermitiano, y un grupo hermitiano puede mezclar magnitudes.
>>> 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]
Parámetros
- op : el operador cuyos grupos se deben comprobar.
- atol – La precisión numérica hasta la cual se considera que los coeficientes son iguales. Este valor es, por defecto,
1e-8.
Devuelve
Un indicador por índice de grupo, o bien si None el operador no realiza un seguimiento de ningún grupo.
Subidas
TypeError – si no op es un tipo de operador admitido (véase OperatorTrait).