Il determinante di una matrice A quadrata (ripeto quadrata) è un numero che ne esprime delle proprietà algebriche e geometriche e viene denotato con det(A). Detta così vuol dire ben poco.
Il determinate è fondamentale nell’algebra lineare, lo vedremo in seguito, ad ora freniamo la curiosità.
Passiamo alla parte operativa come si calcola?
Partiamo dalle condizioni facili.
Se la matrice è un numero (quindi matrice quadrata [1x1]) il determinante è il numero stesso.
Se la matrice è [2x2]:
il determinante è così definito:
Se la matrice quadrata è di lato superiore [nxn] con n > 2 c’è un metodo ricorsivo noto come sviluppo di Laplace per il calcolo del determinante.
Ricorsivo in informatica piace, in effetti è facilmente traducibile in codice.
Dunque, se la matrice quadrata è di lato superiore [nxn] con n > 2 si scelga una riga (o colonna) della matrice (a casaccio, quindi nel codice con poca fantasia prenderò la prima riga) e si ha che:
dove i è la riga scelta e
è la matrice ricavata da A eliminando la i-esima riga e la j-esima colonna.
In codice il gioco è presto fatto con un semplice metodo ricorsivo.
Riporto un brevissimo esempio di utilizzo della classe da me creata per il calcolo del determinante.
//Declare matrix
Matrix A("[ 1, 0, 3, 0, 5 ; 2, 4, 0, 4, 6 ; 1, 0, 4, 0, 6 ; 1, 0, 2, 4, 3 ; 5, 4, 4, 1, 1 ]");
//Print matrix
std::cout << "A:\n";
print(A);
std::cout << "\n";
//Calc determinant
double det = A.det();
//Print determinant
printf("det(A) = %.3f\n\n",det);
L'ouput sarà il seguente:
A:
1.000 0.000 3.000 0.000 5.000
2.000 4.000 0.000 4.000 6.000
1.000 0.000 4.000 0.000 6.000
1.000 0.000 2.000 4.000 3.000
5.000 4.000 4.000 1.000 1.000
det(A) = -252.000