All Classes Namespaces Functions Variables Typedefs Enumerator Groups Pages
Eigen Namespace Reference

iterative scaling algorithm to equilibrate rows and column norms in matrices More...

Classes

class  AlignedVector3
 A vectorization friendly 3D vector. More...
 
class  AutoDiffScalar
 A scalar type replacement with automatic differentation capability. More...
 
class  BDCSVD
 class Bidiagonal Divide and Conquer SVD More...
 
class  DGMRES
 A Restarted GMRES with deflation. This class implements a modification of the GMRES solver for sparse linear systems. The basis is built with modified Gram-Schmidt. At each restart, a few approximated eigenvectors corresponding to the smallest eigenvalues are used to build a preconditioner for the next cycle. This preconditioner for deflation can be combined with any other preconditioner, the IncompleteLUT for instance. The preconditioner is applied at right of the matrix and the combination is multiplicative. More...
 
class  DynamicSparseMatrix
 A sparse matrix class designed for matrix assembly purpose. More...
 
class  GMRES
 A GMRES solver for sparse square problems. More...
 
class  HybridNonLinearSolver
 Finds a zero of a system of n nonlinear functions in n variables by a modification of the Powell hybrid method ("dogleg"). More...
 
class  IncompleteCholesky
 Modified Incomplete Cholesky with dual threshold. More...
 
class  IterationController
 Controls the iterations of the iterative solvers. More...
 
class  JacobiSVD
 Two-sided Jacobi SVD decomposition of a rectangular matrix. More...
 
class  KdBVH
 A simple bounding volume hierarchy based on AlignedBox. More...
 
class  KroneckerProduct
 Kronecker tensor product helper class for dense matrices. More...
 
class  KroneckerProductSparse
 Kronecker tensor product helper class for sparse matrices. More...
 
class  LevenbergMarquardt
 Performs non linear optimization over a non-linear function, using a variant of the Levenberg Marquardt algorithm. More...
 
class  MatrixExponential
 Class for computing the matrix exponential. More...
 
struct  MatrixExponentialReturnValue
 Proxy for the matrix exponential of some matrix (expression). More...
 
class  MatrixFunction
 Class for computing matrix functions. More...
 
class  MatrixFunctionAtomic
 Helper class for computing matrix functions of atomic matrices. More...
 
class  MatrixFunctionReturnValue
 Proxy for the matrix function of some matrix (expression). More...
 
class  MatrixLogarithmAtomic
 Helper class for computing matrix logarithm of atomic matrices. More...
 
class  MatrixLogarithmReturnValue
 Proxy for the matrix logarithm of some matrix (expression). More...
 
class  MatrixMarketIterator
 Iterator to browse matrices from a specified folder. More...
 
class  MatrixPower
 Class for computing matrix powers. More...
 
class  MatrixPowerReturnValue
 Proxy for the matrix power of some matrix (expression). More...
 
class  MatrixSquareRoot
 Class for computing matrix square roots of general matrices. More...
 
class  MatrixSquareRootQuasiTriangular
 Class for computing matrix square roots of upper quasi-triangular matrices. More...
 
class  MatrixSquareRootReturnValue
 Proxy for the matrix square root of some matrix (expression). More...
 
class  MatrixSquareRootTriangular
 Class for computing matrix square roots of upper triangular matrices. More...
 
class  MINRES
 A minimal residual solver for sparse symmetric problems. More...
 
class  NumericalDiff
 
class  PolynomialSolver
 A polynomial solver. More...
 
class  PolynomialSolverBase
 Defined to be inherited by polynomial solvers: it provides convenient methods such as. More...
 
class  RandomSetter
 The RandomSetter is a wrapper object allowing to set/update a sparse matrix with random access. More...
 
class  SkylineInplaceLU
 Inplace LU decomposition of a skyline matrix and associated features. More...
 
class  SkylineMatrix
 The main skyline matrix class. More...
 
class  SkylineMatrixBase
 Base class of any skyline matrices or skyline expressions. More...
 
class  SkylineStorage
 
class  Spline
 A class representing multi-dimensional spline curves. More...
 
struct  SplineFitting
 Spline fitting methods. More...
 
struct  SplineTraits< Spline< _Scalar, _Dim, _Degree >, _DerivativeOrder >
 Compile-time attributes of the Spline class for fixed degree. More...
 
struct  SplineTraits< Spline< _Scalar, _Dim, _Degree >, Dynamic >
 Compile-time attributes of the Spline class for Dynamic degree. More...
 
struct  StdMapTraits
 
class  StdStemFunctions
 Stem functions corresponding to standard mathematical functions. More...
 
class  SVDBase
 Mother class of SVD classes algorithms. More...
 

Typedefs

typedef Spline< double, 2 > Spline2d
 2D double B-spline with dynamic degree.
 
typedef Spline< float, 2 > Spline2f
 2D float B-spline with dynamic degree.
 
typedef Spline< double, 3 > Spline3d
 3D double B-spline with dynamic degree.
 
typedef Spline< float, 3 > Spline3f
 3D float B-spline with dynamic degree.
 

Functions

template<typename BVH , typename Intersector >
void BVIntersect (const BVH &tree, Intersector &intersector)
 
template<typename BVH1 , typename BVH2 , typename Intersector >
void BVIntersect (const BVH1 &tree1, const BVH2 &tree2, Intersector &intersector)
 
template<typename BVH , typename Minimizer >
Minimizer::Scalar BVMinimize (const BVH &tree, Minimizer &minimizer)
 
