mirror of https://github.com/Qiskit/qiskit.git
Fixed sign bug in docs in LinCombEstimatorGradient. (#9113)
This commit is contained in:
parent
ee0b0368e7
commit
8bfb058b9d
|
@ -64,9 +64,9 @@ class LinCombEstimatorGradient(BaseEstimatorGradient):
|
|||
``DerivativeType.IMAG``, or ``DerivativeType.COMPLEX``. Defaults to
|
||||
``DerivativeType.REAL``.
|
||||
|
||||
- ``DerivativeType.REAL`` computes :math:`2 \mathrm{Re}[(dω⟨ψ(ω)|)O(θ)|ψ(ω)〉]`.
|
||||
- ``DerivativeType.IMAG`` computes :math:`2 \mathrm{Im}[(dω⟨ψ(ω)|)O(θ)|ψ(ω)〉]`.
|
||||
- ``DerivativeType.COMPLEX`` computes :math:`2 (dω⟨ψ(ω)|)O(θ)|ψ(ω)〉`.
|
||||
- ``DerivativeType.REAL`` computes :math:`2 \mathrm{Re}[⟨ψ(ω)|O(θ)|dω ψ(ω)〉]`.
|
||||
- ``DerivativeType.IMAG`` computes :math:`2 \mathrm{Im}[⟨ψ(ω)|O(θ)|dω ψ(ω)〉]`.
|
||||
- ``DerivativeType.COMPLEX`` computes :math:`2 ⟨ψ(ω)|O(θ)|dω ψ(ω)〉`.
|
||||
|
||||
options: Primitive backend runtime options used for circuit execution.
|
||||
The order of priority is: options in ``run`` method > gradient's
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixed the documentation in :class:`.LinCombEstimatorGradient` to correctly
|
||||
show the derivative applied on the ket-side of the expectation
|
||||
value. Previously, the derivative had been documented in the bra-side, which
|
||||
led to a sign swap for gradients in the ``IMAG`` and ``COMPLEX``
|
||||
cases of the :class:`.DerivativeType`.
|
||||
|
|
@ -17,7 +17,7 @@ import unittest
|
|||
from test import combine
|
||||
|
||||
import numpy as np
|
||||
from ddt import ddt
|
||||
from ddt import ddt, data, unpack
|
||||
|
||||
from qiskit import QuantumCircuit
|
||||
from qiskit.algorithms.gradients import (
|
||||
|
@ -25,12 +25,13 @@ from qiskit.algorithms.gradients import (
|
|||
LinCombEstimatorGradient,
|
||||
ParamShiftEstimatorGradient,
|
||||
SPSAEstimatorGradient,
|
||||
DerivativeType,
|
||||
)
|
||||
from qiskit.circuit import Parameter
|
||||
from qiskit.circuit.library import EfficientSU2, RealAmplitudes
|
||||
from qiskit.circuit.library.standard_gates import RXXGate, RYYGate, RZXGate, RZZGate
|
||||
from qiskit.primitives import Estimator
|
||||
from qiskit.quantum_info import Operator, SparsePauliOp
|
||||
from qiskit.quantum_info import Operator, SparsePauliOp, Pauli
|
||||
from qiskit.quantum_info.random import random_pauli_list
|
||||
from qiskit.test import QiskitTestCase
|
||||
|
||||
|
@ -374,6 +375,17 @@ class TestEstimatorGradient(QiskitTestCase):
|
|||
rtol=1e-4,
|
||||
)
|
||||
|
||||
@data((DerivativeType.IMAG, -1.0), (DerivativeType.COMPLEX, -1.0j))
|
||||
@unpack
|
||||
def test_lin_comb_imag_gradient(self, derivative_type, expected_gradient_value):
|
||||
"""Tests if the ``LinCombEstimatorGradient`` has the correct value."""
|
||||
estimator = Estimator()
|
||||
gradient = LinCombEstimatorGradient(estimator, derivative_type=derivative_type)
|
||||
c = QuantumCircuit(1)
|
||||
c.rz(Parameter("p"), 0)
|
||||
result = gradient.run([c], [Pauli("I")], [[0.0]]).result()
|
||||
self.assertAlmostEqual(result.gradients[0][0], expected_gradient_value)
|
||||
|
||||
@combine(
|
||||
grad=[
|
||||
FiniteDiffEstimatorGradient,
|
||||
|
|
Loading…
Reference in New Issue