This commit is contained in:
@@ -5,6 +5,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \class Matrix
|
||||||
|
* \brief Représente une matrice d'éléments
|
||||||
|
*/
|
||||||
class Matrix {
|
class Matrix {
|
||||||
public:
|
public:
|
||||||
typedef long double Element;
|
typedef long double Element;
|
||||||
|
|||||||
26
src/Solver.h
26
src/Solver.h
@@ -2,19 +2,45 @@
|
|||||||
|
|
||||||
#include "Vect.h"
|
#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 {
|
class Solver {
|
||||||
private:
|
private:
|
||||||
Matrix m_Matrix;
|
Matrix m_Matrix;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* \brief Initialise le resolveur
|
||||||
|
* \param mat La matrice d'entrée
|
||||||
|
*/
|
||||||
Solver(const Matrix& mat);
|
Solver(const Matrix& mat);
|
||||||
|
|
||||||
~Solver() {}
|
~Solver() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calcule l'image de la matrice d'entrée
|
||||||
|
* \return L'espace vectoriel correspondant
|
||||||
|
*/
|
||||||
Vect Image() const;
|
Vect Image() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calcule le noyau de la matrice d'entrée
|
||||||
|
* \return L'espace vectoriel correspondant
|
||||||
|
*/
|
||||||
Vect Kernel() const;
|
Vect Kernel() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Résout le système triangulaire de la forme AX=B.
|
||||||
|
* La matrice d'entrée est considéré comme étant la matrice augmenté [A|B]
|
||||||
|
* \return L'espace affine associé
|
||||||
|
*/
|
||||||
VectAffine TriangularSystem() const;
|
VectAffine TriangularSystem() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calcule le rang de la matrice
|
||||||
|
* \note Ceci équivaut à \code Image().GetCardinal() \endcode
|
||||||
|
*/
|
||||||
std::size_t Rank() const;
|
std::size_t Rank() const;
|
||||||
};
|
};
|
||||||
38
src/Vect.h
38
src/Vect.h
@@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
#include "Matrix.h"
|
#include "Matrix.h"
|
||||||
|
|
||||||
// espace vectoriel
|
/**
|
||||||
|
* \class Vect
|
||||||
|
* \brief Représente une base d'un espace vectoriel de dimension finie
|
||||||
|
*/
|
||||||
class Vect {
|
class Vect {
|
||||||
private:
|
private:
|
||||||
Matrix m_Data;
|
Matrix m_Data;
|
||||||
@@ -10,16 +13,32 @@ class Vect {
|
|||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* \brief Construit une base d'un espace vectoriel à partir des colonnes d'une matrice.
|
* \brief Construit une base d'un espace vectoriel à partir des colonnes d'une matrice.
|
||||||
* Ne prend pas en compte les colonnes de 0
|
* Les colonnes de 0 sont ignorées
|
||||||
* \param mat Une matrice échelonnée.
|
* \param mat Une matrice échelonnée.
|
||||||
*/
|
*/
|
||||||
Vect(const Matrix& mat);
|
Vect(const Matrix& mat);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Permet d'obtenir le ieme vecteur de la base
|
||||||
|
* \param index l'index du vecteur souhaité
|
||||||
|
* \return Une matrice colonne
|
||||||
|
*/
|
||||||
Matrix GetVector(std::size_t index) const;
|
Matrix GetVector(std::size_t index) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Retourne le nombre de coordonnées des vecteurs de la base (leur nombre de colonne)
|
||||||
|
*/
|
||||||
std::size_t GetDimension() const;
|
std::size_t GetDimension() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Retourne le nombre de vecteur de la base
|
||||||
|
*/
|
||||||
std::size_t GetCardinal() const;
|
std::size_t GetCardinal() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \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;
|
Matrix GetLinearSystem() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,18 +54,33 @@ class Vect {
|
|||||||
void Simplify();
|
void Simplify();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \class VectAffine
|
||||||
|
* \brief Représente un espace affine
|
||||||
|
*/
|
||||||
class VectAffine {
|
class VectAffine {
|
||||||
private:
|
private:
|
||||||
Vect m_Base;
|
Vect m_Base;
|
||||||
Matrix m_Origin;
|
Matrix m_Origin;
|
||||||
|
|
||||||
public:
|
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)
|
||||||
|
*/
|
||||||
VectAffine(const Vect& base, const Matrix& origin);
|
VectAffine(const Vect& base, const Matrix& origin);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Retourne l'espace vectoriel correspondant
|
||||||
|
*/
|
||||||
const Vect& GetBase() const {
|
const Vect& GetBase() const {
|
||||||
return m_Base;
|
return m_Base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Retourne l'origine de l'espace affine
|
||||||
|
*/
|
||||||
const Matrix& GetOrigin() const {
|
const Matrix& GetOrigin() const {
|
||||||
return m_Origin;
|
return m_Origin;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user