HCL_LinearOpNormal_d is the base class for all linear operators with adjoint and normal operators
![]() | AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) AdjImage computes the action of the adjoint on y, giving x. |
![]() | Domain () Domain space access |
![]() | Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) Image computes the action of the operator on x, giving y. |
![]() | NormalImage ( const HCL_Vector_d & x, HCL_Vector_d & z ) NormalImage computes the action of the normal on x, giving z. |
![]() | Range () Range space access |
![]() | TestNormal ( int display = 1, double tol = 100 ) TestNormal tests that the normal operator N is really defined by N = A'A |
![]() | Write ( ostream & str ) Debugging information |
HCL_LinearOpNormal_d is the base class for all linear operators with adjoint and normal operators. This class represents a linear operator mapping one vector space to another; code must be provided to implement the action of the Hilbert space adjoint and of the normal operator.If L is a linear operator with domain X and range Y, then the adjoint L' is the linear operator with domain Y and range X defined by
<Lx,y> = <x,L'y> for all x in X and y in Y.In this equation, the first inner product is the one defined on the range space Y, and the second inner product is the one defined on the domain space X.The normal operator is simply the operator followed by its adjoint: L'L. One could always compute the action of the normal operator by first computing the action of the operator, and then computing the action of the adjoint on the result. The reason for providing a separate method for the action of the normal operator is that, for certain operators, it is more efficient to compute the normal operator directly.
The primary class methods are:
Note that this class makes no assumption about the representation of the operator. Examples include operators defined by dense or sparse matrices and solution operators of (linear) PDEs defined by simulations.
- Domain Returns a reference to the domain of the operator. This is used primarily for error-checking.
- Range Returns a reference to the range of the operator. This is used primarily for error-checking.
- Image Computes the action of the operator on a vector. Here is an example illustrating the use of Domain, Range, and Image:
void fcn( HCL_LinearOp_d & L,HCL_Vector_d & x,HCL_Vector_d & y ) { if( x.Space() != L.Domain() || y.Space() != L.Range() ) // Error condition . . . L.Image( x,y ); // y <-- Lx . . . }- AdjImage Computes the action of the adjoint operator on a vector:
L.AdjImage( u,w); // w <-- L'u- NormalImage Computes the action of the adjoint operator on a vector:
L.NormalImage( x,z); // z <-- L'Lx
virtual HCL_VectorSpace_d& Range()
virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y )
virtual void AdjImage( const HCL_Vector_d & y, HCL_Vector_d & x )
virtual void NormalImage( const HCL_Vector_d & x, HCL_Vector_d & z )
int TestNormal( int display = 1, double tol = 100 )
virtual ostream& Write( ostream & str )
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de