TD — Algèbre II 2 : élimination de Gauss et substitution
Couverture : de 00:00:00 à 01:59:46 sur un audio de 02:00:04 (2 h 00). Le prof explique les algorithmes et fait les exercices au tableau jusqu’à 01:09:14, puis laisse une longue séance de travail individuel (≈ 01:09 → 01:52) où il ne parle que par intermittence pour aider ; il reprend une correction collective guidée de la structure de la substitution de 01:52:58 à 02:00:04.
Support :
énoncé TD2.pdf+ les fonctions MATLAB pré-complétées fournies sur WebCampus (dossier « TD2 – élimination de Gauss / substitution régressive ») :Substi.m,ElimGauss.m,ElimGaussPerm.m,permutation.m,launch.m,superior.m,inferior.m. Tout est dansBac 2/ALG II/Exo/TD - 2/; le TD repose sur le ALG II - Cours 3 (systèmes carrés, , pivotage).
PARTIE 1 — Contexte : système et matrices triangulaires — [00:00:00]
1. Comment se déroulent les TD — [00:00:00]
- « Ce qu’on va souvent faire, c’est faire… une résolution analytique des méthodes et des algorithmes que vous avez vus dans le cadre du cours de théorie. Et à chaque fois, implémenter ces méthodes sur machine. »
- « Il se peut que parfois les deux heures ne soient pas assez pour faire l’implémentation des méthodes… il ne faut pas hésiter à terminer chez vous. »
- Ne pas compter sur une éventuelle heure de RAB en fin de quadri : « ne comptez pas sur ça » ; si une séance n’est pas finie, « une séance est terminée chez vous et posez des questions par rapport à ça ».
2. Contexte du jour : carrée, — [00:00:46]
- « Aujourd’hui… on va travailler sur l’élimination de Gauss et la méthode de substitution » pour résoudre les systèmes .
- ⚠️ En général est rectangulaire ( lignes, colonnes) ; « ici, aujourd’hui, on va supposer que est égal à , c’est-à-dire que la matrice est carrée ».
- Comme on cherche la solution (système déterminé) : « on va supposer que le déterminant de la matrice est non nul », c’est-à-dire que la matrice est inversible ⚠️ [sic : « un persil » enregistré — comp. « non singulière »].
- « En fonction du type de système et du type de matrice, vous avez différentes possibilités » → le cas le plus simple : les matrices triangulaires.
3. Matrices triangulaires : substitution régressive ou progressive — [00:01:25]
- Triangulaire supérieure → substitution régressive ; triangulaire inférieure → substitution progressive.
- « Ceci… vous l’avez bien vu décomposé… dans le cadre du cours de théorie ? Oui ? »
PARTIE 2 — Exercice 1 : substitution régressive sur un système triangulaire — [00:02:09]
4. L’exemple : un système triangulaire supérieur — [00:02:09]
On demande de résoudre avec () :
- « Vous êtes dans quel cas de figure ici ? — Matrice [triangulaire] supérieure. » → substitution régressive : « je vais [remonter] du bas vers le haut ».
- ⚠️ La lecture orale de la matrice est très dégradée dans la transcription [00:02:30] ; les valeurs ci-dessus sont celles de l’énoncé/
launch.m, et elles sont cohérentes avec tous les calculs faits au tableau (cf. § 5).
5. Application : , , , — [00:03:24]
Le principe récité à l’oral (« on applique une recette, mais vous pouvez tous comprendre pourquoi on arrive à cette formule-là ») :
- ⚠️ [00:08:56] « 5B » enregistré = 5/2.
- → « j’ai 5 moins 2,5, ça fait de nouveau 2,5, donc je me retrouve avec moins 5 demis » ⚠️ le coefficient ; le signe moins vient du dénominateur .
- (le terme en saut car ).
- → la ligne 1 donne « moins 66 sur 2 » (), « plus [30] sur 2 » (), « moins 20 sur 2 » () « ça fait moins 13 ».
⚠️ Vérification des signes du transcript partiellement bruitée [00:07:40–00:09:35] ; le résultat est confirmé en remplaçant dans la première équation ().
6. Pourquoi cette formule marche — [00:09:36]
- La raison se lit de bas en haut : la dernière équation donne directement ; chaque équation suivante, étant triangulaire supérieure, ne fait intervenir que et des déjà calculés → on isole en fonction du reste.
- « C’est comme ça que je fais apparaître au final la somme des éléments des inconnues que j’ai déjà pu calculer. »
7. Cramer : écarté en pratique — [00:10:30]
- « La méthode de Cramer est une méthode que vous avez vue aussi… Alors, on ne va pas le faire ici… parce que ce n’est pas spécialement pertinent. » Pour une matrice , « je vous demande de calculer à chaque fois 4 déterminants ».
- « Vous pouvez l’implémenter numériquement si vous le souhaitez, mais ici, en pratique, ça n’a pas d’intérêt. Au final, on passerait le délai à calculer 4 déterminants, ce qui n’est pas le but. »
PARTIE 3 — Dérivation de l’algorithme d’élimination de Gauss — [00:11:04]
8. Objectif : transformer en système triangulaire — [00:11:04]
- Le prof interroge : dans le cours de théorie, avez-vous vu d’où vient la formule de Gauss ? Réponse : globalement non, « vous faisiez des opérations sur des lignes, vous soustrayiez des lignes… mais vous n’avez pas vu pourquoi on arrive à cette formule finale ». → « On va le voir alors, pourquoi on peut faire ça. »
- « Le but de l’élimination de Gauss : partir d’un système d’équations linéaires et progressivement transformer ce système en un système triangulaire, en faisant des opérations sur les lignes. »
- Formalisation : on transforme en une suite de systèmes où, « à chaque étape , on élimine la variable des équations jusqu’à » ; « après étapes, on obtient un système triangulaire (supérieur) ».
- « En théorie, on vous dit : prenez une telle ligne, faites la ligne moins la ligne… mais c’est pas évident de transformer ça numériquement en un programme. » D’où l’étude de l’itération générique : si on sait faire une étape, on sait répéter.
9. L’itération : exemple générique à l’étape 3 — [00:15:59]
On suppose et on débute l’étape ; la forme de la matrice est alors :
- Les sous la diagonale aux colonnes proviennent des étapes 1 et 2 : « à l’étape 1, j’ai éliminé dans toutes les autres équations… ici, je n’ai plus de ». On ne touche pas à (déjà mis à jour) mais on travailler avec .
- Mise à zéro : « je viens mettre un zéro [en position] en soustrayant un certain nombre de fois la ligne 3 ». Question : quel facteur mettre devant ? → , « comme ça, si je multiplie par , je fais bien apparaître un 0 ». Idem .
- Pourquoi cette opération est-elle licite ? « on garde des systèmes qui sont équivalents, et s’ils sont équivalents, ils auront la même solution ». ⚠️ Concret : remplacer une ligne par elle-même moins un multiple d’une autre ligne ; on ne peut pas remplacer une ligne par un multiple seul d’une autre (« vous ne pourriez pas », passage bruité).
- Pourquoi ne travailler qu’à partir de la ligne du pivot ? Si pour mettre un zéro en on utilisait la ligne 2 (déjà triangulée), « à la place du 0, je viens mettre une croix → on perd le système triangulaire » ; « c’est ça qui est important de travailler à partir du pivot » : « si on perd ça, on perd tout ce qu’on a déjà fait, tout l’aspect triangulaire ».
- Le pivot ne bouge pas (il reste inchangé) ainsi que tout ce qui précède.
10. La formule de mise à jour : — [00:25:42]
En raisonnant sur les coefficients (, ligne du pivot fixée, colonnes variables) :
- Chaque élément du bloc conservé garde sa valeur moins le facteur × l’élément de la ligne du pivot :
- « Ce gros mastodonte qu’on avait [dans la théorie]… il s’explique de manière assez rigoureuse. » Pour on recopie la même chose (et on met des zéros là où prévu) ; ici « vous voyez bien que pour la matrice , ce que j’obtiens… c’est bien ».
11. Mise à jour du second membre — [00:27:56]
- « J’ai fait exactement la même chose pour » : on retire le même facteur à l’élément correspondant :
- Pour les équations « font partie… de ma triangulaire supérieure » : on les laisse inchangées.
- « Est-ce que c’est clair pour tout le monde ? … pour ça va ? Ou il faut l’écrire ? » → le prof écrit la ligne de l’exemple : .
12. Hypothèse implicite : pivots non nuls — [00:30:51]
- « Il y a quand même une certaine hypothèse implicite qu’on fait quand on fait cet algorithme. Quelle est cette hypothèse ? — On n’aura pas de pivots nuls. »
- « L’algorithme est bien posé si pour tout » → on rencontrera ce cas à la Partie 6 (pivotage).
PARTIE 4 — Exercice 2a : élimination de Gauss à la main — [00:31:57]
13. Système, initialisation et la méthode « encadrer la sous-matrice » — [00:31:57]
Système test (Exercice 2a de l’énoncé) :
- « Poser : initialiser, il n’y a rien à faire » → , . On construit : la première ligne reste la même (« pas besoin de calcul »).
- « À la première étape, la seule chose qu’on doit venir calculer nous-mêmes, c’est les éléments qui font partie de la sous-matrice jusqu’à . »
- ⚠️ Méthode mémotechnique recommandée [00:34:50] : au lieu de recopier toutes les valeurs, « vous entourez la sous-matrice que vous devez mettre à jour » ; pour chaque élément, regarder le plus proche sur la ligne du pivot et sur la colonne du pivot :
- « Et de manière générale, quand vous avez un 0 ici, ne calculez jamais, par pitié ! Dès que j’ai un 0 [dans la colonne du pivot], je vais tout multiplier par 0 sur la ligne en question… je vais garder exactement les mêmes éléments. »
- Étape (pivot ) : inchangée () ; ; . Le second membre ne change pas (les facteurs se multiplient par ).
14. Étapes puis — [00:40:12]
- Étape , pivot : on recopie tout ce qui précède et on ne met à jour que la sous-matrice .
- (car ) ;
- ;
- inchangé car .
- Étape , pivot : seul change,
2 − 4·3/4 = 2 − 3 = −1en et0 − 4·1/4 = −1en ; .
15. Substitution régressive finale — [00:44:11]
« Il vous reste à résoudre via la substitution régressive. »
- ; ; ; .
⚠️ Le transcript [00:36:00–00:39:00] mélange les valeurs ; les matrices ci-dessus sont vérifiées par l’algorithme et compatibles avec les valeurs lues (« 2 moins 4 fois 3 sur 4 → 2 moins 3 = moins 1 », « 0… divisé par 4 → moins 1 »).
PARTIE 5 — Coder : écraser en place, pas de matrices intermédiaires — [00:45:29]
16. Une seule matrice en mémoire — [00:45:29]
- « Vous voyez ici qu’à chaque étape, on stocke une nouvelle matrice. J’ai . Est-ce que je suis obligé [d’en créer de nouvelles] ? — Non. »
- Deux raisons :
- la taille ne change jamais : « on garde un système à équations, inconnues… je sais qu’à la fin je vais garder un nombre d’équations » ;
- « quand on arrive à la matrice , on n’a plus besoin de celles de et » → « tout ce qui a été calculé avant, vous pouvez le remettre dans la matrice que vous êtes en train de traiter… autant le laisser ».
- « En écrasant dans la matrice en question, vous gardez une seule matrice en mémoire, et à la fin de vos itérations, la matrice que vous avez écrasée est une matrice triangulaire. »
- ⚠️ Ordre des opérations : il faut utiliser les valeurs courantes de la ligne du pivot pour créer les nouvelles, puis écraser (sinon on multiplie par des avant d’avoir utilisé la ligne : « vous n’avez rien changé »).
- Motivation mémoire : une matrice , même , « ce n’est pas un problème » ; mais « une matrice 10 millions × 10 millions… créer 10 millions de matrices intermédiaires, là ça commence à devenir chaud et inutile ».
PARTIE 6 — Pivot nul : le pivotage (permutation de lignes) — [00:48:19]
17. Que faire si un pivot est nul — [00:48:19]
- « Qu’est-ce qui se passe si un pivot est nul dans l’élimination de Gauss ? — Permuter les lignes. »
- « On regarde, parmi les lignes du pivot, un élément non nul, je viens permuter les lignes et je continue à partir de là. De nouveau, permuter les lignes ne change pas le système d’équations. → on parle de pivotage. »
- ⚠️ « Vous n’allez travailler qu’entre les lignes qui sont en dessous du pivot. Pourquoi ? Si vous allez chopper la deuxième ligne que vous venez de [traiter]… vous n’allez plus avoir une matrice triangulaire supérieure. »
18. Exercice 3 : exemple avec permutation — [00:49:29]
Système (Exercice 3 de l’énoncé) :
- Étape , pivot :
- , ;
- , .
- Étape : pivot → on permute les lignes 2 et 3 (celle de avec) :
- « Attention, si vous avez changé [les lignes] dans , changez aussi dans , parce que l’équation fait intervenir aussi le second membre. »
- Le système est désormais triangulaire supérieur → « pas besoin de continuer » (les deux dernières lignes forment un bloc triangulaire ).
- (Q&R sur le code [00:54:32–00:58:17], bruitées : il faut renvoyer les vecteurs permutés — analogie Python « , return » — et surtout permuter aussi.)
PARTIE 7 — Implémentation MATLAB — [01:02:41]
19. Les fichiers fournis (pré-complétés) — [01:02:41]
- « Cette deuxième [séance], vous allez implémenter la substitution régressive et la méthode d’élimination de Gauss avec et sans permutation en MATLAB. »
- « Vous ne codez pas depuis zéro » : sur WebCampus, section « TD2 – élimination de Gauss, substitution régressive », il y a l’énoncé + les fonctions MATLAB pré-complétées : « vous devez juste compléter aux endroits [indiqués] ».
- Fichiers concernés :
Substi.m: solution de (substitution régressive et progressive) ;ElimGauss.m: élimination de Gauss sans permutation ;ElimGaussPerm.m: élimination de Gauss avec permutation ;permutation.m: fonction d’aide (pas obligatoire) qui permute deux lignes quand un pivot est nul ;launch.m: le « main » (dans chaque section : une matrice, un second membre, l’appel de la fonction) ;superior.m/inferior.m: la correction de la semaine passée pour tester si une matrice est triangulaire supérieure/inférieure.
20. Les règles de code — [01:03:33]
- Base de travail : « pour l’élimination de Gauss, basez-vous sur l’algorithme présenté ici… une boucle de 1 jusqu’à dans laquelle vous faites ces différentes opérations ». C’est « une double boucle » pour le sous-bloc.
- ⚠️
A\b: « en MATLAB, ce slash, quand vous faitesA\b, ça va vous donner la solution du système » (méthode interne de MATLAB = vérité de référence). → on compareSubsti(A,b)/ElimGauss(A,b)avecA\bpour vérifier. - « Toutes vos fonctions ainsi que le main dans lequel sont appelées vos fonctions doivent être enregistrés dans le même dossier. »
- ⚠️ « Ne venez pas créer plein de matrices intermédiaires. Écrasez tout dans la même matrice que vous retournez à la fin de votre algorithme. »
- Le prof ne donnera pas la solution des codes (« vous savez vérifier si vous avez la bonne réponse », via
A\b) ; il passe entre les bancs pour débuguer et aiguiller.
21. Consignes pratiques et évaluation — [01:07:35]
- « Pour tester si votre matrice est triangulaire supérieure ou inférieure, n’hésitez pas à utiliser la correction que je vous ai donnée la semaine passée… c’est pour ça que la question posée la semaine dernière n’était pas anodine. » Sans perte de généralité, on suppose que l’utilisateur a rentré « une INF ou une SUP » et « on regarde juste laquelle ».
- ⚠️ Sauvegarde : « n’oubliez pas de vous sauvegarder ou de vous envoyer votre code » (les PC du pool ne conservent rien) — le travail de groupe demandera des codes fonctionnels et complétés.
- « La partie MATLAB sera beaucoup évaluée dans le travail de groupe ; à l’examen écrit, c’est beaucoup plus les développements analytiques qu’on fait ensemble au tableau. »
PARTIE 8 — Travail en séance : aide individuelle — [01:09:14]
22. Rappels lancés pendant le travail — [01:11:18]
- « En général, pour tout le monde : testez si la matrice est triangulaire supérieure ou inférieure. Ne perdez pas de temps là-dessus. Prenez exactement le code que je vous ai… donné en correction » ; « vous ne devez pas commencer à tester si elle est SUP, ou INF, ou aucun des deux ».
- Pendant ≈ 45 minutes le transcript n’est que bruit de fond (le prof aide les étudiants individuellement ; bribes sur
n = size(A,1), la boucle inversen-1:-1:1et la somme, repris proprement à la Partie 9).
PARTIE 9 — Correction guidée : la structure de Substi et de Gauss — [01:52:58]
23. Structure de la substitution régressive/progressive — [01:52:58]
- D’abord tester la triangularité : « ça, on l’a fait au TD la semaine passée… ça permet juste de savoir si j’ai une triangulaire sup ou inf » →
superior(A)/inferior(A). - Initialisation : «
x = zeros(n,1)», où «n = size(A,1)» (nombre de lignes de ). - Dernier élément (« exactement ce qu’on a fait au tableau ») :
x(n) = b(n)/A(n,n). - Boucle régressive, avec une somme intermédiaire :
for i = n-1:-1:1
sum = 0;
for j = i+1:n
sum = sum + A(i,j)*x(j); % x(j) déjà calculé
end
x(i) = (b(i) - sum)/A(i,i);
end- Le piège central : « à chaque fixé, j’ai une somme à calculer… c’est pour ça que je mets
sum = 0;for j = i+1:n;sum = sum + A(i,j)*x(j). » « Beaucoup d’entre vous ont buté là-dessus… La première chose que vous faites à la main, c’est calculer toute votre somme pour l’étape courante → c’est une opération que vous devez faire dans votre boucle chez vous. » - Variante progressive (triangulaire inférieure) :
x(1) = b(1)/A(1,1), puisfor i = 2:n, somme surj = 1:i(le terme ajoute initial : sans effet),x(i) = (b(i) - sum)/A(i,i).
24. Rappel : squelette de l’élimination de Gauss — [01:57:11]
- « Pour une étape courante , on va mettre des zéros sur une colonne… ne pas changer la première [ligne] et mettre à jour tout un sous-bloc. La mise à jour de ce sous-bloc, c’est une double boucle. »
for k = 1:n-1
% (avec permutation : permuter une ligne sous le pivot si A(k,k) == 0)
for i = k+1:n
for j = k+1:n
A(i,j) = A(i,j) - A(i,k)*A(k,j)/A(k,k);
end
b(i) = b(i) - A(i,k)*b(k)/A(k,k);
A(i,k) = 0;
end
end
x = Substi(A, b); % substitution régressive finale- Sans permutation (
ElimGauss), siA(k,k) == 0→error(...); avec permutation (ElimGaussPerm), on appellepermutation(A,b,k,i)dès qu’un pivot est nul. - « Rassurez-vous, c’est normal que vous ayez du mal : c’est la deuxième fois que vous manipulez MATLAB… l’important, c’est que ce soit clair maintenant dans l’idée, que vous compreniez la mécanique et la démarche à suivre. »
PARTIE 10 — Fin de séance — [01:58:02]
25. Conclusion — [01:58:02]
- « On n’a pas de questions, ça va s’arrêter là pour aujourd’hui. » Travail à terminer chez soi ; les codes doivent être sauvegardés/remis (travail de groupe).
Points clés — [résumé]
- Deux méthodes pour ( carrée, ) : la substitution (si est triangulaire) et l’élimination de Gauss (cas général).
- Substitution régressive ( tri. sup.) : ; pour , .
- Substitution progressive ( tri. inf.) : ; pour , .
- Gauss = transformer en système triangulaire supérieur par opérations sur les lignes , puis substitution régressive.
- Itération : seuls les éléments changent ; ; ; le pivot et les lignes d’au-dessus sont recopiés.
- ⚠️ Travailler uniquement à partir de la ligne du pivot, sinon on casse la forme triangulaire déjà construite.
- ⚠️ Pivot nul → pivoter (permuter la ligne avec une ligne en dessous qui a un élément non nul) et permuter en même temps.
- Code : écraser la matrice en place (une seule matrice en mémoire) ; ordre des opérations : calculer avec les valeurs courantes puis écraser.
- Mnémotechnique : « entourer la sous-matrice », et « s’il y a un 0 dans la colonne du pivot, ne jamais calculer ».
- MATLAB : fonctions +
launch.mdans le même dossier ;A\b= solution MATLAB pour vérifier ; tester la triangularité viasuperior(A)/inferior(A);x = zeros(n,1); boucle interne de somme dans la substitution. - Cramer écarté : en pratique, trop de déterminants à calculer.
Doutes / à vérifier
- ⚠️ [00:00:58–00:01:09] « en général matrice rectangulaire, lignes et colonnes » : le prof dit « » pour les deux dimensions (confusion ) ; il veut dire : en général rectangulaire , et aujourd’hui carrée .
- ⚠️ [00:01:17] « le déterminant… est un nul, c’est-à-dire que la matrice est un persil » — dictat probable de « non singulière » (= inversible, ).
- ⚠️ [00:02:30–00:03:19] Lecture de la matrice de l’Exercice 1 complètement dégradée (« moins 6, 0, 1, moins 1, 0, 0, 0… 2 ») ; les valeurs exactes sont restaurées depuis l’énoncé et
launch.m(A = [[2,-6,6,4],[0,1,-1,0],[0,0,-1,1],[0,0,0,4]], b = (2,-3,5,10)) et tous les calculs du tableau concordent. - ⚠️ [00:08:47–00:09:02] Déroulé de et : « moi/sur 2 », « 5 moins 2,5 »… le transcript saute plusieurs nombres ; la reconstruction du § 5 est validée par retour arrière dans .
- ⚠️ [00:06:00–00:07:00] Pour : « 2 moins moins, comme le coefficient c’est » — l’ASR donne « 2 » pour ; le calcul est rétabli dans le § 5.
- ⚠️ [00:23:20–00:24:00] Justification de la transformation de ligne : « je ne peux pas dire que devient [fois…] » (fragment « la ligne 4NL ») ; le sens (remplacer par seulement, jamais par un multiple seul) est clair mais la phrase exacte est à réécouter.
- ⚠️ [00:36:00–00:39:00] Pendant l’étape de l’Exercice 2a, le prof dit « l’élément courant , c’est 0 » ; en réalité c’est (appliqué aux via le facteur ) qui laisse inchangé à l’étape 1, et c’est qui le laisse inchangé à l’étape 2. Le transcript brouille //.
- ⚠️ [00:54:32–00:58:17] Discussion sur
permutation(retour des vecteurs, mise à jour de ) copieuses et très bruitées (« il y a une colonne… c’est la colonne ») ; les seuls points fiables sont : on permute deux lignes (avec les correspondants) et on renvoie/affecte les résultats. - ⚠️ [01:28:00–01:31:00] « Un vecteur de 0… on remplit parenthèse 4… parfois de moins 1… 2 points de moins 1 » : a mangé la discussion de
x = zeros(n,1)et de la bouclefor i = n-1:-1:1(le « 2 points » = deux-points:de la syntaxe MATLAB). - ⚠️ [01:46:55–01:52:26] Interventions individuelles bruitées (
n = size(A,1), indices des boucles) ; le contenu fiable est repris dans la correction collective de la Partie 9. - ⚠️ Colonne 1 de l’Ex. 2a : le transcript annonce « [première ligne] 1, 2, 1 » pour mais la matrice compte 4 colonnes (1, 2, 1, 1) ;
launch.mconfirme .
Annexe — l’énoncé du TD (énoncé TD2.pdf) et les codes fournis
TD 2 : Systèmes d’équations linéaires — substitution et élimination de Gauss
Implémenter les fonctions telles qu’elles sont décrites et vérifier chaque résultat avec une fonction prédéfinie de MATLAB (
A\b).
Exercice 1 — [x] = Substi(A,b). À compléter dans Substi.m : résolution par substitution (régressive ou progressive) d’un système dont la matrice est triangulaire (supérieure ou inférieure). Tester avec et , et vérifier avec A\b.
Exercice 2 — [x] = ElimGauss(A,b). Élimination de Gauss sans permutation, avec message d’erreur si un pivot est nul. Tester avec :
- (a) , ;
- (b) , ⚠️ la ligne était tronquée dans l’extraction du PDF ; restaurée via
launch.m.
Exercice 3 — [x] = ElimGaussPerm(A,b). Élimination de Gauss avec permutation de lignes quand un pivot est nul (on peut s’appuyer sur permutation.m). Tester avec , .
Le squelette de Substi.m (structure recopiée au tableau, § 23)
function [x] = Substi(A,b)
N = size(A,1);
testSup = superior(A); % true si A triangulaire supérieure
testInf = inferior(A); % true si A triangulaire inférieure
x = zeros(N,1);
if (testSup == true) % substitution régressive
x(N) = b(N)/A(N,N);
for i = N-1:-1:1
sum = 0;
for j = i+1:N
sum = sum + A(i,j)*x(j);
end
x(i) = (b(i) - sum)/A(i,i);
end
elseif (testInf == true) % substitution progressive
x(1) = b(1)/A(1,1);
for i = 2:N
sum = 0;
for j = 1:i
sum = sum + A(i,j)*x(j);
end
x(i) = (b(i) - sum)/A(i,i);
end
else
error("Votre matrice n'est pas triangulaire")
end
endLe squelette de l’élimination de Gauss (sans permutation, § 24)
function [x] = ElimGauss(A,b)
N = size(A,1);
for k = 1:N-1
if (A(k,k) == 0)
error("Vous ne pouvez pas résoudre ce système via l'élimination de Gauss")
end
for i = k+1:N
for j = k+1:N
A(i,j) = A(i,j) - A(i,k)*A(k,j)/A(k,k);
end
b(i) = b(i) - A(i,k)*b(k)/A(k,k);
A(i,k) = 0;
end
end
x = Substi(A,b);
endLa fonction d’aide permutation.m
function [A,b] = permutation(A,b,k,l)
% Permute les lignes k et l de A, et les composantes k et l de b
C = A; c = b;
A(k,:) = C(l,:); A(l,:) = C(k,:);
b(k) = c(l); b(l) = c(k);
end