L'algorithme de Thomas n'est pas stable en général, mais il l'est dans plusieurs cas particuliers, notamment lorsque la matrice est diagonalement dominante (soit par lignes, soit par colonnes) ou symétrique définie positive[1],[2]. Pour une caractérisation plus précise de la stabilité de l'algorithme de Thomas, voir le théorème de Higham 9.12[3]. Si la stabilité est nécessaire dans le cas général, l'élimination gaussienne avec pivotement partiel (GEPP) est alors recommandée[2].
Le balayage vers l'avant consiste en le calcul de nouveaux coefficients comme suit, où les nouveaux coefficients sont notés par des dérivées :
et
La solution est alors obtenue par substitution à rebours :
La méthode ci-dessus ne modifie pas les vecteurs de coefficients d'origine, mais doit stocker les nouveaux coefficients. Si les vecteurs de coefficients doivent être modifiés, alors un algorithme avec moins de gestion de l'information est possible :
On suppose que les inconnues soient , et que les équations à résoudre sont :
En modifiant la deuxième équation ( ) avec la première équation comme suit :
ce qui donnerait :
On peut remarquer que a été éliminé de la deuxième équation. Utiliser une tactique similaire avec la deuxième équation modifiée sur la troisième équation donne :
Cette fois a été éliminé. Si cette procédure est répétée pour l'ensemble des lignes, alors chaque équation modifiée n'impliquerait qu'une seule inconnue, . Cette équation peut être résolue puis utilisée pour résoudre l'équation , et ainsi de suite jusqu’à ce que toutes les inconnues soient obtenues.
On observe que les coefficients des équations modifiées deviennent de plus en plus compliqués s’ils sont exprimés de façon explicite. En examinant la procédure, les coefficients modifiés (notés par des tildes) peuvent plutôt être définis de manière récursive :
Pour accélérer encore la résolution, les coefficients peuvent être divisés (s'il n'y a pas de risque de division par zéro), les coefficients modifiés les plus récents, ici notés par une dérivée, seront :
Cela donne le système suivant :
La dernière équation ne comportant qu’une seule inconnue, en la résolvant on réduit l'avant-dernière équation à une inconnue, de sorte que cette substitution à rebours puisse être utilisée pour trouver toutes les inconnues :
↑Pradip Niyogi, Introduction to Computational Fluid Dynamics, Pearson Education India, (ISBN978-81-7758-764-7), p. 76
↑ a et bBiswa Nath Datta, Numerical Linear Algebra and Applications, Second Edition, SIAM, (ISBN978-0-89871-765-5), p. 162
↑Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms: Second Edition, SIAM, (ISBN978-0-89871-802-7), p. 175
W. H. Press, S. A. Teukolsky, W. T. Vetterling et B. P. Flannery, Numerical Recipes: The Art of Scientific Computing, New York, Cambridge University Press, (ISBN978-0-521-88068-8), « Section 2.4 »