Correction du TP4
1. Résolution de système linéaire
In [2]: gauss([[1,2,-1,1],[2,1,0,3],[-1,-2,3,4]]) Out[2]:
[[1.0, 0.0, 0.0, 0.8333333333333335], [0.0, 1.0, 0.0, 1.3333333333333333], [0.0, 0.0, 1.0, 2.5]]
On en déduit que le système � 𝑥𝑥+ 2𝑦𝑦 − 𝑧𝑧= 1 2𝑥𝑥+𝑦𝑦 = 3
−𝑥𝑥 −2𝑦𝑦+ 3𝑧𝑧 = 4 a pour solution x = 5
6, y = 4
3, z = 5
2.
2. Inversion de matrice
In [5]: gauss([[-1, 2, 5, 1, 0, 0], [1, 2, 3, 0, 1, 0], [-2, 8, 10, 0, 0, 1]]) Out[5]:
[[1.0, 0.0, 0.0, -0.12499999999999989, 0.625, -0.12500000000000006], [0.0, 1.0, 0.0, -0.5, 0.0, 0.25],
[0.0, 0.0, 1.0, 0.375, 0.125, -0.12500000000000003]]
L’inverse de �−1 2 5 1 2 3
−2 8 10� est �−0,125 0,625 −0,125
−0,5 0 0,25
0,375 0,125 −0,125�. 3. Calcul de rang
In [6]: gauss([[1,2,3,1],[1,3,1,6],[2,1,2,-1]]) Out[6]:
[[1.0, 0.0, 0.0, -0.5999999999999999], [0.0, 1.0, 0.0, 2.6],
[0.0, 0.0, 1.0, -1.2000000000000002]]
In [6]: gauss([[1,3,0,4],[0,3,1,-2],[2,6,0,8]]) Out[7]:
[[1.0, 0.0, -1.0, 6.0],
[0.0, 1.0, 0.3333333333333333, -0.6666666666666666], [0.0, 0.0, 0.0, 0.0]]
D’où rg �1 2 3 1 1 3 1 6
2 1 2 −1� = 3 et rg �1 3 0 4 0 3 1 −2 2 6 0 8 � = 2 4. Calcul de déterminant
Le pivot de Gauss met une matrice inversible sous forme diagonale à l’aide d’opérations qui ne modifient pas le déterminant (ajout d’un multiple d’une ligne à une autre). Les opérations effectuées qui changent le déterminant sont les divisions des lignes par le pivot et les échanges de lignes. A la fin, on obtient une matrice de déterminant 1. Le déterminant de la matrice initiale est donc le produit des pivots au signe près (selon le nombre d’échanges de lignes). Si un pivot est nul, la matrice n’est pas inversible, et le déterminant reste égal au produit des pivots.
On ajoute donc à la fonction gauss les lignes suivantes : det = 1 # avant r = -1 par exemple det = det * pivot # avant if pivot:
if k != r : det = -det # juste avant l’échange de lignes M[k],M[r]=M[r],M[k]
On remplace return M par return det.