SimPEG.utils.eigenvalue_by_power_iteration#
- SimPEG.utils.eigenvalue_by_power_iteration(combo_objfct, model, n_pw_iter=4, fields_list=None, seed=None)[source]#
Estimate largest eigenvalue in absolute value using power iteration.
Uses the power iteration approach to estimate the largest eigenvalue in absolute value for a single
SimPEG.BaseObjectiveFunction
or a combination of objective functions stored in aSimPEG.ComboObjectiveFunction
.- Parameters:
- combo_objfct
SimPEG.BaseObjectiveFunction
Objective function or a combo objective function
- model
numpy.ndarray
Current model
- n_pw_iter
int
Number of power iterations used to estimate the highest eigenvalue
- fields_list
list
(optional
) list
of fields objects for each data misfit term in combo_objfct. If none given, they will be evaluated within the function. If combo_objfct mixs data misfit and regularization terms, the list should contains SimPEG.fields for the data misfit terms and None for the regularization term.- seed
int
Random seed for the initial random guess of eigenvector.
- combo_objfct
- Returns:
float
Estimated value of the highest eigenvalue in absolute value
Notes
After k power iterations, the largest eigenvalue in absolute value is approximated by the Rayleigh quotient:
\[\lambda_k = \frac{\mathbf{x_k^T A x_k}}{\mathbf{x_k^T x_k}}\]where \(\mathfb{A}\) is our matrix and \(\mathfb{x_k}\) is computed recursively according to:
\[\mathbf{x_{k+1}} = \frac{\mathbf{A x_k}}{\| \mathbf{Ax_k} \|}\]The elements of the initial vector \(\mathbf{x_0}\) are randomly selected from a uniform distribution.