Calcul de la matrice inverse Java

Je suis en train de calculer la matrice inverse en Java.

Je suis l'adjoint de la méthode (premier calcul de l'adjoint de la matrice, puis de transposer cette matrice et, enfin, de le multiplier par l'inverse de la valeur du déterminant).

Il fonctionne lorsque la matrice n'est pas trop grand. J'ai vérifié que pour les matrices jusqu'à une taille de 12 x 12, le résultat est rapidement fourni. Toutefois, lorsque la matrice est plus grand que 12x12 le temps qu'il faut pour compléter le calcul augmente de façon exponentielle.

La matrice j'ai besoin d'inverser est 19x19, et ça prend trop de temps. La méthode qui consomme plus de temps est la méthode utilisée pour le calcul du déterminant.

Le code que j'utilise est:

public static double determinant(double[][] input) {
  int rows = nRows(input);        //number of rows in the matrix
  int columns = nColumns(input); //number of columns in the matrix
  double determinant = 0;

  if ((rows== 1) && (columns == 1)) return input[0][0];

  int sign = 1;     
  for (int column = 0; column < columns; column++) {
    double[][] submatrix = getSubmatrix(input, rows, columns,column);
    determinant = determinant + sign*input[0][column]*determinant(submatrix);
    sign*=-1;
  }
  return determinant;
}   

Quelqu'un sait comment calculer le déterminant d'une matrice de grande taille de manière plus efficace? Si non, personne ne sait comment calcultate l'inverse d'une matrice de grande taille à l'aide d'autres algorithme?

Grâce

source d'informationauteur dedalo | 2010-01-02