Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Cercasi con urgenza programma in ANSI c che calcoli il determinante di una qualsiasi matrice quadrata.Spero che possiate rispondere a questa mia richiesta........
Io per cose scolastiche ho dovuto fare n programma che triangolarizzasse una matrice e poi che calcolasse di deterninante dalla matrice triangolarizzata.
Calcolare il det di una matrice triangolare è molto + facile ke calcolare il det di una matrice nn triangolare.
PS: il det della matrice e il det della matrice triangolarizzata sono uguali in modulo
Il segno può cambiare a causa dei cambiamenti di riga.
Codice sorgente - presumibilmente C/C++
/**
Tringolizza A e calcola il det
dimensioni di A: N x N
A va inizializzato nell'array di array "matrice"
ESEMPIO:
se A è:
1 2 3
4 5 6
7 8 9
la matrice sarà inizializzata così:
#define N 3
[...parte di codice...]
float matrice[N][M] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
**/
#include <stdio.h>
#define N 4 /*dimensione A*/
#define M N
void print(float [][M]);
void triangola(float [][M]);
void swap(float [], float []);
float detT(float [][M]);
int main() {
/*float matrice[N][M] = {
{0, 1, 5},
{4, 1, 6},
{2, 9, 8},
};*/
float matrice[N][M] = {
{0, 5, 1, 5},
{4, 10, 1, 6},
{2, 6, 9, 8},
{5, 89, 3, 96}
};
print(matrice);
triangola(matrice);
print(matrice);
printf("Determinante della triangolare: %.4f\n",detT(matrice));
Adesso mi sono reso conto che aggiungendo una semplice variabile posso fare in modo ke il segno rimanga giusto.
Riecco il codice senza problemi di segno.
Codice sorgente - presumibilmente C++
#include <stdio.h>
#define N 4 /*dimensione A*/
#define M N
int scambi=0;
void print(float[][M]);
void triangola(float[][M]);
void swap(float[], float[]);
float detT(float[][M]);
int main(){
/*float matrice[N][M] = {
{0, 1, 5},
{4, 1, 6},
{2, 9, 8},
};*/
float matrice[N][M]={
{0, 5, 1, 5},
{4, 10, 1, 6},
{2, 6, 9, 8},
{5, 89, 3, 96}
};
print(matrice);
triangola(matrice);
print(matrice);
printf("Determinante della triangolare: %.4f\n",detT(matrice));