RVL::LeastSquaresFcnlGN< Scalar > Class Template Reference

LeastSquaresFcnlGN creates a least squares objective function from an operator. More...

#include <ls.hh>

Inheritance diagram for RVL::LeastSquaresFcnlGN< Scalar >:

RVL::Functional< Scalar > RVL::Writeable List of all members.

Public Member Functions

 LeastSquaresFcnlGN (Operator< Scalar > const &op)
 Usual constructor.
 LeastSquaresFcnlGN (const LeastSquaresFcnlGN< Scalar > &J)
 Copy constructor.
virtual ~LeastSquaresFcnlGN ()
Space< Scalar > const & getDomain () const
Scalar getMaxStep (const Vector< Scalar > &x, const Vector< Scalar > &dx) const
ostream & write (ostream &str) const

Protected Member Functions

void apply (Vector< Scalar > const &x, Scalar &val) const
void applyGradient (Vector< Scalar > const &x, Vector< Scalar > &g) const
void applyHessian (Vector< Scalar > const &x, Vector< Scalar > const &dx, Vector< Scalar > &dy) const
virtual Functional< Scalar > * clone () const

Detailed Description

template<class Scalar>
class RVL::LeastSquaresFcnlGN< Scalar >

LeastSquaresFcnlGN creates a least squares objective function from an operator.

This is a so called bridge class, i.e. it exists merely to make objects of some class behave like objects of another class. The input object is an operator \form::25 (an instance of Operator ). The class uses a reference to this object to construct the least squares functinal $ x \mapsto \frac{1}{2} \|A[x]\|^2 \equiv J[x] $, its gradient $ x \mapsto DA[x]^T(A[x]) = \nabla J[x] $, and the Gauss-Newton approximation to its Hessian operator $ x \mapsto DA[x]^TDA[x] $ and presents the result as an instance of the Functional interface.

As with all LS functions, only defines a differentiable function is Scalar is a real type.

Definition at line 508 of file ls.hh.


Constructor & Destructor Documentation

template<class Scalar>
RVL::LeastSquaresFcnlGN< Scalar >::LeastSquaresFcnlGN ( Operator< Scalar > const &  op  ) 

Usual constructor.

Definition at line 559 of file ls.hh.

template<class Scalar>
RVL::LeastSquaresFcnlGN< Scalar >::LeastSquaresFcnlGN ( const LeastSquaresFcnlGN< Scalar > &  J  ) 

Copy constructor.

Definition at line 564 of file ls.hh.

template<class Scalar>
virtual RVL::LeastSquaresFcnlGN< Scalar >::~LeastSquaresFcnlGN (  )  [virtual]

Definition at line 568 of file ls.hh.


Member Function Documentation

template<class Scalar>
void RVL::LeastSquaresFcnlGN< Scalar >::apply ( Vector< Scalar > const &  x,
Scalar &  val 
) const [protected, virtual]

Implements RVL::Functional< Scalar >.

Definition at line 520 of file ls.hh.

References RVL::Functional< Scalar >::export_apply().

template<class Scalar>
void RVL::LeastSquaresFcnlGN< Scalar >::applyGradient ( Vector< Scalar > const &  x,
Vector< Scalar > &  g 
) const [protected, virtual]

Implements RVL::Functional< Scalar >.

Definition at line 530 of file ls.hh.

References RVL::Functional< Scalar >::export_applyGradient().

template<class Scalar>
void RVL::LeastSquaresFcnlGN< Scalar >::applyHessian ( Vector< Scalar > const &  x,
Vector< Scalar > const &  dx,
Vector< Scalar > &  dy 
) const [protected, virtual]

Implements RVL::Functional< Scalar >.

Definition at line 540 of file ls.hh.

References RVL::Functional< Scalar >::export_applyHessian().

template<class Scalar>
virtual Functional<Scalar>* RVL::LeastSquaresFcnlGN< Scalar >::clone (  )  const [protected, virtual]

Implements RVL::Functional< Scalar >.

Definition at line 552 of file ls.hh.

template<class Scalar>
Space<Scalar> const& RVL::LeastSquaresFcnlGN< Scalar >::getDomain (  )  const [virtual]

Implements RVL::Functional< Scalar >.

Definition at line 570 of file ls.hh.

template<class Scalar>
Scalar RVL::LeastSquaresFcnlGN< Scalar >::getMaxStep ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dx 
) const [virtual]

Reimplemented from RVL::Functional< Scalar >.

Definition at line 572 of file ls.hh.

template<class Scalar>
ostream& RVL::LeastSquaresFcnlGN< Scalar >::write ( ostream &  str  )  const [virtual]

Implements RVL::Writeable.

Definition at line 583 of file ls.hh.


The documentation for this class was generated from the following file:
Generated on 5 Jan 2017 for RVL by  doxygen 1.4.7