Vous êtes sur la page 1sur 13

UPMC - Licence Elec.

L2 S2
UE Calcul Scientifique ; initiation à MATLAB (LE205)

TP2 : Résolution d’équations


PREMIERE PARTIE : COURS ET EXEMPLES

Thèmes abordés :
* Systèmes d’équations linéaires,
* Equations polynomiales.

Remarque IMPORTANTE : dans ce TP, lorsqu’un exemple ou un exercice est donné, vous
êtes invité fortement à le réaliser et à en noter le résultat.

I. Systèmes d’équations linéaires

1. Introduction

Dans ce TP, nous allons voir comment résoudre des équations linéaires du type suivant :

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


M = M
a m1 x1 + a m 2 x2 + ... + a mn xn = bm

où n est le nombre d’inconnues : x1,…,xn et m le nombre d’équations.

2. Equations linéaires inhomogènes

Lorsque les termes en b ne multiple aucune inconnue et dont au moins un est non nul, le
système est dit non homogène.

Exemples de systèmes inhomogènes :

• Système à 2 inconnues et une équation

>> % 2x1 – x2 = 2 équivaut à x1 = 1 + 0.5x2


>> x2=-10:10
>> x1=1+0.5*x2
>> subplot(2,2,1), plot(x1,x2) % subplot découpe la fenêtre en 4 figures
>> gtext(‘2x1-x2=2’) % positionner avec la souris près de la courbe
>> xlabel(‘x1’)
>> ylabel(‘x2’)

Sur le graphe, on voit bien qu’il y a une infinité de solution (appartenant à la droite).
• Systèmes à 2 inconnues et 2 équations

>> % 2x1 – x2 = 2
>> % 2x1 – x2 = 0
>> hold on % autoriser l’affichage de 2 courbes dans la même figure
>> x1=1+0.5*x2
>> subplot(2,2,2), plot(x1,x2)
>> gtext(‘ 2x1 - x2 = 2’)
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> x1=x2/2;
>> subplot(2,2,2), plot(x1,x2)
>> gtext(‘2x1 - x2 = 0’)
>> hold off

Ici, les 2 droites sont parallèles : il n’existe aucune solution.

>> % 2x1 – x2 = 2
>> % x1 + x2 = 5
>> hold on
>> x1=1+0.5*x2
>> subplot(2,2,3), plot(x1,x2)
>> gtext(‘2x1 - x2 = 2’)
>> x1 =5- x2;
>> subplot(2,2,3), plot(x1,x2)
>> gtext(‘x1+x2 = 5’)
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> hold off

Les 2 droites s’intersectent un point unique : il s’agit de la solution. Quelle est-elle ? (regardez
sur le graphe).
• Systèmes à 2 inconnues et 3 équations

>> % 2x1 – x2 = 2
>> % x1 + x2 = 5
>> % 6x1 - x2 = 5
>> hold on
>> x1=1+0.5*x2
>> subplot(2,2,4), plot(x1,x2)
>> gtext(‘2x1 - x2 = 2’)
>> x1 = 5- x2
>> subplot(2,2,4), plot(x1,x2)
>> gtext(‘x1+x2 = 5’)
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> x1 = (5+ x2) /6
>> subplot(2,2,4), plot(x1,x2)
>> gtext(‘6x1-x2 = 5’)
>> hold off

Ici, les 2 droites s’intersectent en 3 points différents : il n’existe pas de solution.

• Représentation matricielle des systèmes d’équations

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


Le système d’équations : M = M
a m1 x1 + a m 2 x2 + ... + a mn xn = bm

peut s’exprimer sous forme matricielle : AX = B

⎡ a11 a12 L a1n ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤


⎢a a 22 L a2n ⎥⎥ ⎢ x ⎥ ⎢b ⎥
avec : A = ⎢ 21 , X = ⎢ 2 ⎥ et B = ⎢ 2 ⎥ .
⎢ M M O M ⎥ ⎢M⎥ ⎢M⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣a m1 am 2 L a mn ⎦ ⎣ xn ⎦ ⎣bm ⎦

