The NaturalGradient class from the Gradient framework (qiskit/opflow/gradients/natural_gradient.py) is strongly coupled with the logic of solvers that are used for solving systems of linear equations.
The goal of this issue is to decouple solvers from the NaturalGradient class and allow the class to accept a solver as an argument (or a method for solving SLEs).
This way, a user can provide their preferred method for solving SLEs. This change will allow the same for other features that use NaturalGradient, e.g. Variational Quantum Time Evolution algorithm. In certain scenarios, specific methods might expose numerical instability and therefore it would be reasonable to have flexibility to choose a different method.
The NaturalGradient class from the Gradient framework (qiskit/opflow/gradients/natural_gradient.py) is strongly coupled with the logic of solvers that are used for solving systems of linear equations.
The goal of this issue is to decouple solvers from the NaturalGradient class and allow the class to accept a solver as an argument (or a method for solving SLEs).
This way, a user can provide their preferred method for solving SLEs. This change will allow the same for other features that use NaturalGradient, e.g. Variational Quantum Time Evolution algorithm. In certain scenarios, specific methods might expose numerical instability and therefore it would be reasonable to have flexibility to choose a different method.