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 a SimPEG.ComboObjectiveFunction.

Parameters:
combo_objfctSimPEG.BaseObjectiveFunction

Objective function or a combo objective function

modelnumpy.ndarray

Current model

n_pw_iterint

Number of power iterations used to estimate the highest eigenvalue

fields_listlist (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.

seedint

Random seed for the initial random guess of eigenvector.

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.