A est appelé matrice de coefficients et X le vecteur solution.

Si m=n, A est une matrice carrée et si le déterminant de A ( det(A) ) est non nul, alors A est
inversible :

A −1 AX = X = A −1 B

Exemple :
>> % 2x1 – x2 = 2
>> % x1 + x2 = 5
>> A = [2 -1 ; 1 1]
>> B = [2 ; 5]
>> X = inv(A)*B
>> rats(X) % rats : approximation rationnelle

⎧2x - x = 2
Remarque : comme nous l’avons vu graphiquement, le système ⎨ 1 2 n’a pas de
⎩2x 1 − x 2 = 0
2 −1
solution ; en effet, =0.
2 −1

3. Equations linéaires homogènes

Les systèmes dont les membres de droites sont nuls sont dits homogènes : AX=0

• Si det(A)≠0, alors la seule solution possible (solution triviale) est


X=0.

• Si det(A)=0, alors plusieurs solutions sont possibles.


Exemple :
>> % premier systeme
>> % 2x1-x2=0
>> % x1+x2=0
>> det([2 -1 ;1 1])
>> x1=-5 :10
>> x2_1=2*x1
>> x2_2=-x1
>> hold on;
>> subplot(1,2,1), plot(x1,x2_1,’r’,x1,x2_2,’b’) % 1 solution X=0
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> grid
>> % second systeme
>> % -6x1 + 3x2 = 0
>> % 2x1 - x2 = 0
>> det([-6 3 ;2 -1])
>> x2_1=2*x1
>> x2_2= 6*x1/3
>> subplot(1,2,2), plot(x1,x2_1,’r’,x1,x2_2,’b’) % solutions infinies
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> grid

4. Résolution d’équations linéaires avec MATLAB

Avec MATLAB, les équations linéaires peuvent se résoudre à l’aide de l’opérateur ‘\’, comme
suit :

>> A = [2 -1 ; 1 1] ;
>> B = [2 ; 5] ;
>> X = A\B

L’opérateur anti-slash, ‘\’, donne systématiquement un résultat. Dans le cas où le


système d’équations n’admet pas de solution : ce résultat sera faux (cf. troisième exemple ci-
dessous). Dans le cas d’une infinité de solutions, l’opérateur donnera une solution particulière
(c’est-à-dire l’une des solutions possibles ; cf. deuxième exemple ci-dessous).

Une manière de savoir si un système possède réellement au moins une solution, il faut
vérifier le théorème de Kronecker-Capelli : « un système possède une solution si et seulement
si sa matrice de coefficients appelée A et sa matrice augmentée sont de même rang. »

• Exemple d’un système avec une solution unique :

>> A = [2 -1 ; 1 1] ;
>> B = [2 ; 5] ;
>> rank(A), rank([ A B ])
• Exemple d’un système avec plusieurs solutions :

>> % 2x1 + 3x2 + 4x3 = 4


>> % x1 + x2 + x3 = 5
>> A = [2 3 4 ; 1 1 1] ;
>> B = [4 ; 5] ;
>> rank(A), rank([ A B ])
>> X = A\B

Vous pouvez vérifier que le vecteur X est une solution particulière du système d’équation.

• Exemple d’un système sans solution :

>> % x1 + 2x2 + 3x3 = 12


>> % 3x1 + 2x2 + x3 = 15
>> % 3x1 + 4x2 + 7x3 = 13
>> % 10x1 + 9x2 + 8x3 = 17
>> A = [1 2 3 ; 3 2 1; 3 4 7;10 9 8] ;
>> B = [12 ; 15 ; 13; 17] ;
>> rank(A), rank([ A B ])
>> X = A\B

On peut aisément constater que cela n’est pas une solution du système :

>> A*X

Le résultat n’est pas égal à B !

5. Systèmes d’équations surdéterminés – solutions au sens des moindres carrés

