pylops.optimization.cls_leastsquares.NormalEquationsInversion#

class pylops.optimization.cls_leastsquares.NormalEquationsInversion(Op, callbacks=None)[source]#

Inversion of normal equations.

Solve the regularized normal equations for a system of equations given the operator Op, a data weighting operator Weight and optionally a list of regularization terms Regs and/or NRegs.

Parameters
Oppylops.LinearOperator

Operator to invert of size \([N \times M]\).

See also

RegularizedInversion

Regularized inversion

PreconditionedInversion

Preconditioned inversion

Notes

Solve the following normal equations for a system of regularized equations given the operator \(\mathbf{Op}\), a data weighting operator \(\mathbf{W}\), a list of regularization terms (\(\mathbf{R}_i\) and/or \(\mathbf{N}_i\)), the data \(\mathbf{y}\) and regularization data \(\mathbf{y}_{\mathbf{R}_i}\), and the damping factors \(\epsilon_I\), \(\epsilon_{\mathbf{R}_i}\) and \(\epsilon_{\mathbf{N}_i}\):

\[( \mathbf{Op}^T \mathbf{W} \mathbf{Op} + \sum_i \epsilon_{\mathbf{R}_i}^2 \mathbf{R}_i^T \mathbf{R}_i + \sum_i \epsilon_{\mathbf{N}_i}^2 \mathbf{N}_i + \epsilon_I^2 \mathbf{I} ) \mathbf{x} = \mathbf{Op}^T \mathbf{W} \mathbf{y} + \sum_i \epsilon_{\mathbf{R}_i}^2 \mathbf{R}_i^T \mathbf{y}_{\mathbf{R}_i}\]

Note that the data term of the regularizations \(\mathbf{N}_i\) is implicitly assumed to be zero.

Attributes
ncpmodule

Array module used by the solver (obtained via pylops.utils.backend.get_array_module) ). Available only after setup is called.

OpHpylops.LinearOperator

Adjoint of Op.

y_normalnumpy.ndarray

Data term projected in the model space (Op.H @ y or Op.H @ W @ y if Weight is provided).

Op_normalpylops.LinearOperator

Sum of the product of the adjoint and forward operator (Op.H @ Op or Op.H @ W @ Op if Weight is provided) and that of the regularization terms.

Methods

__init__(Op[, callbacks])

callback(x, *args, **kwargs)

Callback routine

finalize(*args[, show])

Finalize solver

memory_usage([nopRegs, show, unit])

Compute memory usage of the solver

run(x[, engine, show])

Run solver

setup(y, Regs[, Weight, dataregs, epsI, ...])

Setup solver

solve(y, Regs[, x0, Weight, dataregs, epsI, ...])

Run entire solver

step()

Run one step of solver