class HCL_BiLinearOp_d : public HCL_Base

HCL_BiLinearOp_d is the base class for bilinear operators

Inheritance:


Public Methods

virtual HCL_VectorSpace_d& Domain1 () const
Access to the domain of the first argument
virtual HCL_VectorSpace_d& Domain2 () const
Access to the domain of the second argument
virtual HCL_VectorSpace_d& Range () const
Access to the range
virtual void Image ( const HCL_Vector_d & x, const HCL_Vector_d & y, HCL_Vector_d & z ) const
Image computes the action of the operator on the pair (x,y), giving z
virtual HCL_LinearOp_d* Op1 ( const HCL_Vector_d & x ) const
Op1 creates the linear operator B(x,.). Implemented in this class.
virtual HCL_LinearOp_d* Op2 ( const HCL_Vector_d & y ) const
Op2 creates the linear operator B(.,y). Implemented in this class.
virtual HCL_LinearOp_d* Op3 ( const HCL_Vector_d & z ) const
Access to the "partial adjoint" of the bilinear operator
int CheckAdj ( int Display = 1, double tol = 1000 )
CheckAdj invokes Op1, Op2, and Op3 at random points, and then tests them for consistency with their adjoints using the HCL_LinearOp_d method CheckAdj

Protected Methods

virtual void PartialAdjImage ( int i, const HCL_Vector_d & xy, const HCL_Vector_d & z, HCL_Vector_d & yx ) const
The method PartialAdjImage implements the mappings (i=1) and ()

Inherited from HCL_Base:

Public Methods

void IncCount() const
void DecCount() const
int Count() const
virtual ostream& Write(ostream &) const

Documentation

HCL_BiLinearOp_d is the base class for bilinear operators. A bilinear operator is of the form where X, Y, and Z are vector spaces and B(.,y) and B(x,.) are linear operators. Bilinear operators belong to the core of HCL because the second derivative of a nonlinear operator (at a point) is a bilinear operator.

The primary class methods are:

virtual void PartialAdjImage( int i, const HCL_Vector_d & xy, const HCL_Vector_d & z, HCL_Vector_d & yx ) const
The method PartialAdjImage implements the mappings (i=1) and (). These methods are implemented as error messages in this base class. If they are over-ridden in a derived class, then the default implementations of Op1, Op2, and Op3 may be used. Otherwise, the implementor of the derived class is expected to over-ride Op1, Op2, and Op3.

virtual HCL_VectorSpace_d& Domain1() const
Access to the domain of the first argument. Returns a reference to an HCL_VectorSpace_d. Pure virtual: must be implemented in any derived instantiable class.

virtual HCL_VectorSpace_d& Domain2() const
Access to the domain of the second argument. Returns a reference to an HCL_VectorSpace_d. Pure virtual: must be implemented in any derived instantiable class.

virtual HCL_VectorSpace_d& Range() const
Access to the range. Returns a reference to a HCL_VectorSpace_d. Pure virtual: must be implemented in any derived instantiable class.

virtual void Image( const HCL_Vector_d & x, const HCL_Vector_d & y, HCL_Vector_d & z ) const
Image computes the action of the operator on the pair (x,y), giving z. Pure virtual: must be implemented in any derived instantiable class.

virtual HCL_LinearOp_d* Op1( const HCL_Vector_d & x ) const
Op1 creates the linear operator B(x,.). Implemented in this class.

virtual HCL_LinearOp_d* Op2( const HCL_Vector_d & y ) const
Op2 creates the linear operator B(.,y). Implemented in this class.

virtual HCL_LinearOp_d* Op3( const HCL_Vector_d & z ) const
Access to the "partial adjoint" of the bilinear operator. Assume B:XxY --> Z is the bilinear operator. Then Op3 returns the operator x |---> (B(x,.))'z. Its adjoint is the operator y |---> (B(.,y))'z. Implemented in this class.

int CheckAdj( int Display = 1, double tol = 1000 )
CheckAdj invokes Op1, Op2, and Op3 at random points, and then tests them for consistency with their adjoints using the HCL_LinearOp_d method CheckAdj. The flag Display indicates how the results are to be displayed: 0 means no display to the screen, 1 means a message is sent to the screen only if there is an error, while 2 means that the results are sent to the screen whether an error is detected or not. The second input sets the tolerance for the floating-point tests; an error is reported if two results which ought to be equal differ by a relative amount greater than tol times machine epsilon. Implemented in this class.


Direct child classes:
HCL_ZeroBiLinearOp_d
HCL_BlockBiLinearOp_d
HCL_OpDefaultSecondPartialDeriv_d
HCL_OpDefaultSecondDeriv_d

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