Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] View of /trunk/gadget/ludecomposition.h
[mareframe] / trunk / gadget / ludecomposition.h Repository:
ViewVC logotype

View of /trunk/gadget/ludecomposition.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Mon Feb 10 17:09:07 2014 UTC (10 years, 3 months ago) by agomez
File size: 1862 byte(s)
Initial version based on Gadget 2.2.00
#ifndef ludecomposition_h
#define ludecomposition_h

#include "doublematrix.h"

/**
 * \class LUDecomposition
 * \brief This is the class used to calculate a LU decomposition of a rectangular matrix to solve the matrix equation A = bx
 */
class LUDecomposition {
public:
  /**
   * \brief This is the default LUDecomposition constructor
   */
  LUDecomposition() {};
  /**
   * \brief This is the LUDecomposition constructor for a given DoubleMatrix
   * \param A is the DoubleMatrix that will be decomposed into a lower triangular matrix L and an upper triangular matrix U
   */
  LUDecomposition(const DoubleMatrix& A);
  /**
   * \brief This is the default LUDecomposition destructor
   */
  ~LUDecomposition() {};
  /**
   * \brief This function will solve the matrix equation A = bx and return the resulting DoubleVector
   * \param b is the DoubleVector that is to be used to solve the matrix equation A = bx
   * \return x, the solution of the matrix equation A = bx
   */
  DoubleVector Solve(const DoubleVector& b);
  /**
   * \brief This function will return the log of the determinate of the matrix
   * \return logdet
   */
  double getLogDet() { return logdet; };
  /**
   * \brief This function will return the flag to denote whether the algorithm will fail
   * \return illegal
   */
  int isIllegal() { return illegal; };
private:
  /**
   * \brief This is the lower triangular DoubleMatrix
   */
  DoubleMatrix L;
  /**
   * \brief This is the upper triangular DoubleMatrix
   */
  DoubleMatrix U;
  /**
   * \brief This is the log of the determinate of the matrix
   */
  double logdet;
  /**
   * \brief This is the size of the matrix
   */
  int size;
  /**
   * \brief This is the flag to denote that the matrix has a non-positive number of the diagonal which will cause the LUDecomposition algorithm to fail
   */
  int illegal;
};

#endif

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge