4 #include <adolc/adolc.h>
5 #include "ObjectiveFunction.h"
6 #include "ConjugateGradients.h"
16 int solvesystem(
const int max_iterations,
const Graph * Mat,
double *solution,
const double * rhs,
const double precision);
18 int solveCG (
const int max_iterations,
const Graph * Mat,
double *solution,
const double * rhs,
const double precision);
20 int solveCGNR(
const int max_iterations,
const Graph * Mat,
double *solution,
const double * rhs,
const double precision);
22 int solveMinRes(
const int max_iterations,
const Graph * Mat,
double *solution,
const double * rhs,
const double precision,
const bool show);
23 void sum(
double *lhs,
const double * rhs,
int dimension);
24 void subtract(
double *lhs,
const double * rhs,
int dimension);
25 double norm(
const double * x,
int dimension);
26 void copyvec(
double *lhs,
const double * rhs,
int dimension);
27 void mult_scalar(
double * x,
int dimension,
const double scal);
28 double inner_prod(
const double * x,
const double *y,
int dimension);
30 template <
class ArrayType>
void print_array(ArrayType x,
int length)
33 for(i =0; i < length; i++)
64 size(size_), Mat(_Mat)
80 Mat->vector_mult(vec_in,vec_out);
Supports for linear system solve and linear algebra.
Definition: Support.h:10
Operator(int size_, const Graph *_Mat)
Constructor.
Definition: Support.h:63
virtual void Apply(const SimpleVector &X, SimpleVector &Y) const =0
Y = M.
int solveCG(const int max_iterations, const Graph *Mat, double *solution, const double *rhs, const double precision)
The Conjugate Gradient method. Mat is assumed to be symmetric-positive-definite.
Definition: Support.cpp:49
void Apply(const SimpleVector &vec_in, SimpleVector &vec_out) const
Y = A*X;.
Definition: Support.h:74
int solvesystem(const int max_iterations, const Graph *Mat, double *solution, const double *rhs, const double precision)
The method used to solve systems.
Definition: Support.cpp:8
int solveCGNR(const int max_iterations, const Graph *Mat, double *solution, const double *rhs, const double precision)
The Least-Squares Conjugate Gradient method. Mat is assumed to be symmetric and non-singular.
Definition: Support.cpp:13
int solveMinRes(const int max_iterations, const Graph *Mat, double *solution, const double *rhs, const double precision, const bool show)
The Minimal Residual method. Mat is assumed to be symmetric and non-singular.
Definition: Support.cpp:80
Implementation of a dense serial vector according to Vector_traits.
Definition: SimpleVector.hpp:27