On dit qu’un système est surdéterminé quand le nombre d’équations, m, est supérieur
au nombre d’inconnues, n. Les m équations sont indépendantes, c'est-à-dire qu’aucune d’entre
elles ne peut être dérivée d’une autre.
Par exemple, supposons que nous étudions un phénomène pour lequel deux variables x
et y sont reliés par la relation :
y = a + bx
Et qu’une série de m expériences (ou mesures) soient réalisées dans le but de
déterminer les deux coefficients, a et b. Pour chaque expérience i, on rajoute au système
d’équations, une équation dont les coefficients sont xi et yi, ei représentant l’erreur que l’on
fait à chaque expérience :
yi = a + bxi + ei , i = 1,2,..., m

Dans ce cas, une solution exacte n’existe pas. Cependant, on peut déterminer une
solution au sens des moindres carrés. Il s’agit de chercher la solution qui minimise la somme
des erreurs au carré définie comme suit :
m m
ε = ∑ e = ∑ ( yi − a − bxi ) 2
2
i
i =1 i =1

Le système d’équations pourra s’écrire : Y=A’X

⎡ y1 ⎤ ⎡1 x1 ⎤
⎢y ⎥ ⎢1 x ⎥
⎡a ⎤
avec Y = ⎢ 2 ⎥ , A = ⎢ 2⎥
et X = ⎢ ⎥ .
⎢ M ⎥ ⎢M M ⎥ ⎣b ⎦
⎢ ⎥ ⎢ ⎥
⎣ ym ⎦ ⎣1 xm ⎦
Les coefficients cherchés sont données par : X = (A’A)-1A’Y.

Il est démontré que cette solution minimise l’erreur ε au sens des moindres carrées. Dans la
suite de ce TP, on admettra cette démonstration, sans plus d’explication. Il existe beaucoup
d’ouvrages pour répondre aux questions des étudiants intéressés sur la question (exemple :
chapitre 8 de http://asi.insa-rouen.fr/enseignement/siteUV/ananum/Polycours.pdf).

Exemple simple :
⎧2x 1 - x 2 = 2

⎨x 1 + x 2 = 5
⎪6x - x = -5
⎩ 1 2

>> A = [2 -1 ; 1 1 ; 6 -1] ;
>> B = [2 ; 5 ; -5] ;
>> X = A\B
>> x1=-2 :6
>> x2_1=2*x1-2 % 2x1-x2=2
>> x2_2=5-x1 % x1+x2=5
>> x2_3=6*x1+5 % 6x1-x2=-5
>> plot(x1,x2_1,x1,x2_2,x1,x2_3,X(1),X(2),’*’);
>> xlabel(‘x1’)
>> ylabel(‘x2’)
>> grid
>> title(‘Système surdimensionné, solution au sens des moindres carrés.’)

6. Systèmes mal conditionnés

On dit qu’un système est mal conditionné si de faibles variations dans les données produisent
d’importantes variations des résultats.

⎡1 1 ⎤ ⎡1⎤ ⎡ 2 ⎤
Exemple : ⎢ ⎥⎢ ⎥ = ⎢ ⎥
⎣1 1.01⎦ ⎣1⎦ ⎣2.01⎦

>> A=[1 1 ;1 1.01], B=[2 ; 2.01]


>> X=A\B
>> format long ; X=A\B
modifions légèrement l’un des éléments de A :

>> A(1,2) = 1.005 ; X=A\B


>> A(1,2) = 1 ; B(2) = 2.015 ;
>> X = A\B

On peut estimer la sensibilité des changements de coefficients et de termes du membre de


droite, à l’aide du nombre de conditionnement :

>> cond(A)

si ce nombre est proche de 1, le système est bien conditionné. Sinon la matrice est sujette aux
erreurs d’arrondi.

II. Equations polynomiales

1. Introduction

La forme générale d’une équation polynomiale est la suivante :

a n x n + a n −1 x n −1 + ... + a1 x + a0 = 0

Une solution, ou racine, de l’équation est un nombre xi, réel ou complexe. Une équation
polynomiale de degré n a exactement n racines (qui peuvent être complexes) :

an ( x − x1 )( x − x2 )...( x − xn−1 )( x − xn ) = 0

2. Recherche des racines polynomiales avec MATLAB

La fonction roots de MATLAB détermine les solutions d’équations polynomiales.

Exemple : x5-2x4+2x3+3x2+x+4=0

>> c=[1 -2 2 3 1 4] ; % vecteur des coefficients de l’équation polynomiale


>> solution=roots(c)

Remarque : la solution est un vecteur colonne alors que le tableau initial, c, est un vecteur
ligne.

3. Recherche des coefficients polynomiaux à partir des racines

Pour un tableau des racines polynomiales donné, poly détermine les coefficients polynomiaux
ordonnés selon les puissances décroissantes de l’inconnue. Dans notre exemple :

>> poly(solution)
DEUXIEME PARTIE : EXERCISES

Exercice 1 : système linéaire incohérent

⎧4 x − 4 x 2 = 3
Soit le système linéaire suivant : ⎨ 1
⎩3 x1 − 3 x 2 = 0
• Calculez le déterminant associé à ce système d’équations.
• Y a-t-il une solution à ce système ?
• Trouvez une représentation graphique qui illustre votre réponse.

Exercice 2 : approximations rationnelles

• Trouvez les approximations rationnelles des nombres suivants : π, sin(30°), cos(30°),


tan(45°), 0.33333, 2 .
• Quels sont les résultats exacts ? Pourquoi les autres ne le sont-ils pas ?

Exercice 3 : système d’équations linéaires mal conditionné

⎡1 / 2 1 / 3 1 / 4⎤ ⎡ X (1) ⎤ ⎡0.95⎤
Soit le système suivant : ⎢⎢1 / 3 1 / 4 1 / 5⎥⎥ ⎢⎢ X (2)⎥⎥ = ⎢⎢0.67 ⎥⎥ qui est de la forme AX=B
⎢⎣1 / 4 1 / 5 1 / 6⎥⎦ ⎢⎣ X (3) ⎥⎦ ⎢⎣0.52⎥⎦
• Calculez la solution de ce système.
• Remplacez B(3) par 0.53 et calculez la solution à nouveau. Déterminez l’influence de
la variation de B(3) sur les fluctuations de la solution.
• Calculez le nombre de conditionnement de A et tirez-en les conclusions appropriées.

Exercice 4 : échelles de températures

Il a été démontré que la relation entre les échelles de Celsius et de Fahrenheit est linéaire. On
peut la représenter par une relation de la forme

C=aF+b

où C est la température en degrés Celsius et F la température en degrés Fahrenheit.

La droite décrite par l'équation précédente doit passer par le point de fusion de l'eau, de
coordonnées F = 32, C = 0 et le point d'ébullition de coordonnées F = 212, C = 100. Les
coefficients a et b doivent par conséquent satisfaire le système

32a + b = 0
212a+b = 100

• Donnez la forme matricielle de ce système.


• Résolvez ce système sous MATLAB.
• Donnez la solution sous forme rationelle.
• Quelle est donc la relation entre les échelles de Celsius et de Fahrenheit ?
Exercice 5 : trouver la profondeur d’un puits

Dans un roman noir autrefois populaire, un détective désirait déterminer la profondeur d'un
puits. Il y laissa tomber une pierre et mesura le temps écoulé jusqu'à ce qu'il l'entende
atteindre l'eau. Soit t ce temps: il est constitué de t1, le temps de chute libre, c'est-à-dire le
temps entre le moment où la pierre quitte la main du détective et le moment où elle atteint la
surface de l'eau, et t2, le temps de propagation du son de la surface de l'eau jusqu'à l'oreille du
détective. Si g est l'accélération de la pesanteur, d la profondeur du puits (approximativement
égale à la distance entre la main ou l'oreille du détective et la surface de l'eau), et c la vitesse
du son dans l'air,

g 2
d= .t1
2
d = c.t 2
t = t1 + t 2

De la première équation, on extrait la profondeur d, comme la distance parcourue par la pierre


