[java]aiuto determinante matrice
scrivere un metodo double det ( double [][]a)che calcola il det di una matrice con il metodo della triangolazione di gauss solleva un'eccezione se non è quadrata
si ricorda che il det coincide a meno del segno con la produttoria degli elementi della diagonale principale della matrice triangolarizzata
se la triangolazione fallisce ( per l'esistenza di uno zero diagonale ineliminabile )allora il determinante è zero.
il segno del det a fine triangolazione va corretto moltiplicando il risultato della produttoria degli elementi diagonali per ( -1)^scambi dove scambi è il num di scambi di righe della matrice a , effettuati per rimuovere gli zeri diagonali
non ho capito come funziona la triangolarizzazione mi aiutate a capire meglio l'esercizio (anche con un esempio)????
si ricorda che il det coincide a meno del segno con la produttoria degli elementi della diagonale principale della matrice triangolarizzata
se la triangolazione fallisce ( per l'esistenza di uno zero diagonale ineliminabile )allora il determinante è zero.
il segno del det a fine triangolazione va corretto moltiplicando il risultato della produttoria degli elementi diagonali per ( -1)^scambi dove scambi è il num di scambi di righe della matrice a , effettuati per rimuovere gli zeri diagonali
non ho capito come funziona la triangolarizzazione mi aiutate a capire meglio l'esercizio (anche con un esempio)????
Risposte
"Luc@s":
Qui trovi info sull'algoritmo di Gauss.
mi potresti fare un esempio di calcolo di determinate con questo metodo...non riesco ad andare avanti sono un pò incerta..
il metodo ti riduce la matrice ad una matrice triangolare e poi il determinante è semplicemente il prodotto degli elementi sulla diagonale principale.
Ancora non sono riuscita a scrivere qualcosa di decente... questo algoritmo di gauss mi ha messo in crisi
Aiutatemi vi prego
Che cosa non riesci a fare esattamente dell'esercizio? Hai provato a scrivere qualcosa oppure non sai neanche da dove partire?
Ti faccio comunque un esempio per una matrice $3x3$:
$A = ((1, -1, 2),(1, 1, 1),(2, -2, 3))$
Eseguo le operazioni $E_3 - 2E_1 -> E_3$ e $E_2 - E_1 -> E_2$.
$\bar A = ((1, -1, 2),(0, 2, -1),(0, 0, -1))$
A questo punto la matrice è triangolare ed è sufficiente moltiplicare tra di loro gli elementi sulla diagonale: $det(A) = 1*2*(-1) = -2$.
Ti faccio comunque un esempio per una matrice $3x3$:
$A = ((1, -1, 2),(1, 1, 1),(2, -2, 3))$
Eseguo le operazioni $E_3 - 2E_1 -> E_3$ e $E_2 - E_1 -> E_2$.
$\bar A = ((1, -1, 2),(0, 2, -1),(0, 0, -1))$
A questo punto la matrice è triangolare ed è sufficiente moltiplicare tra di loro gli elementi sulla diagonale: $det(A) = 1*2*(-1) = -2$.
non so da dove partire aiutami se lo sai fare per favore
"silviettadn":
non so da dove partire aiutami se lo sai fare per favore
Ma stai cercando di farti dare il codice? A me sembra che l'algoritmo ti sia stato già spiegato abbastanza...
si perche è il mio primo esercizio java e lo trovo difficile se c'è qualcuno che mi puo aiutare gliene sarei grata
se non cominci a scrivere qualcosa tu e dimostri buona volontà e di aver capito lo spirito del forum chiudo il topic
io lo spirito del forum lo so ho anche un altro nick(perche avevo perso la password di questo account) e ho risolto qualche esercizio anche nella sezione ingegneria ma ho difficolta con il codice perche si tratta di matrici .chiedevo solo una mano se non è possibile pazienza...non sono brava e lo so da me.... io credo che prima dovrei fare un metodo con la matrice triangolarizzata e poi un metodo che mi calcola il determinante come il prodotto della diagonale principale giusto?
io avevo iniziato a scrivere cosi ma è sbagliato
non so l'ho detto prima che non sono brava
io avevo iniziato a scrivere cosi ma è sbagliato
public static int determinante(int[][] m){ int DeterminanteMatrice = 0; int temp = 0; if (m.length!=m[0].length) System.out.println("La matrice non e' quadrata"); else if (m.length==1) determinante+=m[0][0]; else{ //qui dovrebbe andare la parte della matrice triangolarizzata } } return determinante; }
non so l'ho detto prima che non sono brava
Con quali linguaggi di programmazione hai già programmato? In Java la variabile da restituire non prende il nome dalla funziona ma la devi dichiarare tu all'interno del codice. Quindi determinante è solo il nome della funzione e le espressioni:
determinante += m[0][0];
e
return determinante;
non hanno senso. Inoltre è un errore usare += con variabili non inizializzate. Hai forse semplicemente sbagliato a scrivere e al posto di determinante volevi scrivere la variabile determinanteMatrice? Per il resto mi sembra comunque abbastanza corretto come inizio.
Quando posti il codice ricordati sempre di descrivere perché non funziona, dire esclusivamente che è sbagliato non è molto di aiuto a coloro che devono controllare il tuo codice.
P.S. Mi sembra che l'aiuto non ti sia stato negato e ti siano stati forniti ben due link (uno con codice in Java) per l'algoritmo che hai richiesto. Senza conoscere quali siano i tuoi problemi (l'uso delle matrici o scarsa conoscenza del linguaggio) è difficile dare una mano e in tutti questi post è sembrato esclusivamente che tu stessi cercando di chiedere il codice già pronto senza neanche sforzarti di andare a vedere i link proposti.
determinante += m[0][0];
e
return determinante;
non hanno senso. Inoltre è un errore usare += con variabili non inizializzate. Hai forse semplicemente sbagliato a scrivere e al posto di determinante volevi scrivere la variabile determinanteMatrice? Per il resto mi sembra comunque abbastanza corretto come inizio.
Quando posti il codice ricordati sempre di descrivere perché non funziona, dire esclusivamente che è sbagliato non è molto di aiuto a coloro che devono controllare il tuo codice.
P.S. Mi sembra che l'aiuto non ti sia stato negato e ti siano stati forniti ben due link (uno con codice in Java) per l'algoritmo che hai richiesto. Senza conoscere quali siano i tuoi problemi (l'uso delle matrici o scarsa conoscenza del linguaggio) è difficile dare una mano e in tutti questi post è sembrato esclusivamente che tu stessi cercando di chiedere il codice già pronto senza neanche sforzarti di andare a vedere i link proposti.
Ho visto tutti i link che avete postato ma purtroppo ho problemi con il codice java sono alle prime armi...cmq vi ringrazio tutti siete gentili e disponibili!
Domani vado dal prof e chiedo a lui sono da piu di 2 sett con questo esercizio...
Domani vado dal prof e chiedo a lui sono da piu di 2 sett con questo esercizio...
"apatriarca":
Con quali linguaggi di programmazione hai già programmato? In Java la variabile da restituire non prende il nome dalla funziona ma la devi dichiarare tu all'interno del codice. Quindi determinante è solo il nome della funzione e le espressioni:
determinante += m[0][0];
e
return determinante;
non hanno senso. Inoltre è un errore usare += con variabili non inizializzate. Hai forse semplicemente sbagliato a scrivere e al posto di determinante volevi scrivere la variabile determinanteMatrice? Per il resto mi sembra comunque abbastanza corretto come inizio.
Quando posti il codice ricordati sempre di descrivere perché non funziona, dire esclusivamente che è sbagliato non è molto di aiuto a coloro che devono controllare il tuo codice.
P.S. Mi sembra che l'aiuto non ti sia stato negato e ti siano stati forniti ben due link (uno con codice in Java) per l'algoritmo che hai richiesto. Senza conoscere quali siano i tuoi problemi (l'uso delle matrici o scarsa conoscenza del linguaggio) è difficile dare una mano e in tutti questi post è sembrato esclusivamente che tu stessi cercando di chiedere il codice già pronto senza neanche sforzarti di andare a vedere i link proposti.
Si ho sbagliato a scrivere anche quando la matrice non è quadrata ho sbagliato perche il metodo deve sollevare un'eccezione quindi come ho scritto io è sbagliato...grazie!