27 #include "../ttNetwork.h" 28 #include "../performanceData.h" 60 : numSteps(_numSteps), convergenceEpsilon(_convergenceEpsilon), assumeSymmetricPositiveDefiniteOperator(_symPosOp),
61 retraction(_retraction), vectorTransport(_vectorTransport)
66 : numSteps(0), convergenceEpsilon(0.0), assumeSymmetricPositiveDefiniteOperator(false),
67 retraction(_retraction), vectorTransport(_vectorTransport)
80 return solve(&_A, _x, _b, numSteps, _convergenceEpsilon, _perfData);
93 return solve(&_A, _x, _b, _numSteps, convergenceEpsilon, _perfData);
105 return solve(&_A, _x, _b, numSteps, convergenceEpsilon, _perfData);
117 return solve(
nullptr, _x, _b, numSteps, _convergenceEpsilon, _perfData);
129 return solve(
nullptr, _x, _b, _numSteps, convergenceEpsilon, _perfData);
133 return solve(
nullptr, _x, _b, numSteps, convergenceEpsilon, _perfData);
double operator()(const TTOperator &_A, TTTensor &_x, const TTTensor &_b, value_t _convergenceEpsilon, PerformanceData &_perfData=NoPerfData) const
bool assumeSymmetricPositiveDefiniteOperator
calculates the gradient as b-Ax instead of A^T(b-Ax)
double operator()(TTTensor &_x, const TTTensor &_b, PerformanceData &_perfData=NoPerfData) const
GeometricCGVariant(size_t _numSteps, value_t _convergenceEpsilon, bool _symPosOp, TTRetractionI _retraction, TTVectorTransport _vectorTransport)
fully defining constructor. alternatively CGVariant can be created by copying a predefined variant an...
double operator()(const TTOperator &_A, TTTensor &_x, const TTTensor &_b, size_t _numSteps, PerformanceData &_perfData=NoPerfData) const
std::function< void(TTTensor &, const TTTangentVector &)> TTRetractionI
Specialized TensorNetwork class used to represent TTTensor and TToperators.
The main namespace of xerus.
double solve(const TTOperator *_Ap, TTTensor &_x, const TTTensor &_b, size_t _numSteps, value_t _convergenceEpsilon, PerformanceData &_perfData=NoPerfData) const
size_t numSteps
maximum number of steps to perform. set to 0 for infinite
TTRetractionI retraction
the retraction type I to project from point + tangent vector to a new point on the manifold ...
Wrapper class for all geometric (ie. Riemannian) CG variants.
value_t convergenceEpsilon
default value for the change in the residual at which the algorithm assumes it is converged ...
double operator()(const TTOperator &_A, TTTensor &_x, const TTTensor &_b, PerformanceData &_perfData=NoPerfData) const
TTVectorTransport vectorTransport
the vector transport from old tangent space to new one
PerformanceData NoPerfData
Header file for several retractions of type I and II as well as simple vector transport.
double operator()(TTTensor &_x, const TTTensor &_b, size_t _numSteps, PerformanceData &_perfData=NoPerfData) const
double value_t
The type of values to be used by xerus.
double operator()(TTTensor &_x, const TTTensor &_b, value_t _convergenceEpsilon, PerformanceData &_perfData=NoPerfData) const
const GeometricCGVariant GeometricCG
default variant of the steepest descent algorithm using the lapack solver
GeometricCGVariant(TTRetractionI _retraction, TTVectorTransport _vectorTransport)
definition using only the retraction. In the following an operator() including either convergenceEpsi...
std::function< void(const TTTensor &, TTTangentVector &)> TTVectorTransport