en chute libre pendant le temps t1. La deuxième équation fournit la même longueur d, comme
la distance parcourue par le son pendant le temps t2. La troisième équation indique que le
temps total t, mesuré par le détective correspond à la somme des temps t1 et t2. En tirant les
valeurs de t1 et t2 à partir des deux premières équations et en les substituant dans la troisième,
on obtient :

d 2 − 2(tc + c 2 / g )d + c 2 t 2 = 0
Au lieu de résoudre cette équation avec la formule bien connue, utilisons la fonction
MATLAB roots. Nous supposons que le détective ait compté 2.5 secondes, en prenant la
vitesse du son à 20°C et à la pression atmosphérique (c=343m/s).

• Définissez les variables t, g (=9.81m/s2) et c.


• Définissez le vecteur représentant le polynôme à résoudre.
• Résolvez-le avec roots.

Exercice 6 : un réseau CC (courant continu)


La figure ci-dessus présente un circuit fermé CC. Il ya trois sources de courant qui génèrent
des tensions U1, U2, U3, ainsi que quatre résistances, R1 à R4. En ajoutant les tensions, dans
le sens des aiguilles d'une montre, pour la boucle totale, nous obtenons :

-U1 + I R1 + U2 + I R2 + I R3 - U3+ I R4 = 0

ou

U1 - U2 + U3 = I R1 + I R2 + I R3 + I R4

En généralisant à des boucles fermées et indépendantes, on obtient : ∑ U = ∑ I .R


i i

Cette équation représente la seconde loi de Kirchhoff qui établit que, dans un circuit fermé, la
somme des hausses de tensions instantanées est égale à la somme des chutes de tensions
instantanées, si les sommes sont effectuées dans le même sens pour toutes les tensions.

Les lois de Kirchhoff fournissent les équations nécessaires pour l'analyse des réseaux
électriques. Considérons le réseau représenté à la figure ci-dessous. En prenant un sens
arbitraire pour les courants, représenté par les flèches, et en appliquant la seconde loi de
Kirchhoff à la boucle fermée abef, on obtient l'équation : 4 i1 + 10 i3 = 12.
Pour la boucle fermée circuit fermé acdf, la même loi donne : 4 i1 – 8 i2 = 12 – 6.
Finalement, en appliquant la première loi de Kirchhoff (cf. exercice 6 du TP1) au noeud b,
nous obtenons : i1 + i2 = i3.

• Les 3 équations précédentes forment un système d’équations. Donnez la forme


matricielle de ce système.
• Résolvez le système à l’aide de MATLAB.

A la place de la boucle fermée acdf, on peut utiliser la boucle fermée cbed et écrire la seconde
équation sous la forme suivante : 8 i2 + 10 i3 = 6

• Réécrivez le nouvel système d’équation et résolvez-le avec MATLAB.


• Les résultats sont-ils les mêmes ?
Exercice 7 : oscillations libres avec deux degrés de liberté

La figure ci-dessus représente un système composé de deux masses et de deux ressorts. Le


premier ressort est suspendu à un support fixe; x1 représente le déplacement de la masse ml,
x2 celui de la masse m2. On mesure leurs positions respectives au repos. Dans cette position,
les ressorts sont étirés par les poids des deux masses. Par conséquent, nous n'aurons pas à
tenir compte de leurs poids, ml g et m2 g, dans les équations à développer.
Deux forces agissent sur ml, l'une due au ressort du haut de constante de raideur k1 et l'autre
due au ressort du bas de constante de raideur k2. Un léger décalage positif de x1, par rapport à
la position d'équilibre, est à l'origine d'une force dirigée vers le haut, -k1x1 dans le ressort du
haut. La force exercée par le ressort du bas sur la masse ml est proportionne~le à la variation
de x2 - x1 , la longueur de ce ressort. Ces considérations permettent d'écrire l'équation
représentée à côté de la première masse. De même, on obtient l'équation qui jouxte la seconde
masse. Le système est décrit par deux variables x1 , x 2 ; c'est, par conséquent un système à deux
degrés de liberté.
Si nous nous basons sur l'expérience ou sur la théorie, nous supposons que les mouvements
des deux masses sont harmoniques de même fréquence :

