Calcul Matriciel Matlab
Calcul Matriciel Matlab
i http://faccanoni.univ-tln.fr/enseignements.html
L1 PC & SI - parcours renforcé
Licence Sciences et Techniques
2 Introduction à Octave/Matlab 23
2.1 Les environnements MATLAB et Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Opérations arithmétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.6 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 Graphes de fonctions R → R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.9 Structure conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.10 Structures itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.11 Vectorisation, i.e. optimisation des performances . . . . . . . . . . . . . . . . . . . . . . . . 37
3 Exercices 39
3.1 Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Matlab/Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3 Suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4 Systèmes linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.5 Calcul de la matrice inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.6 Systèmes linéaires : méthode de Gauss pour des systèmes rectangulaires (sur ou sous
déterminés) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.7 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Ce fascicule est un support pour le cours d’initiation au calcul matriciel avec Matlab/Octave de la première année d’une
Licence Scientifique. Ce document donne une aperçue de certains outils qui constituent un socle de connaissances
indispensables pour votre parcours. Actuellement il est impossible d’aborder ce sujet sans faire des simulations numériques
et le langage Octave/Matlab a été choisi comme langage de programmation du cours. La documentation et les sources
peuvent être téléchargées à l’adresse https://www.gnu.org/software/octave/. Avec un souci de rigueur, mais sans
insister sur les concepts les plus abstraits que ne rencontrera probablement pas un élève, le moindre calcul est détaillé et les
difficultés apparaissent progressivement.
Gloria FACCANONI
ou encore
A = (a i j )1≤i ≤m ou A = [a i j ]1≤i ≤m
1≤ j ≤n 1≤ j ≤n
? Si m = n on dit qu’on a une MATRICE CARRÉE. L’ensemble des matrices carrées d’ordre n à coefficients dans K est noté
Mn (K).
? Une matrice m × 1 est appelée VECTEUR - COLONNE et une matrice 1 × n est appelée VECTEUR - LIGNE.
? La MATRICE NULLE, notée Om,n , est la matrice dont tous les éléments sont nuls.
? On appelle MATRICE DIAGONALE toute matrice carrée D = (d i j )1≤i , j ≤n telle que i 6= j =⇒ d i j = 0. Si on note d i ≡ d i i ,
une matrice diagonale est de la forme
d1 0 ... 0 0
0
d2 ... 0 0
. .. .. ..
Dn =
.. . . . .
0 0 ... d n−1 0
0 0 ... 0 dn
On la note Diag(d 1 , d 2 , . . . , d n ).
? La MATRICE IDENTITÉ d’ordre n, notée In , est la matrice diagonale Diag(1, 1, . . . , 1).
| {z }
n fois
? On dit qu’une matrice carrée A = (a i j )1≤i , j ≤n est
? TRIANGULAIRE SUPÉRIEURE si i > j =⇒ a i j = 0,
? TRIANGULAIRE INFÉRIEURE si i < j =⇒ a i j = 0.
? On appelle matrice TRANSPOSÉE de A, notée AT , la matrice A = (a j i ) 1≤ j ≤n . C’est donc une matrice de Mn,m (R)
1≤i ≤m
obtenue en échangeant lignes et colonnes de la matrice initiale.
? Une matrice A est dite SYMÉTRIQUE si AT = A, i.e. si a i j = a j i pour tout i 6= j .
? Si A est une matrice carrée d’ordre n, on définit la TRACE de A comme la somme des éléments de la diagonale
principale : tr(A) ≡ ni=1 a i i . Par conséquent tr(AT ) = tr(A).
P
On remarque qu’une matrice DIAGONALE est triangulaire supérieure et inférieure (i.e. i 6= j =⇒ a i j = 0).
E XEMPLE ³ −1 4 2 ´
? La matrice A = 0 1 −3 est carrée et d’ordre 3 à coefficients dans Z.
4 1 5
3
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
µ1 2 3
4
¶
? La matrice U =0 5 6 7 est une matrice triangulaire supérieure.
0 0 2 −1
0 0 0 −5
µ1 0 0 0¶
? La matrice L = 4 0 0 0
5 −1 2 0 est une matrice triangulaire inférieure.
7 9 15 4
µ1 0 0 0¶
? La matrice D = 0 −8 0 0
0 0 7 0 est une matrice diagonale.
0 0 00
µ1 0 0 0¶
? La matrice I4 = 0 100
0 0 1 0 est la matrice identité d’ordre 4.
0001
? La matrice B = ( 7 0 8 2 ) est une matrice ligne (= vecteur ligne) d’ordre 4.
³7´
? La matrice C = 0 est une matrice colonne (= vecteur colonne) d’ordre 3.
9
³ 1 5 −9 ´
? La matrice A = 5 4 0 est symétrique.
−9 0 7
³ 1 3´
Si A = 3 0 7 alors AT = −1 0 .
¡ 1 −1 5 ¢
?
5 7
³1 2 0 ´
? La trace de la matrice A = 0 2 3 est tr(A) = a 11 + a 22 + a 33 = 1 + 2 + (−2) = 1.
0 −1 −2
A + B = (a i j + b i j )1≤i ≤m .
1≤ j ≤n
La MATRICE OPPOSÉE D ’ UNE MATRICE A est notée −A. Si A = (a i j )1≤i ≤m alors −A = (−a i j )1≤i ≤m .
1≤ j ≤n 1≤ j ≤n
E XEMPLE
Soient les matrices 2 × 3 suivantes :
µ ¶ µ ¶
3 4 2 6 1 9
A= , B= .
1 3 5 2 0 3
La somme de A et B est la matrice 2 × 3 suivante :
µ ¶ µ ¶
3+6 4+1 2+9 9 5 11
A+B = = .
1+2 3+0 5+3 3 3 8
ATTENTION
La somme de deux matrices d’ordres différents n’est pas définie.
E XEMPLE
Soient les matrices 2 × 2 suivantes :
µ ¶ µ ¶ µ ¶
1 −1 6 −5 0 2
A= , B= , C= .
3 0 2 1 2 4
On a alors
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
1+6 −1 − 5 7 −6 6+1 −5 − 1 7 −6 6+0 −5 + 2 6 −3
A+B = = , B+A = = , B+C = = .
3+2 0+1 5 1 2+3 1+0 5 1 2+2 1+4 4 5
4 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
De plus, µ ¶ µ ¶
7 −4 7 −4
(A + B) + C = , A + (B + C) = .
7 5 7 5
E XEMPLE µ ¶ µ3 ¶
3 4 2 /2 2 1
Si α = 12 et A = alors α · A = 1 .
1 3 5 /2 3
/2 5
/2
C’est une matrice m × p dont l’élément (AB)i j est le produit scalaire de la ligne i de A et de la colonne j de B.
B : n lignes p colonnes
b 11 ... b1 j ... b 1p
.. .. .. .. ..
. . . . .
b k1 ... bk j ... b kp
1j
b
×
i1
a
.. .. .. .. ..
+
.
..
. . . .
.+
j
bk
×
b n1 ... bn j ... b np
k
ai
+
..
.+
j
bp
×
p
ai
a 11 ... a 1k ... a 1n
c 11 ... c1 j ... c 1p
.. .. .. .. .. .. .. .. .. ..
. . . . .
. . . . .
ai 1 ... ai k ... ai n
ci 1 ... ci j ... ci p
.. .. .. .. .. .. .. .. .. ..
. . . . . . . . . .
c m1 c mk c mp
a m1 ... a mk ... a mn ... ...
© 2018-2019ÉÀ G. Faccanoni 5
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
E XEMPLE
Soient les deux matrices
µ ¶ 1 2 0
1 3 0
A= et B = 0 2 3 .
−1 1 2
0 −1 −2
La matrice A est d’ordre 2 × 3, la matrice B est d’ordre 3 × 3, donc la matrice produit AB est une matrice d’ordre 2 × 3 :
µ ¶ µ ¶
1×1+3×0+0×0 1 × 2 + 3 × 2 + 0 × (−1) 1 × 0 + 3 × 3 + 0 × (−2) 1 8 9
AB = = .
−1 × 1 + 1 × 0 + 2 × 0 −1 × 2 + 1 × 2 + 2 × (−1) −1 × 0 + 1 × 3 + 2 × (−2) −1 −2 −1
E XEMPLE
Une société commerciale possède deux magasins dont l’aménagement du parc informatique est le suivant :
? Magasin 1 : 12 PC, 5 tablettes et 10 smartphones,
? Magasin 2 : 17 PC, 6 tablettes et 14 smartphones.
On peut associer à cet équipement la matrice M = 12
¡ 5 10 ¢
17 6 14 .
La société souhaite améliorer son équipement de la manière suivante :
? Magasin 1 : +3 PC, +2 tablettes et +2 smartphones,
? Magasin 2 : +5 PC, +3 tablettes et +4 smartphones.
Ce nouvel équipement peut être associé à la matrice N = 35 23 24 .
¡ ¢
Le répartition du nouvel aménagement du parc informatique des deux magasins sera donc
µ ¶ µ ¶ µ ¶
12 5 10 3 2 2 15 7 12
M+N = + =
17 6 14 5 3 4 22 9 18
Pour acheter le nouvel équipement, la société commerciale a le choix entre deux fournisseurs :
? Fournisseur 1 : 600 ¤ le PC, 180 ¤ la tablette et 60 ¤ le smartphone,
? Fournisseur 2 : 550 ¤ le PC, 200 ¤ la tablette et 50 ¤ le smartphone.
600 550
³ ´
On peut associer ces prix à la matrice P = 180 200 .
60 50
On obtient les prix du nouvel aménagement selon les magasins et selon les fournisseurs en calculant
µ ¶ 600 550 µ ¶ µ ¶
3 2 2 3 × 600 + 2 × 180 + 2 × 60 3 × 550 + 2 × 200 + 2 × 50 2280 2150
NP = 180 200 = =
5 3 4 5 × 600 + 3 × 180 + 4 × 60 5 × 550 + 3 × 200 + 4 × 50 3780 3550
60 50
Par exemple, le prix de l’investissement pour le magasin 1 est de 2280 ¤ avec le fournisseur 1 et de 2150 ¤ avec le
fournisseur 2.
ATTENTION
AB 6= BA en général (non commutativité).
Prenons le cas général avec A d’ordre m × p et B d’ordre p × n. Le produit AB est défini, c’est une matrice d’ordre m × n.
Qu’en est-il du produit BA ? Il faut distinguer trois cas :
? si m 6= n le produit BA n’est pas défini ;
? si m = n mais p 6= n, le produit AB est défini et c’est une matrice d’ordre m × n tandis que le produit BA est défini
mais c’est une matrice d’ordre p × p donc AB 6= BA ;
? si m = n = p, A et B sont deux matrices carrées d’ordre m. Les produits AB et BA sont aussi carrés et d’ordre m mais
là encore, en général, AB 6= BA ;
E XEMPLE
Soient les matrices
µ ¶ µ ¶
1 −1 6 −5
A= , B= .
3 0 2 1
6 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
On obtient µ ¶ µ ¶
4 −6 −9 −6
AB = et BA = .
18 −15 5 −2
Aq ≡ A
| ×A×
{z· · · × A} .
q fois
AB = BA = In .
Si une telle matrice existe, alors elle est unique, on la note A−1 et on l’appelle matrice INVERSE de A.
? Si une matrice est non inversible (i.e. il n’existe pas A−1 ), on dit qu’elle est SINGULIÈRE.
? Une matrice carrée A est dite ORTHOGONALE si elle est inversible et AT A = AAT = In , i.e. si AT = A−1 .
Soit A et B deux matrices inversibles, alors
¢−1
? A−1 l’est aussi et A−1 = A,
¡
−1 ¢T
? AT l’est aussi et AT = A−1 ,
¡ ¢ ¡
E XEMPLE
Considérons les matrices
− 21
µ ¶ µ ¶
1 1 2
A= B= 1 .
2 4 −1 2
On a
− 12 − 21
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
1 1 2 1 0 2 1 1 1 0
AB = 1 = BA = 1 =
2 4 −1 2
0 1 −1 2
2 4 0 1
Il est fréquent, dans toutes les disciplines scientifiques, de devoir résoudre des systèmes linéaires. Tout système linéaire de n
équations à n inconnues peut s’écrire sous la forme matricielle Ax = b ; A est une matrice carrée de dimension n et x et b
sont des vecteurs colonnes de dimension n, où x est l’inconnue et b un vecteur donné.
Si A est inversible alors ce système possède une unique solution x donnée par x = A−1 b.
© 2018-2019ÉÀ G. Faccanoni 7
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
E XEMPLE
Considérons le système linéaire
(
2x + 3y = 15
3x + 4y = 12
¡x¢
Si on pose A = 23 34 , x = y et b = 15
¡ ¢ ¡ ¢
12 , alors
µ ¶µ ¶ µ ¶
2 3 x 2x + 3y
Ax = =
3 4 y 3x + 4y
On a
µ ¶µ ¶ µ ¶ µ ¶
a b 2 3 2a + 3b 3a + 4b 1 0
= =
c d 3 4 2c + 3d 3c + 4d 0 1
µ ¶µ ¶ µ ¶ µ ¶
2 3 a b 2a + 3c 2b + 3d 1 0
= =
3 4 c d 3a + 4c 3b + 4d 0 1
n
(−1)i + j a i j det(Ai j )
X
det(A) ≡ quelque soit la colonne j , 1 ≤ j ≤ n.
i =1
Astuce
Pour se souvenir des signes de ces deux formules, on peut remarquer que la distribution des signes + et − avec la formule
(−1)i + j est analogue à la distribution des cases noirs et blanches sur un damier :
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯− + − + . . . ¯
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯ .. .. .. .. . . ¯
¯ ¯
¯. . . . .¯
8 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
E XEMPLE
Soit la matrice
µ ¶
a 11 a 12
A=
a 21 a 22
alors
E XEMPLE
Soit la matrice
a 11 a 12 a 13
A = a 21 a 22 a 23
a 31 a 32 a 33
alors
µ ¶ µ ¶
a 22 a 23 a 21 a 23
det(A11 ) = det = a 22 a 33 − a 23 a 32 , det(A12 ) = det = a 21 a 33 − a 23 a 31 ,
a 32 a 33 a 31 a 33
µ ¶ µ ¶
a 21 a 22 a 12 a 13
det(A13 ) = det = a 21 a 32 − a 22 a 31 , det(A21 ) = det = a 12 a 33 − a 13 a 32 ,
a 31 a 32 a 32 a 33
µ ¶ µ ¶
a 11 a 13 a 11 a 12
det(A22 ) = det = a 11 a 33 − a 13 a 31 , det(A23 ) = det = a 11 a 32 − a 12 a 31 ,
a 31 a 33 a 31 a 32
µ ¶ µ ¶
a 12 a 13 a 11 a 13
det(A31 ) = det = a 12 a 23 − a 13 a 22 , det(A32 ) = det = a 11 a 23 − a 13 a 21 ,
a 22 a 23 a 21 a 23
µ ¶
a 11 a 12
det(A33 ) = det = a 11 a 22 − a 12 a 21 ,
a 21 a 22
E XEMPLE
Soit la matrice
1 0 1
A = 0 2 0
0 3 5
alors
µ ¶ µ ¶ µ ¶
2 0 0 0 0 2
det(A11 ) = det = 10, det(A12 ) = det = 0, det(A13 ) = det = 0,
3 5 0 5 0 3
© 2018-2019ÉÀ G. Faccanoni 9
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
µ ¶ µ ¶ µ ¶
0 1 1 1 1 0
det(A21 ) = det = −3, det(A22 ) = det = 5, det(A23 ) = det = 3,
3 5 0 5 0 3
µ ¶ µ ¶ µ ¶
0 1 1 1 1 0
det(A31 ) = det = −2, det(A32 ) = det = 0, det(A33 ) = det = 2,
2 0 0 0 0 2
Astuce
Il convient d’utiliser la définition de déterminant après avoir fait apparaître sur une même rangée le plus possible de zéro
sachant que
? si deux colonnes (resp. deux lignes) sont identiques ou proportionnelles, alors det(A) = 0 ;
? si on multiplie une colonne (resp. une ligne) par un scalaire α 6= 0, alors le déterminant est multiplié par α ;
? si on échange deux colonnes (resp. deux lignes), alors le déterminant est changé en son opposé (i.e., le déterminant
change de signe) ;
? on ne change pas un déterminant si on ajoute à une colonne (resp. une ligne) une combinaison linéaire des autres
colonnes (resp. lignes), i.e.
C i ← C i + αC j , L i ← L i + αL j ,
avec j 6= i et α 6= 0.
E XEMPLE
Soit la matrice
1 0 1
A = 0 2 0
0 3 5
On fait apparaître encore plus de zéros dans la matrice jusqu’à obtenir une matrice triangulaire :
1 0 1 1 0 1
L 3 ←L 3 − 23 L 2
det(A) = det 0
2 0 = det 0
2 0 = 10.
0 3 5 0 0 5
10 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
+ −
a 11 a 12
a 21 a 22
E XEMPLE
µ ¶
5 7
det = 5 × 3 − 7 × 4 = 15 − 28 = −13.
4 3
+ + + − − −
a 11 a 12 a 13 a 11 a 12
a 21 a 22 a 23 a 21 a 22
a 31 a 32 a 33 a 31 a 32
E XEMPLE
Soit la matrice
1 0 1
A = 0 2 0
0 3 5
alors avec la règle de S ARRUS
+ + + − − −
1 0 1 1 0
0 2 0 0 2
0 3 5 0 3
det(A) = (1 × 2 × 5 + 0 × 0 × 0 + 1 × 0 × 3) − (1 × 2 × 0 + 1 × 0 × 3 + 0 × 0 × 5) = 10.
E XEMPLE
Soit la matrice
5 7 1
A = 4 3 2
2 1 6
alors
© 2018-2019ÉÀ G. Faccanoni 11
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
+ + + − − −
5 7 1 5 7
4 3 2 4 3
2 1 6 2 1
det(A) = (5 × 3 × 6 + 7 × 2 × 2 + 1 × 4 × 1) − (1 × 3 × 2 + 5 × 2 × 1 + 7 × 4 × 6) = −62.
ATTENTION
La règle de S ARRUS ne s’applique qu’à des matrices d’ordre 3.
E XEMPLE
Soit la matrice d’ordre 4 suivante :
1 0 0 1
2 0 1 0
A=
1 2 0 4
1 2 3 0
Alors
0 1 0 2 0 1 µ ¶
2 4 ¡ ¢
det(A) = det(A11 ) − det(A14 ) = det 2 0 4 − det 1 2 0 = − det
− 12 + 0 + 2 − 2 − 0 − 0 = −(−8) − 12 = −4.
2 0
2 3 0 1 2 3
Remarque
Soit une matrice A ∈ Mm,n . Alors
0 ≤ rg(A) ≤ min(m, n)
et rg(A) = 0 si et seulement si tous les éléments de A sont nuls.
E XEMPLE
Soit A la matrice suivante
µ ¶
1 3 2
A= .
1 3 1
Le rang de A est 2 car
? A est d’ordre 2 × 3 donc s ≤ min{2, 3} donc s = 0, 1 ou 2 ;
? il existe au moins un élément de A différent de zéro, donc s 6= 0 ;
? comme le déterminant de la sous-matrice composée de la première et de la deuxième colonne est nul, on ne
peut pas conclure ;
? comme le déterminant de la sous-matrice composée de la première et de la troisième colonne est non nul, alors
s = 2.
12 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
E XEMPLE
Soit A la matrice suivante
1 0 1
A= 0 5 −1 .
−1 0 −1
Le rang de A est 2 car
? A est d’ordre 3 × 3 donc s ≤ 3, i.e. s = 0, 1, 2 ou 3 ;
? il existe au moins un élément de A différent de zéro, donc s 6= 0 ;
? le déterminant de A est 0 donc s 6= ³3 ; ´
? le déterminant de la sous-matrice 1 0
0 5 est non nul, donc s = 2.
a x ... a 1p x p b1 ,
+ + =
11 1
.. .. ..
(S) . . .
a n1 x 1 + ... + a np x p = bn .
x1 b1 a 11 ... a 1p
. . .. ..
x = .. b = .. A= . .
xp bn a n1 ... a np
0x 1 + · · · + 0x p = b,
© 2018-2019ÉÀ G. Faccanoni 13
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
E XEMPLE x 1 +x 2 +x 3 = 6,
Résolution du système triangulaire supérieur : x 2 +x 3 = 5,
x 3 = 3.
b3 3
x 3 = a33 = 1 ,
x 2 = x i = a122 (b 2 − a 23 x 3 ) = 11 (5 − x 3 ) = 2
x = x = 1 (b − a x − a x ) = 1 (6 − x − x ) = 1.
1 i a 11 1 12 2 13 3 1 2 3
La résolution d’un système échelonné est simple car il est triangulaire supérieur. De plus, il permet d’établir si le système est
possible ou impossible comme dans l’exemple suivant.
E XEMPLE
Établir si les trois systèmes linéaires suivantes sont impossibles ou possibles et, dans ce cas, calculer la/les solution(s).
x+y+z= 6, x+y+z= 6, x+y+z= 6,
(1) y+z= 5, (2) y+z= 5, (3) y+z= 5,
z= 3. 0= 0. 0= 3.
(1) Ce système est possible et admet une et une seule solution : en partant de la dernière ligne et en remontant, on
obtient
z = 3,
y = 5 − z = 5 − 3 = 2,
x = 6 − y − z = 6 − 2 − 3 = 1.
(2) Ce système est possible et admet une infinité de solutions : en partant de la dernière ligne et en remontant, on
obtient
z = κ ∈ R,
y = 5 − κ,
x = 6 − y − z = 1.
(3) Le système n’a pas de solution car aucune valeur de z permet de résoudre 0z = 3.
? remplacer une ligne par elle même ± un multiple d’une autre ligne, comme par exemple
x+y+ z= 6, x+y+z= 6,
L 3 ←L 3 −L 2
y+ z= 5, −−−−−−−→ y+z= 5,
y + 2z= 8, z= 3.
14 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
Ces transformations sont équivalentes à la multiplication à gauche (pré-multiplication) de la matrice M ∈ Mm,n par la matrice
inversible obtenue en appliquant à la matrice identité Im la transformation correspondante. Par exemple, la transformation
qui échange les premières deux lignes de la matrice M ∈ M4,3 suivante
a b c d e f
d e f L 1 ↔L 2
a b c
−−−−−→
g h i g h i
p q r p q r
équivaut à multiplier M à gauche par la matrice obtenue en échangeant les premières deux lignes de la matrice identité I4 :
0 1 0 0 a b c d e f
d e f
1 0 0 0 a b c
=
0 0 1 0 g h i g h i
0 0 0 1 p q r p q r
ai j
Li ← Li − Lj,
aj j
ainsi on fait apparaître des 0 sur la colonne j pour les lignes i > j (i.e. on élimine l’inconnue x j dans chaque lignes L i du
système linéaire).
En réitérant le procédé pour i de 1 à n − 1, on aboutit à un système échelonné.
E XEMPLE
Soit le système linéaire
x 1 +2x 2 +3x 3 +4x 4 = 1,
2x 1 +3x 2 +4x 3 +x 4 = 2,
3x +4x 2 +x 3 +2x 4 = 3,
1
4x 1 +x 2 +2x 3 +3x 4 = 4.
1. Résolution par la méthode du pivot de G AUSS :
© 2018-2019ÉÀ G. Faccanoni 15
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
donc
x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
16 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
E XEMPLE
Résoudre le système linéaire
1 2 3 4 x1 1
2 3 4 1 x 2 2
=
3 4 1 2 x 3 3
4 1 2 3 x4 4
par la méthode de G AUSS -J ORDAN.
L ←L −2L L ←L +2L
1 2 3 4 1 1 2 3 4 1 1 0 −1 −10 1
2 2 1 1 1 2
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
2 3 4 1 2 L ←L −4L 0−1 −2 −7 0 L ←L −7L 2 0 −1 −2 −7 0
−−4−−−4−−−→ 1 −−4−−−4−−−→
[A|b] =
3
4 1 2 3 Étape 1 0−2 −8 −10 0 Étape 2 0 0 −4 4 0
4 1 2 3 4 0−7 −10 −13 0 0 0 4 36 0
L 1 ←L 1 −L 3 /4
L ←L +11L /40
1 0 0 4 1 1 0 0 0 1
1 1 4
L 2 ←L 2 −L 3 /2 L 2 ←L 2 +9L 4 /40
L 4 ←L 4 +L 3 0 −1 0 −7 0 L ←L +4L /40 0 −1 0 0 0
−−3−−−3−−−− 4
−−−−−−−−−→ 0 0 −4 −−→
Étape 3 4 0 Étape 4
0 0 −4 0 0
0 0 0 40 0 0 0 0 40 0
donc
x 1 = 1, x 2 = 0, x 3 = 0, x 4 = 0.
Opérations élémentaires
[A|In ] −−−−−−−−−−−−−−−−→ [In |A−1 ].
La matrice A est inversible si et seulement si on obtient par opérations élémentaires sur les lignes de A une matrice
triangulaire sans zéros sur la diagonale ; non inversible si et seulement si on obtient une matrice triangulaire avec un zéro
sur la diagonale.
E XEMPLE
µ ¶
2 0
Soit A = .
2 2
L 1 ← 21 L 1
µ ¶ µ ¶
L 2 ← 12 L 2
µ 1 ¶
2 0 1 0 L 2 ←L 2 −L 1 2 0 1 0 1 0 2 0
[A|I2 ] = −−−−−−−→ −−−−−−→
2 2 0 1 0 2 −1 1 0 1 − 21 1
2
E XEMPLE
µ ¶
2 1
Soit A = .
2 2
L 1 ← 21 L 1 − 21
µ ¶ µ ¶ µ ¶ µ ¶
2 1 1 0 L 2 ←L 2 −L 1 2 1 1 0 L 1 ←L 1 −L 2 2 0 2 −1 1 0 1
[A|I2 ] = −−−−−−−→ −−−−−−−→ −−−−−−→
2 2 0 1 0 1 −1 1 0 1 −1 1 0 1 −1 1
E XEMPLE
µ ¶
a b
Soit A = avec det(A) = ad − bc 6= 0.
c d
L 2 ←L 2 − ac L 1
µ ¶ µ ¶
a b 1 0 a b 1 0
[A|I2 ] = −−−−−−−−−→
c d 0 1 0 d − ac b − ac 1
L 1 ←L 1 − bc L 2 µ
1 + adbc − adab
¶
d− a b a 0 −bc −bc
−−−−−−−−−−−→ c
0 d − ab − ac 1
© 2018-2019ÉÀ G. Faccanoni 17
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
L 1 ← a1 L 1
1 a
L2 ← c b L 2 = ad −cb L 2 1
+ a(adbc−bc) − adab d
− ad b−bc
µ ¶ µ ¶
d− a 1 0 a −bc 1 0 ad −bc
−−−−−−−−−−−−−−−−→ c a = c a
0 1 − ad −cb ad −cb
0 1 − ad −cb ad −cb
E XEMPLE
Calculer l’inverse de la matrice
1 1 −1
A = −1 1 1 .
1 −1 1
1 1
1 0 0 −1
1 1 −1 1 0 0 L 2 ←L 2 +L 1
L 3 ←L 3 −L 1
[A|I3 ] = −1 1 1 0 1 0 −−−−−−−→ 0 2
1 1 0 0
1 −1 1 0 0 1 0 −1 0 1
−2 2
1 1 −1 1 0 0
L 1 ←L 1 −L 2 1 0 −1 1
/2 −1/2 0
L 2 ←L 2 /2 L 3 ←L 3 +2L 2
−−−−−−→ 0 1 0 1
/2 1/2 0 −−−−−−−−→ 0 1 0 1
/2 1
/2 0
0 −2 2 −1 0 1 0 0 2 0 1 1
1 0 −1 1/2 −1/2 0
1 0 0 1
/2 0 1
/2
L 3 ←L 3 /2 L ←L +L 3 −1
−−−−−−→ 0 1 0 1
/2 1/2 0 −−1−−−1−−→ 0 1 0 1
/2 1
/2 0 = [I3 |A ].
0 0 1 0 1
/2 1/2 0 0 1 0 1
/2 1
/2
E XEMPLE
Soit les systèmes linéaires de n = 3 équations et m = 2 inconnues
x + y = 2
x + y = 2
(S 1 ) x + 2y = 3 (S 2 ) x + 2y = 3
x + 3y = 4 x + 3y = 0
Prenons comme sous-système carré d’ordre m = 2 celui constitué des deux premières équations et résolvons-le :
( (
0 x+y =2 L 2 ←L 2 −L 1 x+y =2
(S ) −−−−−−−→
x + 2y = 3 y =1
x + 3y = 1 + 3 = 4
x + 3y = 1 + 3 = 4 6= 0
18 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
E XEMPLE
Dans ce puzzle, chaque forme correspond à une valeur.
Comme au lycée :
( (
2F + N = 14 F=3
? La deuxième et la dernière équations donnent
F + 2N = 19 N=8
? En injectant ces résultats dans la troisième équation on trouve • = 6 et dans la quatrième ■ = 5.
? La première équation est “en trop” : le système est sur-déterminé ! Puisque • + ■ + N = 6 + 5 + 8 = 19, elle est
vérifiée et on a bien trouvé l’unique solution de ce système linéaire.
? Conclusion : • + ■ + F = 14.
Avec Gauss : Si on écrit le système dans l’ordre suivant,
■+•+N =19
2■
+F=13
2• +F=15
2N +F=19
N+2F=14
et si l’on considère le sous-système carré obtenu en ne gardant pas la première équation, il suffit d’un seul pas de
la méthode de Gauss pour échelonner le système :
+F=13 +F=13
2■
2■
2• +F=15 L 4 ←L 4 −2L 3 2• +F=15
−−−−−−−−→
2N +F=19
2N+F=19
N+2F=14 3F=9
9 19 − F 15 − F 13 − F
F= = 3, N= = 8, •= = 6, ■= = 5.
3 2 2 2
Il ne reste plus qu’à vérifier que la solution obtenue satisfait l’équation ■ + • + N = 19.
Astucieusement : la somme de toutes les colonne vaut 15+13+19 = 47 ; la somme de toutes les lignes vaut ?+19+14.
Ces deux quantités devant être égale, on obtient ? = 47 − 33 = 14.
Comment envoyer un message secret avec plusieurs espions. Imaginons que l’on désire envoyer un message secret.
Par codage, on peut remplacer ce message par un nombre, appelons-le n.
Considérons un polynôme P (X ) = a k X k + · · · + a 1 X + n de degré k dont le terme indépendant vaut exactement n. En
particulier, on a P (0) = n. Un corollaire du théorème fondamental de l’algèbre stipule que le polynôme P est complètement
caractérisé par les valeurs qu’il prend en k + 1 points, par exemple en X = 1, 2, . . . , k + 1.
On engage alors au moins k +1 espions (mieux en engager un peu plus au cas où certains seraient capturés par les «ennemis»).
On donne au i -ème espion le nombre P (i ). Les espions se dispersent (par exemple, pour passer les lignes ennemies). Une
© 2018-2019ÉÀ G. Faccanoni 19
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
fois qu’au moins k + 1 espions sont arrivés à destination, il est aisé de reconstituer le polynôme (on a un système d’au moins
k + 1 équations linéaires pour retrouver les k + 1 coefficients de P ) et ainsi retrouver la valeur secrète n.
Si un espion est capturé et qu’il parle, les ennemis auront à leur disposition un des P (i ), cela ne leur permet nullement de
retrouver n.
De même, si un espion étaient en fait un agent double, connaître P (i ) seul ne sert à rien.
Source : http://michelrigo.wordpress.com/2010/01/30/partage-de-secrets-et-tfa/
E XEMPLE
On se propose de calculer n si k = 2 et on envoie des espions avec les messages suivants :
? espion 1, message 45
? espion 2, message 50
? espion 3, message 57
? espion 4, message 66
k = 2 donc on cherche un polynôme de la forme p(x) = a + bx + c x 2 qui satisfait les conditions p(1) = 45, p(2) = 50,
p(3) = 57 et p(4) = 66. Cela donne le système linéaire
a + b + c = 45
a + 2b + 22 c = 50
a + 3b + 32 c = 57
a + 4b + 42 c = 66
42 + 4 × 2 + 42 × 1 = 66.
Équilibrage de réactions chimiques Du point de vue mathématique, équilibrer une réaction chimique signifie trouver
des coefficients (dans N ou Q), appelés coefficients stœchiométriques, qui satisfont certaines contraintes.
Toutes ces contraintes dépendent linéairement des coefficients stœchiométriques, ce qui amène tout naturellement à
l’écriture d’un système linéaire.
Typiquement on aura n inconnues mais seulement n − 1 équations linéairement indépendantes : en effet, les coefficients
stœchiométriques ne définissent pas des quantités absolues mais seulement les rapports entre les différents éléments. Par
conséquent, si les coefficients trouvés équilibrent la réaction, alors tous les multiples entiers de ces coefficients équilibrent
aussi la réaction.
E XEMPLE
Si on mélange de la soude caustique et de l’acide sulfurique, on obtient du sulfate de sodium et de l’eau :
Pour que cette réaction ait lieu, il faut que tous les atomes (par exemple de sodium) qui sont à gauche se retrouvent à
20 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 1 Éléments d’analyse matricielle
droite et vice-versa.
|x NaOH
{z } + y H2 SO4
| {z }
→ z Na2 SO4
| {z }
+w H2 O
soude caustique acide sulfurique sulfate de sodium
On voit bien qu’il nous faut au moins 2 molécules de NaOH à gauche pour tomber sur le Na2 de droite. Le 2OH à
gauche venant de la soude et la yH2 venant de l’acide sulfurique se combinent pour donner wH2 O.
x = 2z [Na]
x + 2y = 2w [H]
x + 4y = 4z + w [O]
y =z [S]
E XEMPLE
Considérons la réaction
H2 + O 2 → H2 O.
Notons x 1 , x 2 et x 3 les coefficients stœchiométriques
x 1 H2 + x 2 O 2 → x 3 H2 O.
Astuce
Pour résoudre un système (S) de m équations à n inconnues où m > n on considère un sous-système carré (S 0 ) de n
équations à n inconnues et on résout ce système :
? si (S 0 ) n’admet pas de solution, alors (S) non plus ;
? si (S 0 ) admet une unique solution (c 1 , c 2 , . . . , c n ), alors on vérifie si cette solution vérifie les autres m − n équations du
système (S) :
? si oui, alors (S) admet l’unique solution (c 1 , c 2 , . . . , c n ),
? si non, alors (S) n’admet pas de solution ;
0
? si (S ) admet une infinité de solutions, on cherche parmi ces solutions celles qui vérifient également les autres
équations de (S).
E XEMPLE
Considérons le système de 4 équations à 3 inconnues
x + y + z = 3,
x + 2y + 3z = 6,
(S)
−x − y + 2z = 0,
3x + 2y − 4z = 1,
© 2018-2019ÉÀ G. Faccanoni 21
Chapitre 1 Éléments d’analyse matricielle Mis à jour le Mardi 21 janvier 2020
Ce sous-système admet l’unique solution (1, 1, 1). On étudie alors si elle est aussi solution de l’équation de (S) qui
n’apparaît pas dans (S 0 ) : pour (x, y, z) = (1, 1, 1) on a 3x + 2y − 4z = 1 donc le triplet (1, 1, 1) est solution de (S) et c’est
l’unique.
22 © 2018-2019ÉÀ G. Faccanoni
Chapitre 2
Introduction à Octave/Matlab
2.1 Les environnements MATLAB et Octave
MATLAB et Octave sont des environnements intégrés pour le Calcul Scientifique et la visualisation. Ils sont écrits principale-
ment en langage C et C++. MATLAB est distribué par la société The MathWorks (voir le site www.mathworks.com). Son nom
vient de MATrix LABoratory, car il a été initialement développé pour le calcul matriciel. Octave, aussi connu sous le nom
de GNU Octave (voir le site www.octave.org), est un logiciel distribué gratuitement. Vous pouvez le redistribuer et/ou le
modifier selon les termes de la licence GNU General Public License (GPL) publiée par la Free Software Foundation.
Il existe des différences entre MATLAB et Octave, au niveau des environnements, des langages de programmation ou des
toolboxes (collections de fonctions dédiées à un usage spécifique). Cependant, leur niveau de compatibilité est suffisant pour
exécuter la plupart des programmes de ce cours indifféremment avec l’un ou l’autre. Quand ce n’est pas le cas – parce que
les commandes n’ont pas la même syntaxe, parce qu’elles fonctionnent différemment ou encore parce qu’elles n’existent
pas dans l’un des deux programmes – nous l’indiquons et expliquons comment procéder.
Nous utiliserons souvent dans la suite l’expression “commande MATLAB” : dans ce contexte, MATLAB doit être compris
comme le langage utilisé par les deux programmes MATLAB et Octave. De même que MATLAB a ses toolboxes, Octave
possède un vaste ensemble de fonctions disponibles à travers le projet Octave-forge. Ce dépôt de fonctions ne cesse de
s’enrichir dans tous les domaines. Certaines fonctions que nous utilisons dans ce polycopié ne font pas partie du noyau
d’Octave, toutefois, elles peuvent être téléchargées sur le site octave.sourceforge.net. Une fois qu’on a installé MATLAB
ou Octave, on peut accéder à l’environnement de travail, caractérisé par le symbole d’invite de commande : >> sous
MATLAB et octave:1> sous Octave. Il représente le prompt : cette marque visuelle indique que le logiciel est prêt à lire une
commande. Il suffit de saisir à la suite une instruction puis d’appuyer sur la touche «Entrée». 1
Le symbole % indique le début d’un commentaire : tous les caractères entre % et la fin de la ligne sont ignorés par
l’interpréteur.
Le symbole ; a deux fonctions : il supprime l’affichage d’un résultat intermédiaire et il sépare les lignes d’une matrice. Si
on omet le symbole ;, le résultat sera affiché. Par exemple
1. Si Octave n’est pas installé sur vos machines, on pourra utiliser la version en ligne https://octave-online.net/.
23
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
>> A = [2 1 0; -1 2 2; 0 1 4]
A =
2 1 0
-1 2 2
0 1 4
Ce mode interactif est très pratique pour rapidement tester des instructions et directement voir leurs résultats. Son
utilisation reste néanmoins limitée à des programmes de quelques instructions. En effet, devoir à chaque fois retaper toutes
les instructions s’avérera vite pénible.
Si on ferme Octave et qu’on le relance, comment faire en sorte que l’ordinateur se souvienne de ce que nous avons tapé ? On
ne peut pas sauvegarder directement ce qui se trouve dans la onglet “Fenêtre de commandes”, parce que cela comprendrait
à la fois les commandes tapées et les réponses du système. Il faut alors avoir préalablement écrit un fichier avec uniquement
les commandes qu’on a tapées et l’avoir enregistré sur l’ordinateur avec l’extension .m. Une fois cela fait, on demandera à
Octave de lire ce fichier et exécuter son contenu, instruction par instruction, comme si on les avait tapées l’une après l’autre
dans la Fenêtre de commandes. Ainsi plus tard on pourra ouvrir ce fichier et lancer Octave sans avoir à retaper toutes les
commandes. Passons alors à l’onglet “Éditeur”.
L’affectation x=[2 5] crée une association entre le nom x et le vecteur [2, 5] : la boîte de nom x contient le vecteur [2, 5].
[2, 5]
³ 2 1 0 ´ µ x1 ¶ ³ 1 ´
2. Ces instructions calculent la solution du système linéaire −1 2 2 x2 = 2 . Noter l’usage des points-virgules à la fin de certaines instructions du
0 14 x3 3
fichier : ils permettent d’éviter que les résultats de ces instructions soit affiché à l’écran pendant l’exécution du script.
24 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
Il faut bien prendre garde au fait que l’instruction d’affectation (=) n’a pas la même signification que le symbole d’égalité
(=) en mathématiques (ceci explique pourquoi l’affectation de 1 à x, qu’en Octave s’écrit x = 1, en algorithmique se note
souvent x ← 1).
Une fois une variable initialisée, on peut modifier sa valeur en utilisant de nouveau l’opérateur d’affectation (=). La valeur
actuelle de la variable est remplacée par la nouvelle valeur qu’on lui affecte. Dans l’exemple précédent, on initialise une
variable à la valeur 1 et on remplace ensuite sa valeur par le vecteur [1, 2].
Il est très important de donner un nom clair et précis aux variables. Par exemple, avec des noms bien choisis, on comprend
tout de suite ce que calcule le code suivant :
base = 8
hauteur = 3
aire = base * hauteur / 2
Octave distingue les majuscules des minuscules. Ainsi mavariable, Mavariable et MAVARIABLE sont des variables diffé-
rentes.
Les noms de variables peuvent être non seulement des lettres, mais aussi des mots ; ils peuvent contenir des chiffres (à
condition toutefois de ne pas commencer par un chiffre), ainsi que certains caractères spéciaux comme le tiret bas «_»
(appelé underscore en anglais). Cependant, certains mots sont réservés :
ans Nom pour les résultats
eps Le plus petit nombre tel que 1+eps>1
inf ∞
NaN Not a number
i ou j i
pi π
>> 5/0
warning: division by zero
ans = Inf
>> 0/0
warning: division by zero
ans = NaN
>> 5*NaN % Most operations with NaN result in NaN
ans = NaN
>> NaN==NaN % Different NaN’s are not equal!
ans = 0
>> eps
ans = 2.2204e-16
Les opérateurs arithmétiques possèdent chacun une priorité qui définit dans quel ordre les opérations sont effectuées. Par
exemple, lorsqu’on écrit 1 + 2 * 3, la multiplication va se faire avant l’addition. Le calcul qui sera effectué est donc 1 +
(2 * 3). Dans l’ordre, l’opérateur d’exponentiation est le premier exécuté, viennent ensuite les opérateurs *, /, // et %, et
enfin les opérateurs + et -.
Lorsqu’une expression contient plusieurs opérations de même priorité, ils sont évalués de gauche à droite. Ainsi, lorsqu’on
écrit 1 - 2 - 3, le calcul qui sera effectué est (1 - 2) - 3. En cas de doutes, vous pouvez toujours utiliser des parenthèses
pour rendre explicite l’ordre d’évaluation de vos expressions arithmétiques.
Il existe aussi les opérateurs augmentés :
© 2018-2019ÉÀ G. Faccanoni 25
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
a += b équivaut à a = a+b
a -= b équivaut à a = a-b
a *= b équivaut à a = a*b
a /= b équivaut à a = a/b
a ˆ = b équivaut à a = aˆ b
2.5 Matrices
Pour définir une matrice on doit écrire ses éléments de la première à la dernière ligne, en utilisant le caractère ; pour
séparer les lignes (ou aller à la ligne). Par exemple, la commande
>> A = [ 1 2 3; 4 5 6]
ou la commande
>> A = [ 1 2 3
4 5 6]
donnent
A =
1 2 3
4 5 6
c’est-à-dire, une matrice 2 × 3 dont les éléments sont indiqués ci-dessus.
Un vecteur colonne est une matrice 1 × n, un vecteur ligne est une matrice n × 1 :
>> b = [1 2 3]
b =
1 2 3
>> b = [1; 2; 3]
b =
1
2
3
26 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
ans =
1
5
9
ATTENTION
Dans Octave les indices commences à 1, ainsi A(1,:) indique la première ligne, A(2,:) la deuxième etc.
Construction de vecteurs :
¬ x=[debut:pas:fin]
x=linspace(debut,fin,N+1)
© 2018-2019ÉÀ G. Faccanoni 27
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=ones(2,3)
B =
1 1 1
1 1 1
>> C=[1 2; 3 4; 5 6]
C =
1 2
3 4
5 6
>> D=eye(3,2)
D =
Diagonal Matrix
1 0
0 1
0 0
>> E=A(1:2,1:2)
E =
1 2
4 5
>> A+B
ans =
2 3 4
5 6 7
>> A*C
ans =
22 28
49 64
>> A/B
ans =
1.00000 1.00000
2.50000 2.50000
>> A\B
ans =
-5.0000e-01 -5.0000e-01 -5.0000e-01
8.3267e-17 8.3267e-17 8.3267e-17
5.0000e-01 5.0000e-01 5.0000e-01
>> E^2
ans =
9 12
24 33
Quand on tente d’effectuer des opérations entre matrices de dimensions incompatibles on obtient un message d’erreur.
>> A+C
error: operator +: nonconformant arguments (op1 is 2x3, op2 is 3x2)
28 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
l’opération est effectuée élément par élément. Les autres opérations de ce type sont la division à droite et l’élévation à la
puissance :
? Produit Ci j = Ai j Bi j : C=A.*B NB il s’agit du produit d’Hadamard et non pas du produit matriciel
? Division Ci j = Ai j /Bi j : C=A./B
? Élévation à la puissance Ci j = A3i j : C=A.^3
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=[0 2 0; 0 0 1]
B =
0 2 0
0 0 1
>> A.*B
ans =
0 4 0
0 0 6
>> A*B
error: operator *: nonconformant arguments (op1 is 2x3, op2 is 2x3)
On écrit Ça signifie
< <
> >
<= ≤
>= ≥
== =
~= 6=
ATTENTION
Les opérateurs de comparaison agissent élément par élément, ainsi lorsqu’on les applique à une matrice le résultat est un
matrice qui contient que des 0 ou 1 (parfois appelée “masque”). Par exemple
Pour combiner des conditions complexes (par exemple x > −2 et x 2 < 5), on peut combiner les opérateurs de comparaison
avec les connecteurs logiques :
On écrit Ça signifie
& et
| ou
~ non
Par exemple
© 2018-2019ÉÀ G. Faccanoni 29
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
2.6 Fonctions
De très nombreuses fonctions disponibles dans Octave/Matlab sont définies au moyen de la commande function. Par
convention, chaque définition de fonction est stockée dans un fichier séparé qui porte le nom de la fonction suivi de
l’extension .m Ces fichiers s’appellent des fichiers de fonction. Notez que c’est la même extension que les fichiers de scripts
mais, de plus, il faut absolument que le fichier s’appelle comme la fonction qu’il contient.
Fichier myfunc.m
% Description de la fonction
function [y1,...,yN] = myfunc(x1,...,xM)
instruction_1
instruction_2
...
[y1,...,yN] = ...
end
p fonction qui calcule l’aire d’un triangle en fonction des longueurs a, b et c des côtés grâce à
À titre d’exemple, écrivons une
la formule de Héron : Aire = p(p − a)(p − b)(p − c) où p = (a + b + c)/2 est le demi-périmètre. On crée pour cela un fichier
au format texte appelé heron.m contenant les instructions suivantes
% Calcule l’aire s d’un triangle par la formule de Heron.
% a, b, c sont les longueurs des aretes.
function s = heron(a, b, c)
p = (a+b+c)/2;
s = sqrt(p*(p-a)*(p-b)*(p-c));
endfunction
La définition donnée ci-dessus peut être testée directement en chargeant le fichier heron.m avec la commande source et
en invoquant la fonction sur la ligne de commande. Par exemple :
>> source("Bureau/TP1/heron.m")
>> heron(3,5,4)
ans = 6
Un fichier de fonction peut en réalité contenir plusieurs fonctions déclarées au moyen de la commande function mais
seule la première définition est accessible depuis un script. Les autres définitions concernent des fonctions annexes (on dit
parfois des sous-fonctions) qui ne peuvent être utilisées que dans la définition de la fonction principale.
30 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
ATTENTION
Pour éviter de surcharger une fonction déjà définie dans Matlab/Octave, prendre l’habitude d’appeler ses fonctions par
my...
On peut aussi créer une fonction sans lui donner de nom, c’est une fonction anonyme. Dans ce cas, la fonction sera écrite
directement dans le fichier de script.
x 7→ 2x
@(x) [2*x]
Nous utiliserons les fonctions anonymes surtout pour écrite directement la fonction dans le fichier de script sans créer
un fichier séparé.
b−a
[a, a + h, a + 2h, . . . , b = a + nh] avec h =
n −1
Dans ce cas, attention au dernier terme : b peut ne pas être pris en compte.
Voici un exemple avec une sinusoïde :
x = linspace(-5,5,101); # h=(5+5)/(101-1)=0.1 donc x = [-5:0.1:5] et on a 101 elements
y = sin(x); # NB operation is broadcasted to all elements of the array
plot(x,y)
On obtient une courbe sur laquelle on peut zoomer, modifier les marges et sauvegarder dans différents formats.
Si la fonction n’est pas prédéfinie (comme dans l’exemple où on a utilisé la fonction sin), il est bonne pratique de la définir
pour qu’elle opère composante par composante lorsqu’on lui passe un vecteur. Par exemple, on se propose de tracer la
fonction
f : [−2; 2] → R
1
x 7→
1 + x2
Suivant la façon de définir la fonction, on pourra utiliser l’une des deux méthodes suivantes.
© 2018-2019ÉÀ G. Faccanoni 31
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
Méthode 2. Parfois on peut éviter la création d’un fichier juste pour la définition de la fonction grâce aux fonctions
anonymes. Dans un script ou dans la prompt on écrit les instructions suivantes :
f=@(x)[1./(1+x.^2)] # declaration de la fonction
x=[-2:0.5:2];
y=f(x) % evaluation en plusieurs points
plot(x,y) % affichage des points (x_i,y_i)
Dans les deux cas, la variable x étant potentiellement un tableau, les opérations /, * et \^ agissant sur elle doivent être
remplacées par les opérations point correspondantes ./, .* et \.^ qui opèrent composante par composante.
32 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
x = [-pi:0.05*pi:pi];
figure(1)
plot(x, sin(x), ’r’)
figure(2)
plot(x, cos(x), ’g’)
x = [-pi:0.05*pi:pi];
subplot(4,3,1)
plot(x, sin(x), ’r’)
subplot(4,3,5)
plot(x, cos(x), ’g’)
subplot(4,3,9)
plot(x, x.*x, ’b’)
subplot(4,3,12)
plot(x, exp(-x.*x), ’m’)
E XEMPLE
Dans le code suivant on voit comment tracer plusieurs courbes dans un même graphique (avec légende), plusieurs
graphe sur une même figure et plusieurs figures.
figure(1)
x=[-2:0.5:2];
© 2018-2019ÉÀ G. Faccanoni 33
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
subplot(2,3,2)
plot(x,x,’r-’,x,exp(x),’b*-’)
legend([’y=x’;’y=e^x’])
subplot(2,3,4)
plot(x,x.^2)
title(’y=x^2’)
subplot(2,3,5)
plot(x,x.^3)
xlabel(’Axe x’)
subplot(2,3,6)
plot(x,sqrt(x))
figure(2)
x=linspace(0.1,exp(2),100);
plot(x,log(x));
2.8 Polynômes
Soit Rn [x] l’ensemble des polynômes de degré inférieur ou égale à n, n ∈ N. Tout polynôme de cet espace vectoriel s’écrit de
manière unique comme
n
ai x i = a0 + a1 x + · · · + an x n , où a i ∈ R pour i = 0, . . . n.
X
p n (x) =
i =0
Les n + 1 valeurs réels a 0 , a 1 , . . . , a n sont appelés les coordonnées de p n dans la base canonique 3 de Rn [x] et on peut les
stocker dans un vecteur p :
p = coord(p n , C n ) = (a n , a n−1 , . . . , a 2 , a 1 , a 0 ) ∈ Rn+1
Sous Octave le polynôme p(x) = a n x n + a n−1 x n−1 + · · · + a 1 x + a 0 ∈ Rn [x] est défini par un vecteur p de dimension n + 1
contenant les coefficients { a i }i =0,...,n rangés dans l’ordre décroissant des indices, c’est-à-dire que l’on a p(1) = a n , . . .,
p(n + 1) = a 0 . Par exemple, pour construire le polynôme p(x) = 2 − x + x 2 nous écrirons
p=[1 -1 2]
1. La commande polyval permet d’évaluer le polynôme p (la fonction polynomiale) en des points donnés. La syntaxe
est polyval(p,x) où x est une valeur numérique ou un vecteur. Dans le second cas on obtient un vecteur contenant
les valeurs de la fonction polynomiale aux différents points spécifiés dans le vecteur x. Par exemple, pour évaluer le
polynôme p(x) = 1 + 2x + 3x 2 en x = (−1, 0, 1, 2) nous écrirons
p=[3 2 1] % p(x)=1+2x+3x^2
y=polyval(p,[-1,0,1,2])
2. Utilisée avec la commande fplot, la commande polyval permet de tracer le graphe de la fonction polynomiale
sur un intervalle [xmin, xmax] donné. La syntaxe de l’instruction est (’polyval([a_n,...,a_0],x)’, [x_min,
x_max]). Par exemple, pour tracer le graphe du polynôme p(x) = 1 + 2x + 3x 2 sur l’intervalle [−2; 2] nous écrirons
fplot(’polyval([3 2 1],x)’,[-2,2])
3. La commande roots calcule les racines du polynôme dans C. La syntaxe est roots(p). Par exemple, pour calculer
les racines du polynôme p(x) = 1 − x 2 nous écrirons
p=[-1 0 1] % p(x)=-x^2+1
racines=roots(p)
4. La commande poly définit un polynôme à partir de ses racines r 0 , r 1 , . . . r n comme suit : p(x) = ni=0 (x −r i ). La syntaxe
Q
est poly(r) où r est un vecteur contenant ses racines. Par exemple, pour définir le polynôme p(x) = (x − 1)(x + 1)
nous écrirons
poly([1 -1])
5. Somme de deux polynômes : si les deux polynômes n’ont pas même degré, il faut ajouter des zéros en début du
polynôme de plus petit degré afin de pouvoir calculer l’addition des deux vecteurs représentatifs. Par exemple,
34 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
6. La commande conv permet de calculer le polynôme u produit de deux polynômes p et q. La syntaxe est conv(p,q).
Par exemple, pour calculer u(x) = p(x)q(x) avec p(x) = 4 + 3x + 2x 2 + x 3 et q(x) = 6 + 5x + 4x 2 nous écrirons
p=[1 2 3 4] % p(x)=4+3x+3x^2+x^3
q=[4 5 6] % q(x)=6+5x+4x^2
u=conv(p,q) % u(x)=24+38x+43x^2+28x^3+13x^4+4x^5
7. La commande deconv permet de calculer les polynômes q et r quotient et reste de la division du polynôme u par
le polynôme p. La syntaxe est conv(u,p). Par exemple, pour calculer q et r tel que u(x) = q(x)p(x) + r (x) avec
u(x) = 24 + 38x + 43x 2 + 28x 3 + 13x 4 + 4x 5 et p(x) = 4 + 3x + 2x 2 + x 3 nous écrirons
u=[4 13 28 43 38 25] % u(x)=25+38x+43x^2+28x^3+13x^4+4x^5
p=[1 2 3 4] % p(x)=4+3x+3x^2+x^3
[q,r]=deconv(u,p)
8. La commande polyder permet de calculer le polynôme d dérivée d’un polynôme p. La syntaxe est polyder(p). Par
exemple, pour calculer p 0 (x) avec p(x) = 1 + 2x + 3x 2 nous écrirons
p=[3 2 1] % p(x) =1+2x+3x^2
polyder(p) % p’(x)=2+6x
Rx
9. La commande polyint permet de calculer le polynôme 0 p(t ) dt quiR x s’annule en 0 et qui est une primitive d’un
polynôme p. La syntaxe est polyint(p). Par exemple, pour calculer 0 p(t ) dt avec p(x) = 1 + x 2 nous écrirons
p=[1 0 1] % p(x)=1+x^2
integral=polyint(p) % int(p,0..x)=x+x^3/3 donc integral=[1/3 0 1 0]
10. Utilisée avec la commande polyval, la commandeR polyint permet de calculer l’intégrale d’un polynôme sur un
3
intervalle [a,b] donné. Par exemple, pour calculer 0 p(t ) dt avec p(x) = 1 + x 2 nous écrirons
area=polyval(integral,3)-polyval(integral,0) % area=3+27/3-0=12
11. La commande polyfit permet de calculer le polynôme de Rm [x] de meilleure approximation au sens des moindres
carrés d’un ensemble de points. La syntaxe est polyfit(xx,yy,m) où xx et yy sont deux vecteurs de n composantes
et m le degré du polynôme cherché. Si m = n on obtient le polynôme d’interpolation. Par exemple, pour calculer
l’équation de la droite de meilleur approximation de l’ensemble { (0, 0.1), (1, 0.9), (2, 2) } nous écrirons :
xx=[0 1 2]
yy=[0.1 0.9 2]
polyfit(xx,yy,1)
12. Pour afficher le polynôme de façon naturelle il faut utiliser la fonction polyout. Par exemple,
p=[3 2 1]
polyout(p,’x’)
On a besoin d’une instruction qui opère une disjonction de cas. En Octave il s’agit de l’instruction de choix introduite par le
mot-clé if. La syntaxe complète est la suivante :
© 2018-2019ÉÀ G. Faccanoni 35
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
if condition_1
instruction_1.1
instruction_1.2
...
elseif condition_2
instruction_2.1
instruction_2.2
...
...
else
instruction_n.1
instruction_n.2
...
end
où condition_1, condition_2. . . représentent des ensembles d’instructions dont la valeur est 1 ou 0 (on les obtient en gé-
néral en utilisant les opérateurs de comparaison). La première condition condition_i ayant la valeur 1 entraîne l’exécution
des instructions instruction_i.1, instruction_i.2. . . Si toutes les conditions sont 0, les instructions instruction_n
.1, instruction_n.2. . . sont exécutées. Les blocs elseif et else sont optionnels.
Voici un exemple pour établir si un nombre est positif : dans le fichier sign_of.m on sauvegarde la fonction
function sign=sign_of(a)
if a < 0
sign = ’negative’
elseif a > 0
sign = ’positive’
else
sign = ’zero’
end
end
Dans la “Fenêtre des commandes” on peut alors tester notre fonction :
>> sign_of(-1.5)
sign = negative
ans = negative
>> sign_of(2)
sign = positive
ans = positive
>> sign_of(0)
sign = zero
ans = zero
36 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 2 Introduction à Octave/Matlab
u(i) = u(i-1)+u(i-2);
end
disp(u)
Le résultat affiché est
1 1 2 3 5 8 13 21 34 55 89 144
Il est possible d’imbriquer des boucles, c’est-à-dire que dans le bloc d’une boucle, on utilise une nouvelle boucle.
for x = [10,20,30,40,50] % for x = 10:10:50
for y=[3,7]
disp(x+y)
end
end
Dans ce petit programme x vaut d’abord 10, y prend la valeur 3 puis la valeur 7 (le programme affiche donc d’abord 13, puis
17). Ensuite x = 20 et y vaut de nouveau 3 puis 7 (le programme affiche donc ensuite 23, puis 27). Au final le programme
affiche :
ATTENTION
Si la condition ne devient jamais fausse, le bloc d’instructions est répété indéfiniment et le programme ne se termine pas.
nMax = 4;
n = 1;
a = [];
while n<=nMax
a=[a,1/n]; # Append element to list
n += 1;
end
a
Dans l’exemple suivant on calcul la somme des n premiers entiers (et on vérifie qu’on a bien n(n + 1)/2) :
n=100;
s=0;
i=0;
while i<n
i += 1;
s += i;
end
s
n*(n+1)/2
© 2018-2019ÉÀ G. Faccanoni 37
Chapitre 2 Introduction à Octave/Matlab Mis à jour le Mardi 21 janvier 2020
E XEMPLE
Quasiment toutes les fonctions prédéfinies sont vectorisées.
E XEMPLE
1
Pour calculer 1000
P
n=1 n 2 , on peut utiliser les trois codes suivants, le deuxième étant significativement plus rapide :
E XEMPLE
Pour calculer 100000 x i y i , on défini deux vecteurs x et y et on remarque que 100000 x i y i = xT y.
P P
i =1 i =1
38 © 2018-2019ÉÀ G. Faccanoni
Chapitre 3
Exercices
Pensez à placer la commande clear all au début de vos scripts, de manière à nettoyer l’environnement de travail.
Correction
2 3 4 5 1 1 1 1
3 4 5 6 1 2 2 2
1
1 1 1
B=
4
C=
5 6 7 1 2 3 3
4 4 4 4
A= 5 6 7 8 1 2 3 4
9 9 9 9
16 16 16 16
B=zeros(4); C=zeros(4);
for i=1:4 for i=1:4
A=zeros(4); for j=1:4 for j=1:4
for i=1:4 B(i,j)=i+j; C(i,j)=min(i,j);
A(i,:)=i^2; end end
end end end
A B C
Exercice 3.2
Soient les matrices
−3 2 1 2
A= 0 4 et B = 0 1 .
1 −1 1 1
1. Trouver une matrice C telle que A − 2B − C = O.
2. Trouver une matrice D telle que A + B + C − 4D = O.
Correction
1. On cherche C telle que C = A − 2B, i.e.
c 11 c 12 −3 2 1 2 −3 − 2 × 1 2−2×2 −5 −2
c 21 c 22 = 0 4 − 2 0 1 = 0 − 2 × 0 4−2×1 = 0 2 .
c 31 c 32 1 −1 1 1 1−2×1 −1 − 2 × 1 −1 −3
A − 2B − C = O.
2. On cherche D telle que D = 14 (A + B + C) = 14 (A + B + A − 2B) = 12 A − 41 B, i.e.
1 1 1
× 2 − 14 × 2
7
d 11 d 12 2 1 2 2 × (−3) − 4 × 1 − /4 /2
1
−3 2
1 1 1 1 1
d 21 d 22 = 0 4 − 0 1 =
2 ×0− 4 ×0 2 × 4 − 14 × 1 = 0 7
/4 .
2 4 1 1 1 1
d 31 d 32 1 −1 1 1 2 ×1− 4 ×1 2 × (−1) − 4 × 1
1
/4 −3/4
39
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
A=[-3 2; 0 4; 1 -1]
B=[1 2; 0 1; 1 1]
C=A-2*B
D=1/4*(A+B+C)
Exercice 3.3
Effectuer les multiplications suivantes
µ ¶ 2 1 −1 0 2 −3 ¡
3 1 5 ¡ ¢ ¢
3 0 1 8 , −3 0 5 −4 , 0 2 −4 −3 .
2 7 0
0 −5 3 4 −3 5
Correction
3×4
2×3 z }| { 2×4
zµ }| {¶ z
2 1 −1 0 µ }| {¶
3 1 5 3 × 2 + 1 × 3 + 5 × 0 3 × 1 + 1 × 0 + 5 × (−5) 3 × (−1) + 1 × 1 + 5 × 3 3×0+1×8+5×4
3 0 1 8 =
2 7 0 2 × 2 + 7 × 3 + 0 × 0 2 × 1 + 7 × 0 + 0 × (−5) 2 × (−1) + 7 × 1 + 0 × 3 2×0+7×8+0×4
0 −5 3 4
µ ¶
9 −220 13 28
=
25 2 5 560
3×1
z }| {
1×3 1×1
z¡ }| {¢ 2 z¡ }| {¢
−3 0 5 −4 = −3 × 2 + 0 × (−4) + 5 × (−3) = −21
−3
3×1 3×3
z }| { z }| {
1×3
−3 z¡ }| {¢ −3 × 2 −3 × (−4) −3 × (−3) −6 12 9
0 2 −4 −3 = 0 × 2 0 × (−4) 0 × (−3) = 0 0 0
5 5×2 5 × (−4) 5 × (−3) 10 −20 −15
[3 1 5; 2 7 0]*[2 1 -1 0; 3 0 1 8; 0 -5 3 4]
[-3 0 5]*[2 -4 -3]’ % ce qui equivaut a [-3 0 5]*[2; -4; -3]
[-3 0 5]’*[2 -4 -3] % ce qui equivaut a [-3; 0; 5]*[2 -4 -3]
Exercice 3.4
Soit les matrices
1 2 3 µ ¶ 1 1
2 −1 0
A = −1 0 1 B= u= x v = 0
−1 0 1
0 1 0 x2 1
Correction
Sans utiliser un module spécifique, il n’est pas possible de faire des calculs formels avec MATLAB/Octave, donc on ne peut
pas utiliser u sans donner une valeur numérique à x.
A=[1 2 3; -1 0 1; 0 1 0] % 3x3
B=[2 -1 0; -1 0 1] % 2x3
v=[1;0;1] % 3x1
% Les produits possibles sont
B*A % (2x3)*(3x3) -> 2x3
A*v % (3x3)*(3x1) -> 3x1
40 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Correction
1.
0 1 1 1 0
0 1 0 0 0
M=
0 1 1 0 0
0 1 0 0 0
0 1 0 0 0
2. Le produit AM correspond à inverser l’ordre des lignes de la matrice M : l’image est alors symétrique par rapport à la
troisième ligne.
Le produit MA correspond à inverser l’ordre des colonnes de la matrice M : l’image est alors symétrique par rapport à
la troisième colonne.
Le produit BM correspond à translater les lignes de la matrice M d’un rang vers le haut (la première ligne passant en
cinquième ligne) : l’image est alors translatée d’un rang vers le haut (la première ligne passant en cinquième ligne).
Le produit MB correspond à translater les colonnes de la matrice M d’un rang vers la droite (la cinquième colonne
passant en première colonne) : l’image est alors translatée d’un rang vers la droite (la cinquième colonne passant en
première colonne).
0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1
0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0
AM = MA = BM = MB =
0 1 1 0 0
0 0 1 1 0 0 1 0 0 0 0 0 1 1 0
0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0
0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0
© 2018-2019ÉÀ G. Faccanoni 41
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
M AM MA BM MB
3. Le produit AMB = (AM)B correspond par exemple à une symétrie horizontale par rapport à la troisième ligne
suivie d’une translation d’un rang vers la droite. On peut aussi l’écrire comme AMB = A(MB) qui correspond à une
translation d’un rang vers la droite suivie d’une symétrie horizontale par rapport à la troisième ligne. Dans tous les cas
on obtient l’image suivante :
M → AM → (AM)B
M → MB → A(MB)
M → AM → (AM)A → (AMA)B
Exercice 3.6
Calculer a, b, c et d tels que
µ ¶µ ¶ µ ¶µ ¶
1 3 a b a b 1 3
¬ = I2 , = I2 .
2 8 c d c d 2 8
Que peut-on conclure ?
Correction
Comme
µ ¶ µ ¶ µ ¶
1 3 a b a + 3c b + 3d
× =
2 8 c d 2a + 8c 2b + 8d
il faut que
a + 3c = 1,
b + 3d = 0, µ ¶ µ ¶
a b 4 −3/2
⇐⇒ = .
2a + 8c = 0, c d −1 1/2
2b + 8d = 1,
42 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
A=[1 3; 2 8]
I2=eye(2)
I2/A
A\I2
On conclut que
µ ¶ µ ¶−1 µ ¶
a b 1 3 4 −3/2
= = .
c d 2 8 −1 1/2
inv([1 3; 2 8])
Exercice 3.7
On dit que deux matrices A et B commutent si AB = BA. Trouver toutes les matrices qui commutent avec
1 0 0
A = 0 3 0 .
0 0 5
En déduire A−1 .
Correction
On cherche B telle que
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13 1 0 0
0 3 0 b 21 b 22 b 23 = b 21 b 22 b 23 0 3 0
0 0 5 b 31 b 32 b 33 b 31 b 32 b 33 0 0 5
Comme
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13
0 3 0 b 21 b 22 b 23 = 3b 21 3b 22 3b 23
0 0 5 b 31 b 32 b 33 5b 31 5b 32 5b 33
et
b 11 b 12 b 13 1 0 0 b 11 3b 12 5b 13
b 21 b 22 b 23 0 3 0 = b 21 3b 22 5b 23
b 31 b 32 b 33 0 0 5 b 31 3b 32 5b 33
il faut que
b 11 = b 11 ,
b 12 = 3b 12 ,
b 13 = 5b 13 ,
3b 21 = b 21 , κ1
0 0
3b 22 = 3b 22 , ⇐⇒ B= 0 κ2 0 avec κ1 , κ2 , κ3 ∈ R.
0 0 κ3
3b 23 = 5b 23 ,
5b 31 = b 31 ,
5b 32 = 3b 32 ,
5b 33 = 5b 33 ,
© 2018-2019ÉÀ G. Faccanoni 43
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Exercice 3.8
Trouver pour quelles valeurs de t ∈ R les matrices suivantes sont inversibles :
t2 −9 t2 −9
µ ¶ µ ¶
t +3 t +3
A= 2 , B= .
t +9 t −3 t −3 t2 +9
Correction
t2 −9
µ ¶
t +3
det(A) = det = (t + 3) × (t − 3) − (t 2 − 9) × (t 2 + 9) = −(t − 3)(t + 3)(t 2 + 8).
t2 +9 t −3
La matrice est inversible pour tout t ∈ R \ { −3, 3 }.
determinant=@(t)[det([t+3, t^2-9; t^2+9, t-3])];
fsolve(determinant,1)
fsolve(determinant,-1)
µ 2 ¶
t −9 t +3
det(B) = det = (t 2 − 9) × (t 2 + 9) − (t + 3) × (t − 3) = (t − 3)(t + 3)(t 2 + 8).
t −3 t2 +9
La matrice est inversible pour tout t ∈ R \ { −3, 3 }.
determinant=@(t)[det([t^2-9, t+3; t-3, t^2+9])];
fsolve(determinant,1)
fsolve(determinant,-1)
Exercice 3.9
Trouver pour quelles valeurs de t la matrice suivante est inversible
t +3 −1 1
5 t −3 1 .
6 −6 t +4
Correction
On commence par calculer le déterminant de la matrice. Étant une matrice d’ordre 3, on peut par exemple utiliser la
méthode de S ARRUS :
t + 3 −1 1
det 5 t −3 1
6 −6 t + 4
³ ´ ³ ´
= (t + 3) × (t − 3) × (t + 4) + 5 × (−6) × 1 + 6 × (−1) × 1 − 1 × (t − 3) × 6 + 1 × (−6) × (t + 3) + (t + 4) × (−1) × 5
Exercice 3.10
Soit a, b et c trois réels quelconques, calculer les déterminants suivants :
1 1 1 1+a 1 1
D 1 = det a b c D 2 = det 1 1+a 1
a2 b2 c2 1 1 1+a
44 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Correction
Pour calculer un déterminant comportant des paramètres, il est souvent intéressant de faire apparaître des zéros dans une
ligne ou une colonne :
1 1 1 C 2 ←C 2 −C 1 1 0
0 µ ¶
C 3 ←C 3 −C 1 b−a c −a
D 1 = det a b c −−−−−−−−→ det a b−a
c − a = det 2
b − a2 c 2 − a2
=
a2 b2 c2 a2 b2 − a2
c 2 − a2
³ ´
= (b − a)(c 2 − a 2 ) − (c − a)(b 2 − a 2 ) = (b − a)(c − a) (c + a) − (b + a) = (b − a)(c − a)(c − b);
1+a 1 1 C 2 ←C 2 −C 1 1 + a −a −a 3+a 0 0
C 3 ←C 3 −C 1 L 1 ←L 1 +L 2 +L 3
D 2 = det 1 1+a 1 −−−−−−−−→ det 1 a 0 −−−−−−−−−−→ det 1 a 0 = a 2 (3 + a).
= =
1 1 1+a 1 0 a 1 0 a
Exercice 3.11
κ
¶ µ
1
1. Pour quelles valeurs de κ ∈ R la matrice A = est inversible ?
3 2
1 2 8 2 1 3
2. Calculer le rang des matrices B = 2 1 4 et C = 8 4 12.
0 3 12 1 2 0
0 0 1 0 0 2 3 4
2 3 7 4 1 7 12 −5
3. Calculer le déterminant des matrices D =
3 1 12 0 et E = 0
.
3 1 0
4 0 −5 0 0 4 0 0
Correction
3
1. La matrice A est inversible pour κ 6= 2 car det(A) = 3 − 2κ.
determinant=@(k)[det([1 k; 2 3])];
fsolve(determinant,0)
2. Sans faire de calcul on peut déjà affirmer que 1 ≤ rg(B) ≤µ 3. Comme ¶ det(B) = 0 (sans faire de calcul, il suffit de
1 2
remarquer que C 3 = 4C 2 ), alors 1 ≤ rg(B) ≤ 2. Comme det = −3 6= 0, on conclut que rg(B) = 2. De la même
2 1
manière, 1 ≤µrg(C)¶≤ 3 et puisque det(C) = 0 (sans faire de calcul, il suffit de remarquer que L 2 = 4L 1 ), alors 1 ≤ rg(C) ≤ 2.
2 1
Comme det = 3 6= 0, on conclut que rg(C) = 2.
1 2
rank([1 2 8; 2 1 4; 0 3 12])
rank([2 1 3; 8 4 12; 1 2 0])
0 0 1 0
2 3 4
µ ¶
2 3 7 4 = det 3 3 4
3. det(D) = det 1 0 = 4 det = −16.
3 1 12 0 1 0
4 0 0
4 0 −5 0
0 2 3 4
2 3 4
µ ¶
1 7 12 −5 3 4
det(E) = det = − det 3 1 0 = −4 det = 16.
0 3 1 0 1 0
4 0 0
0 4 0 0
det([0 0 1 0; 2 3 7 4; 3 1 12 0; 4 0 -5 0])
det([0 2 3 4; 1 7 12 -5; 0 3 1 0; 0 4 0 0])
8 9 0 3
© 2018-2019ÉÀ G. Faccanoni 45
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Correction
Le déterminant ne change pas lorsque on ajoute à une colonne une combinaison linéaire des autres colonnes. Si on ajoute à
la quatrième colonne la combinaison linéaire 3i =1 104−i C i on obtient
P
2 0 0 1 2001 69
3 1 2 0
7 3 1073 37
104−i C i +C 4 = 103
X
5 + 10 8 + 10 0 + 0 = 5800 = 29 200
i =1
8 9 0 3 8903 307
donc
2 0 0 29 × 69
1 0 7 29 × 37
det(A) = det
5 8 0 29 × 200
8 9 0 29 × 307
1 0 7 2 0 0 2 0 0 2 0 0
= −29 × 69 × det 5 8 0 + 29 × 37 × det 5 8 0 − 29 × 200 × det 1 0 7 + 29 × 307 × det 1 0 7
8 9 0 8 9 0 8 9 0 5 8 0
1 0 7 2 0 0 2 0 0 2 0 0
= 29 × −69 × det
5 8 0 + 37 × det 5 8
0 − 200 × det 1 0 7 + 307 × det 1 0 7
8 9 0 8 9 0 8 9 0 5 8 0
Exercice 3.13
Soit n ≥ 2 un entier naturel pair. Une matrice de taille n × n est à remplir par deux joueurs, A (qui veut un déterminant
non nul, commence) et B (qui veut un déterminant nul). Ils ont le droit de mettre n’importe quel réel dans une case
vide de la matrice, chacun leur tour. Trouver une stratégie gagnante pour B .
Correction
Il suffit de faire en sorte qu’une colonne soit identique (ou un multiple) d’une autre.
3.2 Matlab/Octave
Pensez à placer la commande clear all au début de vos scripts, de manière à nettoyer l’environnement de travail.
Exercice 3.14
Copier les instructions suivantes dans des script files. Exécuter les script et commenter les résultats.
Exercice 3.15 (Opérations élément par élément, produit scalaire, produit vectoriel)
46 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
¬ Copier les instructions suivantes dans un script file. Définir le vecteur x=[pi/6 pi/4 pi/3] et calculer
Exécuter le script et commenter les résultats. s=sin(x) et c=cos(x). En déduire tan(x) à l’aide
x = [1; 2; 3]; des vecteurs s et c.
y = [4; 5; 6]; ® Calculer la somme des nombres entiers de 1 à 500.
v = x.^2 Calculer la somme des carrés des nombres entiers
b = sum(v) de 1 à 500. Calculer la somme des nombres impaires
s = y’*x
inférieurs ou égaux à 500. Calculer la somme des
d = dot(x,y)
nombres paires inférieurs ou égaux à 500.
u = x.*y
p = x.^x
c = cross(x,y)
Correction
¬ x, y et v sont des vecteurs-colonne 3 × 1
v est le vecteur tel que v i = x i2 pour i = 1, 2, 3 : v = (1, 4, 9)T
b = v 1 + v 2 + v 3 = 1 + 4 + 9 = 14
s est le produit scalaire yT x = i y i x i = y 1 x 1 + y 2 x 2 + y 3 x 3 = 4 × 1 + 5 × 2 + 6 × 3 = 32
P
Pn n(n+1) Pn 2 n(n+1)(2n+1) PN PN
® i =1 i = 2 i =1 i = 6 i =1 (2i − 1) = N 2 i =1 (2i ) = N (N + 1)
n=500 n=500
n=500 n=500
imp=sum(1:2:n) pair=sum(2:2:n)
sum([1:n]) sum([1:n].^2)
N=length(1:2:n); N=length(2:2:n);
n*(n+1)/2 n*(n+1)*(2*n+1)/6
N^2 N*(N+1)
n
(2i − 1) = 1 + 3 + 5 + · · · + (2n − 1) = n 2
X
i =1
n
9
X
i = 2 × (1 + 2 + 3 + · · · + n) = n × (n + 1)
i =1 2×5−1
1 4 7
2×4−1
2 3 5
2×3−1
3 2 3
2×2−1
4 1 1
2×1−1
Remarque
Quelque somme remarquable :
n
X n(n + 1)
1. i= .
i =1 2
n
(2i − 1) = n 2 . En effet, on remarque qu’il s’agit d’une somme télescopique :
X
2.
i =1
n n
(i 2 − (i − 1)2 ) = (12 − 02 ) + (22 − 12 ) + (32 − 22 ) + . . . (n 2 − (n − 1)2 ) = n 2 .
X X
(2i − 1) =
i =1 i =1
© 2018-2019ÉÀ G. Faccanoni 47
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
n
X n
X
3. (2i ) = 2 i = n(n + 1).
i =1 i =1
n n(n + 1)(2n + 1)
i2 =
X
4. . En effet,
i =1 6
n n n n n n n
(i + 1)3 = j 3 − 1 + (n + 1)3 , (i + 1)3 = i3 +3 i2 +3
X X X X X X X
i+ 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1
donc
n n n n n
i2 = j 3 − 1 + (n + 1)3 − i3 −3
X X X X X
3 i− 1
i =1 j =1 i =1 i =1 i =1
n(n + 1) (n + 1) ¡ ¢ n(n + 1)(2n + 1)
= −1 + (n + 1)3 − 3 −n = 2(n + 1)2 − 3n − 2 = .
2 2 2
n ¶2
n(n + 1)
µ
3
X
5. i = . En effet,
i =1 2
n n n n n n n n
(i + 1)4 = j 4 − 1 + (n + 1)4 , (i + 1)4 = i4 +4 i3 +6 i2 +4
X X X X X X X X
i+ 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1 i =1
donc
n n n n n n n
i3 = j 4 − 1 + (n + 1)4 − i4 −4 i3 −6 i2 −4
X X X X X X X
4 i− 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1
n(n + 1)(2n + 1) n(n + 1)
= −1 + (n + 1)4 − 6 − n = (n + 1) (n + 1)3 − n(2n + 1) − 2n − 1
¡ ¢
−4
6 2
= (n + 1)2 (n + 1)2 − (2n + 1) = n 2 (n + 1)2 .
¡ ¢
Exercice 3.16
On se propose ici d’utiliser Octave pour résoudre graphiquement des équations.
1. Résoudre graphiquement l’équation en traçant les courbes correspondant aux membres gauche et droit de
l’équation (pour a = 4 et r = 2). Quelle valeur de t est solution de l’équation ?
2. Comment faire pour obtenir une valeur plus précise du résultat ?
Correction lhs=2*a/(r^2)*ones(size(t));
t=[0:pi/180:2*pi]; plot(t,rhs,t,lhs), grid
rhs=t-sin(t);
a=4;
r=2;
48 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Le graphe nous dit que la solution est entre 2 et 3. On peut fsolve( @(x) 2*a/(r^2)-(x-sin(x)) , 2.5)
calculer une solution approchée comme suit :
Correction
La fonction non vectorisée peut s’écrire comme suit :
function y=f1(x)
n=length(x);
for i=1:n
if x(i)<0
y(i)=0;
elseif x(i)<1
y(i)=x(i);
elseif x(i)<=2
y(i)=2-x(i);
else
y(i)=0;
endif
endfor
endfunction
© 2018-2019ÉÀ G. Faccanoni 49
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Exercice 3.19 (Sommes, produits et algèbre linéaire pour éliminer les boucles)
Soient u =, v, w, x, y des vecteurs ligne de Rn . On se propose de calculer
n n n
w i x i2 ,
X X X
ui v i , w i xi y i .
i =1 i =1 i =1
Correction n
u i v i = u · vT donc
X
1. Notons que
i =1
u = [1 2 3 4 5];
v = [3 6 8 9 10]; % dot notation
y = sum(u.*v)
% Avec une boucle
y = 0; % produit scalaire
for i=1:length(u) y = u*v’
y = y + u(i)*v(i); y = v*u’
end y=dot(u,v)
y y=dot(v,u)
Pn
2. 2
i =1 w i x i = xDw xT avec
w1 ... 0
.. .. ..
Dw = . . .
0 wn
donc
Pn
3. i =1 w i x i y i = xDw yT donc
Exercice 3.20
¬ Copier les instructions suivantes dans un script file. Exécuter le script et commenter les résultats.
50 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
Correction
¬ A*B calcule le produit AB = ( 3k=1 ai k bk j )1≤i , j ≤3 , A.*B calcule la matrice C = (ai j bi j )1≤i , j ≤3 .
P
P3
A^2 calcule le produit AA = ( k=1
a i k a k j )1≤i , j ≤3 , A.^2 calcule la matrice C = (a i2j )1≤i , j ≤3 .
A/B calcule le produit AB−1 si B est inversible, A.\B calcule la matrice C = (ai j /bi j )1≤i , j ≤3 .
Avec les instructions suivantes, on construit la matrice A qui contient juste les produits, et la matrice B qui contient
aussi l’entête des lignes et colonnes :
A(:,:)=[1:10]’.*[1:10]
B(:,:)=[1,1:10]’.*[1,1:10]
2 0 −3 0 0 0 0 0 0 0
0 2 0 −3 0 0 0 0 0 0
0 0 2 0 −3 0 0 0 0 0
0 0 0 2 0 −3 0 0 0 0
0 0 0 0 2 0 −3 0 0 0
0 0 0 0 0 2 0 −3 0 0
0 0 0 0 0 0 2 0 −3 0
0 0 0 0 0 0 0 2 0 −3
0 0 0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 0 0 2
Écrire les instructions permettant d’interchanger la troisième et la septième ligne de la matrice construite au
© 2018-2019ÉÀ G. Faccanoni 51
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
point précédent, puis les instructions permettant d’échanger la quatrième et la huitième colonne.
® Écrire la matrice carrée de taille n comprenant des n sur la diagonale principale, des n − 1 sur les deux lignes qui
l’encadrent, etc.
¯ Écrire la matrice à n lignes et m colonnes dont la première colonne ne contient que des 1, la deuxième colonne
ne contient que des 2, etc. Écrire ensuite la matrice à m lignes et n colonnes dont la première ligne ne contient
que des 1, la deuxième ligne ne contient que des 2, etc.
° Écrire la matrice carrée A de taille 2n + 1 comportant des 1 sur la (n + 1)ième ligne et la (n + 1)ième colonne et des 0
ailleurs.
± Écrire la matrice carrée Z de taille n comportant des 1 sur la première et dernière ligne et sur la deuxième
diagonale et des 0 ailleurs.
² Étant donné une liste de nombres retourner la liste obtenue en écrivant d’abord les termes de rang pair suivis
des termes de rang impair.
³ Écrire la matrice (n, n) dont les éléments sont 1, 2, . . . , n 2 écrits dans l’ordre habituel (sur chaque ligne, de la
gauche vers la droite, de la première à la dernière ligne).
Correction
¬ U=2*eye(10)+diag(-3*ones(8,1),2)
On peut échanger les troisième et septième lignes de la matrice (sans modifier la matrice initiale) avec les instructions :
r=[1:10]
r(3)=7
r(7)=3
Ur=U(r,:)
Remarquer que le caractère : dans U(r,:) fait que toutes les colonnes de U sont parcourues dans l’ordre croissant
habituel (du premier au dernier terme).
Sinon, si on veut modifier la matrice initiale, on peut utiliser l’instruction :
U([3 7],:)=U([7 3],:)
¯ Soit n et m fixés.
A(1:n,:)=ones(n,1)*[1:m]
A’
52 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
° n=5;
A=zeros(2*n+1);
A(:,n+1)=1;
A(n+1,:)=1
± n=5;
A=eye(n);
A(1,:)=1;
A(n,:)=1;
A=A(:,n:-1:1)
² liste=rand(1,10)
liste2=[liste([2:2:end]) liste([1:2:end])]
³ n=5;
M=[1:n^2];
M=reshape(M,n,n)’
1 1 1 1 1
0 0 0 1 0
Z=
0 0 1 0 0
0 1 0 0 0
1 1 1 1 1
2. Dans un fichier exercice1.m écrire un script pour tester cette fonction pour n = 1, . . . , 5.
© 2018-2019ÉÀ G. Faccanoni 53
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
plot(sizeA,T,’o’)
Correction
L’instruction a:step:b intervenant dans la boucle for génère tous les nombres de la forme a+step*k où k est un entier
variant de 0 à kmax, où kmax est le plus grand entier tel que a+step*kmax est plus petit que b (dans le cas considéré, a=500,
b=10000 et step=100). La commande rand(n,m) définit une matrice n × m dont les éléments sont aléatoires. Enfin, T est
le vecteur contenant les temps CPU nécessaires à chaque produit matrice-vecteur, et cputime renvoie le temps CPU (en
secondes) consommé par Octave depuis son lancement. Le temps nécessaire à l’exécution d’un programme est donc la
différence entre le temps CPU effectif et celui calculé juste avant l’exécution du programme courant, stocké dans la variable
t. La commande plot(sizeA,T,’o’), montre que le temps CPU augmente comme le carré de n l’ordre de la matrice.
Si on divise l’aire de la portion de disque par celle du carré on trouve π4 . Si on tiré au hasard dans le carré, on a une
probabilité de π4 que le point soit dans la portion de disque. On considère l’algorithme suivant pour approcher π :
N
on génère N couples {(x k , y k )}k=1 de nombres aléatoires dans l’intervalle [0, 1], puis on calcule le nombre m ≤ N de
ceux qui se trouvent dans le premier quart du cercle unité. π est la limite de la suite 4m/N lorsque N → +∞. Écrire un
programme pour calculer cette suite et observer comment évolue l’erreur quand N augmente.
Correction
La méthode proposée est une méthode de Monte Carlo. Elle est implémentée dans le programme suivant :
format long
N=10^4
# On tire au hasard N points [x,y] dans [0,1[ x [0,1[
[xx,yy]=rand(N,2);
# Nombre de tirs dans le disque
m=sum( xx.^2+yy.^2<=1 );
myPi=4*m/N
err=abs(pi-myPi)
La commande rand génère une suite de nombres pseudo-aléatoires. L’instruction z <= 1 se lit de la manière suivante :
on teste si z(k)<= 1 pour chaque composante du vecteur z ; si l’inégalité est satisfaite pour la k-ème composante de z
(c’est-à-dire, si le point (x k , y k ) appartient à l’intérieur du disque unité) on donne la valeur 1, sinon on lui donne la valeur 0.
La commande sum(z <= 1) calcule la somme de toutes les composantes de ce vecteur, c’est-à-dire le nombre de points se
trouvant à l’intérieur du disque unité.
On peut réécrire le tout comme une fonction anonyme :
format long
myPi = @(N) [ 4*sum( rand(N,1).^2+rand(N,1).^2<=1 )/N ];
err=abs(pi-myPi(10^4)) % test
On exécute maintenant le programme pour différentes valeurs de N . Plus N est grand, meilleure est l’approximation de π.
Par exemple, pour N = 1000 on obtient 3.1120, tandis qu’avec N = 300000 on a 3.1406 (naturellement, comme les nombres
sont générés aléatoirement, les résultats obtenus pour une même valeur de N peuvent changer à chaque exécution).
format long
myPi = @(N) [ 4*sum( rand(N,1).^2+rand(N,1).^2<=1 )/N ];
NN=100:100:10000;
for i=1:length(NN)
err(i)=abs(pi-myPi(NN(i)));
end
plot(NN,err)
Cette méthode n’est pas très efficace, il faut beaucoup de tirs pour obtenir le deux premières décimales de π.
54 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Correction
Pour répondre à la question on peut utiliser le script suivant :
format long
N=0;
while abs(pi-piapproche([0:N]))>0
N+=1;
end
N
piapproche([0:N])
pi
Pour n = 10 on obtient une approximation de π qui coïncide (à la précision Octave) avec la variable interne pi d’Octave. Cet
algorithme est en effet extrêmement efficace et permet le calcul rapide de centaines de chiffres significatifs de π.
Correction
On écrit la fonction soit avec function soit avec une fonction anonyme, puis on valide la fonction avec un test dont on
connaît le résultat :
function v=cylindre(r,h) % h et r sont 2 matrices-lignes
v = (r.^2)’.*h *pi;
return
% cylindre = @(r,h) (r.^2)’.*h *pi ;
Quand on exécute cette fonction, on obtient un tableau à n lignes et à p colonnes qui sont les volumes recherchés. Sur les
lignes de ce tableau, on lit les volumes pour r fixé, h variant. Sur les colonnes, c’est h qui est fixé.
Exercice 3.27
Un dispositif fournit un signal s(t ) = A sin(2πt + ϕ) avec A et ϕ inconnus. On mesure le signal à deux instants (en ms) :
s(0.5) = −1.76789123 et s(0.6) = −2.469394443. On posera α = A cos(ϕ) et β = A sin(ϕ).
1. Écrire et résoudre le système d’inconnue α et β. En déduire A et ϕ.
2. Tracer le signal et montrer qu’il passe par les points mesurés.
Correction
Rappel : sin(a + b) = sin(a) cos(b) + cos(a) sin(b) ainsi
© 2018-2019ÉÀ G. Faccanoni 55
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
α α
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
sin(π) cos(π) −1.76789123 ¡0 ¢ −1 −1.76789123
= i.e. =
sin 65 π cos 65 π β sin 65 π cos 65 π β
¡ ¢ ¡ ¢ ¡ ¢
−2.469394443 −2.469394443
f : [−10, 10] → R
x 3 cos(x) + x 2 − x + 1
x 7→ p
x 4 − 3x 2 + 127
1. Tracer le graphe de la fonction f en utilisant seulement les valeurs de f (x) lorsque la variable x prend successive-
ment les valeurs −10, −9.2, −8.4, . . . , 8.4, 9.2, 10 (i.e. avec un pas 0.8).
2. Apparemment, l’équation f (x) = 0 a une solution α voisine de 2. En utilisant le zoom, proposer une valeur
approchée de α.
3. Tracer de nouveau le graphe de f en faisant varier x avec un pas de 0.05. Ce nouveau graphe amène-t-il à corriger
la valeur de α proposée ?
4. Demander à Octave d’approcher α (fonction fsolve).
Correction
En utilisant un pas de 0.8 il semblerai que α = 1.89. En utilisant un pas de 0.05 il semblerai que α = 1.965. En utilisant la
fonction fsolve on trouve α = 1.9629.
clear all; clc;
f = @(x) [(x.^3 .*cos(x)+x.^2-x+1) ./ (x.^4-sqrt(3)*x.^2+127)] ;
56 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
subplot(1,2,1)
xx=[-10:0.8:10];
plot(xx,f(xx),’r-’)
grid()
subplot(1,2,2)
xx=[-10:0.05:10];
plot(xx,f(xx),’r-’)
grid()
fsolve(f,1.9)
r=@(t) [sin(7*t)-1-3*cos(2*t)];
Correction
x=@(t) [ r(t).*cos(t) ];
y=@(t) [ r(t).*sin(t) ];
tt=[0:0.05:100];
plot(x(tt),y(tt))
3.3 Suites
Suite arithmétique Une suite (v n )n∈N est arithmétique de raison r ∈ R et de premier terme v 0 si
∀n ∈ N, v n+1 = v n + r = v 0 + (n + 1)r.
En particulier, pour v 0 = 0 et r = 1 on a
n
X n(n + 1)
i = 1+2+···+n = ;
i =1 2
© 2018-2019ÉÀ G. Faccanoni 57
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Suite géométrique Une suite (v n )n∈N est géométrique de raison q ∈ R et de premier terme v 0 si
∀n ∈ N, v n+1 = q v n = v 0 q n+1 .
∀n ∈ N, v n+1 = q v n + r
Somme des termes d’une suite arithmético-géométrique : soit (v n )n∈N une suite arithmético-géométrique de pre-
mier terme v 0 , on a
1−q n+1
(³ ´
n r r
X v 0 − 1−q1−q + 1−q n si q 6= 1
v0 + v1 + · · · + vn = vk =
k=0 (n + 1)v 0 + r n(n+1)
2 si q = 1
Exercice 3.31
Soit (u n )n∈N la suite définie par u n = (0.7)3n . Quel est le plus petit n tel que u n < 10−4 ?
Correction
³¡ ¢ ´n ¡
7 3 343 n
. Il s’agit d’une suite géométrique de raison 0 < q < 1 : elle est donc décroissante. On a u n < 10−4 ssi
¢
u n = 10 = 1000
¡ 343 ¢n ¡ 343 ¢n 4 4
1000 < 10−4 ssi log10 1000 < −4 ssi n > − ¡ 343 ¢ = −
log (343)−log (103 )
= 3−log4 (343) ' 0.5
4
= 8. La valeur cherchée est
log10 1000 10 10 10
donc n = 9.
Vérifions nos calculs :
58 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
n=0
u=1
while u>=1.e-4
n+=1
u=(0.7)^(3*n)
end
On peut même afficher u n en fonction de n :
u = @(n) (0.7)^(3*n)
nn=[0];
uu=[1];
while uu(end)>=1.e-4
nn = [ nn, nn(end)+1 ];
uu = [ uu, u(nn(end)) ];
end
plot(nn,uu,’*’,[nn(1),nn(end)],[1.e-4,1.e-4])
Exercice 3.32
On achète un ordinateur portable à 430 ¤. On estime qu’une fois sorti du magasin sa valeur u n en euro après n mois
est donnée par la formule
u n = 40 + 300 × (0.95)n .
1. Que vaut l’ordinateur à la sortie du magasin ?
2. Que vaut-il après un an de l’achat ?
3. À long terme, à quel prix peut-on espérer revendre cet ordinateur ?
4. Déterminer le mois à partir duquel l’ordinateur aura une valeur inférieure à 100 ¤.
Correction
1. À la sortie du magasin u 0 = 340
2. Après un an de l’achat on a u 12 = 40 + 300 × (0.95)12 = 202.11
3. À long terme, on peut espérer revendre cet ordinateur à limn→+∞ u n = 40.
4. À partir du 32-ème mois l’ordinateur aura une valeur inférieure à 100 ¤ car :
100 − 40 1 ln(5)
40 + 300 × (0.95)n < 100 ⇐⇒ (0.95)n < = = 5−1 ⇐⇒ n ln(0.95) < − ln(5) ⇐⇒ n > − ' 31.377
300 5 ln(0.95)
© 2018-2019ÉÀ G. Faccanoni 59
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
On souhaite comparer les temps CPU pour calculer le 30-ème élément F 30 de la suite de F IBONACCI suivant la méthode
choisie :
Boucle calcul de Fn à l’aide d’une boucle ;
Écriture matricielle calcul de Fn en exploitant la relation matricielle
· ¸ · ¸· ¸
Fn 1 1 F n−1
=
F n−1 1 0 F n−2
Correction
Boucle On utilise l’écriture Fn+2 = Fn+1 + Fn avec pour valeurs initiales F1 = F2 = 1. À chaque étape on peut stocker toutes
les valeurs de la suite ou juste les trois dernières.
Écriture matricielle En exploitant la relation matricielle on obtient par récurrence
· ¸ · ¸· ¸ · ¸2 · ¸ · ¸n · ¸
Fn 1 1 F n−1 1 1 F n−2 1 1 F1
= = = ··· =
F n−1 1 0 F n−2 1 0 F n−3 1 0 F0
Expression fonctionnelle Comme la suite de F IBONACCI est linéaire d’ordre deux, on peut écrire son
p
équation caractéris-
1+ 5
tique. On obtient une équation du second degré x 2 − x − 1 = 0 qui a pour solutions x 1 = ϕ = 2 (le nombre d’or) et
p
1− 5 n n
x2 = 1 − ϕ = 2 . Il en résulte que F n = αϕ + β(1 − ϕ) où α et β sont deux constantes à déterminer à partir de F 0 et
p
F 1 . On a α + β = 0 et (α − β)ϕ + β = 1 ce qui donne α = −β = 1/ 5. On trouve alors l’expression générale de la suite de
F IBONACCI (appelée formule de B INET) :
1 ¡
F n = p ϕn − (1 − ϕ)n .
¢
5
Si on calcule la limite du rapport de deux nombres consécutifs de la suite de F IBONACCI on trouve le nombre d’or :
1−ϕ n+1
³ ´
F n+1 ϕn+1 − (1 − ϕ)n+1 1− ϕ
= = ϕ ´ −−−−→ ϕ
ϕn − (1 − ϕ)n 1−ϕ n n→∞
³
Fn 1− ϕ
1−ϕ
car 1 < ϕ < 2 et donc −1 < ϕ < 1.
60 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Tracer un graphe qui affiche la probabilité que deux personnes ont la même date de naissance en fonction du nombre
de personnes. Calculer pour quel k on passe sous la barre des 50%.
Source : http://eljjdx.canalblog.com/archives/2007/01/14/3691670.html
a. On va oublier les années bissextiles et le fait que plus d’enfants naissent neuf mois après le premier de l’an que neuf mois après la Toussaint.
Correction
clear all
totale=365;
seuil=50/100;
n=[1:totale];
© 2018-2019ÉÀ G. Faccanoni 61
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
P(1)=1;
for k=1:totale-1
P(k+1)=(totale-k+1)*P(k)/totale;
end
nP=1-P;
personnes=sum(nP<seuil);
printf(strcat("On passe la barre de \t", num2str(seuil)," pour k=",num2str(personnes),"\n"))
plot(n,nP,’-’,n,seuil*ones(length(n)),’-’)
axis([1 totale 0 1])
title(strcat("Seuil=", num2str(seuil), " Personnes=",num2str(personnes) ))
grid
Dans un groupe de 23 personnes, il y a plus d’une chance sur deux pour que deux personnes de ce groupe aient leur
anniversaire le même jour. Ou, dit autrement, il est plus surprenant de ne pas avoir deux personnes qui ont leur anniversaire
le même jour que d’avoir deux personnes qui ont leur anniversaire le même jour (et avec 57, on dépasse les 99% de chances !)
On peut s’amuser à adapter les calculs à d’autres problèmes, par exemple on a 61% de chances que parmi 5 personnes
prises au hasard, deux ont le même signe astrologique :
totale=12;
seuil=61/100;
En faisant des tests numérique on remarque que la suite obtenue tombe toujours sur 1 peut importe l’entier choisit a
au départ. La conjecture de Syracuse affirme que, peu importe le nombre de départ choisi, la suite ainsi construite
atteint le chiffre 1 (et donc boucle sur le cycle 4, 2, 1). Cet énoncé porte le nom de «Conjecture» et non de théorème, ce
qui signifie qu’un tel résultat n’a pas été démontré pour tous les nombres entiers. En 2004, la conjecture a été “juste”
vérifiée pour tous les nombres inférieurs à 264 .
1. Écrire un script qui, pour une valeur de u 1 > 1 donnée, calcule les valeurs de la suite jusqu’à l’apparition du
premier 1.
2. Tracer les valeurs de la suite en fonction de leur position (on appelle cela la trajectoire ou le vol), i.e. les points
{ (n, u n ) }n=N
n=1
3. Calculer ensuite le durée de vol, i.e. le nombre de terme avant l’apparition du premier 1 ; l’altitude maximale, i.e.
le plus grand terme de la suite et le facteur d’expansion, c’est-à-dire l’altitude maximale divisée par le premier
terme.
On peut s’amuser à chercher les valeurs de u 1 donnant la plus grande durée de vol ou la plus grandes altitude maximale.
On notera que, même en partant de nombre peu élevés, il est possible d’obtenir des altitudes très hautes. Vérifiez que,
en partant de 27, elle atteint une altitude maximale de 9232 et une durée de vol de 111. Au contraire, on peut prendre
des nombres très grands et voir leur altitude chuter de manière vertigineuse sans jamais voler plus haut que le point de
départ. Faire le calcul en partant de 106 .
Ce problème est couramment appelé Conjecture de Syracuse (mais aussi problème de Syracuse, algorithme de H ASSE,
problème de U LAM, problème de K AKUTANI, conjecture de C OLLATZ, conjecture du 3n + 1). Vous pouvez lire l’article de
vulgarisation https://automaths.blog/2017/06/20/la-conjecture-de-syracuse/amp/
a. Dès que u i = 1 pour un certain i , la suite devient périodique de valeurs 4, 2, 1
Correction
function u = mysuite(u_init)
u=[u_init];
while u(end)~=1
if rem(u(end),2)==0
u=[u,u(end)/2];
else
u=[u,3*u(end)+1];
end
62 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
end
end
N=60;
for n=[2:N]
U=mysuite(n);
L=[L,length(U)];
M=[M,max(U(:))];
F=[F,M(end)/n];
end
subplot(1,3,1)
maxL=max(L);
indicemaxL=find(L==maxL,1)+1
plot(Uinit,L,’b-’,[0,indicemaxL,indicemaxL],[maxL,maxL,0],’r:’)
title(strcat( ["Duree de vol:\n max=" num2str(maxL) " obtenu avec u_1=" num2str(indicemaxL)] ))
grid()
subplot(1,3,2)
maxM=max(M);
indicemaxM=find(M==maxM,1)+1
plot(Uinit,M,’b-’,[0,indicemaxM,indicemaxM],[maxM,maxM,0],’r:’)
title(strcat( ["Altitude maximale:\n max=" num2str(maxM) " obtenue avec u_1=" num2str(indicemaxM)] ))
grid()
subplot(1,3,3)
maxF=max(F);
indicemaxF=find(F==maxF,1)+1
plot(Uinit,F,’b-’,[0,indicemaxF,indicemaxF],[maxF,maxF,0],’r:’)
title(strcat( ["Facteur d’expansion:\n max=" num2str(maxF) " obtenu avec u_1=" num2str(indicemaxF)] ))
grid()
Correction
On note p, m, j et c le nombre d’étudiants préférant respectivement Python, Matlab, Java et C. D’après l’énoncé on a
p + m + j + c = 215,
p + m = 163,
m + c = 65,
p + c = 158.
On passe à la notation matricielle et on résout le système par la méthode de Gauss (4 équations donc 3 étapes) :
L ←L −L
1 1 1 1 215 1 1 1 1 215 1 1 1 1 215
2 2 1
L 3 ←L 3
1 1 0 0 163 L 4 ←L 4 −L 1 0 0 −1 −1 −52 0 1 0 1 65
−−L−
2 ↔L 3
0 −−−−−−−→ −−−→
1 0 1 65 Étape 1 0 1 0 1 65 Pivot nul 0 0 −1 −1 −52
1 0 0 1 158 0 −1 −1 0 −57 0 −1 −1 0 −57
© 2018-2019ÉÀ G. Faccanoni 63
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
1 1 1 1 215 1 1 1 1 215
L 3 ←L 3
0 1 0 1 65 0 1 0 1 65
L 4 ←L 4 +L 2
−−−−−−−→ −L−4−
←L 4 −L 3
−−−−→ .
Étape 2
0 0 −1 −1 −52 Étape 3
0 0 −1 −1 −52
0 0 −1 1 8 0 0 0 2 60
2c = 60 =⇒ c = 30,
− j − c = −52 =⇒ j = −c + 52 = 22,
m + c = 65 =⇒ m = −c + 65 = 35,
p + m + j + c = 215 =⇒ p = 215 − m − j − c = 128.
Les préférences sont donc : 128 pour Python, 35 pour Matlab, 22 pour Java et 30 pour C.
A=[1 1 1 1; 1 1 0 0; 0 1 0 1; 1 0 0 1]
b=[215; 163; 65; 158]
sol=A\b
Pour résoudre le système linéaire on commence par définir la matrice A des coefficients du système et le vecteur
colonne b contenant le terme source.
Méthode 1. On calcule la matrice inverse A−1 et on pose x = A−1 b (méthode déconseillée).
Méthode 2. On utilise l’opérateur backslash.
Méthode 3. On définit la matrice augmentée [A|b] et on applique la méthode de G AUSS -J ORDAN pour obtenir la forme
échelonnée (instruction rref(Aaug).
Dans tous les cas, on teste la solution obtenue en calculant ||Ax − b||2 .
Correction
A = [ 1 -1 1; 0 10 25; 20 10 0]
b = [0; 90; 80]
% Methode 1
x = inv(A)*b
norm(A*x-b)
% while mathematically correct, computing the inverse of a matrix is
% computationally inefficient, and not recommended most of the time.
% Methode 2
x = A\b
norm(A*x-b)
% Methode 3
Aaug=[A b]
RRAaug=rref(Aaug)
x=RRAaug(:,4)
norm(A*x-b)
64 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Pour résoudre le système linéaire on commence par définir la matrice A des coefficients du système et le vecteur
colonne b contenant le terme source.
1. On définit la matrice augmentée [A|b] et on applique la méthode de G AUSS -J ORDAN pour obtenir la forme
échelonnée (instruction rref(Aaug). Pourquoi peut-on conclure que le système n’a pas de solution ?
2. Octave nous donne malgré tout une solution ! Vérifiez-le avec l’opérateur backslash.
3. Que se passe-t-il si on essaye de calculer la matrice inverse A−1 et poser ensuite x = A−1 b ?
Dans tous les cas, on teste la solution obtenue en calculant ||Ax − b||2 .
Correction
A = [ 3 2 1; 2 1 1; 6 2 4]
b = [3; 0; 6]
% Point 1
rref([A ,b])
% the last line of this matrix states that 0 = 1. That is not true, which
% means there is no solution.
% Point 2
x = A\b
norm(A*x-b)
% Point 3
invA=inv(A)
x = invA*b
norm(A*x-b)
1 2 3 4 x1
−2x −y +4t =2 10
6 1 1 x1 12 2 3 4 1 x 2 10
2x+3y+3z+2t =14
¯ ° 2 4 0 x 2 = 0 ±3 4 1 2 x 3 = 10
x+2y +z +t =7
1 2 6 x3 6
−x −z +t =−1 4 1 2 3 x4 10
Correction
On utilise la méthode du pivot de G AUSS :
¬
x 1 +2x 2 −x 3 = 2, L 2 ←L 2 −L 1 x 1 +2x 2 −x 3 = 2, x 1 +2x 2 −x 3 = 2,
L 3 ←L 3 −L 1 L 3 ←L 3 +L 2 /2
x 1 −2x 2 −3x 3 = −6, −−−−−−−→ −4x 2 −2x 3 = −8, −−−−−−−−−→ −4x 2 −2x 3 = −8,
x 1 +4x 2 +4x 3 = 3. 2x 2 +5x 3 = 1. 4x 3 = −3.
−3 19 −7
donc x 3 = 4 , x2 = 8 et x 1 = 2 .
© 2018-2019ÉÀ G. Faccanoni 65
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
−x 1 +x 2 +3x 3 = 12 L 2 ←L 2 +2L 1 −x 1 +x 2 +3x 3 = 12 −x 1 +x 2 +3x 3 = 12
L 3 ←L 3 +4L 1 L 3 ←L 3 −5L 2
2x 1 −x 2 +2x 3 = −8 −−−−−−−−→ x 2 +8x 3 = 16 −−−−−−−−→ x 2 +8x 3 = 16
4x 1 +x 2 −4x 3 = 15 5x 2 +8x 3 = 63
−32x 3 = −17
17 47 43
donc x 3 = 32 , x2 = 4 et x 1 = 32 .
®
−2u−4v+3w=−1 −2u−4v +3w=−1 −2u−4v+3w=−1
L 3 ←L 3 +L 1 /2 L 3 ←L 3 +L 2 /2
2v −w=1 −−−−−−−−−→ 2v −w=1 −−−−−−−−−→ 2v −w=1
u +v−3w=−6 −v− 32 w=−13/2
−2w=−6
donc w = 3, v = 2 et u = 1.
¯
+4t =2 L 2 ←L 2 +L 1
−2x −y −2x−y +4t =2
L 3 ←L 3 +L 1 /2
2x+3y+3z+2t =14 L 4 ←L 4 −L 1 /2
2y+3z+6t =16
−−−−−−−−−→ 3
x+2y +z +t =7
2 y +z+3t =8
1
2 y −z −t =−2
−x −z +t =−1
−2x−y +4t =2 −2x−y +4t =2
L 3 ←L 3 −3L 2 /4
L 4 ←L 2 −L 2 /4
2y +3z +6t =16 L 4 ←L 4 −7L 3 /5 2y +3z +6t =16
−−−−−−−−−−→ −−−−−−−−−−→
− 45 z− 32 t =−4
− 45 z− 32 t =−4
7 5
− 52 t =− 25
− 4 z− 2 t =−6
donc t = 1, z = 2, y = 2 et x = 0.
°
L 2 ←L 2 − 62 L 1 11
6 1 1 12
6 1 1 12 6 L
L 3 ←L 3 − 11 2 6 1 1 12
L 3 ←L 3 − 61 L 1 11
− 13 11
− 13
3
[A|b] = 2 4 0 0 −−−−−−−−→ 0 3 −4 −−−−−−−−−−→ 0 3 −4
11 35
1 2 6 6 0 6 6 4 0 0 6 6
donc
6x 1 + x 2 + x 3 = 12,
11 1
3 x 2 − 3 x 3 = −4
=⇒ x 3 = 1, x 2 = −1, x 1 = 2.
6x 3 = 6
±
L ←L −2L
1 2 3 4 10 1 2 3 4 10
2 2 1
L 3 ←L 3 −3L 1
2 3 4 1 10 L 4 ←L 4 −4L 1
0 −1 −2 −7 −10
[A|b] =
3
−−−−−−−−→
4 1 2 10 0 −2 −8 −10 −20
4 1 2 3 10 0 −7 −10 −13 −30
1 2 3 4 10 1 2 3 4 10
L 3 ←L 3 −2L 2
0 −1 −2 −7 −10 0 −1 −2 −7 −10
L 4 ←L 4 −7L 2
−−−−−−−−→ −L−4−
←L 4 +L 3
−−−−→
0 0 −4 4 0 0 0 −4 4 0
0 0 4 36 40 0 0 0 40 40
donc
x 1 + 2x 2 + 3x 3 + 4x 4 = 10
−x − 2x − 7x = −10
2 3 4
=⇒ x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.
−4x 3 + 4x 4 = 0
40x 4 = 40
66 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
A=[6 1 1; 2 4 0; 1 2 6] A=[1 2 3 4; 2 3 4 1; 3 4 1 2; 4 1 2 3]
b=[12; 0; 6] b=[10; 10; 10; 10]
A\b A\b
Exercice 3.40
Soit le système linéaire
2x 1 − x 2 − 3x 3 = 0,
(S) −x 1 + 2x 3 = 0,
2x 1 − 3x 2 − x 3 = 0.
Correction
2x 1 − x 2 − 3x 3 = 0,
2x 1 − x 2 − 3x 3 = 0,
L 2 ←L 2 +L 1 /2
2x 1 − x 2 − 3x 3 = 0,
L 3 ←L 3 −L 1 L 3 ←L 3 −4L 2
−x 1 + 2x 3 = 0, −−−−−−−−−→ −1/2x 2 + 1/2x 3 = 0, −−−−−−−−→ −1/2x 2 + 1/2x 3 = 0,
2x 1 − 3x 2 − x 3 = 0. −2x 2 + 2x 3 = 0, 0 = 0,
Le système est compatible car le rang du système est 2 inférieur au nombre d’inconnues 3 et la solution n’est pas unique car
rg(S) < 3. Il admet une infinité de solutions de la forme (2κ, κ, κ), κ ∈ R.
Que dit Octave ?
>> [2,-1,-3;-1,0,2;2,-3,-1]\[0;0;0]
warning: matrix singular to machine precision
Exercice 3.41
Trouver toutes les solutions du système linéaire homogène
−3x 1 + x 2 + 2x 3 = 0,
(S) −2x 1 + 2x 3 = 0,
−11x 1 + 6x 2 + 5x 3 = 0.
Correction
Le système étant homogène, il est inutile d’écrire le terme source dans la méthode du pivot de G AUSS :
−3 1 2 L 2 ←L 2 −2L 1 /3 −3 1 2 −3 1 2
L 3 ←L 3 −11L 1 /3 L 3 ←L 3 +7L 2 /2
A = −2 0 2 −−−−−−−−−−→ 0 −2/3 /3 −−−−−−−−−−→ 0
2
−2/3 /3
2
−11 6 5 0 7
/3 −7/3 0 0 0
Exercice 3.42
Équilibrer la réaction
Zn + H2 SO4 + K2 Cr2 O7 → KCr(SO4 )2 + ZnSO4 + H2 O.
Correction
Écrivons les coefficients stœchiométriques et les contraintes :
1. Atomes de Zn : x 1 = x 5 , i.e. x 1 − x 5 = 0
2. Atomes de H : 2x 2 = 2x 6 , i.e. x 2 − x 6 = 0
3. Atomes de S : x 2 = 2x 4 + x 5 , i.e. x 2 − 2x 4 − x 5 = 0
4. Atomes de K : 2x 3 = x 4 , i.e. 2x 3 − x 4 = 0
5. Atomes de Cr : 2x 3 = x 4 , i.e. 2x 3 − x 4 = 0
© 2018-2019ÉÀ G. Faccanoni 67
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
6. Atomes de O : 4x 2 + 7x 3 = 8x 4 + 4x 5 + x 6 , i.e. 4x 2 + 7x 3 − 8x 4 − 4x 5 − x 6 = 0
Notons que la contrainte 2x 3 − x 4 = 0 est répétée deux fois, donc on ne l’écrira qu’une seule fois dans le système linéaire ;
cela donne 5 équations pour 6 inconnues. Fixons arbitrairement un des coefficients, par exemple x 6 = 1 ; on obtient alors le
système linéaire
1 0 0 0 −1 x 1 0
0 1 0 0 0 x 2 1
0 1 0 −2 −1 x 3 = 0
0 0 2 −1 0 x 4 0
0 4 7 −8 −4 x 5 1
ce qui donne
1 0 0 0 −1 0 1 0 0 0 −1 0 1 0 0 0 −1 0
0 1 0 0 0 1 L 3 ←L 3 −L 2
L 5 ←L 5 −4L 2 0 1 0 0 0 1
L 3 ↔L 4 0 1 0 0 0 1
0 1 0 −2 −1 0 −−−−−−−−→
0 0 0 −2 −1 −1 −−−−−→
0 0 2 −1 0 0
0 0 2 −1 0 0 0 0 2 −1 0 0 0 0 0 −2 −1 −1
0 4 7 −8 −4 1 0 0 7 −8 −4 −3 0 0 7 −8 −4 −3
1 0 0 0 −1 0 1 0 0 0 −1 0
0 1 0 0 0 1 0 1 0 0 0 1
L 5 ←L 5 − 27 L 3
L 5 ←L 5 − 9 L 4
4
−−−−−−−−→ 0 0 2 −1 0 0 −−−−−−−−→ 0 0 2 −1 0 0
0 0 0 −2 −1 −1 0 0 0 −2 −1 −1
0 0 0 − 92 −4 −3 0 0 0 0 − 47 − 34
Correction
Il s’agit de trouver les trois coefficients m, a, i ∈ [0; 1] tels que
7m + 12a + 6i = 8,
11m + 6a + 10i = 9,
11m + 16a + 14i = 14.
68 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Une autre interprétation est la suivante : il s’agit de trouver les trois coefficients m, a, i ∈ [0; 1] tels que
7m + 12a + 6i = 8(m + a + i )
11m + 6a + 10i = 9(m + a + i ),
11m + 16a + 14i = 14(m + a + i ).
qui admet une infinité de solutions de la forme (2κ, 3κ, 5κ) avec κ ∈ [0; 1/5].
S M L XL
Tissu rouge 0.4 0.5 0.6 0.7
Tissu bleu 1 1.1 1.2 1.3
Doublure 1.5 1.7 1.9 2.1
Chaque tissu est tissé à l’aide de plusieurs types de fil : coton, polyester et polyamide. Le tableau suivant résume les
mètres de fil de chaque type nécessaires par mètre carré de tissu :
1. L’entreprise veut produire s manteaux taille S, m manteaux taille M, ` manteaux taille L et x manteaux taille XL.
Quelle quantité de fil de chaque catégorie doit-elle commander ? Répondre à cette question dans le langage des
matrices.
2. En fin d’année, l’entreprise veut écouler entièrement ses stocks de fils. Il lui reste 100 000 m de coton et de
polyamide, et 20 000 m de Polyester. Peut-elle transformer entièrement ses stocks de fils en manteaux ?
Correction
Introduisons les deux matrices A et B et les deux vecteurs u et v suivants
s
0.4 0.5 0.6 0.7 500 400 1000 m c
A= 1 1.1 1.2 1.3 B = 1000 900 700 u=
`
v = a
1.5 1.7 1.9 2.1 500 600 0 e
x
1. Pour produire s manteaux taille S, m manteaux taille M, ` manteaux taille L et x manteaux taille XL, l’entreprise doit
commander c mètres de coton, a mètres de polyamide et e mètres de polyester où c, a, e sont les entrées du vecteur v
suivant :
2100s + 2390m + 2680` + 2970x
v = BAu = 2350s + 2680m + 3010` + 3340x .
800s + 910m + 1020` + 1130x
© 2018-2019ÉÀ G. Faccanoni 69
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
s
2100 2390 2680 2970 100000
2350 m
2680 3010 3340
` = 100000 .
800 910 1020 1130 20000
x
s
100000
2100 2390 2680 2970
0 115 230 m
115 250000
21 21 7 ` = − 21
0 0 0 0 − 440000
23
x
Exercice 3.45
Soit le système linéaire
(
x − αy = 1,
(S)
αx − y = 1.
Déterminer les valeurs de α de telle sorte que ce système possède :
1. une infinité de solutions ;
2. aucune solution ;
3. une solution unique.
Correction
µ ¶ µ ¶
1 −α 1 L 2 ←L 2 −αL 1 1 −α 1
−−−−−−−−→ .
α −1 1 0 −1 + α2 1−α
Exercice 3.46
Soit le système linéaire
(
x + αy = 1,
(S)
−αx − y = 1.
En utilisant le pivot de G AUSS, déterminer les valeurs de α ∈ R de telle sorte que ce système possède :
a) une infinité de solutions ;
b) aucune solution ;
c) une solution unique.
Correction
½ ½
x+αy=1 L 2 ←L 2 +αL 1 x +αy=1
−−−−−−−−→
−αx −y=1 (−1 + α2 )y=α + 1
70 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
a) si α = −1 (i.e. la dernière équation correspond à 0 = 0) alors (S) possède une infinité de solutions,
b) si α = 1 (i.e. la dernière équation correspond à 0 = 2) alors (S) ne possède aucune solution,
1 1
c) si α 6∈ { −1; 1 } alors (S) possède une solution unique x = − α−1 et y = α−1 .
Exercice 3.47
Soit le système linéaire
x + y − z = 1,
(S) 2x + 3y + βz = 3,
x + βy + 3z = −3.
Correction
1 1 −1 1 L 2 ←L 2 −2L 1 1 1 −1 1 1 1 −1 1
L 3 ←L 3 −L 1 L 3 ←L 3 +(1−β)L 2
2 3 β 3 −−−−−−−−→ 0 1 β+2 1 −−−−−−−−−−−→ 0 1 β+2 1 .
1 β 3 −3 0 β−1 4 −4 0 0 (6 − β − β2 ) −(3 + β)
Exercice 3.48
Trouver les valeurs de κ ∈ R pour lesquelles le système suivant a un nombre respectivement fini et infini de solutions :
2x 1 − x 2 = κ,
x 1 − x 2 − x 3 = 0,
x 1 − κx 2 + κx 3 = κ.
Correction
κ κ κ
2 −1 0 L 2 ←L 2 −L 1 /2 2 −1 0 2 −1 0
L 3 ←L 3 −L 1 /2 L 3 ←L 3 +(1−2κ)L 2
1 −1 −1 0 −−−−−−−−−→ 0 −1/2 −1 −κ/2 −−−−−−−−−−−−→ 0 −1/2 −1 −κ/2 .
1 −κ κ κ 0 −κ + 1/2 κ κ/2 0 0 3κ − 1 κ2
On conclut que
1
1. si κ = 3 alors (S) ne possède aucune solution,
1 κ2 −κ/2+x 3 κ(κ−1) κ+x 2 κ(2κ−1)
2. si κ 6= 3 alors (S) possède une solution unique donnée par x 3 = 3κ−1 , x2 = −1/2 = 3κ−1 et x 1 = 2 = 3κ−1 ,
3. il n’existe aucune valeur de κ pour que (S) possède une infinité de solutions.
Exercice 3.49
Résoudre le système linéaire en discutant suivant la valeur du paramètre a ∈ R :
x + 2y + 3z = 2,
x − y + 2z = 7,
3x + az = 10.
© 2018-2019ÉÀ G. Faccanoni 71
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Correction
Si on utilise la méthode de G AUSS on trouve
1 2 3 2 L 2 ←L 2 −L 1 1 2 3 2 1 2 3 2
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
[A|b] = 1 −1 2 7 −−−−−−−−→ 0 −3 −1 5 −−−−−−−−→ 0 −3 −1 5 .
3 0 a 10 0 −6 a −9 4 0 0 a −7 −6
On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent
x + 2y + 3z = 2,
−3y − z = 5,
(a − 7)z = −6.
Par conséquent,
−6 5+z 5a − 41 2(8a − 35)
? si a 6= 7, z = ,y= = et x = 2 − 2y − 3z = est l’unique solution du système linéaire ;
a −7 −3 −3(a − 7) 3(a − 7)
? si a = 7 il n’y a pas de solutions du système linéaire.
Exercice 3.50
En utilisant la méthode de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre a ∈ R :
x − y + 2z = 7,
x + 2y + 3z = 2,
3x + az = 10.
Correction
1 −1 2 7 L 2 ←L 2 −L 1 1 −1 2 7 1 −1 2 7
L 3 ←L 3 −3L 1 L 3 ←L 3 −L 2
1 2 3 2 −−−−−−−−→ 0 3 1 −5 −−−−−−−→ 0 3 1 −5 .
3 0 a 10 0 3 a −6 −11 0 0 a −7 −6
On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent
x − y + 2z = 7,
3y + z = −5,
(a − 7)z = −6.
Par conséquent,
−6 −5 − z −5a + 41 2(8a − 35)
? si a 6= 7, z = ,y= = et x = 7 − y − 2z = est l’unique solution du système linéaire ;
a −7 3 3(a − 7) 3(a − 7)
? si a = 7 il n’y a pas de solutions du système linéaire.
Exercice 3.51
En utilisant la méthode du pivot de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre
a ∈R:
x + z + w = 0,
ax + y + (a − 1)z + w = 0,
2x + a y + z + 2w = 0,
x − y + 2z + aw = 0.
Correction
Il s’agit d’un système homogène, il est alors inutile d’écrire le terme source dans la méthode du pivot de G AUSS. En appliquant
cette méthode on obtient
L ←L −aL
1 0 1 1 1 0 1 1 1 0 1 1
2 2 1
L 3 ←L 3 −2L 1 L 3 ←L 3 −aL 2
a 1 a −1 1 0 1 −1 1 − a 0 1 −1 1−a
−L−4−←L 4 −L 1
−−−−−→ −L−4−←L 4 +L 2
−−−−−→ .
2 a 1 2 0 a −1 0 0 0 a − 1 a(a − 1)
1 −1 2 a 0 −1 1 a − 1 0 0 0 0
72 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent
x + z + w = 0,
y − z + (1 − a)w = 0,
(a − 1)z + a(a − 1)w = 0,
0 = 0.
Exercice 3.52
En utilisant la méthode du pivot de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre
b∈R:
x + z + w = 0,
(b + 1)x + y + bz + w = 0,
2x + (b + 1)y + z + 2w = 0,
x − y + 2z + (b + 1)w = 0.
Correction
Il s’agit d’un système homogène, il est alors inutile d’écrire le terme source dans la méthode du pivot de G AUSS. En appliquant
cette méthode on obtient
L ←L −(b+1)L
1 0 1 1 1 0 1 1 1 0 1 1
2 2 1
L 3 ←L 3 −2L 1 L 3 ←L 3 −(b+1)L 2
b +1 1 b 1 0 1 −1 −b 0 1 −1 −b
−L−4−←L 4 −L 1 L 4 ←L 4 +L 2
−−−−−−−−→ 0 b + 1 −1 0 −−−−−−−−−−−→ 0 0 b b(b + 1) .
2 b +1 1 2
1 −1 2 b +1 0 −1 1 b 0 0 0 0
On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent
x + z + w = 0,
y − z − bw = 0,
bz + b(b + 1)w = 0,
0 = 0.
Exercice 3.53
Discuter et résoudre le système
(1 + a)x + y + z = 0,
(S a ) x + (1 + a)y + z = 0,
x + y + (1 + a)z = 0,
Correction
Comme le système contient un paramètre, on commence par calculer le déterminant de la matrice associée :
¯ ¯
¯1 + a 1 1 ¯¯
1 ¯¯ = (1 + a)3 + 1 + 1 − (1 + a) − (1 + a) − (1 + a) = (1 + a)3 − 3(1 + a) + 2
¯
¯ 1
¯ 1+a
¯ 1 1 1 + a¯
© 2018-2019ÉÀ G. Faccanoni 73
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
³ ´³ ´ ³ ´³ ´³ ´
= (1 + a) − 1 (1 + a)2 + (1 + a) − 2 = (1 + a) − 1 (1 + a) + 2 (1 + a) − 1 = a 2 (3 + a).
Le système a une et une seule solution si et seulement si ce déterminant est non nul, donc
donc z = κ ∈ R, y = z et x = z, ainsi
S = { (κ, κ, κ) | κ ∈ R } .
S = (−κ1 − κ2 , κ2 , κ1 ) ¯ (κ1 , κ2 ) ∈ R2 .
© ¯ ª
? Étude du cas a ∈ R \ { −3, 0 }. Il s’agit d’un système de Cramer homogène, donc l’unique solution est (0, 0, 0) :
S = { (0, 0, 0) } .
Exercice 3.54
Discuter et résoudre le système
x + a y + (a − 1)z = 0,
(S a ) 3x + 2y + az = 3,
(a − 1)x + a y + (a + 1)z = a,
Correction
Comme le système contient un paramètre, on commence par calculer le déterminant de la matrice associée :
¯ ¯
¯ 1 a a − 1¯¯
a ¯¯ = 2(a + 1) + a 2 (a − 1) + 3a(a − 1) − 2(a − 1)2 − a 2 − 3a(a + 1) = a 2 (a − 4).
¯
¯ 3 2
¯
¯a − 1 a a + 1¯
Le système a une et une seule solution si et seulement si ce déterminant est non nul, donc
74 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
3−3κ
donc z = κ ∈ R, y = 2 et x = κ, ainsi
½µ ¶¯ ¾
3 − 3κ
S = κ, ,κ ¯ κ ∈ R .
¯
¯
2
4 a−6 a 2 −2a−4
On obtient z = − a(a−4) , y = − a(a−4) ,x= a(a−4) , ainsi
a 2 − 2a − 4 a −6
½µ ¶¾
4
S= ,− ,− .
a(a − 4) a(a − 4) a(a − 4)
Correction
L 1 ←L 1
1 0 −1 1 0 0 L 2 ←L 2 −4L 1 1 0 −1 1 0 0
L 3 ←L 3 +2L 1
[A|I3 ] = 4 −1 −2 0 1 0 −−−−−−−−→ 0 −1 2 −4 1 0
−2 0 1 0 0 1 0 0 −1 −2 0 1
L 1 ←L 1 L 1 ←L 1 −L 3
L 2 ←−L 2 1 0 −1 1 0 0 L 2 ←L 2 −2L 3 1 0 0 −1 0 −1
L 3 ←L 3 L 3 ←−L 3
−−−−−−→ 0 1 −2 4 −1 0 −−−−−−−−→ 0 1 0 0 −1 −2 = [I3 |A−1 ].
0 0 −1 −2 0 1 0 0 1 −2 0 −1
Exercice 3.56 ³1 0 1´
Calculer A−1 où A est la matrice 012 .
201
© 2018-2019ÉÀ G. Faccanoni 75
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Correction
L 1 ←L 1
1 0 1 1 0 0 L 2 ←L 2 1 0 1 1 0 0
L 3 ←L 3 −2L 1
[A|I3 ] = 0 1 2 0 1 0 −−−−−−−−→ 0 1 2 0 1 0
2 0 1 0 0 1 0 0 −1 −2 0 1
L 1 ←L 1 L 1 ←L 1 +L 3
L 2 ←L 2 1 0 1 1 0 0 L 2 ←L 2 +2L 3 1 0 0 −1 0 1
L 3 ←L 3 L 3 ←−L 3
−−−−−→ 0 1 2 0 1 0 −−−−−−−−→ 0 1 0 −4 1 2 = [I3 |A−1 ].
0 0 −1 −2 0 1 0 0 1 2 0 −1
A=[1 0 1; 0 1 2; 2 0 1]
inv(A)
Exercice 3.57
Calculer les inverses des matrices suivantes (si elles existent) :
µ ¶ 1 5 −3 1 5 −3
2 −3
A= , B = 2 11 1 , C = 2 11 1 .
4 5
2 9 −11 1 4 −10
Correction
A est inversible et on trouve
µ ¶
−1 1 5 3
A = .
22 −4 2
B est inversible et on trouve
−130 28 38
1
B−1 = 24 −5 −7 .
2
−4 1 1
C n’est pas inversible.
A=[2 -3; 4 5]
inv(A)
B=[1 5 -3; 2 11 1; 2 9 -11]
inv(B)
C=[1 5 -3; 2 11 1; 1 4 -10]
inv(C)
Exercice 3.58
Soit A la matrice
1 0 0 −1
1 1 −1 −1
A=
1
.
2 −1 −2
1 2 0 −2
1. Calculer det(A).
6 0, calculer A−1 .
2. Si det(A) =
Correction
1. Pour calculer le déterminant de la matrice A on développe par rapport à la première ligne
³ 1 −1 −1 ´ ³ 1 1 −1 ´
det(A) = 1 · det(A11 ) − 0 · det(A12 ) + 0 · det(A13 ) − (−1) · det(A14 ) = det 2 −1 −2 + det 1 2 −1 .
2 0 −2 12 0
On note que la première colonne de la sous-matrice A11 est l’opposée de la deuxième colonne, ainsi le déterminant
de A11 est nul et il ne reste plus qu’à calculer le déterminant de A14 (par exemple en utilisant la règle de S ARRUS).
³ 1 1 −1 ´
det(A) = 0 + det 1 2 −1 = 1.
12 0
76 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
2. Calculons A−1
L ←L −L
1 0 0 −1 1 0 0 0 1 0 0 −1 1 0 0 0
2 2 1
L 3 ←L 3 −L 1
1 1 −1 −1 0 1 0 0 L 4 ←L 4 −L 1
0 1 −1 0 −1 1 0 0
[A|I4 ] =
1 −−−−−−−→
2 −1 −2 0 0 1 0 0 2 −1 −1 −1 0 1 0
1 2 0 −2 0 0 0 1 0 2 0 −1 −1 0 0 1
L 1 ←L 1
L ←L
1 0 0 −1 1 0 0 0 1 0 0 −1 1 0 0 0
1 1
L 3 ←L 3 −2L 2 L 2 ←L 2 +L 3
L 4 ←L 4 −2L 2 0 1 −1 0 −1 1 0 0 L 4 ←L 4 −2L 3
0 1 0 −1 0 −1 1 0
−−−−−−−−→ 0
−−−−−−−−→
0 1 −1 1 −2 1 0 0 0 1 −1 1 −2 1 0
0 0 2 −1 1 −2 0 1 0 0 0 1 −1 2 −2 1
L 1 ←L 1 +L 4 1 0 0 0 0 2 −2 1
L 2 ←L 2 +L 4
L 3 ←L 3 +L 4 0 1 0 0 −1 1 −1 1
= [I4 |A−1 ].
−−−−−−−→
0 0 1 0 0 0 −1 1
0 0 0 1 −1 2 −2 1
d’inconnue (x, y, z) ∈ R3 .
Correction
(S) est équivalent au système
(
−2x + y + z = 0,
−3y + 3z = 0,
qui admet une infinité de solutions de la forme (κ, κ, κ) pour κ ∈ R.
Exercice 3.60
Soit le système linéaire
(
x 1 + x 2 − 2x 3 + 4x 4 = 6,
(S)
−3x 1 − 3x 2 + 6x 3 − 12x 4 = b.
1. Pour quelle valeur de b le système est-il possible ?
2. Donner à b la valeur trouvée au point précédent et calculer la solution complète du système.
Correction
(S) est équivalent au système
(
x 1 + x 2 − 2x 3 + 4x 4 = 6,
0 = b + 18.
1. (S) est possible si et seulement si b = −18.
2. Si b = −18, (S) admet ∞3 solutions de la forme (x 1 , x 2 , x 3 , x 4 ) = (6 − a + 2b − 4c, a, b, c) avec a, b, c ∈ R.
© 2018-2019ÉÀ G. Faccanoni 77
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Exercice 3.61
Résoudre le système
x + 2y + z = −1,
2x + y − z = 1,
(S)
−x + y + 2z = −2,
x + y + z = 4.
Correction
(S) étant un système de 4 équations à 3 inconnues, on considère le sous-système carré d’ordre 3
x + 2y + z = −1,
(S 0 ) 2x + y − z = 1,
−x + y + 2z = −2,
qui admet une infinité de solutions de la forme (1+κ, −1−κ, κ) pour κ ∈ R. Cherchons parmi ces solutions celles qui vérifient
l’équation de (S) qui n’apparaît pas dans (S 0 ) : pour (x, y, z) = (1 + κ, −1 − κ, κ) on a x + y + z = 1 + κ − 1 − κ + κ = κ donc
x + y + z = 4 si et seulement si κ = 4 ainsi (S) admet l’unique solution (5, −5, 4).
Exercice 3.62
Déterminer si le système suivant a une solution non nulle. Dans le cas affirmatif trouver la(les) solution(s) et expliquer
pourquoi :
x − 2y + 2z = 0,
2x + y − 2z = 0,
(S)
3x + 4y − 6z = 0,
3x − 11y + 12z = 0.
Correction
(S) étant un système de 4 équations à 3 inconnues, on considère le sous-système carré d’ordre 3
x − 2y + 2z = 0,
(S 0 ) 2x + y − 2z = 0,
3x + 4y − 6z = 0,
qui admet une infinité de solutions de la forme (2κ, 6κ, 5κ) pour κ ∈ R. Cherchons parmi ces solutions celles qui vérifient
l’équation de (S) qui n’apparaît pas dans (S 0 ) : pour (x, y, z) = (2κ, 6κ, 5κ) on a 3x − 11y + 12z = 6κ − 66κ + 60κ = 0 donc
3x − 11y + 12z = 0 pour tout κ ∈ R ainsi (S) admet une infinité de solutions de la forme (2κ, 6κ, 5κ) pour κ ∈ R.
Exercice 3.63
Équilibrer l’équation
78 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
Correction
Méthode “par tentatives”. Chaque élément chimique en jeu fournit une équation :
On a alors
(3.1) (3.2)
x1 = x4 = x6 , (3.8)
(3.3) (3.4)
x2 = x5 = x7 , (3.9)
(3.5) (3.8)
x 3 = x 5 + x 7 = 2x 2 (3.10)
De plus
(3.6) (3.8)
x 8 = 3x 2 − 4x 4 = 3x 2 − 4x 1 (3.11)
(3.7) (3.8)
2x 8 = x 3 − x 1 = 2x 2 − x 1 (3.12)
(3.12) (3.11)
2x 2 − x 1 = 2x 8 = 2(3x 2 − 4x 1 )
Cela donne
4x 2 = 7x 1 (3.13)
d’où
(3.12) (3.13)
4x 8 = 2(2x 2 − x 1 ) = 4x 2 − 2x 1 = 7x 1 − 2x 1 = 5x 1 (3.14)
Enfin on a
(3.7) (3.8)−(3.14)
2x 3 = 2(x 6 + 2x 8 ) = 2x 1 + 5x 1 = 7x 1
Conclusion :
7
x2 = x1
4
7
x3 = x1
2
x4 = x1
7
x5 = x2 = x1
4
x6 = x1
7
x7 = x2 = x1
4
5
x8 = x1
4
On choisit x 1 = 4 (pour ne pas avoir de fractions) ainsi
© 2018-2019ÉÀ G. Faccanoni 79
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
x 8 −3x 7
On pose donc x 8 = 5κ ainsi x 7 = 75 x 8 = 7κ, x 6 = −4 = 4κ, x 5 = x 7 = 7κ, x 4 = x 6 = 4κ, x 3 = x 5 + x 7 = 14κ, x 2 = x 7 = 7κ
et x 1 = x 4 = 4κ.
On peut choisir par exemple κ = 1 et on a
Les n + 1 valeurs réels a 0 , a 1 , . . . , a n sont appelés les coordonnées de p n dans la base canonique a de Rn [x] et on peut
les stocker dans un vecteur p :
p = coord(p n , C n ) = (a 0 , a 1 , a 2 , . . . , a n ) ∈ Rn+1
Dans Octave nous utiliserons le vecteur p pour manipuler un polynôme et nous construirons des fonctions pour opérer
sur les polynômes à partir de cette représentation. Par exemple, pour construire le polynôme p 2 (x) = 2 − x + x 2 nous
écrirons
80 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
p=[2 -1 1]
Dans le script script_pol.m on écrira les instructions utilisées pour tester les function suivantes :
1. Implémenter une fonction appelée eval_pol permettant d’évaluer le polynôme p (la fonction polynomiale)
en des points donnés. La syntaxe doit être function y=eval_pol(p,x) où x est une valeur numérique ou
un vecteur. Dans le second cas on doit obtenir un vecteur contenant les valeurs de la fonction polynomiale
aux différents points spécifiés dans le vecteur x. Par exemple, pour évaluer le polynôme p(x) = 1 + 2x + 3x 2 en
x = (−1, 0, 1, 2) nous écrirons
p=[1 2 3]
y=eval_pol(p,[-1,0,1,2])
2. Implémenter une fonction appelée plot_pol prenant en entrée un polynôme p (i.e. le vecteur qui contient
ses coordonnées) et deux réels a et b > a et qui trace le graphe de p pour x ∈ [a, b]. La syntaxe de l’instruction
doit être plot_pol(p,a,b). Par exemple, pour tracer le graphe du polynôme p(x) = 1 + 2x + 3x 2 sur l’intervalle
[−2; 2] nous écrirons
p=[1 2 3]
plot_pol(p,-2,2)
3. Implémenter une fonction appelée sum_pol renvoyant la somme de deux polynômes (attention, si les deux
polynômes n’ont pas même degré, il faudra ajouter des zéros en fin du polynôme de plus petit degré afin de
pouvoir calculer l’addition des deux vecteurs représentatifs). Par exemple, pour p = (1, 2, 3) et q = (1, −2), on veut
obtenir s = (2, 0, 3) :
5. Implémenter une fonction appelée derivee_pol renvoyant la dérivée d du polynôme p donné en entrée
(attention, si p ∈ Rn [x], alors d ∈ Rn−1 [x]).
Exemple, pour p = (1, 2, 6), on veut obtenir d = (2, 12).
6. Implémenter une fonction appelée primitive_pol renvoyant la primitive v du polynôme p donné en entrée
ayant 0 pour racine (attention, si p ∈ Rn [x], alors v ∈ Rn+1 [x]).
Exemple, pour p = (1, 2, 6), on veut obtenir v = (0, 1, 1, 2).
© 2018-2019ÉÀ G. Faccanoni 81
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
7. Implémenter une fonction appelée integrale_pol renvoyant l’intégrale d’un polynôme entre deux valeurs a et
b.
Exemple, pour p = (1, 2, 6), a = 1 et b = 2, on veut obtenir c = 18 :
p(x) = 1 + 2x + 6x 2
Z b Z b Z a
c= p(t ) dt = p(t ) dt − p(t ) dt = v(b) − v(a) = b + b 2 + 2b 3 − a − a 2 − 2a 3 = 18.
a 0 0
8. Implémenter une fonction appelée print_pol prenant en entrée un polynôme p (i.e. le vecteur qui contient ses
coordonnées) et qui écrit dans la fenêtre de commande le polynôme dans la base canonique.
Exemple, pour p = (1, 2, −3, 0, 7), on veut afficher le message 1+2x-3x^2+7x^4.
a. La base canonique de l’espace vectoriel Rn [x] est l’ensemble C n = 1, x, x 2 , . . . , x n
© ª
Correction
Dans le fichier script_pol.m on écrit les instructions qui permettent de tester les différents points de cet exercice.
1. Dans le fichier eval_pol on écrit et on teste cette fonction par exemple comme suit
function [y]=eval_pol(p,x) y=eval_pol([1 2 3],[-1 0 1 2])
y=zeros(size(x));
for k=1:length(p)
y+=p(k)*x.^(k-1);
end
end
2. Dans le fichier plot_pol.m on écrit et on teste cette fonction par exemple comme suit
function plot_pol(p,a,b) plot_pol([-1 0 1],-2,2)
x=linspace(a,b,100);
y=eval_pol(p,x);
plot(x,y);
end
Dans le fichier sum_pol.m on écrit et on teste cette fonction par exemple comme suit
function s=sum_pol(p,q) s=sum_pol([1 2 3],[4 5 6])
n=length(p); s=sum_pol([1 2 3],[4 5])
m=length(q); s=sum_pol([1 2],[4 5 6])
A=zeros(2,max(n,m));
A(1,1:n)=p;
A(2,1:m)=q;
s=sum(A);
end
4. Dans le fichier prod_pol.m on écrit et on teste cette fonction par exemple comme suit
function s=prod_pol(p,q) u=prod_pol([1],[4 5 6])
n=length(p); u=prod_pol([1 2],[4 5 6])
m=length(q); u=prod_pol([1 2 3],[4 5 6])
A=zeros(m,n+m-1); u=prod_pol([1 2 3 4],[4 5 6])
for i=1:m
A(i,i:n+i-1)=q(i)*p;
end
s=sum(A);
end
82 © 2018-2019ÉÀ G. Faccanoni
Mis à jour le Mardi 21 janvier 2020 Chapitre 3 Exercices
5. Remarquons que
n n
ai x i d (x) = p 0 (x) = i a i x i −1
X X
p(x) =
i =0 i =0
coord(p, C n ) = (a 0 , a 1 , a 2 , . . . , a n ) coord (d , C n−1 ) = (a 1 , 2a 2 , . . . , na n )
Dans le fichier derivee_pol.m on écrit et on teste cette fonction par exemple comme suit
function d=derivee_pol(p) d=derivee_pol([1])
n=length(p); d=derivee_pol([1 2])
d=p(2:end).*(1:n-1); d=derivee_pol([1 2 3])
end d=derivee_pol([1 2 1 1])
6. Remarquons que
n x n x n x i +1
Z Z
ai x i t i dt =
X X X
p(x) = v(x) = p(t ) dt = ai ai
i =0 0 i =0 0 i =0 i +1
³ a0 a1 a2 an ´
coord(p, C n ) = (a 0 , a 1 , a 2 , . . . , a n ) coord (v, C n+1 ) = 0, , , ,...,
0+1 1+1 2+1 n +1
Dans le fichier primitive_pol.m on écrit et on teste cette fonction par exemple comme suit
function prim=primitive_pol(p) v=primitive_pol([1])
n=length(p); v=primitive_pol([1 2])
prim(1)=0; v=primitive_pol([1 2 3])
prim([2:n+1])=p([1:n])./[1:n]; v=primitive_pol([1 2 1 1])
end
7. Dans le fichier integrale_pol.m on écrit et on teste cette fonction par exemple comme suit
function integr=integrale_pol(p,a,b) w=integrale_pol([1 1], 1, 2)
prim=primitive_pol(p);
n=length(prim); % = 1+length(p)
aa([1:n])=a.^([0:n-1]);
prima=sum(prim.*aa);
bb([1:n])=b.^([0:n-1]);
primb=sum(prim.*bb);
integr=primb-prima;
end
8. Dans le fichier print_pol.m on écrit et on teste cette fonction par exemple comme suit
function str=print_pol(p) print_pol([1 2 -3 -7 5])
n=length(p); print_pol([1 0 -3 0 5])
str=’’; print_pol([1 2 -3 7])
if n==1; print_pol([1 2 -3])
str=strcat(num2str(p(1))); print_pol([1 2])
else print_pol([1])
strsign=char((p>0)*’+’ + (p<0)*’ ’ + (p==0)*
’0’);
if p(1)~=0
str=num2str(p(1));
end
if p(2)~=0
str=strcat(str,strsign(2),num2str(p(2)),
’x’);
end
for i=3:n
if p(i)~=0
str=strcat(str,strsign(i),num2str(p(i)),
’x^’,num2str(i-1));
end
end
end
end
© 2018-2019ÉÀ G. Faccanoni 83
Chapitre 3 Exercices Mis à jour le Mardi 21 janvier 2020
Exercice 3.65
Considérons un système linéaire sous la forme matricielle Ax = b où A est une matrice de Rn×n non singulière et b est
un vecteur colonne de Rn .
Implémenter une fonction appelée mygauss qui transforme la matrice augmentée [A|b] en une matrice triangulaire
supérieure par la méthode de G AUSS et, à chaque étape, affiche les opérations sur les lignes ainsi que la matrice
modifiée. Enfin, elle résout le système linéaire triangulaire par remontée.
La syntaxe doit être function [x]=mygauss(A,b)
Écrire un script appelé TESTmygauss.m pour tester cette fonction sur l’exemple suivant : pour
1 0 3 4
A = 2 2 2 b= 6
3 6 4 13
on doit obtenir
1
x = 1
1
Correction
Dans le fichier mygauss.m on écrit
function [x]=mygauss(A,b)
printf("Matrice augmentee : [A|b]\n")
Ab = [A,b]
[n,m]=size(A);
tol=1.0e-9;
for k=1:n-1
printf(strcat("\nEtape ",num2str(k),"\n"))
for i=k+1:n
L(i,k)=Ab(i,k)/Ab(k,k);
printf(strcat("\tL_",num2str(i)," <- L_",num2str(i)," - (",num2str(L(i,k)),") L_",num2str(k),"\
n"))
Ab(i,k:n+1)=Ab(i,k:n+1)-L(i,k)*Ab(k,k:n+1);
end
Ab
end
printf("\nResolution du systeme triangulaire ainsi obtenu\n")
U=triu(Ab(:,1:n));
y=Ab(:,n+1);
x(n)=y(n)/U(n,n);
for i=n-1:-1:1
x(i)=(y(i)-dot(U(i,i+1:n),x(i+1:n)))/U(i,i);
end
end
et on teste cette fonction par exemple comme suit
clear all
A=[1 0 3; 2 2 2; 3 6 4];
b=[4; 6; 13];
x=mygauss(A,b)’
% Pour verifier notre resultat on peut
% comparer au resultat d’Octave
xOctave=A\b
% ou verifier qua Ax=b
printf(strcat("||Ax-b||=",num2str(norm(A*x-b)),"\n"))
84 © 2018-2019ÉÀ G. Faccanoni