|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2006
Messaggi: 136
|
[Java]Matrici inverse
salve a tutti...qualche giorno fa mi sono imbattuto in un problema: inversione di matrici.
a prima vista la cosa sembrava fattibile, avrei usato il metodo di gauss-jordan, ma ora mi trovo bloccato proprio quasi all'inizio. vi espongo il problema: il metodo gauss-jordan (nel caso non lo conosceste) parte semplicemente dal fatto di accostare la matrice che si vuole invertire a quella identità (della stessa grandezza ovviamente) e dunque, tramite operazioni elementari sulle linee di questa "doppia matrice" arrivare ad avere la matrice identità nella prima metà e cio' che si ottiene nella seconda metà sarà poi la matrice inversa che stavamo cercando. come prima cosa dunque bisogna triangolare la matrice iniziale in modo da mettere degli 0 al di sotto della "diagonale" (non è una vera e propria diagonale, potrebbe benissimo essere una scala non regolare) da sinistra a destra e poi risalire da destra a sinistra con lo stesso metodo mettendo degli zeri al di sopra della diagonale. il problema sorge qui: come faccio a trovare il pivot non conoscendo la grandezza della matrice? cioè, ok, il primo si trova in alto a sinistra (se c'è uno 0 allora si invertono due linee e la cosa è a posto) ma poi come faccio a dirgli "ok, hai trovato il primo, bravissimo...ora metti degli zeri sotto e cercami il secondo"?? ecco il pezzo di codice che ho già scritto: Codice:
public static int findPivot(int[][] mat) { int pivot = 0; for(int i = 0; i < mat.length; i++) { for(int j = 0; j < mat[0].length; j++) { if(mat[j][i] != 0) { pivot = mat[j][i]; } } } return pivot; } es: Codice:
1 2 3 1 0 0 1 4 7 0 1 0 1 6 8 0 0 1 ok, primo pivot = 1; mettiamo zero al di sotto 1 2 3 1 0 0 0 2 4 -1 1 0 0 4 5 0 0 1 secondo pivot = 2; mettiamo zero sotto (ecco, qui come gli dico non prendermi il primo due che sta sulla prima riga e seconda colonna, bensi quello alla seconda riga e seconda colonna???) 1 2 3 1 0 0 0 2 4 -1 1 0 0 0 -3 0 -2 1 Ultima modifica di n0n4m3 : 27-02-2010 alle 18:06. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
potresti fare che in una varibile indichi quanti valori hai gia trovato e la usi come indice nella matrice
all'inizio è 0 , poi via via incrementi quindi Codice PHP:
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:33.