Mam problem...znalazlem fajny kod programu do obliczania wyznacznik ale nie moge rozgryzc jakim spoosbem jest on liczony...Gaussem, Lapcale'a czy jakim??mozecie mi pomoc?? wrzucam kod
#include <iostream>
#include <cmath>
using namespace std;
int ** podmacierzy (int ** macierz, int zamowienie, int i, int j);
int wyznacznik (int ** macierz, int zamowienie);
int main ()
{
int i, j, zamowienie,;
int ** macierz;
cout <<"Podaj rzędu macierzy:";
cin>>zamowienie;
macierz = new int * [zamowienie]; // Alokacja pamięci dla wskaźników (każdy wskaźnik reprezentuje wiersz)
cout<<"Podaj elementy macierzy: " ;
for (i=0; i<zamowienie; i++) {cout<<endl;
macierz [i] = new int [zamowienie];cout<<endl; // Każdy wiersz zawiera 'porządku' liczba elementów
for (j=0; j<zamowienie; j++)
cin>> macierz [i] [j];cout<<endl;
}
cout<<"Wyznacznik z macierzy wynosi:";
cout<<wyznacznik(macierz,zamowienie),"Determinant:";cout<<endl;cout<<endl;
system("pause");
return 0;
}
int ** podmacierzy (int ** macierz, int zamowienie, int i, int j)
{
int ** subm;
int p, q; // Indeksy w macierzy
int a = 0, b; // Indeksy do subm
subm= new int * [zamowienie - 1];
for (p=0; p<zamowienie;p++) {
if(p==i) continue; //Skip ith row if (p == i) nadal; / / Przejdź ty wiersz
subm [a] = new int [zamowienie - 1];
b = 0;
for (q =0; q<zamowienie; q++) {
if(q==j) continue; // Przejdź po kolumnie j-tej
subm [a] [b++] = macierz [p] [q];
}
a++; // Zwiększ indeks wiersza
}
return subm;
}
int wyznacznik (int ** macierz, int zamowienie)
{
if (zamowienie== 1)
return **macierz; //Return the element if the matrix is of order one powrót ** macierz; / / Zwraca element, jeśli macierz jest zamówić
int i;
int det = 0;
for (i = 0; i <zamowienie;i++)
det += static_cast<int>(pow(-1.0,(int)i)) * macierz[i][0] * wyznacznik(podmacierzy(macierz, zamowienie, i, 0), zamowienie - 1);
return det;
}