0% ont trouvé ce document utile (0 vote)
53 vues9 pages

Résolution de systèmes linéaires avec Python

Transféré par

dohnitouo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues9 pages

Résolution de systèmes linéaires avec Python

Transféré par

dohnitouo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITÉ NORBERT ZONGO Unité-Progrès-Justice

BURKINA FASO Année académique 2023-2024


Mathématiques Appliquées Master 1 Semestre 1
UFR/ST

Projet d’initiation au logiciel

Enseignant :Dr M.BIKIENGA

Thème :Résolution numérique de systèmes linéaires avec python


Table des matières

0.1 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.2 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.3 Concepts Fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.3.1 Forme matricielle d’un systeme lineaire . . . . . . . . . . . . . . . . . . . . 3
0.3.2 Existence de solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.4 Méthode de résolution numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.4.1 Méthodes théoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.4.2 Méthode de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
0.4.3 Méthode de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0.4.4 Méthode de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
0.4.5 Méthode de décomposition LU . . . . . . . . . . . . . . . . . . . . . . . . . 7
0.4.6 Méthode de décomposition de Choleski . . . . . . . . . . . . . . . . . . . . 8
0.5 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
0.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

0.1 introduction
Le but de ce projet est d’étudier et d’implémenter des méthodes de résolution numérique
de systèmes linéaires à l’aide du langage de programmation Python. Les systèmes linéaires sont
omniprésents dans de nombreux domaines des mathématiques appliquées et de l’ingénierie, et leur
résolution numérique est une compétence essentielle pour tout étudiant ou professionnel travaillant
dans ces domaines.
Dans ce rapport initial, nous examinerons brièvement les concepts fondamentaux des systèmes
linéaires, ainsi que quelques méthodes de résolution numérique couramment utilisées. Nous pré-
senterons également un plan d’action pour la réalisation de ce projet.
Ce projet explore différentes méthodes numériques pour la résolution de systèmes linéaires en
utilisant Python. Les méthodes étudiées comprennent les méthodes théoriques(la méthode de
Cramer ou des déterminants) et les méthodes pratiques(méthodes d’élimination de Gauss,la mé-
thode de Choleski ou des racines , la décomposition LU, la méthode de Jacobi et la méthode de
Gauss-Seidel,la méthode de Relaxation successives(SOR)) . Chaque méthode est implémentée et
comparée en termes de précision et d’efficacité.

2
TABLE DES MATIÈRES 0.2. OBJECTIFS

0.2 Objectifs
• Implémenter la méthode d’élimination de Gauss pour la résolution de systèmes linéaires.
• Implémenter la méthode de Cramer ou des déterminants.
•Utiliser la décomposition LU pour résoudre des systèmes linéaires.
•Mettre en œuvre la méthode de Jacobi pour la résolution de systèmes linéaires.
•Implémenter la méthode de Gauss-Seidel pour la résolution de systèmes linéaires.
•Implémenter la méthode de décomposition de Choleski.
• Implémenter la méthode de relaxation successives.
•Comparer les performances et la précision de ces différentes méthodes.

0.3 Concepts Fondamentaux


Un système de n équations du 1er degré à n inconnues est défini par :


 a11 x1 + a12 x1 + ... + a1n xn = b1

a x + a x + ... + a x = b
21 1 22 1 2n n 2
(S)


 .......................................... = ...

an1 x1 + a12 x1 + ... + ann x1 = bn
Où :
• les xi ∈ R,i = 1, n sont les inconnues,
• les aij ∈ R,i ∈ 1, n ,j ∈ 1, n sont les coefficients et
•les bi ∈ R, i = 1, n forment le second membre.
Résoudre le système (S),c’est déterminer l’ensemble des n − uplets (u1 , ..., un ) qui vérifient simul-
tanément les n équations.Dans ce cas,(u1 , ..., un ) est une solution de (S).
Remarque
Si bi = 0, i = 1, n alors le systeme (S) admet au moins une solution qui est le n − uplet (0,...,0).

0.3.1 Forme matricielle d’un systeme lineaire


En posant

A sous la forme
 
a11 ... a1n
 a21 ... a2n 
 
 ... ... ... 
an1 ... ann

,X sous la forme
 
x1
 x2 
 
 ... 
xn

UNZ/UFR-ST/Master 1 3 groupe-SOME-MANDE
0.4. MÉTHODE DE RÉSOLUTION NUMÉRIQUE TABLE DES MATIÈRES

et Bsous la forme  
b1
 b2 
 
 ... 
