#pragma once /** * \file Solver.h * \brief Contient la définition du solutionneur */ #include "Vect.h" /** * \class Solver * \brief Permet d'obtenir différentes propriétés d'une matrice comme l'image ou le noyau */ class Solver { public: /** * \brief Calcule l'image d'une matrice * \param a_Matrix La matrice à traiter * \return L'espace vectoriel correspondant */ Vect Image(const Matrix& a_Matrix) const; /** * \brief Calcule le noyau d'une matrice * \param a_Matrix La matrice à traiter * \return L'espace vectoriel correspondant */ Vect Kernel(const Matrix& a_Matrix) const; /** * \brief Résout le système rectangulaire de la forme AX=B, avec X et B, des vecteurs colonne. * \param a_MatrixA La matrice jouant le rôle de A * \param a_VectorB La matrice colonne jouant le rôle de B * \return L'espace affine associé */ VectAffine RectangularSystem(const Matrix& a_MatrixA, const Matrix& a_VectorB) const; /** * \brief Calcule le rang d'une matrice * \param a_Matrix La matrice à traiter * \note Ceci équivaut à \code Image(a_Matrix).GetCardinal() \endcode */ std::size_t Rank(const Matrix& a_Matrix) const; };