x1 = A1 sin(ωt )
x2 = A2 sin(ωt )

Après substitution dans les équations de la figure, on obtient :


− m1 A1ω 2 + (k1 + k 2 ) A1 − k 2 A2 = 0
− m2 A2ω 2 − k 2 A1 + k 2 A2 = 0

En considérant les amplitudes A 1 et A2 inconnues, nous obtenons le système matriciel :

⎡(k1 + k 2 ) − m1ω 2 − k 2 ⎤ ⎡ A1 ⎤
⎢ ⎥⎢ ⎥ = 0
⎣ − k2 k 2 + m2ω 2 ⎦ ⎣ A2 ⎦

Le système homogène possède une solution non triviale si et seulement si le déterminant du


système est nul, soit :

⎡ k1 + k 2 k 2 ⎤ 2 k1 k 2
ω4 − ⎢ + ⎥ω + =0
⎣ m1 m2 ⎦ m1 m2

Cette équation, appelée équation caractéristique du système, fournit en général deux racines,
ω12 et ω22. Les fréquences propres du système sont ω1 et ω2. Nous utilisons les racines
carrées positives. Les racines carrées négatives des solutions représentent les mêmes
fréquences propres, mais nous pouvons les considérer comme liées à des vecteurs qui tournent
dans le sens des aiguilles d'une montre.

A titre d'exemple, on considère les données suivantes : m1=0.5kg, k1=500N/m, m2=0.25kg,


k2=250N/m.

• Introduisez ces valeurs sous MATLAB.


• Calculez les coefficients de l’équation caractéristique.
• Quelles sont les solutions de cette équation ?
• Déduisez-en les fréquences angulaires propres (en rad/s).
• Puis en Hz (f=ω/2π).

Exercice 8 : Loi des boucles

La loi des boucles permet d'analyser les réseaux, on l'appelle aussi loi des mailles. Nous
reprenons le réseau présenté à la figure ci-dessus. Nous distinguons trois boucles et nous les
étudions comme si elles étaient indépendantes. Appelons J1, J2 et J3 les courants respectifs des
première, deuxième et troisième boucles, comme représentées à la figure. Nous supposons
qu'initialement tous les courants sont orientés dans le sens des aiguilles d'une montre.
Pour la boucle 1, nous écrivons la seconde loi de Kirchhoff (loi des tensions de Kirchhoff) :

R1 J1 + R4(J1 – J2) = V1

Nous procédons de même pour la boucle 2

R2 J2 + R5 (J2 - J3) + R4(J2 – J1) = 0

et pour la boucle 3

-R5J2 + (R3+ R5)J3= - V3

• A partir de ces équations, écrivez le système d’équations où J1, J2 et J3 sont les


variables.
• Donnez l’expression matricielle de ce système.
• En prenant R1…5= {4, 6, 8, 10, 10} Ohms, introduisez un vecteur R contenant ces
valeurs sous MATLAB.
• Introduisez la matrice du système (en vous servant des éléments de R pour définir les
éléments de la matrice.
• En posant V1=12V et V3=6V, résolvez le système.

Exercice 9 : Montage de quatre résistances en parallèle

La figure ci-dessus présente un montage de quatre résistances pures en parallèle dont les
valeurs augmentent géométriquement avec la raison r. Soit Ro, la première résistance, et R la
résistance équivalente requise :

• Représentez le problème à l'aide d'une équation de r.


• Résolvez l'équation pour Ro/R = 0.8 et montrez que, dans ce cas, le problème n'a pas
de solution.
• Montrez que le problème proposé a seulement une solution simple si R/Ro = 1.0.
• Déterminez r pour Ro/R = 2. Vérifiez votre solution.
• Déterminez r pour Ro/R = 4. Vérifiez votre solution.
• Déterminez r pour Ro/R = 8. Vérifiez votre solution.

Vous aimerez peut-être aussi