TP 4
Résolution des Systèmes Linéaires et Non-Linéaires
1. Résolutions des Systèmes Linéaires
∙ Un système linéaire est un ensemble de n équations à p variables de la forme :
Les ai,j
sont appelés les coefficients du système ; les bk sont le second membre du système (ou la partie
gauche).
Exemple :
• En calcul matriciel, un système linéaire s’écrit comme en deux formes :
▪ AX = B
Où :
- A matrice des coefficients.
- X vecteur colonne des inconnues.
- B vecteur colonne comme second membre.
Exemple :
▪ XA = B
Où
- A matrice des coefficients.
- X vecteur ligne des inconnues.
- B vecteur ligne comme second membre.
Exemple :
• On
appelle opérations élémentaires sur les lignes L1, …, Ln du système (S) l’un des trois opérations
suivantes :
1. Multiplier la ligne Li par un scalaire α non nul, et on note : Li α Li 2. Ajouter
à la ligne Li k fois une autre ligne Lj et on note : Li Li + k Lj 3. Echanger les
lignes Li et Lj, et on note : Li Lj.
• Exemple :
2. Résolution d’un système linéaire
• Matlab fournie plusieurs techniques afin de résoudre un système linéaire. Néanmoins, il reste à
l’utilisateur de vérifier la compatibilité du système linéaire (s’il existe une solution). • Par
exemple, si le déterminant de A est non-nul alors le système accepte une solution. • La
commande X = A\B fait résoudre le système linéaire AX = B (noter l’antislash). • La commande
X = B/A fait résoudre le système linéaire XA = B (noter le slash).
>> A = [1 2; 3 4], B = [14 32]'
A=
12
34
B=
14
32
>> X = A\B
X=
4
5
>> A = [1 2; 3 4]', B = [14 32]
A=
13
24
B=
14 32
>> X = B/A
X=
45
• On peut calculer directement l’inverse de A en le multipliant par B. Il faut noter que la
multiplication matricielle n’est pas commutative !
• La commande X = inv(A)*B fait résoudre le système linéaire AX = B.
• La commande X = B*inv(A) fait résoudre le système linéaire XA = B.
>> A = [1 2; 3 4], B = [14 32]'
A=
12
34
B=
14
32
>> X = inv(A)*B
X=
4
5
>> A = [1 2; 3 4]', B = [14 32]
A=
13
24
B=
14 32
>> X = B*inv(A)
X=
45
• Pour les commande A\B et B/A, si la matrice A est singulière, le résultat est (inf) pour un
nombre infini de solutions, et (NaN) pour l’ensemble vide (). Pour les commande inv(A)*B et
B*inv(A), si la matrice A est singulière, le résultat est toujours (inf).
>> A = [1 1; 2 2], B = [2 4]'
A=
11
22
B=
2
4
>> A\B
Warning: Matrix is singular to working precision.
ans =
0/0
0/0
>> A = [1 1; 2 2], B = [2 5]'
A=
11
22
B=
2
5
>> A\B
Warning: Matrix is singular to working precision.
ans =
1/0
-1/0
>> inv(A)*B
Warning: Matrix is singular to working precision.
ans =
1/0
1/0
• Une deuxième méthode pour résoudre un système linéaire (AX = B) est de faire décomposer la
matrice A à la multiplication de 2 matrices triangulaires L et U (inferieure et supérieure), ensuite
résoudre deux systèmes linéaires comme suit :
▪ Résoudre premièrement LY = B.
▪ Ensuite, résoudre UX = Y.
>> A = [1 2; 3 4], B = [14 32]'
A=
12
34
B=
14
32
>> [L U] = lu(A)
L=
1/3 1
10
U=
34
0 2/3
>> Y = L\B
Y=
32
10/3
>> X = U\Y
X=
4
5
• Une troisième méthode pour résoudre un système linéaire (AX = B) est de faire concaténer les
deux matrice A et B dans une nouvelle matrice C, ensuite extraire la forme échelonnée réduite de
C. La solution est stockée dans la dernière colonne de C.
Matrice échelonnée:
Une matrice A ∈ Mm,n sera dite sous forme échelon (ou bien sous forme échelonnée) si:
(1) les lignes ne contenant que des zéros sont sous les autres lignes
(2) chaque élément directeur d’une ligne est à la droite de l’élément directeur de la ligne qui la
précède.
(3) Tous les éléments de la colonne sous un élément directeur sont nuls.
Exemple:
Matrice échelonnée réduite:
Une matrice est dite sous forme échelon réduite (ou bien sous forme échelonnée réduite) si,
(a) elle est sous forme échelon;
(b) tous ses éléments directeurs sont égaux à 1;
(c) dans une colonne qui contient un 1 directeur, il n’y a pas d’autre élément non nul.
Exemple:
A est une matrice sous forme échelon réduite
B n’est pas une matrice sous forme échelon réduite
>> A = [1 2; 3 4], B = [14 32]'
A=
12
34
B=
14
32
>> C = [A B]
C=
1 2 14
3 4 32
>> rref(C)
ans =
104
015
• Une quatrième méthode pour résoudre un système linéaire (AX = B) est de faire appeler la
commande linsolve(A, B).
>> A = [1 2; 3 4], B = [14 32]'
A=
12
34
B=
14
32
>> X = linsolve(A, B)
X=
4
5
3. Résolutions des équations et des inéquations, linéaires et non-linéaires • Matlab utilise la
commande solve afin de résoudre les équations et les inéquations, les systèmes linéaires et non
linéaires.
• Tout d’abord, il est nécessaire de déclarer des variables symboliques
des équations (ou inéquations, …) en utilisant la commande syms. • Il faut
noter que solve retourne des solutions sous forme symbolique ou formelle au lieu de
numérique (racine de 2 a la forme numérique de 1.4142 et la forme formelle 2^ (1/2)).
>> solve(x^2-1) % résoudre x2 – 1 = 0
Undefined function or variable 'x'.
>> syms x % definer la variable symbolique x
>> solve(x^2-1) % résoudre x2 – 1 = 0
ans =
1
-1
>> solve(x^2-1 == 1) % résoudre x2 – 1 = 1
ans =
2^(1/2)
-2^(1/2)
• Matlab peut aussi résoudre des équations de forme générale ou paramétrique
>> syms x a b c
>> solve(a*x+b == 0)
ans =
-b/a
>> solve(a*x^2 + b*x + c == 0)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
• Pour les équations à plusieurs variables, Matlab permet de choisir la variable pour laquelle on
veut résoudre.
>> solve(a*x + b, x) % résoudre pour x
ans =
-b/a
>> solve(a*x + b, a) % résoudre pour a
ans =
-b/x
>> solve(a*x + b, b) % résoudre pour b
ans =
-a*x
• La commande solve nous aide aussi à résoudre un système linéaire ou non-linéaire en
présentant ses lignes d’équations.
>> syms x y
>> S = solve(x+y == 5, x-y == 1) % système linéaire
S=
x: [1x1 sym]
y: [1x1 sym]
>> [S.x S.y]
ans =
[ 3, 2]
>> solve(x^2 + 1) % équation non-linéaire
ans =
i
-i
>> S = solve(x^2 + y == 0, x + y^2 == 0)
% système non-linéaire
S=
x: [4x1 sym]
y: [4x1 sym]
>> [S.x S.y]
ans =
[ 0, 0] % sol. 1
[ -1, -1] % sol. 2
[ (3^(1/2)*i)/2 + 1/2, 1/2 - (3^(1/2)*i)/2] % sol. 3
[ 1/2 - (3^(1/2)*i)/2, (3^(1/2)*i)/2 + 1/2] % sol. 4