ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::ConjugateGradient< N, Scalar > Class Template Reference

A class to perform a conjugate gradient optimization. More...

#include <ConjugateGradient.h>

Inheritance diagram for cloudViewer::ConjugateGradient< N, Scalar >:
Collaboration diagram for cloudViewer::ConjugateGradient< N, Scalar >:

Public Member Functions

 ConjugateGradient ()
 Default constructor. More...
 
virtual ~ConjugateGradient ()=default
 Default destructor. More...
 
cloudViewer::SquareMatrixTpl< Scalar > & A ()
 Returns A matrix. More...
 
Scalar * b ()
 Returns b vector. More...
 
void initConjugateGradient (const Scalar *X0)
 Initializes the conjugate gradient. More...
 
Scalar iterConjugateGradient (Scalar *Xn)
 Iterates the conjugate gradient. More...
 

Protected Attributes

Scalar cg_Gn [N]
 Residuals vector. More...
 
Scalar cg_Hn [N]
 'Hn' vector More...
 
Scalar cg_u [N]
 'u' vector More...
 
Scalar cg_b [N]
 'b' vector More...
 
cloudViewer::SquareMatrixTpl< Scalar > cg_A
 'A' matrix More...
 

Detailed Description

template<int N, class Scalar>
class cloudViewer::ConjugateGradient< N, Scalar >

A class to perform a conjugate gradient optimization.

Inspired from the "Numerical Recipes". Template parameter 'N' is the dimension of the linear system. Lets "A*Xn=b" be the system to optimize (at iteration n). First the user must init the A matrix (N*N) and b vector (N*1). Then the solver is initialized with X0 (see initConjugateGradient). And the conjugate gradient is iterated with iterConjugateGradient.

Definition at line 25 of file ConjugateGradient.h.

Constructor & Destructor Documentation

◆ ConjugateGradient()

◆ ~ConjugateGradient()

template<int N, class Scalar >
virtual cloudViewer::ConjugateGradient< N, Scalar >::~ConjugateGradient ( )
virtualdefault

Default destructor.

Member Function Documentation

◆ A()

template<int N, class Scalar >
cloudViewer::SquareMatrixTpl<Scalar>& cloudViewer::ConjugateGradient< N, Scalar >::A ( )
inline

Returns A matrix.

Definition at line 39 of file ConjugateGradient.h.

References cloudViewer::ConjugateGradient< N, Scalar >::cg_A.

Referenced by cloudViewer::Neighbourhood::computeQuadric().

◆ b()

template<int N, class Scalar >
Scalar* cloudViewer::ConjugateGradient< N, Scalar >::b ( )
inline

Returns b vector.

Definition at line 42 of file ConjugateGradient.h.

References cloudViewer::ConjugateGradient< N, Scalar >::cg_b.

Referenced by cloudViewer::Neighbourhood::computeQuadric().

◆ initConjugateGradient()

template<int N, class Scalar >
void cloudViewer::ConjugateGradient< N, Scalar >::initConjugateGradient ( const Scalar *  X0)
inline

◆ iterConjugateGradient()

template<int N, class Scalar >
Scalar cloudViewer::ConjugateGradient< N, Scalar >::iterConjugateGradient ( Scalar *  Xn)
inline

Iterates the conjugate gradient.

Xn will be automatically updated to Xn+1 on output.

Parameters
Xnthe current estimation of Xn (size N)
Returns
mean square error

Definition at line 59 of file ConjugateGradient.h.

References cloudViewer::ConjugateGradient< N, Scalar >::cg_A, cloudViewer::ConjugateGradient< N, Scalar >::cg_b, cloudViewer::ConjugateGradient< N, Scalar >::cg_Gn, cloudViewer::ConjugateGradient< N, Scalar >::cg_Hn, and cloudViewer::ConjugateGradient< N, Scalar >::cg_u.

Referenced by cloudViewer::Neighbourhood::computeQuadric().

Member Data Documentation

◆ cg_A

◆ cg_b

◆ cg_Gn

◆ cg_Hn

template<int N, class Scalar >
Scalar cloudViewer::ConjugateGradient< N, Scalar >::cg_Hn[N]
protected

◆ cg_u

template<int N, class Scalar >
Scalar cloudViewer::ConjugateGradient< N, Scalar >::cg_u[N]
protected

The documentation for this class was generated from the following file: