HCL_LeastSquaresFcnlGrad creates least squares objective functions from operators and data
![]() | DerivAdj () DerivAdj computes the derivative, as a linear operator with adjoint, of the operator | ||||||||||||||||||||||
![]() | Domain () Domain space access. | ||||||||||||||||||||||
![]() | Domain () Domain space access. | ||||||||||||||||||||||
![]() | Domain () Domain space access. | ||||||||||||||||||||||
![]() | Domain () Domain space access. | ||||||||||||||||||||||
![]() | Domain1 () Access to the domain of the first argument | ||||||||||||||||||||||
![]() | Domain2 () Access to the domain of the second argument | ||||||||||||||||||||||
![]() | EvaluateDeriv2Adj ( const HCL_Vector_d & x ) EvaluateDeriv2Adj creates and evaluation object which knows how to compute the image, first derivative, and second derivative, along with all relevant adjoints, at a point | ||||||||||||||||||||||
![]() | HCL_EvalLOpAdj_d ( HCL_LinearOpAdj_d * LL, const HCL_Vector_d & xx ) Usual constructor. | ||||||||||||||||||||||
![]() | HCL_LeastSquaresFcnlGrad_d (HCL_LinearOpAdj_d & Operator, HCL_Vector_d & Data) Usual constructor for Linear Operator input. | ||||||||||||||||||||||
![]() | HCL_LeastSquaresFcnlGrad_d (HCL_OpDerivAdj_d & Operator, HCL_Vector_d & Data) Usual constructor for Nonlinear Operator input. | ||||||||||||||||||||||
![]() | HCL_LOp_d ( const HCL_LinearOp_d & LL ) Usual constructor, reference version. | ||||||||||||||||||||||
![]() | HCL_LOp_d ( const HCL_LinearOp_d * LL ) Usual constructor, pointer version.
| ||||||||||||||||||||||
![]() | HCL_LOpAdj_d ( const HCL_LinearOpAdj_d * LL ) Usual constructor, pointer version. | ||||||||||||||||||||||
![]() | HCL_LOpAdj_d ( const HCL_LinearOpAdj_d & LL ) Usual constructor, reference version. | ||||||||||||||||||||||
![]() | HCL_ZeroBiLinearOp_d ( const HCL_VectorSpace_d * d1, const HCL_VectorSpace_d * d2, const HCL_VectorSpace_d * r ) Usual constructor. | ||||||||||||||||||||||
![]() | Image ( HCL_Vector_d & y ) Image computes the image of the operator. | ||||||||||||||||||||||
![]() | Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) Image computes the image of x under the operator, giving y. | ||||||||||||||||||||||
![]() | Image ( const HCL_Vector_d & x, const HCL_Vector_d & y, HCL_Vector_d & z ) Image computes the action of the operator on the pair (x,y), giving z. | ||||||||||||||||||||||
![]() | Op1Adj ( const HCL_Vector_d & x ) Access to Op1 as a linear operator with adjoint. | ||||||||||||||||||||||
![]() | Op2Adj ( const HCL_Vector_d & y ) Access to Op2 as a linear operator with adjoint. | ||||||||||||||||||||||
![]() | Op3Adj ( const HCL_Vector_d & z ) Access to the "partial adjoint" of the bilinear operator | ||||||||||||||||||||||
![]() | Range () Range space access. | ||||||||||||||||||||||
![]() | Range () Range space access. | ||||||||||||||||||||||
![]() | Range () Range space access. | ||||||||||||||||||||||
![]() | Range () Access to the range | ||||||||||||||||||||||
![]() | SecondDerivAdj () SecondDerivAdj computes the second derivative of the operator | ||||||||||||||||||||||
![]() | Write ( ostream & str ) Debugging information. | ||||||||||||||||||||||
![]() | Write ( ostream & str ) Debugging information | ||||||||||||||||||||||
![]() | Write ( ostream & str ) Debugging information. | ||||||||||||||||||||||
![]() | Write ( ostream & str ) Debugging information. |
HCL_LeastSquaresFcnlGrad creates least squares objective functions from operators and data. This is a so called bridge class, i.e. it exists merely to make objects of some class behave like objects of another class. In this case, the input objects are an input or nonlinear operator $A$ with both derivative image and adjoint image methods (an instance of HCL_LinearOpAdj or HCL_OpDerivAdj) and a data vector $d$. The interface to these objects constructed by the class is the least squares functionaland its gradient
expressed as an HCL_FunctionalGrad, the input class for various optimization methods.
So this class can be used to solve linear least squares problems straight from the implementation of the underlying operator, without constructing by hand the least squares function, as follows:
If you have a linear operator L (an instance of HCL_LinearOpAdj), and a data vector d (an instance of HCL_Vector), construct the least squares functional as follows:
HCL_LeastSquaresFcnlGrad_d F(L, d);whereas if you have a nonlinear operator N instead (an instance of HCL_OpDerivAdj), use
HCL_LeastSquaresFcnlGrad_d F(N, d);That is, the constructors look the same - the code does appropriate things according to the types of the arguments submitted to the constructor.
The HCL_FunctionalGrad_d F so constructed is now suitable for submission to an optimization algorithm based on first derivative information, such as BFGS (HCL_UMin_lbfgs) or nonlinear conjugate gradients (HCL_UMinNLCG).
virtual HCL_ProductVectorSpace_d& ProductDomain()
virtual double Value()
virtual void PartialGradient( HCL_Vector_d & g, int i )
virtual HCL_LinearOp_d* Hessian()
virtual HCL_LinearOpAdj_d* HessianBlock( int i, int j )
virtual ostream& Write( ostream & str )
HCL_LeastSquaresFcnlProductDomainHess_d( HCL_OpProductDomainDerivAdj_d * Operator, HCL_Vector_d * Data)
virtual HCL_VectorSpace_d& Domain()
virtual HCL_ProductVectorSpace_d& ProductDomain()
virtual ostream& Write( ostream & str )
virtual HCL_VectorSpace_d& Domain()
virtual HCL_VectorSpace_d& Range()
virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y )
virtual ostream& Write( ostream & str )
HCL_ZeroBiLinearOp_d( const HCL_VectorSpace_d * d1, const HCL_VectorSpace_d * d2, const HCL_VectorSpace_d * r )
virtual HCL_VectorSpace_d& Domain1()
virtual HCL_VectorSpace_d& Domain2()
virtual HCL_VectorSpace_d& Range()
virtual void Image( const HCL_Vector_d & x, const HCL_Vector_d & y, HCL_Vector_d & z )
virtual HCL_LinearOpAdj_d* Op1Adj( const HCL_Vector_d & x )
virtual HCL_LinearOpAdj_d* Op2Adj( const HCL_Vector_d & y )
virtual HCL_LinearOpAdj_d* Op3Adj( const HCL_Vector_d & z )
virtual ostream& Write( ostream & str )
HCL_EvalLOpAdj_d( HCL_LinearOpAdj_d * LL, const HCL_Vector_d & xx )
virtual HCL_VectorSpace_d& Domain()
virtual HCL_VectorSpace_d& Range()
virtual void Image( HCL_Vector_d & y )
virtual HCL_LinearOpAdj_d* DerivAdj()
virtual HCL_BiLinearOpAdj_d* SecondDerivAdj()
virtual ostream& Write( ostream & str )
HCL_LOpAdj_d( const HCL_LinearOpAdj_d * LL )
HCL_LOpAdj_d( const HCL_LinearOpAdj_d & LL )
virtual HCL_VectorSpace_d& Domain()
virtual HCL_VectorSpace_d& Range()
virtual HCL_EvaluateOpDeriv2Adj_d* EvaluateDeriv2Adj( const HCL_Vector_d & x )
virtual ostream& Write( ostream & str )
HCL_LeastSquaresFcnlGrad_d(HCL_LinearOpAdj_d & Operator, HCL_Vector_d & Data)
HCL_LeastSquaresFcnlGrad_d(HCL_OpDerivAdj_d & Operator, HCL_Vector_d & Data)
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de