45 , _solution(_right.
size()) {}
51 if (_permutation !=
nullptr) {
53 gsl_permutation_free(_permutation);
88 return _solution[idx];
106 _permutation = gsl_permutation_alloc(std::min(_left.
rows(),
108 gsl_linalg_LU_decomp(_left.
gsl(),
121 if (_solution.
size() != _right.
size()) {
125 gsl_linalg_LU_solve(_left.
gsl(),
157 for (
size_t i = 0; i < _left.
rows(); i++) {
158 for (
size_t j = 0; j < _left.
columns(); j++) {
164 mout(i, j) = _left(i, j);
179 for (
size_t i = 0; i < _left.
rows(); i++) {
180 for (
size_t j = 0; j < _left.
columns(); j++) {
184 mout(i, j) = _left(i, j);
197 size_t psize =
static_cast<size_t>(_permutation->size);
200 for (
size_t idx = 0; idx < psize; idx++) {
203 size_t pIdx = gsl_permutation_get(_permutation, idx);
204 pMatrix(idx, pIdx) = 1;
236 gsl_linalg_LU_invert(lu.get_left().gsl(),
251 for (
size_t idx = 0; idx < vec.
size(); idx++) {
252 vec[idx] = gsl_permutation_get(_permutation, idx);
const gsl_vector * gsl() const
gsl ermöglicht direkten Zugriff auf gsl-Funktionen
The Matrix class Schnittstelle zur gsl Bibliothek.
Vector permutation_vector() const
permutation_vector Permutationsvektor wird aus Permutationstruktur generiert
Matrix upper_matrix() const
upper_matrix
void decompose()
decompose Zerlegung der Koeffizientenmatrix in obere und untere Dreiecksmatrix
void set_right(const Vector &v)
set_right
void set_left(const Matrix &m)
set_left
Matrix lower_matrix() const
lower_matrix
gsl_permutation * _permutation
void solve(const Matrix &m, const Vector &v)
solve Berechnung des Lösungsvektors eines Gleichungssystems
void solve()
solve Berechnung des Lösungsvektors
const Matrix & get_left() const
get_left
size_t columns() const
columns
LU_Decomposition()
LUDecomposition erzeuge eine leere Instanz.
double operator()(size_t i, size_t j) const
operator () Zugriff auf die Koeffizientenmatrix
The LU_Decomposition class Lösung eines linearen Gleichungssystems mittels der LU-Zerlegung.
The Vector class Klasse für gsl-Vektoren zussamengesetzt aus Komponenten.
LU_Decomposition(const Matrix &m, const Vector &v)
LUDecomposition Konstruktor.
Matrix permutation_matrix()
permutation_matrix
const Vector & solution() const
solution
double operator()(size_t idx) const
operator () Zugriff auf die Elemente des Lösungsvektors
const gsl_matrix * gsl() const
gsl_vec ermöglicht direkten Zugriff auf gsl Funktionen
const Vector & get_right() const
get_right
static Matrix inverse(const Matrix &m)
inverse Berechnung der Inversen einer Matrix
static double det(const Matrix &m)
det Berechnung der Determinante