Il est bien sûr très difficile de décrire en détail toutes les méthodes, mais ce sujet me semble intéressant et extrêmement important, car tout le monde est confronté au problème de trouver une solution assez souvent. Dans le premier article 
Pourquoi Gauss? la méthode de Gauss a été décrite (y compris avec des modifications) et quelques méthodes itératives. Cependant, étant donné la critique de 
Sinn3r , j'ai décidé de décrire également d'autres méthodes.
Recommencer
Alors, encore une fois, nous devons résoudre un système d'équations algébriques linéaires d'ordre 
. L'une des méthodes numériques les plus frappantes est une méthode qui utilise 
-décomposition de la matrice.
Cette méthode intuitive est la suivante. Supposons que nous ayons un système d'équations algébriques linéaires (écrites sous forme vectorielle):
où 
- une matrice 
non dégénérée terrible et déroutante. Nous le représentons comme le produit de deux autres matrices: 
Est une matrice triangulaire inférieure, et 
Est la matrice triangulaire supérieure. Alors évidemment le système prend la forme:
Si désigné 
, la solution du système d'origine est trouvée à partir de la solution de deux autres systèmes:
L'avantage de cette méthode est que les solutions de deux systèmes auxiliaires sont très simples (du fait que les matrices 
et 
- triangulaire). Mais est-il facile de trouver ces matrices? Ainsi, la tâche de résoudre le système est réduite à la tâche de construire 
-décompositions pour la matrice.
Description de l'algorithme d'application 
-la décomposition est décrite de manière suffisamment détaillée 
ici . En attendant, nous examinerons une autre méthode.
Méthode de la racine carrée
Nous imposons des conditions supplémentaires à la matrice 
. Nous exigeons qu'il soit symétrique, c'est-à-dire 
ou 
. Une telle matrice peut être représentée comme
où 
- matrice triangulaire supérieure, 
Est une matrice 
réelle diagonale, et ses éléments diagonaux sont égaux à l'unité en valeur absolue. De même, le système d'origine est réduit à deux autres:
qui sont également résolus élémentairement en raison des propriétés des matrices 
et 
.
La dérivation des formules algorithmiques est assez lourde et reste au-delà du champ de publication. Si vous le souhaitez, vous pouvez les trouver 
ici .
Exemple de code Java qui implémente la méthode de balayage:
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.PrintWriter; import java.util.Locale; import java.util.Scanner; public class SquareRootMethod { public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(new FileReader("input.txt")); scanner.useLocale(Locale.US); int n = scanner.nextInt(); double[][] a = new double[n + 1][n + 1]; double[] b = new double[n + 1]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { a[i][j] = scanner.nextDouble(); } b[i] = scanner.nextDouble(); } double[] x = new double[n + 1]; double[] d = new double[n + 1]; double[][] s = new double[n + 1][n + 1];  
Méthode de balayage
En utilisant cette méthode, seuls les systèmes spécifiques avec pas plus de trois inconnues dans chaque ligne peuvent être résolus. Autrement dit, avec le système
matrice 
est tridiagonal:
A = \ begin {pmatrix} C_1 & -B_1 & 0 & \ dots & 0 & 0 \\ -A_2 & C_2 & -B_2 & \ dots & 0 & 0 \\ \ vdots & \ vdots & \ vdots & \ ddots & \ vdots & \ vdots \\ 0 & 0 & \ dots & -A_ {n-1} & C_ {n-1} & -B_ {n-1} \\ 0 & 0 & \ dots & 0 & -A_n & C_n \\ \ end {pmatrix}.
Notez simplement qu'il existe une connexion de solutions voisines:
- quelques nombres inconnus. Si nous les trouvons et une seule variable, nous pouvons trouver toutes les autres.
Dérivation de formules
présent 
ici . Eh bien, à la fin
Notez que dans les formules de recherche 
il y a une division par numéro 
qui peut s'avérer être zéro qui doit être suivi. Mais en fait, l' 
énoncé suivant est vrai, la preuve en est 
ici : l'algorithme de balayage est correct et stable si les conditions sont remplies:
Considérez le code du programme Java qui résout le système.
\ left \ {\ begin {aligné} & x_1 = 0, \\ & x_ {i-1} + \ xi x_ {i + 1} = \ dfrac {i} {n}, \ (i = \ overline {2, n-1}), \\ & x_n = 1, \\ \ end {aligné} \ à droite.
à 
.
 package SystemOfLinearAlgebraicEquations; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.PrintWriter; import java.util.Locale; import java.util.Scanner; public class TridiagonalMatrixAlgorithm { public static void main(String[] args) throws FileNotFoundException { final int n = 21; double[] A = new double[n + 1]; double[] B = new double[n + 1]; double[] C = new double[n + 1]; double[] F = new double[n + 1]; double xi = 2; C[1] = 1; F[1] = 0; for(int i = 2; i <= n-1; i++) { A[i] = 1; C[i] = xi; B[i] = 1; F[i] = - (double) i / n; } A[n] = 0; C[n] = 1; F[n] = 1; double[] alpha = new double[n + 1]; double[] beta = new double[n + 1];