36 #ifndef SHARK_LINALG_SOLVE_SYSTEM_H 37 #define SHARK_LINALG_SOLVE_SYSTEM_H 41 namespace shark{
namespace blas{
58 template<
class MatT,
class VecT>
60 matrix_expression<MatT>
const& A,
61 vector_expression<VecT>& b
71 template<
class MatT,
class Vec1T,
class Vec2T>
73 const matrix_expression<MatT> & A,
74 vector_expression<Vec1T>& x,
75 const vector_expression<Vec2T> & b
90 template<
class MatT,
class Mat2T>
92 matrix_expression<MatT>
const& A,
93 matrix_expression<Mat2T>& B
107 template<
class MatT,
class Mat1T,
class Mat2T>
109 const matrix_expression<MatT> & A,
110 matrix_expression<Mat1T>& X,
111 const matrix_expression<Mat2T> & B
123 template<
class System,
class MatT,
class VecT>
125 matrix_expression<MatT>
const& A,
126 vector_expression<VecT>& b
147 template<
class System,
class MatT,
class Mat1T>
149 matrix_expression<MatT>
const& A,
150 matrix_expression<Mat1T>& B
161 template<
class System,
class MatT,
class Vec1T,
class Vec2T>
163 matrix_expression<MatT>
const& A,
164 vector_expression<Vec1T>& x,
165 vector_expression<Vec2T>
const& b
185 template<
class System,
class MatT,
class Mat1T,
class Mat2T>
187 matrix_expression<MatT>
const& A,
188 matrix_expression<Mat1T>& X,
189 matrix_expression<Mat2T>
const& B
207 template<
class System,
class MatT,
class VecT>
209 matrix_expression<MatT>
const& A,
210 vector_expression<VecT>& b
233 template<
class System,
class Mat1T,
class Mat2T>
235 matrix_expression<Mat1T>
const& A,
236 matrix_expression<Mat2T>& B
250 template<
class System,
class MatT,
class VecT>
252 matrix_expression<MatT>
const& A,
253 vector_expression<VecT>& b
268 template<
class System,
class MatA,
class MatB>
270 matrix_expression<MatA>
const& A,
271 matrix_expression<MatB>& B
302 template<
class MatT,
class VecT,
class VecT2>
307 double epsilon = 1.e-10,
308 bool initialSolution =
false,
309 unsigned int maxIterations = 0
314 std::size_t dim = b().size();
315 std::size_t maxIt = (maxIterations == 0)? dim: maxIterations;
317 typedef typename VecT::value_type value_type;
336 for(std::size_t i = 0; i != maxIt; ++i){
341 noalias(rnext) = r - alpha * Ap;
371 template<
class MatT,
class VecT>
375 double epsilon = 1.e-10,
376 unsigned int maxIterations = 0
389 #include "Impl/solveSystem.inl"