template<typename BVH1 , typename BVH2 , typename Minimizer >
Minimizer::Scalar BVMinimize (const BVH1 &tree1, const BVH2 &tree2, Minimizer &minimizer)
 
template<typename Polynomial >
NumTraits< typename
Polynomial::Scalar >::Real 
cauchy_max_bound (const Polynomial &poly)
 
template<typename Polynomial >
NumTraits< typename
Polynomial::Scalar >::Real 
cauchy_min_bound (const Polynomial &poly)
 
template<typename PointArrayType , typename KnotVectorType >
void ChordLengths (const PointArrayType &pts, KnotVectorType &chord_lengths)
 Computes chord length parameters which are required for spline interpolation. More...
 
template<typename KnotVectorType >
void KnotAveraging (const KnotVectorType &parameters, DenseIndex degree, KnotVectorType &knots)
 Computes knot averages.The knots are computed as

\begin{align*} u_0 & = \hdots = u_p = 0 \\ u_{m-p} & = \hdots = u_{m} = 1 \\ u_{j+p} & = \frac{1}{p}\sum_{i=j}^{j+p-1}\bar{u}_i \quad\quad j=1,\hdots,n-p \end{align*}

where $p$ is the degree and $m+1$ the number knots of the desired interpolating spline. More...

 
template<typename A , typename B >
KroneckerProduct< A, B > kroneckerProduct (const MatrixBase< A > &a, const MatrixBase< B > &b)
 
template<typename A , typename B >
KroneckerProductSparse< A, B > kroneckerProduct (const EigenBase< A > &a, const EigenBase< B > &b)
 
template<typename Polynomials , typename T >
poly_eval (const Polynomials &poly, const T &x)
 
template<typename Polynomials , typename T >
poly_eval_horner (const Polynomials &poly, const T &x)
 
template<typename RootVector , typename Polynomial >
void roots_to_monicPolynomial (const RootVector &rv, Polynomial &poly)
 

Detailed Description

iterative scaling algorithm to equilibrate rows and column norms in matrices

This class can be used as a preprocessing tool to accelerate the convergence of iterative methods

This feature is useful to limit the pivoting amount during LU/ILU factorization The scaling strategy as presented here preserves the symmetry of the problem NOTE It is assumed that the matrix does not have empty row or column,

Example with key steps

* VectorXd x(n), b(n);
* SparseMatrix<double> A;
* // fill A and b;
* IterScaling<SparseMatrix<double> > scal;
* // Compute the left and right scaling vectors. The matrix is equilibrated at output
* scal.computeRef(A);
* // Scale the right hand side
* b = scal.LeftScaling().cwiseProduct(b);
* // Now, solve the equilibrated linear system with any available solver
*
* // Scale back the computed solution
* x = scal.RightScaling().cwiseProduct(x);
*
Template Parameters
_MatrixTypethe type of the matrix. It should be a real square sparsematrix

References : D. Ruiz and B. Ucar, A Symmetry Preserving Algorithm for Matrix Scaling, INRIA Research report RR-7552

See Also
IncompleteLUT

Function Documentation

void Eigen::BVIntersect ( const BVH &  tree,
Intersector &  intersector 
)

Given a BVH, runs the query encapsulated by intersector. The Intersector type must provide the following members:

bool intersectVolume(const BVH::Volume &volume) //returns true if volume intersects the query
bool intersectObject(const BVH::Object &object) //returns true if the search should terminate immediately
void Eigen::BVIntersect ( const BVH1 &  tree1,
const BVH2 &  tree2,
Intersector &  intersector 
)

Given two BVH's, runs the query on their Cartesian product encapsulated by intersector. The Intersector type must provide the following members:

bool intersectVolumeVolume(const BVH1::Volume &v1, const BVH2::Volume &v2) //returns true if product of volumes intersects the query
bool intersectVolumeObject(const BVH1::Volume &v1, const BVH2::Object &o2) //returns true if the volume-object product intersects the query
bool intersectObjectVolume(const BVH1::Object &o1, const BVH2::Volume &v2) //returns true if the volume-object product intersects the query
bool intersectObjectObject(const BVH1::Object &o1, const BVH2::Object &o2) //returns true if the search should terminate immediately
Minimizer::Scalar Eigen::BVMinimize ( const BVH &  tree,
Minimizer &  minimizer 
)

Given a BVH, runs the query encapsulated by minimizer.

Returns
the minimum value. The Minimizer type must provide the following members:
typedef Scalar //the numeric type of what is being minimized--not necessarily the Scalar type of the BVH (if it has one)
Scalar minimumOnVolume(const BVH::Volume &volume)
Scalar minimumOnObject(const BVH::Object &object)
Minimizer::Scalar Eigen::BVMinimize ( const BVH1 &  tree1,
const BVH2 &  tree2,
Minimizer &  minimizer 
)

Given two BVH's, runs the query on their cartesian product encapsulated by minimizer.

Returns
the minimum value. The Minimizer type must provide the following members:
typedef Scalar //the numeric type of what is being minimized--not necessarily the Scalar type of the BVH (if it has one)
Scalar minimumOnVolumeVolume(const BVH1::Volume &v1, const BVH2::Volume &v2)
Scalar minimumOnVolumeObject(const BVH1::Volume &v1, const BVH2::Object &o2)
Scalar minimumOnObjectVolume(const BVH1::Object &o1, const BVH2::Volume &v2)
Scalar minimumOnObjectObject(const BVH1::Object &o1, const BVH2::Object &o2)