bn

,alors ,le système (S) s’écrit AX = B.A est appelée matrice du système (S).Cette égalité s’appelle
équation matricielle simple.On note

(A/B) sous la forme  


a11 ... a1n |b1
 a21
 ... a2n |b2 
 ... ... ... |... 
an1 ... ann |bn
.

(A/B) est appelée matrice élargie ou matrice augmentée de (S).

0.3.2 Existence de solution


Si A est non singulière (c-a-d detA 6= 0),alors le système (S) admet une unique solution
X = A−1 B ;
Si A et B ∈ Im(A),alors le système (S) admet une infinité de solutions ;
Si A est singulière et B ∈
/ Im(A),alors le système (S) n’admet pas de solutions.

0.4 Méthode de résolution numérique


0.4.1 Méthodes théoriques
Il s’agit de méthodes donnant des formules simples,mais pratiquement inutilisable à cause des
calculs des déterminants.

a) Méthode de décomposition de Cramer ou des déterminants


La méthode de Cramer est une méthode de résolution numérique de système linéaires à l’aide
de déterminants.

Soit à résoudre Ax = b , on calcule les(n + 1) déterminants suivants :


• Le déterminant principal ∆ = det(A) ;
• Les n déterminants associes aux n inconnues
∆i = det([A1 , A2 , ..., Ai−1 , b, Ai+1 , ..., An ]) oú Aj est la j −me colonne de la matrice A pour j ∈
/ i,et
b remplace la i − me colonne de A
Une fois que tous les ∆i sont calculees, les valeurs des x1 , x2 , ..., xn sont obtenues par la formule :
xi = ∆∆i .
Quelques méthodes couramment utilisées pour résoudre numériquement les systèmes linéaires
sont :

UNZ/UFR-ST/Master 1 4 groupe-SOME-MANDE
TABLE DES MATIÈRES 0.4. MÉTHODE DE RÉSOLUTION NUMÉRIQUE

• La méthode de Gauss-Jordan
• La méthode de Jacobi
• La méthode de Gauss-Seidel
• La méthode de décomposition LU
• La méthode de décomposition de Choleski

0.4.2 Méthode de Gauss-Jordan


Algorithme
L’algorithme de Gauss-Jordan est une méthode pour résoudre numériquement des systèmes
linéaires et calculer l’inverse d’une matrice. Voici comment l’algorithme fonctionne :

Étape de pivotement : On utilise des opérations élémentaires sur les lignes pour transformer
la matrice en une forme échelonnée réduite (forme échelonnée réduite de Gauss) en utilisant des
opérations élémentaires sur les lignes de la matrice des coefficients.

Élimination des variables : On utilise des opérations élémentaires pour éliminer les variables
et obtenir une matrice échelonnée réduite.

Résolution du système linéaire : On utilise la forme échelonnée réduite pour obtenir les valeurs
des variables.

Implémentation
Voici une implémentation en Python de l’algorithme de Gauss-Jordan pour résoudre un sys-
tème linéaire :

UNZ/UFR-ST/Master 1 5 groupe-SOME-MANDE
0.4. MÉTHODE DE RÉSOLUTION NUMÉRIQUE TABLE DES MATIÈRES

Cette fonction prend en entrée la matrice des coefficients A et le vecteur des termes
constants b, puis retourne le vecteur solution x. Elle effectue d’abord l’étape d’élimination pour
réduire la matrice A à une forme échelonnée, puis effectue la substitution arrière pour trouver la
solution du système.

0.4.3 Méthode de Jacobi


Algorithme

L’algorithme de Jacobi est une méthode itérative utilisée pour résoudre numériquement des
systèmes linéaires. Voici comment l’algorithme fonctionne :

Décomposition de la matrice A : La matrice A est décomposée en une somme de trois matrices :


A = D + L + U , où D est une matrice diagonale contenant les éléments diagonaux de A, L est une
matrice triangulaire inférieure contenant les éléments sous-diagonaux de A, et U est une matrice
triangulaire supérieure contenant les éléments au-dessus de la diagonale de A.

Itérations : À chaque itération, une estimation de la solution x est mise à jour en utilisant la for-
mule de Jacobi : xk+1 = D−1 ∗(b−(L+U )∗xk ), où xk est l’estimation de la solution à l’itération k.

Critère d’arrêt : L’algorithme s’arrête lorsque la différence entre deux itérations successives est
suffisamment petite ou lorsque le nombre d’itérations maximal est atteint.

Implémentation

