import numpy as np
Toutes les matrices considérées ici seront inversibles (et par conséquent des matrices carrées !)
permute(M,L1,L2)
qui échange la ligne L1
et la ligne L2
d'une matrice M
.Exemple :
M = np.array([[1,1,2,-1],[1,0,-1,2],[2,1,3,2],[-1,-2,0,4]])
M
array([[ 1, 1, 2, -1], [ 1, 0, -1, 2], [ 2, 1, 3, 2], [-1, -2, 0, 4]])
permute(M,2,3)
array([[ 1, 1, 2, -1], [ 1, 0, -1, 2], [-1, -2, 0, 4], [ 2, 1, 3, 2]])
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
.
Construire une fonction recherchepivot(M,j)
qui pour une matrice M
donnée et sa colonne j
:
j
, à savoir le premier coefficient non nul de la colonne j
, situé à partir de la diagonale.j
.Exemple :
M = np.array([[1,1,2,-1],[1,0,-1,2],[2,1,3,2],[-1,-2,0,4]])
M
array([[ 1, 1, 2, -1], [ 1, 0, -1, 2], [ 2, 1, 3, 2], [-1, -2, 0, 4]])
recherchepivot(M,1)
array([[ 1, 1, 2, -1], [ 2, 1, 3, 2], [ 1, 0, -1, 2], [-1, -2, 0, 4]])
Créer une fonction annulcoeff(M,j)
qui pour une matrice M
donnée et sa colonne j
:
j
, en utilisant des opérations sur les lignes.Rappel : une ligne $L_{i}$ est remplacée par : $M[j,j] \times L_{i} - M[i,j] \times L_{j}$
Exemple :
annulcoeff(M,1)
array([[ 1, 1, 2, -1], [ 2, 1, 3, 2], [ 1, 0, -1, 2], [ 3, 0, 6, 8]])
gauss(M)
qui transforme une matrice inversible M
en matrice triangulaire supérieure, en utilisant l'algorithme du pivot de Gauss.Exemple :
G = gauss(M)
G
array([[ 1, 1, 2, -1], [ 0, -1, -3, 3], [ 0, 0, -2, -1], [ 0, 0, 0, -5]])
remonte(G)
array([[-2500, 0, 0, 0], [ 0, 50, 0, 0], [ 0, 0, 10, 0], [ 0, 0, 0, -5]])
diagonale(M)
qui transforme une matrice inversible M
en matrice diagonale, en utilisant les programmes précédents.Exemple :
diagonale(M)
array([[-2500, 0, 0, 0], [ 0, 50, 0, 0], [ 0, 0, 10, 0], [ 0, 0, 0, -5]])
inverse(M)
qui calcule l'inverse d'une matrice inversible M
, en utilisant la matrice identité et la méthode vue en TD.Exemple :
inverse(M)
array([[ 4. , 2. , -2. , 1. ], [-5.6, -2.2, 3. , -1.8], [ 0.4, -0.2, 0. , 0.2], [-1.8, -0.6, 1. , -0.4]])