HCL_LinCombLinearOp_d is a concrete class implementing a linear combination of one or more linear operators
![]() | HCL_LinCombLinearOp_d ( HCL_VectorSpace_d * d, HCL_VectorSpace_d * r, int n ) Usual constructor |
![]() | HCL_LinCombLinearOp_d ( HCL_LinearOp_d * op1, double a1, HCL_LinearOp_d * op2, double a2 ) Provided for convenience |
![]() | Domain () const Domain space access |
![]() | Range () const Range space access |
![]() | Parameters () Access to parameter table |
![]() | Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) const Image computes the action of the operator on x, giving y. |
![]() | AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) const AdjImage computes the action of the adjoint on y, giving x. |
![]() | InvImage (const HCL_Vector_d & y, HCL_Vector_d & x) const InvImage returns an error message (unimplemented). |
![]() | InvAdjImage (const HCL_Vector_d & x, HCL_Vector_d & y) const InvAdjImage returns an error message (unimplemented) |
![]() | ImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const ImageAdd implements ![]() |
![]() | AdjImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const AdjImageAdd implements ![]() |
![]() | ImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const ImageAdd implements ![]() |
![]() | AdjImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const AdjImageAdd implements ![]() |
![]() | SetNext ( HCL_LinearOp_d * L, double a ) SetNext is used for initializing the terms in the linear combination |
![]() | Write ( ostream & str ) const Debugging information |
HCL_LinCombLinearOp_d is a concrete class implementing a linear combination of one or more linear operators. This class is useful for combining existing linear operators to create a new operator.The primary methods are exactly the same as those of HCL_LinearOp_d. In addition, the Parameters method allows the weights in the linear combination to be accessed or changed.
There are two constructors. The usual constructor takes (pointers to) the domain and range spaces, as well as the number of operators in the sum. The operators and their weights are then specified one-by-one using the SetNext method. Here is an example:
// X and Y are instances of HCL_VectorSpace_d, and L1,L2,L3 are instances // of HCL_LinearOp_d, each with domain X and range Y. // The following constructs the operator M = 2L1-3.7L2+L3. HCL_LinCombLinearOp_d M( &X,&Y,3 ); M.SetNext( &L1,2.0 ); M.SetNext( &L2,-3.7 ); M.SetNext( &L3,1.0 ); // M is now ready to use.The second constructor is provided for convenience in the special case of a linear combination of two operators.
// The next line constructs the operator M = 2L1-3.7L2. HCL_LinCombLinearOp_d M( &L1,2.0,&L2,-3.7 ); // M is now ready to use.
HCL_LinCombLinearOp_d( HCL_LinearOp_d * op1, double a1, HCL_LinearOp_d * op2, double a2 )
virtual HCL_VectorSpace_d& Domain() const
virtual HCL_VectorSpace_d& Range() const
Table& Parameters()
virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y ) const
virtual void AdjImage( const HCL_Vector_d & y, HCL_Vector_d & x ) const
virtual void InvImage(const HCL_Vector_d & y, HCL_Vector_d & x) const
virtual void InvAdjImage(const HCL_Vector_d & x, HCL_Vector_d & y) const
virtual void ImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
virtual void AdjImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
virtual void ImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
virtual void AdjImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
void SetNext( HCL_LinearOp_d * L, double a )
virtual ostream& Write( ostream & str ) const
alphabetic index hierarchy of classes
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de