Ho implementato una classe Matrice le cui istanze rappresentano delle matrici n x m (di n righe e m colonne).
Ora , oltre gli altri metodi che ho già implementato , vorrei crearne uno per la determinazione del rango (procedendo col trovare l'ordine massimo di un minore estraibile dalla matrice che abbia determinante diverso da zero) passando quindi prima dall'implementazione di un metodo per la determinazione dei minori estraibili (è proprio questo il metodo per il quale chiedo aiuto).
Vi posto un po' di codice riguardo la struttura della classe e dei metodi che penso siano utili per la realizzazione del metodo richiesto:
L'idea sarebbe quella di trovare tutti i minori di ordine n della matrice mediante l'adeguato utilizzo dei metodi removeRiga e removeColonna ma purtroppo non ne vengo a capo..fin quando si tratta di rimuovere una riga/colonna è facile ricavare tutti i possibili minori ma man mano che scende l'ordine dei minori (quindi vanno rimosse più righe/colonne) vado in confusione..codice:class Matrice { private double [][] mat; //UNO DEI VARI COSTRUTTORI , GIUSTO PER RENDERE L'IDEA public Matrice (double [][] matrice) { mat = matrice; } ........ public double [][] getArray () { return mat; } public Matrice removeRiga (int riga) throws OperazioneMatriceIllegale { double [][] restituire; if (riga >= mat.length) { throw new OperazioneMatriceIllegale ("Il numero della riga specificata va oltre la dimensione della matrice"); }else { restituire = new double [mat.length - 1][mat [0].length]; int r = 0; for (int i=0;i<mat.length;i++) { for (int j=0;j<mat [0].length;j++) { if (i != riga) { System.out.println ("R="+r+"\tI="+i+"\tJ="+j); restituire [r][j] = mat [i][j]; } } if (i != riga) r++; } } return new Matrice (restituire); } public Matrice removeColonna (int colonna ) throws OperazioneMatriceIllegale { double [][] restituire = new double [mat.length][mat [0].length - 1]; if (colonna >= mat [0].length) { throw new OperazioneMatriceIllegale ("Il numero della colonna specificata va oltre la dimensione della matrice"); }else { int c = 0; for (int i=0;i<mat.length;i++) { for (int j=0;j<mat [0].length;j++) { if (j != colonna) { restituire [i][c] = mat [i][j]; c++; c=c%restituire [0].length; } } } } return new Matrice (restituire); } public Matrice [] getMinori (int ordine) { //E' QUESTO IL METODO PER IL QUALE CHIEDO AIUTO A VOI } }
Dunque chiedo a voi , mi aiutate nell'implementazione di tale metodo?Da solo non so se ne verrei a capo![]()

Rispondi quotando
