HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GU_LeastSquares.h
Go to the documentation of this file.
1 /*
2 * PROPRIETARY INFORMATION. This software is proprietary to
3 * Side Effects Software Inc., and is not to be reproduced,
4 * transmitted, or disclosed in any way without written permission.
5 *
6 * NAME: GU_LeastSquares.h (GU Library, C++)
7 *
8 * COMMENTS: Solver works across rows. Each row is a polynomial equation
9 * and each column is a term in that equation.
10 */
11 
12 #ifndef __GU_LEASTSQUARES_H__
13 #define __GU_LEASTSQUARES_H__
14 
15 #include "GU_API.h"
16 #include <SYS/SYS_Types.h>
17 
18 #include <Eigen/Core>
19 
20 // Returns true if matrix is symmetric within a given tolerance
21 bool GU_API
23  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &A,
24  fpreal tolerance = SYS_FTOLERANCE_D);
25 
26 // Solve the LS problem A = Q . B with Partial pivot LU decomposition
27 bool GU_API
29  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &A,
30  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &Q,
31  Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &B,
32  fpreal damping);
33 
34 // Solve the LS problem A = Q . B with Cholesky decomposition
35 bool GU_API
37  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &A,
38  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &Q,
39  Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &B,
40  fpreal damping);
41 
42 // Solve the LS problem (Q^T . A) = (Q^T . Q) . B using
43 // the normal equations with Cholesky decomposition
44 bool GU_API
46  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &A,
47  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &Q,
48  Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &B,
49  fpreal damping);
50 
51 // Solve the LS problem A = Q . B using singular value
52 // decomposition
53 bool GU_API
55  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &A,
56  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &Q,
57  Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &B,
58  int max_iterations);
59 
60 #endif // __GU_LEASTSQUARES_H__
#define SYS_FTOLERANCE_D
Definition: SYS_Types.h:208
bool GU_API GUleastSquaresSVD(const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &A, const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &Q, Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &B, int max_iterations)
#define GU_API
Definition: GU_API.h:14
bool GU_API GUleastSquaresCholeskyNormalEquation(const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &A, const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &Q, Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &B, fpreal damping)
double fpreal
Definition: SYS_Types.h:276
bool GU_API GUleastSquaresPartialPivLU(const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &A, const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &Q, Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &B, fpreal damping)
bool GU_API GUisSymmetric(const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &A, fpreal tolerance=SYS_FTOLERANCE_D)
bool GU_API GUleastSquaresCholesky(const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &A, const Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &Q, Eigen::Matrix< fpreal, Eigen::Dynamic, Eigen::Dynamic > &B, fpreal damping)