gauss_newton¶
- odl.solvers.iterative.iterative.gauss_newton(op, x, rhs, niter, zero_seq=<generator object exp_zero_seq>, callback=None)[source]¶
Optimized implementation of a Gauss-Newton method.
This method solves the inverse problem (of the first kind):
A(x) = y
for a (Frechet-) differentiable
Operator
A
using a Gauss-Newton iteration.It uses a minimum amount of memory copies by applying re-usable temporaries and in-place evaluation.
A variant of the method applied to a specific problem is described in a Wikipedia article.
- Parameters:
- op
Operator
Operator in the inverse problem. If not linear, it must have an implementation of
Operator.derivative
, which in turn must implementOperator.adjoint
, i.e. the callop.derivative(x).adjoint
must be valid.- x
op.domain
element Element to which the result is written. Its initial value is used as starting point of the iteration, and its values are updated in each iteration step.
- rhs
op.range
element Right-hand side of the equation defining the inverse problem
- niterint
Maximum number of iterations.
- zero_seqiterable, optional
Zero sequence whose values are used for the regularization of the linearized problem in each Newton step.
- callbackcallable, optional
Object executing code per iteration, e.g. plotting each iterate.
- op