solver rework + refactor

This commit is contained in:
2024-03-06 21:24:15 +01:00
parent 259750a794
commit 99624d1b00
10 changed files with 191 additions and 163 deletions

View File

@@ -19,16 +19,16 @@ class Vect {
/**
* \brief Construit une base d'un espace vectoriel à partir des colonnes d'une matrice.
* Les colonnes de 0 sont ignorées
* \param mat Une matrice échelonnée.
* \param a_Matrix Une matrice échelonnée.
*/
Vect(const Matrix& mat);
Vect(const Matrix& a_Matrix);
/**
* \brief Permet d'obtenir le ieme vecteur de la base
* \param index l'index du vecteur souhaité
* \param a_Index l'index du vecteur souhaité
* \return Une matrice colonne
*/
Matrix GetVector(std::size_t index) const;
Matrix GetVector(std::size_t a_Index) const;
/**
* \brief Retourne le nombre de coordonnées des vecteurs de la base (leur nombre de colonne)
@@ -48,21 +48,23 @@ class Vect {
/**
* \brief Concatène la base actuelle avec un nouveau vecteur
* \param vec Une matrice colonne de taille GetDimension()
* \param a_Vector Une matrice colonne de taille GetDimension()
*/
void AddVector(const Matrix& vec);
void AddVector(const Matrix& a_Vector);
/**
* \brief Vérifie si le vecteur spécifié appartient au sous-espace vectoriel
* \param vec Une matrice colonne représentant le vecteur à tester
* \param a_Vector Une matrice colonne représentant le vecteur à tester
*/
bool IsElementOf(const Matrix& vec) const;
bool IsElementOf(const Matrix& a_Vector) const;
bool operator==(const Vect& other) const;
bool operator!=(const Vect& other) const;
bool operator==(const Vect& a_Other) const;
bool operator!=(const Vect& a_Other) const;
private:
void Simplify();
friend class VectAffine;
};
/**
@@ -77,10 +79,10 @@ class VectAffine {
public:
/**
* \brief Construit un espace affine à partir d'un espace vectoriel et d'une origine
* \param base La base de l'espace vectoriel
* \param origin Le vecteur d'origine (matrice colonne)
* \param a_Base La base de l'espace vectoriel
* \param a_Origin Le vecteur d'origine (matrice colonne)
*/
VectAffine(const Vect& base, const Matrix& origin);
VectAffine(const Vect& a_Base, const Matrix& a_Origin);
/**
* \brief Retourne l'espace vectoriel correspondant
@@ -99,11 +101,17 @@ class VectAffine {
/**
* \brief Vérifie si le vecteur spécifié appartient à l'espace affine
* \param vec Une matrice colonne représentant le vecteur à tester
* \param a_Vector Une matrice colonne représentant le vecteur à tester
*/
bool IsElementOf(const Matrix& vec) const;
bool IsElementOf(const Matrix& a_Vector) const;
bool operator==(const VectAffine& vect) const {
return m_Origin == vect.GetOrigin() && m_Base == vect.GetBase();
/**
* \brief Exprime l'espace vectoriel comme les solutions d'un système linéaire des coordonnées des vecteurs
* \return Une matrice représentant le système linéaire
*/
Matrix GetLinearSystem() const;
bool operator==(const VectAffine& a_VectAffine) const {
return m_Origin == a_VectAffine.GetOrigin() && m_Base == a_VectAffine.GetBase();
};
};