src/Macierz.cpp
/* Oblicza wyznacznik macierzy, zwraca wartosc double - wyznacznik macierzy. */
Oblicza wyznacznik macierzy, zwraca wartosc double - wyznacznik macierzy.
Oblicza wyznacznik macierzy zwraca wartosc double - wyznacznik macierzy .
double Macierz::wyznacznik() const {
    Macierz  tmp = Macierz::skopjuj();
    double det = 1;
    int przestW = 0;
        for (int i = 0; i < ROZMIAR; i++) {
            for (int j = i + 1; j < ROZMIAR; j++) {
                for (int k = 1; k < ROZMIAR; k++) {
                    if (tmp.tab[i][i] == 0) {
                        if (tmp.tab[k][i] != 0) {
                        std::swap(tmp.tab[i], tmp.tab[k]);
                        przestW++;
                        tmp.tab[j] = tmp.tab[j] - tmp.tab[i] * tmp.tab[j][i] / tmp.tab[i][i];
                        }
                    } else {
                        tmp.tab[j] = tmp.tab[j] - tmp.tab[i] * tmp.tab[j][i] / tmp.tab[i][i];
                    }
                }
            }
        }
    for( int i = 0; i<ROZMIAR; i++) {
        det *=  tmp.tab[i][i];
    }
    if (przestW % 2)
        return -det;
    else
        return det;
}
double Macierz :: wyznacznik ( ) const { Macierz tmp = Macierz :: skopjuj ( ) ; double det = 1 ; int przestW = 0 ; for ( int i = 0 ; i < ROZMIAR ; i ++ ) { for ( int j = i + 1 ; j < ROZMIAR ; j ++ ) { for ( int k = 1 ; k < ROZMIAR ; k ++ ) { if ( tmp . tab [ i ] [ i ] == 0 ) { if ( tmp . tab [ k ] [ i ] != 0 ) { std :: swap ( tmp . tab [ i ] , tmp . tab [ k ] ) ; przestW ++ ; tmp . tab [ j ] = tmp . tab [ j ] - tmp . tab [ i ] * tmp . tab [ j ] [ i ] / tmp . tab [ i ] [ i ] ; } } else { tmp . tab [ j ] = tmp . tab [ j ] - tmp . tab [ i ] * tmp . tab [ j ] [ i ] / tmp . tab [ i ] [ i ] ; } } } } for ( int i = 0 ; i < ROZMIAR ; i ++ ) { det *= tmp . tab [ i ] [ i ] ; } if ( przestW % 2 ) return - det ; else return det ; }
Oblicza wyznacznik macierzy, zwraca wartosc double - wyznacznik macierzy.
Oblicza wyznacznik macierzy zwraca wartosc double - wyznacznik macierzy .