A propos de la méthode de Gauss |
Rappel des algorithmes de la méthode de Gauss, comme ils seraient écrits en Java à lintérieur dune classe où :
Triangularisation de la matrice. Létat du système nest pas géré ici (mais vous devrez vous en occuper dans votre programme).
void triangularisation() { for (int k = 0; k < n; k++) { // recherche du pivot dont la // valeur absolue est maximum int ip = k; double absPiv = Math.abs(mat[ip][k]); for (int j = k + 1; j < n; j++) if (Math.abs(mat[j][k]) > absPiv) { ip = j; absPiv = Math.abs(mat[ip][k]); } // le pivot est-il nul? if (absPiv < epsilon) return; // permutation éventuelle de lignes if (ip != k) { double[] w = mat[k]; mat[k] = mat[ip]; mat[ip] = w; } // arrangement des lignes sous le pivot for (int j = k + 1; j < n; j++) { double q = - mat[j][k] / mat[k][k]; for (int i = k; i <= n; i++) mat[j][i] = mat[j][i] + q * mat[k][i]; } } }
Résolution du système triangulaire. Notez que, au fur et à mesure de leur détermination, les valeurs des inconnues sont rangées à la place des coefficients du second membre. De plus, le système est « nettoyé » (lorsquils cessent dêtre utiles, les coefficients sont remplacés par zéro, sauf ceux de la diagonale qui sont remplacés par 1).
void resolution() { for (int i = n - 1; i >= 0; i--) { double s = 0; for (int j = i + 1; j < n; j++) { s = s + mat[i][j] * mat[j][n]; mat[i][j] = 0; } mat[i][n] = (mat[i][n] - s) / mat[i][i]; mat[i][i] = 1; } }