Académique Documents
Professionnel Documents
Culture Documents
Ce TP s’appuie en partie sur le texte de la session 2017 portant sur un réseau d’antennes.
On s’intéresse dans ce TP à la résolution d’un système linéaire. On rappelle le principe de quelques méthodes directes
et on propose d’utiliser les fonctions Scilab ou Python correspondantes. On rappelle également le principe de quelques
méthodes itératives et on propose de programmer celle présentée dans le texte.
Soient A une matrice carrée de taille n × n et b un vecteur de taille n. On souhaite résoudre le système linéaire Ax = b
où x est le vecteur inconnu de taille n. On est assuré de l’existence et l’unicité de la solution si l’une des conditions
équivalentes suivantes est remplie :
1. A est inversible,
2. rg(A) = n,
3. le système homogène Ax = 0 admet pour unique solution la solution nulle.
Les méthodes directes fournissent la solution du système en un nombre fini d’étapes contrairement aux méthodes
itératives qui fournissent la solution en un nombre théoriquement infini d’étapes.
Le choix des méthodes dépend :
— de l’efficacité théorique de l’algorithme,
— du type de matrice (creuse, symétrique définie positive...),
— des capacités de stockage et de l’architecture de l’ordinateur.
1 Conditionnement
La résolution d’un système linéaire conduit à l’introduction d’erreurs numériques d’arrondi. Le conditionnement de la
matrice A permet de connaı̂tre la sensibilité du système aux perturbations de données.
Généralement on considère p = 1, 2 ou ∞. Plus le conditionnement est grand, plus le système est sensible aux
perturbations.
1
Algorithme :
— Initialisation : L = In (In désigne la matrice identité de taille n × n), U = A
— Pour k = 1 à n − 1 faire
Si Uk,k = 0, le pivot est nul, la décomposition LU n’existe pas
Pour i = k + 1 à n faire
Lik = Uik /Ukk
Uij = Uij − Lik ∗ Ukj pour j allant de k + 1 à n
Uik = 0
Fin pour
Fin pour
Remarques :
Ly = b
— Nécessite d’implémenter un algorithme de descente-remontée : Ax = b ⇔ LU x = b ⇔ .
Ux = y
Il s’agit donc d’un algorithme permettant de résoudre d’une part un système de la forme Ly = b avec L une
matrice triangulaire inférieure et d’autre part un système de la forme U x = y avec U une matrice triangulaire
supérieure.
2
— Coût de calcul : le nombre d’opérations nécessaires est n3 .
3
2
Problème du réseau partiel, méthode itérative proposée dans le texte
7. Programmer le solveur itératif proposé dans la sous-section 3.2 du texte pour résoudre le système P AP x = P π
sous la contrainte P x = P .
8. Mettre ce programme sous la forme d’une fonction, afin de pouvoir le réutiliser facilement pour la seconde
approche.
9. Le théorème 3 du texte vous semble-t-il vérifié ?
Graphique
10. Sous Scilab, utiliser la fonction plot pour représenter, pour chaque approche, les puissances nominales calculées
x et la puissance effective Ax en fonction du numéro de l’antenne (comme sur la figure 1 du texte).
Sous Python, utiliser la fonction plot de matplotlib.pyplot.
pour une tolérance ε donnée. En pratique, x n’étant pas connu, il faut trouver un critère plus commode.
Principe général : on décompose A sous la forme
A = P − N, (4)
où P est une matrice inversible (facile à inverser). Connaissant x(0) on calcule x(k) pour k ≥ 1 en résolvant
On constate que cette méthode converge si et seulement si le rayon spectral de P −1 N vérifie ρ(P −1 N ) < 1.
On considère ici les méthodes :
— de Jacobi : avec P = D et N = D − A où D est la matrice diagonale composée des éléments diagonaux de A,
— de Gauss-Seidel : avec P = D − E et N = F où E est la matrice triangulaire inférieure telle que eij = −aij
si i > j, eij = 0 si i ≤ j et F est la matrice triangulaire supérieure telle que fij = −aij si j > i et fij = 0 si
j ≤ i.
4.2 Applications
1. Programmer les méthodes de Jacobi et de Gauss-Seidel, sous forme de fonctions.
2. Sont-elles convergentes pour le problème complet Ax = π ? Si oui, comparer avec les résultats des méthodes
directes.
3. Peut-on les utiliser pour le problème du réseau partiel ?
1 2 −2
4. Tester-les sur d’autres exemples, comme A1 x = b1 avec A1 = 1 1 1 et b1 = (1 1 1)T et A2 x = b2
2 2 1
4 −1 −1
avec A2 = −2 6 1 et b2 = (3 9 − 6)T .
−1 1 7
5. Evaluer leur vitesse de convergence.
3
5 Rappel : méthode du gradient conjugué
Nous rappelons ici la méthode du gradient conjugué, dont le solveur itératif proposé dans le texte est inspiré.
Considérons une matrice A ∈ Rn×n symétrique définie positive. La résolution du système Ax = b revient à la
détermination de x ∈ Rn minimisant la quadratique
1
Φ(y) = y T Ay − y T b. (6)
2
En effet le gradient de Φ s’écrit
1
∇Φ(y) = (AT + A)y − b = Ay − b, (7)
2
car A est symétrique.
Par conséquent, si ∇Φ(x) = 0 alors x est une solution du système initial.
Le problème est donc de déterminer le minimiseur x ∈ Rn de Φ en partant d’un point x(0) ∈ Rn , ce qui revient à
déterminer les directions de déplacement qui permettent de se rapprocher le plus possible de la solution x.
On doit effectuer un pas à partir de x(0) le long d’une direction p(0) , puis fixer le long de celle-ci un nouveau point x(1)
à partir duquel on itère le procédé jusqu’à convergence.
Ainsi à l’étape k, x(k+1) est déterminé par :