Algorithme du pivot de Gauss
import numpy as np
Toutes les matrices considérées ici seront inversibles (et par conséquent des matrices carrées !)
Préambule : permutation de lignes
- Construire une fonction
permute(M, L1, L2)qui échange la ligneL1et la ligneL2d'une matriceM.
Exemple :
M = np.array([[1, 1, 2, -1],
[1, 0, -1, 2],
[2, 1, 3, 2],
[-1, -2, 0, 4]])
M
permute(M, 2, 3)
1. Matrice échelonnée triangulaire
L'objectif de cette première partie est de transformer une matrice inversible quelconque en matrice triangulaire supérieure.
Afin de simplifier la réalisation de cet objectif, le problème va être découpé en plusieurs exercices, modifiant pas à pas une colonne j donnée en paramètre d'une matrice M.
1.1 Exercice : recherche du pivot
- Construire une fonction
recherchepivot(M, j)qui pour une matriceMdonnée et sa colonnej:- recherche le pivot de la colonne
j, à savoir le premier coefficient non nul de la colonnej, situé à partir de la diagonale. - permute ce pivot, ainsi que toute sa ligne, avec la ligne
j. - renvoie la matrice ainsi transformée.
- recherche le pivot de la colonne
Exemple :
M = np.array([[1, 1, 2, -1],
[1, 0, -1, 2],
[2, 1, 3, 2],
[-1, -2, 0, 4]])
M
recherchepivot(M, 1)
1.2 Exercice : annulation des coefficients
- Créer une fonction
annulcoeff(M, j)qui pour une matriceMdonnée et sa colonnej:- applique la fonction précédente,
- annule les coefficients situés sous le pivot de la colonne
j, en utilisant des opérations sur les lignes.
Rappel : une ligne est remplacée par :
Exemple :
annulcoeff(M, 1)
1.3 Exercice : pivot de Gauss
- Construire une fonction
gauss(M)qui transforme une matrice inversibleMen matrice triangulaire supérieure, en utilisant l'algorithme du pivot de Gauss.
Exemple :
G = gauss(M)
G
2. Matrice échelonnée diagonale
2.1 Exercice : remontée de l'algorithme de Gauss
- Construire une fonction
remonte(G)qui transforme une matrice inversible triangulaire supérieureGen matrice diagonale, en utilisant la remontée de l'algorithme du pivot de Gauss.
Exemple :
remonte(G)
- Construire une fonction
diagonale(M)qui transforme une matrice inversibleMen matrice diagonale, en utilisant les programmes précédents.
Exemple :
diagonale(M)
2.2 Bonus : inversion d'une matrice
- Construire une fonction
inverse(M)qui calcule l'inverse d'une matrice inversibleM, en utilisant la matrice identité et la méthode vue en TD.
Exemple :
inverse(M)