more optimizations
Some checks failed
Linux arm64 / Build (push) Failing after 25s

This commit is contained in:
2024-05-09 15:56:59 +02:00
parent dc31f1f091
commit 5391b7b76a
8 changed files with 72 additions and 78 deletions

View File

@@ -3,8 +3,10 @@
#include "Gauss.h"
Vect Solver::Image(Matrix&& a_Matrix) const {
Gauss::GaussJordanColumn(a_Matrix, true, true);
return {a_Matrix};
a_Matrix.Transpose();
Gauss::GaussJordan(a_Matrix, false, false);
a_Matrix.Transpose();
return {std::move(a_Matrix)};
}
// https://en.wikipedia.org/wiki/Kernel_(linear_algebra)#Computation_by_Gaussian_elimination
@@ -12,8 +14,10 @@ Vect Solver::Kernel(Matrix&& a_Matrix) const {
std::size_t matrixRawCount = a_Matrix.GetRawCount();
std::size_t matrixColumnCount = a_Matrix.GetColumnCount();
a_Matrix.AugmentBottom(Matrix::Identity(a_Matrix.GetColumnCount()));
Gauss::GaussJordanColumn(a_Matrix, true, true);
a_Matrix.Transpose();
a_Matrix.Augment(Matrix::Identity(a_Matrix.GetRawCount()));
Gauss::GaussJordan(a_Matrix, false, true);
a_Matrix.Transpose();
// nombre de colonnes non nulles
std::size_t origine_colonne = Vect(a_Matrix.SubMatrix(0, 0, matrixRawCount, matrixColumnCount)).GetCardinal();