Voici une implémentation en Python de l’algorithme de Jacobi pour résoudre un système li-
néaire :

UNZ/UFR-ST/Master 1 6 groupe-SOME-MANDE
TABLE DES MATIÈRES 0.4. MÉTHODE DE RÉSOLUTION NUMÉRIQUE

0.4.4 Méthode de Gauss-Seidel


Algorithme
L’algorithme de Gauss-Seidel est une méthode itérative utilisée pour résoudre numériquement
des systèmes linéaires.La méthode de Gauss-Seidel est similaire à la méthode de Jacobi mais uti-
lise les nouvelles valeurs dès qu’elles sont disponibles au cours de chaque itération, ce qui peut
conduire à une convergence plus rapide. Voici comment l’algorithme fonctionne :

Décomposition de la matrice A : La matrice A est décomposée en une somme de deux ma-


trices : A = D + L + U , où D est une matrice diagonale contenant les éléments diagonaux de A, L
est une matrice triangulaire inférieure contenant les éléments sous-diagonaux de A, et U est une
matrice triangulaire supérieure contenant les éléments au-dessus de la diagonale de A.

Itérations : À chaque itération, une estimation dePla solution x est mise à jour en utilisant
i−1
Aij ∗xk+1 − n
Aij ∗xk )
P
(bi −
la formule de Gauss-Seidel : xk+1i = j=1 j
Aii
j=i+1 j
, où xki est la valeur de la ime
composante du vecteur solution à l’itération k
.
Critère d’arrêt : L’algorithme s’arrête lorsque la différence entre deux itérations successives est
suffisamment petite ou lorsque le nombre d’itérations maximal est atteint.

Implémentation
Voici une implémentation en Python de l’algorithme de Gauss-Seidel pour résoudre un système
linéaire :

0.4.5 Méthode de décomposition LU


Algorithme
L’algorithme de décomposition LU (Lower-Upper) est utilisé pour résoudre numériquement
des systèmes linéaires. Voici comment il fonctionne :

UNZ/UFR-ST/Master 1 7 groupe-SOME-MANDE
0.5. RÉSULTATS TABLE DES MATIÈRES

Décomposition de la matrice A en deux matrices : Diviser la matrice A en une matrice inférieure


L (Lower) et une matrice supérieure U (Upper) telles que A = LU .
Résolution de Ly = b : Résoudre le système linéaire Ly = b en substituant b pour obtenir y en
utilisant la méthode de substitution directe.
Résolution de U x = y : Résoudre le système linéaire U x = y pour obtenir la solution x en
utilisant la méthode de substitution inverse.
L’avantage de la décomposition LU est qu’elle peut être utilisée pour résoudre efficacement
plusieurs systèmes linéaires avec la même matrice A, ce qui est utile dans de nombreux contextes
pratiques.

Implémentation
Voici un exemple d’implémentation en Python utilisant la bibliothèque NumPy avec la mé-
thode de décomposition LU :

0.4.6 Méthode de décomposition de Choleski

0.5 Résultats
Les résultats montrent que la méthode d’élimination de Gauss est la plus précise mais peut être
coûteuse en termes de calcul pour de grandes matrices. La décomposition LU est efficace pour les
grandes matrices mais peut nécessiter plus de mémoire. Les méthodes itératives telles que Jacobi
et Gauss-Seidel peuvent être plus rapides pour les systèmes linéaires bien conditionnés, mais leur
convergence peut être plus lente pour les systèmes mal conditionnés.

UNZ/UFR-ST/Master 1 8 groupe-SOME-MANDE
TABLE DES MATIÈRES 0.6. CONCLUSION

0.6 Conclusion
Ce projet offre une opportunité d’approfondir notre compréhension des méthodes de résolution
numérique de systèmes linéaires et de perfectionner nos compétences en programmation Python.
En appliquant ces méthodes à divers exemples de systèmes linéaires, nous espérons obtenir une
meilleure compréhension de leurs avantages, de leurs limitations et de leurs applications pratiques.

Ce rapport initial fournit un aperçu général du projet sur la résolution numérique de systèmes
linéaires avec Python. Il énonce les objectifs, les concepts fondamentaux, les méthodes de résolution
numérique et le plan d’action pour la réalisation du projet. Ce projet ouvre la voie à des recherches
plus approfondies sur d’autres méthodes numériques et leur application à des problèmes spécifiques
dans divers domaines.

UNZ/UFR-ST/Master 1 9 groupe-SOME-MANDE

Vous aimerez peut-être aussi