Cours et exercices

publicité
Outils pour l’ingénieur
(solutions des exercices)
Pierre Lemaire
[email protected]
Grenoble INP – Génie Industriel, 1A
2016–2017
2
Certains énoncés ont été repris ou adaptés d’autres cours ou ouvrages : ces énoncés sont
la propriété de leur auteurs respectifs et sont reproduits ici pour l’usage dans ce cours uniquement. Je remercie donc pour leurs contributions : N. Gaudin (exercices 2.1, 2.2), P. David
(exercices 5.4 et 5.5). L’exercice 2.3 est adapté d’exercices du baccalauréat 2011 (France métropolitaine).
c P. Lemaire, 2015, 2016.
Released under license CC-BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.
0/)
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Table des matières
I
Outils mathématiques
1
Dérivation et analyse de sensibilité
1.1 Dérivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Définition et interprétation . . . . . . . . . . . . . . .
1.1.2 Calcul des dérivées . . . . . . . . . . . . . . . . . . . .
1.1.3 Formules de Taylor et approximation d’une fonction
1.2 Références et ressources . . . . . . . . . . . . . . . . . . . . .
1.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3
4
5
Intégration
2.1 Intégration . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Définition et interprétation des intégrales
2.1.2 Calcul des intégrales . . . . . . . . . . . .
2.2 Références . . . . . . . . . . . . . . . . . . . . . .
2.3 Exercices . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
Algèbre et éléments propres d’une matrice
3.1 Rappels d’algèbre . . . . . . . . . . . . . . . . . . . .
3.1.1 Vecteurs et bases . . . . . . . . . . . . . . . .
3.1.2 Applications linéaires et matrices . . . . . . .
3.1.3 Cas des endomorphismes (matrices carrées)
3.1.4 Produits scalaires et normes . . . . . . . . . .
3.2 Éléments propres d’une matrice . . . . . . . . . . . .
3.3 Références . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . .
Algèbre de Boole
4.1 Algèbre de Boole . . . . . . . . . . . .
4.2 Fonctions logiques . . . . . . . . . . .
4.3 Systèmes logiques combinatoires . . .
4.4 Formes normales, formes canoniques
4.5 Tableaux de Karnaugh . . . . . . . . .
4.6 Références . . . . . . . . . . . . . . . .
4.7 Exercices . . . . . . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
8
9
10
.
.
.
.
.
15
15
15
15
16
16
.
.
.
.
.
.
.
.
23
23
23
23
24
25
25
26
27
.
.
.
.
.
.
.
37
37
37
38
39
40
42
43
4
5
II
6
TABLE DES MATIÈRES
Transformation de Laplace
5.1 Définition et propriétés fondamentales . . . . . . . . . . . . . . .
5.2 Transformées de Laplace usuelles . . . . . . . . . . . . . . . . . .
5.3 Transformation inverse . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Inverse de la transformée de Laplace . . . . . . . . . . .
5.3.2 Calcul pratique de l’inverse . . . . . . . . . . . . . . . . .
5.3.3 Calcul par décomposition par pôles . . . . . . . . . . . .
5.3.4 Utilisation pour la résolution d’équations différentielles
5.4 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Outils informatiques
GNU R
6.1 Une brève introduction à R . . . . . . . . . . . . . . . .
6.1.1 L’interpréteur de commandes . . . . . . . . . .
6.1.2 Types et variables . . . . . . . . . . . . . . . . .
6.1.3 Particularités du calcul vectoriel et matriciel .
6.1.4 Fonctions et éléments de programmation en R
6.1.5 Ressources complémentaires . . . . . . . . . .
6.1.6 Aide mémoire R . . . . . . . . . . . . . . . . . .
6.2 Prise en main de R (et RStudio) . . . . . . . . . . . . .
49
49
50
50
52
52
52
53
54
55
61
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
63
64
64
66
67
68
71
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Première partie
Outils mathématiques
5
C HAPITRE 1
Dérivation et analyse de sensibilité
1.1
1.1.1
Dérivation
Définition et interprétation
Définition 1.1. Taux d’accroissement. Soit f une fonction à valeurs réelles, définie sur un intervalle I. Soit x0 ∈ I et soit h tel que x0 + h ∈ I. On appelle taux d’accroissement de f en x0 avec
(x0 )
un pas h la quantité : f (x0 +h)−f
.
h
Définition 1.2. Dérivabilité et fonctions dérivées. Soit f une fonction à valeurs réelles, définie
sur un intervalle I. Soit x0 ∈ I. Si le taux d’accroissement en x0 admet une limite finie lorsque h
tend vers 0, alors la fonction f est dite dérivable en x0 . Dans ce cas, on définit le nombre dérivé
(x0 )
de f en x0 : f 0 (x0 ) = limh→0 f (x0 +h)−f
.
h
La fonction dérivée (ou simplement dérivée) de f est la fonction : x 7→ f 0 (x) (définie partout
où le nombre dérivé est défini). Si la fonction dérivée est elle-même dérivable, alors la dérivée de la
dérivée de f s’appelle dérivée seconde de f .
Définition 1.3. Classe d’une fonction. Une fonction continue est dite de classe C 0 . Une fonction dérivable dont la dérivée est continue dite de classe C 1 . Plus généralement, une fonction n fois
dérivable dont la dérivée n-ième est continue est dite de classe C n .
La dérivée est une notion mathématique qui permet de mesurer, localement, la pente
d’une fonction. Ainsi, un taux d’accroissement représente la pente moyenne (entre x0 et
x0 +h) tandis que la dérivée en x0 représente la pente instantanée. C’est un indicateur simple
mais précieux dont l’existence garantit que la fonction est régulière et qui permet même de
connaître le sens de variation de f autour de x0 :
Proposition 1.1. Soit une fonction f . Si f est dérivable en x0 , alors elle est continue en x0 . De
plus, si f 0 (x0 ) > 0 alors f est (localement) croissante en x0 ; si f 0 (x0 ) < 0 alors f est (localement)
décroissante en x0 .
7
8
1.1. Dérivation
1.1.2
Calcul des dérivées
Proposition 1.2. Dérivées des fonctions usuelles. (Table 1.1.)
Fonction
Domaine de
définition
k, k ∈ R (constante) R
xn , n ∈ N
R si n ≥ 0
R∗ si n < 0
α
x ,α ∈ R
R+∗
ex
R
ln(x)
R+∗
sin(x)
R
cos(x)
R
tan(x)
R\{ π2 + πZ}
Domaine de
dérivabilité
R
R si n ≥ 0
R∗ si n < 0
R+∗
R
R+∗
R
R
R\{ π2 + πZ}
Dérivée
0
n xn−1
α xα−1
ex
1
x
cos(x)
− sin(x)
1 + tan2 (x) =
1
cos2 (x)
TABLE 1.1 – Dérivées des fonctions usuelles
Proposition 1.3. Règles de calcul des dérivées.
— Soit λ ∈ R. Si f est dérivable sur I, alors λ f est dérivable sur I et (λ f )0 = λ f 0 .
— Si f et g sont deux fonctions dérivables sur I alors f +g est dérivable sur I et (f +g)0 = f 0 +g 0 .
— Si f et g sont deux fonctions dérivables sur I, alors f × g est dérivable sur I et (f × g)0 =
f 0g + f g0.
— Si f et g sont deux fonctions dérivables sur I et si g ne s’annule pas sur I, alors fg est dérivable
0
0
g
sur I et ( fg ) = f g−f
.
g2
— Si f est dérivable sur I, si g est dérivable sur J et si ∀x ∈ I, f (x) ∈ J ; alors g ◦f est dérivable
sur I et (g ◦ f )0 = f 0 × g 0 ◦ f .
1.1.3
Formules de Taylor et approximation d’une fonction
Théorème 1.1. Formules de Taylor Soit f une fonction de classe C n+1 sur un intervalle [a, b].
∀x ∈ [a, b], ∀h tel que x + h ∈ [a, b] : il existe ξ ∈ [min(x, x + h), max(x, x + h)] tel que :
f (x + h) =
n
X
hk
k=0
k!
f (k) (x) +
hn+1 (n+1)
f
(ξ)
(n + 1)!
Les formules de Taylor permettent d’approcher n’importe quelle fonction (suffisamment
dérivable) par un polynôme en h. Le degré de ce polynôme peut être choisit arbitrairement et
hn+1 (n+1)
l’erreur commise ( (n+1)!
f
(ξ)) est négligeable pour h «suffisamment petit». En particulier,
on a :
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 1. Dérivation et analyse de sensibilité
9
1
0.5
0
-0.5
-1
-1.5
0
0.5
1
1.5
2
F IGURE 1.1 – Approximations linéaire (verte) et quadratique (bleue) d’une fonction (rouge)
Définition 1.4. Approximation linéaire. L’approximation linéaire en x d’une fonction f , dérivable, est la droite d’équation y(h) = f (x + h) = f (x) + h f 0 (x).
Cette approximation peut aussi être déterminée directement à partir de la définition de
la dérivée. C’est la droite tangente à f en x, et c’est la droite qui «ressemble le plus à f » en x
(voir figure 1.1). On peut généraliser en considérant la parabole tangente à f en x :
Définition 1.5. Approximation quadratique. L’approximation quadratique en x d’une fonc2
tion f , deux fois dérivable, est la parabole d’équation y(h) = f (x + h) = f (x) + h f 0 (x) + h2 f 00 (x).
1.2
Références et ressources
— Dérivée (sur Wikipedia) : définitions et propriétés
— Histoire du calcul infinétismal (sur Wikipedia) : vision historique et construction de
la notion de dérivée
— WolframAlpha : ressources variées, y compris le calcul formel des dérivées
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
10
1.3. Exercices
1.3
Exercices
E XERCICE 1.1 : C ALCULS DE DÉRIVÉES
[1] Pour les fonctions ci-dessous, indiquez le domaine de définition, le domaine de dérivabilité
et calculez la fonction dérivée.
1. f1 (x) = x3 − 7x2 + 5x − 1.
5. f5 (x) = (2x − 3)(4x + 5).
2. f2 (x) = x2 + 3x + 1.
6. f6 (x) =
3. f3 (x) = (x2 + 3x + 1)3 .
7. f7 (x) = esin(x) .
√
8. f8 (x) = x2 − 1.
4. f4 (x) = 3x − 5 −
1
.
(1−3x)2
x2 −5x+7
.
3(x2 +1)
Solution —
1. f1 est définie et dérivable sur R (somme de fonctions dérivables) ; f10 (x) = 3x2 − 14x + 5
(la dérivée d’une somme est la somme des dérivées).
2. f2 est définie et dérivable sur R ; f20 (x) = 2x + 3.
3. f3 est définie et dérivable sur R ; f30 (x) = 3(2x + 3)(x2 + 3x + 1)2 . On remarque que
f3 (x) = f2 (x)3 et on applique [u(v(x))]0 = v 0 (x)u0 (v(x)) avec v(x) = f2 (x) et u(x) = x3 .
4. f4 est définie et dérivable sur R\{ 31 }. On peut ré-écrire f4 (x) = 3x − 5 − (1 − 3x)−2 , ce qui
donne, en dérivant terme à terme : f40 (x) = 3 − 0 − [−2(−3)(1 − 3x)−3 ], qui se simplifie
6
en f40 (x) = 3 − (1−3x)
3.
5. f5 est définie et dérivable sur R. En utilisant la formule de dérivation du produit u(x)v(x) =
u0 (x)v(x) + u(x)v 0 (x), on obtient f50 (x) = 2(4x + 5) + 4(2x − 3) = 16x − 2.
6. f6 est définie et dérivable sur R. f60 (x) =
5x2 −12x−5
.
3(x2 +1)2
7. f7 (x) = esin(x) est définie et dérivable sur R. f70 (x) = cos(x)esin(x) .
8. f8 (x) est définie sur ] − ∞; −1] ∪ [1; +∞[ et elle est dérivable sur ] − ∞; −1[∪]1; +∞[ car la
fonction racine est définie sur R+ et dérivable sur R+∗ . La fonction dérivée est f80 (x) =
√2x
= √xx2 −1 .
2 x2 −1
E XERCICE 1.2 : F ORMULES DE DÉRIVATION
[1] À partir du formulaire de dérivées, retrouvez les formules de dérivation suivantes :
p
u0 (x)
1. si f (x) = x1 , alors f 0 (x) = −1
.
5. si f (x) = u(x), alors f 0 (x) = √
.
x2
2 u(x)
√
2. si f (x) = x, alors f 0 (x) = 2√1 x .
3. si f (x) = ax , alors f 0 (x) = ax ln(a).
4. si f (x) =
1
,
u(x)
alors f 0 (x) =
−u0 (x)
.
u(x)2
6. si f (x)
=
u(x)
,
v(x)
alors f 0 (x)
=
u0 (x)v(x)−u(x)v 0 (x)
.
v(x)2
Solution —
1. f (x) =
1
x
= x−1 . On utilise le fait que la dérivée de xn est n xn−1 : f 0 (x) = −1 x−2 =
−1
.
x2
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 1. Dérivation et analyse de sensibilité
2. f (x) =
√
11
x = x1/2 . On utilise le fait que la dérivée de xn est n xn−1 : f 0 (x) =
1
2
x−1/2 =
1
√
.
2 x
3. f (x) = ax = exp(x ln(a)). La dérivée de l’exponentielle est ex , donc la dérivée de la
composée de l’exponentielle est (eu )0 = u0 eu , avec ici u = x ln(a), de dérivée ln(a). On
obtient bien f 0 (x) = ax ln(a).
1
−1
u(x) = u(x) , de
0 (x)
.
(−1)(u(x))−2 = −u
u(x)2
4. f (x) =
la forme v(u(x)), avec v(x) = x−1 . On obtient : f 0 (x) = u0 (x) ×
p
u(x), de la forme v(u(x)), avec v(x) = x1/2 . On obtient : f 0 (x) = u0 (x) ×
5. f (x) =
u0 (x)
1
−1/2 = √
.
2 (u(x))
2
6. f (x) =
u(x)
v(x) ,
u(x)
0
(x)
produit de u(x) par v(x)−1 , ce qui donne : f 0 (x) = u0 (x)(v(x)−1 ) + u(x) −v
v(x)2
(cf point 3). En réduisant au même dénominateur, cela donne f 0 (x) =
u0 (x)v(x)−u(x)v 0 (x)
.
v(x)2
E XERCICE 1.3 : S ENSIBILITÉ DE L’ INDICE DE MASSE CORPOREL
L’indice de masse corporel (IMC) est une grandeur couramment utilisée pour quantifier
la corpulence d’une personne. Le calcul de l’IMC est donné par :
IM C =
M
T2
où M est la masse de la personne (kg) et T et sa taille (m).
Différents seuils ont été définis par les médecins afin de qualifier la corpulence d’une
personne. Ce n’est pas le sujet de cet exercice ; nous allons plutôt nous préoccuper de la
sensibilité de cette grandeur à la précision des mesures effectuées.
[1] Déterminez la sensibilité (variation) de l’IMC pour des petites variations de taille et de
masse.
Solution — On calcule la différentielle :
dIM C =
∂IM C
∂IM C
1
2M
dM +
dT = 2 dM − 3 dT.
∂M
∂T
T
T
[2] Un adulte mesure 1,80m et pèse 70kg. Pour avoir un IMC précis, vaut-il mieux se tromper
de 1kg ou de 1cm ?
Solution — Pour cette personne, IM C = 21, 60.
Pour une variation de masse, la variation d’IMC est de 1/T 2 = 0, 31 (par kg) ; ajouter 1kg
fait augmenter l’IMC de 0,31 environ.
Pour une variation de taille, la variation d’IMC est de −2M/T 3 = −24 (par mètre), soit
−0, 24 par centimètre (tant que cette variation n’est pas trop grande) ; ajouter un centimètre
fait diminuer l’IMC de 0,24 environ.
Une erreur de 1kg a donc plus d’impact qu’une erreur de 1cm.
[3] Même question pour un enfant de 1,20m et 19kg.
Solution — L’IMC est de 13,19.
Pour une variation de masse, la variation d’IMC est 0, 69 (par kg). Pour une variation de
taille, la variation d’IMC est de −2M/T 3 = −22 (par mètre), soit −0, 22 par centimètre.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
12
1.3. Exercices
Une erreur de 1kg a donc beaucoup plus d’impact qu’une erreur de 1cm (l’erreur pour
1kg correspond à l’erreur pour 3cm).
[4] Pour une taille donnée, quel est le seuil de masse tel qu’une erreur de 1cm soit plus importante qu’une erreur d’1kg ?
1 2M
Solution — On cherche M tel que T12 ≤ 100
(ne pas oublier la conversion en cm), ce qui
T3
donne M ≥ 50T .
Pour l’adulte de 1,80m, une erreur de 1cm a plus d’effet qu’une erreur de 1kg si est
seulement si la masse est supérieure à 90kg.
Pour l’enfant de 1,20m, une erreur de 1cm a plus d’effet qu’une erreur de 1kg si et seulement si la masse est supérieure à 60kg. Pour un enfant ayant un développement normal, il
est donc toujours préférable d’avoir une mesure de masse précise.
E XERCICE 1.4 : M ODÈLE DE C OBB -D OUGLAS
En 1928, Charles Cobb (un statisticien) et Paul Douglas (un économiste) ont proposé de
modéliser le niveau de production Y obtenu selon la quantité de capital K et la quantité
de travail L utilisées avec la formule suivante : Y = cK α Lβ . Ils ont montré, statistiquement, qu’une telle fonction était en effet adaptée pour un grand nombre de situations (en
particulier, on peut ainsi modéliser le niveau de production de nombreuses entreprises, les
coefficients c, α et β étant seulement à adapter au secteur d’activité). Elle est depuis très utilisée en économie et
généralisée pour lier une «sortie» à des «facteurs» selon la formule
Qa été
αi
générique : Y = c i Xi , αi > 0. Le modèle de Cobb-Douglas implique toutefois des propriétés très fortes pour la situation représentée, que nous allons étudier ci-après, dans le cas
fréquent des deux facteurs K et L avec α = 1 − β, soit la fonction :
Y = cK α L(1−α)
avec α ∈]0; 1[.
Dans la suite, en plus de montrer formellement les propriétés demandées, vous commenterez leur signification par rapport à la situation modélisée.
[1] Montrez que les rendements d’échelle sont constants (si on multiplie toutes les entrées par
un certain facteur, la sortie est multipliée par ce même facteur).
Solution — Si on multiplie K et L par a alors le niveau de production obtenu est :
α (1−α) α (1−α)
c(aK)α (aL)(1−α) = cK
| L
{z } a
| a{z } = aY.
Y
a
On a bien un rendement d’échelle constant.
En pratique, cela signifie que les investissements (conjointement en capital et travail)
s’additionnent sans perte ni gain : il n’y a pas d’effet de congestion ni d’économies d’échelle.
[2] Déterminez les productivités marginales de chacun des facteurs (i.e. la variation de production pour une petite variation d’un facteur). Comment évoluent ces productivités marginales
lorsque l’un ou l’autre des facteurs varient ?
Solution —
Pour une variation dK de K, la variation dY est : dY =
la variation dY est : dY = ∂Y
∂L dL, avec :
∂Y
∂K dK
; pour une variation dL de L,
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 1. Dérivation et analyse de sensibilité
∂Y
= cα
∂K
L
K
(1−α)
13
∂Y
= c (1 − α)
∂L
K
L
α
dL.
(Rappel : α ∈]0; 1[ donc α > 0 et 1 − α > 0.) Lorsque K augmente, la productivité marginale
de K diminue et celle de L augmente ; de même lorsque L augmente, la productivité marginale de L diminue et celle de K augmente. En d’autres termes : la productivité marginale
d’un facteur diminue lorsque ce facteur augmente (rendement décroissant de chaque facteur), et augmente lorsque l’autre facteur augmente.
Ceci est confirmé par les dérivées secondes :
∂2Y
L(1−α)
=
c
α(α
−
1)
< 0.
| {z } K (2−α)
∂K 2
<0
∂2Y
Kα
=
c
α(α
−
1)
< 0.
| {z } L(1+α)
∂L2
<0
∂2Y
∂2Y
c α(1 − α)
=
= α (1−α) > 0.
∂L∂K
∂K∂L
L K
[3] Déterminez la substitution entre les facteurs (si un facteur varie, comment doit varier l’autre
pour que le niveau de production reste inchangé) ?
∂Y
dK +
Solution — Lorsque les deux facteurs varient, la variation dY est dY = ∂K
∂Y
∂Y
veut dY = 0 et on cherche donc à quelles conditions : ∂K dK = − ∂L dL.
∂Y
∂Y
dK = −
dL
∂K
∂L
∂Y
∂L dL.
Ici, on
α
L (1−α)
K
cα
dK = c (α − 1)
dL
K
L
(α − 1)K
dK
=
dL
αL
dK
dL
α
= (α − 1)
K
L
⇐⇒
⇐⇒
⇐⇒
Le ratio entre les variations relatives de K et L doit être de (α − 1)/α.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
C HAPITRE 2
Intégration
2.1
2.1.1
Intégration
Définition et interprétation des intégrales
Définition 2.1. Primitive. Soit f une fonction à valeurs réelles, continue sur un intervalle [a; b]. F
est une primitive de f si f est la fonction dérivée de F .
Définition 2.2. Intégrale. L’intégrale de f sur [a; b] est définie comme la quantité F (b) − F (a),
avec F une primitive de F quelconque.
Il existe une infinité de primitives pour une même fonction, qui ne différent que d’une
constante ; le choix de F ne change donc pas la valeur de l’intégrale. L’intégrale d’une fonction correspond à l’aire sous sa courbe (comptée positivement si la fonction est positive,
négativement sinon). Elle permet définir la valeur moyenne d’une fonction :
Définition 2.3. Moyenne d’une fonction. La moyenne de la fonction f sur un intervalle [a; b] est
Rb
1
définie par la quantité : b−a
f (x)dx.
a
2.1.2
Calcul des intégrales
Proposition 2.1. Primitives des fonctions usuelles. (Table 2.1.)
Fonction
Primitive Remarque Fonction
k ∈ R (const.) k x
ln(x)
xn+1
n
x
+C
n 6= −1
sin(x)
n+1
1
ln(|x|)
+
C
x
=
6
0
cos(x)
x
x
x
e
e +C
Primitive
Remarque
x ln(x) − x + C
− cos(x) + C
sin(x) + C
TABLE 2.1 – Primitives des fonctions usuelles. (c est une constante quelconque.)
15
16
2.2. Références
Proposition 2.2. Règles de calcul et propriétés des intégrales Soient f et g deux fonctions
continues
R a réels de I. R b
R a sur I et a, b, c trois
— a f (x)dx = 0 et b f (x)dx = − a f (x)dx
Rb
Rc
Rc
— relation de Chasles : a f (x)dx + b f (x)dx = a f (x)dx
Rb
Rb
Rb
— linéarité : a λ f (x) + µ g(x)dx = λ a f (x)dx + µ a g(x)dx
Rb
Rb
— si ∀x ∈ [a; b]f (x) ≤ g(x) alors a f (x)dx ≤ a g(x)dx
Proposition 2.3. Intégration par parties. Soient u et v deux fonctions de classe C 1 sur le segment
[a; b]. Alors :
Z b
Z b
0
b
u0 (x)v(x)dx.
u(x)v (x)dx = [u(x)v(x)]a −
a
a
Proposition 2.4. Changement de variable. Soient f une fonction continue et φ une fonction de
classe C 1 sur le segment [a; b] et dont l’image est contenu dans le domaine de de définition de f .
Alors :
Z b
Z φ(b)
f (φ(x))φ0 (x)dx
f (x)dx =
φ(a)
2.2
a
Références
— http://fr.wikipedia.org/wiki/Intégration_(mathématiques)
2.3
Exercices
E XERCICE 2.1 : C ALCUL D ’ INTÉGRALES
[1] Calculez les intégrales ci-dessous.
R1
R1
1. 0 x2 + 3x + 5dx.
4. 0 x2x+1 dx.
R1
2. 0 (x2 + 1)dx.
R π/2 cos(x)
Rπ
5. 0 1+sin(x)
dx
3. 0 x2 cos(x)dx.
6.
R3
7.
R2
dx
2 x(ln(x))3
1
(ln(x))p
dx
x
Solution —
R1
3
2
1. 0 x2 + 3x + 5dx = [ x3 + 3x2 + 5x]10 = (1/3 + 3/2 + 5) − (0) = 41
6 .
R1 2
x3
1
4
2. 0 (x + 1)dx = [ 3 + x]10 = 3 + 1 − 0 = 3 .
Rπ
R
R
3. 0 x2 cos(x)dx. On fait une intégration par partie « vu0 = [uv] − v 0 u», avec u ≡ x2 afin
0
d’enlever le carré lors
la dérivation. On a alors
est
R π de
R π v ≡ cos(x), dont une Rprimitive
π
2
2
π
sin(x). Cela donne : 0 x cos(x)dx = [x sin(x)]0 − 0 2x sin(x)dx = (0−0)−2 0 x sin(x)dx.
On refait une intégration par
pour enlever
R π partie,
R π le x ; attention, la primitive
R πde sin(x)
2
π
est − cos(x). Cela donne : 0 x cos(x)dx = −2 0 x sin(x)dx = −2([−x cos(x)]0 + 0 cos(x)) =
−2((π − 0) + [sin(x)]π0 ) = −2π.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 2. Intégration
4.
R1
x
0 x2 +1 dx
=
primitive est
5.
17
2x
u0
0 x2 +1 dx. On reconnaît une expression de la forme « u » (u ≥ 0), dont une
R1
ln(u). Ici u ≡ x2 + 1, est donc : 0 x2x+1 dx = 12 [ln(x2 + 1)]10 = 12 (ln(2) − ln(1) =
1
2
R1
ln(2)
2 .
R π/2 cos(x)
0
1+sin(x) dx.
0
On reconnaît une expression de la forme « uu » (u ≥ 0), dont une primitive
π
R π/2 cos(x)
dx = [ln(1 + sin(x))]02 = ln(2).
est ln(u). Ici u ≡ 1 + sin(x), est donc : 0 1+sin(x)
6. Méthode 1 — On reconnaît une expression de
la forme «u0 un », dont une primitive est
R
n+1
3
u
−1
dx
−1
1
−2 3
n+1 ). Ici : u ≡ ln(x) et n ≡ −3. On a donc : 2 x(ln(x))3 = [ 2 (ln(x)) ]2 = 2 ( ln(3)2 −
1
)
ln(2)2
' 0, 6264....
R 0
Méthode
2
—
On
peut
calculer
cette
intégrale
avec
une
intégration
par
partie
«
vu =
R 0
1
−3
0
[uv] − v u», avec u ≡ ln(x) et v ≡ x dont une primitive est ln(x). On a alors :
R 3 dx
R3
R 3 dx
ln(x) 3
−3
1
1
2 x(ln(x))3 = [ ln(x)3 ]2 − 2 ln(x) x(ln(x))4 dx = ( ln(3)2 − ln(2)2 ) + 3 2 x ln(x)3 . Notons α =
R 3 dx
1
1
−1
1
2 x ln(x)3 la valeur cherchée ; elle vérifie α = ( ln(3)2 − ln(2)2 ) + 3α donc α = 2 ( ln(3)2 −
1
)
ln(2)2
7.
R2
' 0, 6264....
ln(x)p
x dx.
On reconnaît une expression de la forme «u0 un », dont une primitive est
R2
p
ln(2)p+1
ln(x)p+1 2
Ici u ≡ ln(x) et n ≡ p. On a donc : 1 ln(x)
x dx = [ p+1 ]1 =
p+1 .
1
un+1
n+1 .
E XERCICE 2.2 : T EMPÉRATURE MOYENNE
Un corps de température T0 est placé dans un environnement de température Ta . Sa
température est donnée en fonction du temps par la loi de refroidissement de Newton :
T (t) = Ta + (T0 − Ta )e−kt ,
où k est une constante.
[1] Calculez la valeur moyenne Tm du corps entre les temps t1 et t2 .
R t2
1
Solution — La valeur moyenne d’une fonction T entre t1 et t2 est donnée par t2 −t
t1 T (t)dt.
1
R t2
T0 −Ta −kt t2
T0 −Ta
1
1
−kt
Ici, on a donc : Tm = t2 −t1 t1 Ta + (T0 − Ta )e dt = t2 −t1 [Ta t − k e ]t1 = Ta + k(t2 −t1 ) (e−kt1 −
e−kt2 ).
o
[2] On place un récipient contenant une solution en ébullition de température 180 dans une
enceinte thermostatée à 37o . On a déterminé empiriquement k = 0, 7h−1 . Quelle est la température moyenne du récipent pendant la première heure ? Pendant la deuxième heure ?
1 =
Solution — On a T0 = 180, Ta = 37, k = 0, 7, t0 = 0, t1 = 1 et t2 = 2. On cherche Tm
T0 −Ta
T
−T
−kt
−kt
2
−kt
−kt
1
a
0
Ta + k(t1 −t0 ) (e 0 − e 1 ) et Tm = Ta + k(t2 −t1 ) (e 1 − e 2 ). Application numérique : Tm = 140o
2 = 88o .
et Tm
E XERCICE 2.3 :
Pour tout entier naturel n supérieur ou égal à 1, on désigne par fn la fonction définie sur
R par :
fn (x) = xn e−x .
On note Cn sa courbe représentative dans un repère (0,~i, ~j) du plan.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
18
2.3. Exercices
0
1
2
Sur le graphique de la figure 2.1, on a représenté une courbe Ck , où k est un entier naturel
non nul, sa tangente Tk au point d’abscisse 1 et la courbe C3 . La droite Tk coupe l’axe des
abscisses au point A de coordonnées ( 54 ; 0).
0
1
2
3
4
5
−2
−1
−1
F IGURE 2.1 – Tracé de Ck (vert), C3 (bleu) et Tk (rouge).
Partie A
[1] Déterminez la limite de la fonction f1 en −∞ et en +∞.
Solution — On a f1 (x) = xe−x = exx .
D’une part, on sait que : limx→−∞ ex = 0+ et donc limx→−∞ e−x = +∞ ; le produit des
limites de x et e−x donne alors limx→−∞ f1 (x) = −∞.
x
D’autre part, on sait que ex croit plus vite que x donc limx→+∞ ex = +∞ ; en passant à
l’inverse on obtient limx→+∞ f1 (x) = 0.
[2] Étudiez les variations de la fonction f1 et dresser le tableau de variations de f1 .
Solution — f1 est une fonction continue et dérivable sur R (produit de fonctions dérivables).
En appliquant les formules classiques de dérivation, on obtient : f10 (x) = (1 − x)e−x .
Le signe de f10 est celui de (1 − x) car e−x > 0 sur R. On obtient le tableau de variations :
x
−∞
1
+∞
f1 (x) −∞ % 1e &
0
[3] À l’aide du graphique, justifiez que k est un entier supérieur ou égal à 2.
0
Solution — Pour x > 0, xk e−x > xk e−x si et seulement si k > k 0 . Or on constate que que Ck est
au dessus de C3 en x = 2, donc k > 3 (donc à 2).
Autre réponse : on sait que k ≥ 1 (définition de fk ) et les variations obtenues à la questions
précédentes ne correspondent pas à celles observées pour Ck ; donc Ck n’est pas C1 , donc
k ≥ 2...
[4] Démontrez que, pour n ≥ 1, toutes les courbes Cn passent par le point O et un autre point
dont on donnera les coordonnées.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 2. Intégration
19
Solution — On remarque que fn (0) = 0e−0 = 0. Donc chaque courbe Cn passe par O.
On remarque que fn (1) = 1e−1 = 1/e. Donc chaque courbe Cn passe par le point (1; e−1 ).
Au final : chaque courbe Cn passe par les points O et (1; e−1 ).
[5] Vérifiez que, pour tout entier naturel n supérieur ou égal à 2, et pour tout réel x : fn0 (x) =
xn−1 (n − x)e−x .
Solution — Pour tout n ≥ 1, fn (x) = xn e−x est continue et dérivable sur R (produits de fonctions dérivables). La fonction dérivée est :
fn0 (x) = nxn−1 e−x − xn e−x = xn−1 (n − x)e−x .
[6] Sur le graphique, la fonction f3 semble admettre un maximum atteint pour x = 3. Valider
cette conjecture à l’aide d’une démonstration.
Solution — On a f3 (x) = x3 e−x et f30 (x) = x2 (3 − x)x−x . f30 est donc du signe de (3 − x) : elle
s’annule en 3, est (strictement) positive avant et (strictement) négative après. Autrement dit,
f3 est (strictement) croissante jusqu’en 3 puis (strictement) décroissante : elle atteint bien un
maximum en 3.
k−2
[7] Démontrez que la droite Tk coupe l’axe des abscisses au point de coordonnées ( k−1
; 0).
Solution — La fonction fk étant dérivable, l’équation de sa tangente en x0 est : y = fk (x) +
fk0 (x)(x − x0 ). Ici, x0 = 1, est la tangente a pour équation y = e−1 + (k − 1)e−1 (x − 1).
La tangente coupe l’axe des abscisses quand y = 0 ; résolvons donc :
e−1 + (k − 1)e−1 (x − 1) = 0
⇐⇒
1 + (k − 1)(x − 1) = 0
⇐⇒
x − 1 = −1/(k − 1)
⇐⇒
x = (k − 2)/(k − 1)
(ces calculs sont valides car on sait que k > 1). La tangente Tk coupe donc l’axe des absk−2
; 0).
cisses au point ( k−1
[8] En déduire, à l’aide des données de l’énoncé, la valeur de l’entier k.
Solution — D’après l’énoncé, Tk coupe l’axe des abscisses en ( 45 ; 0). On a donc
donc k = 6.
k−2
k−1
=
4
5,
Partie B
On désigne par (In ) la suite définie, pour tout entier n supérieur ou égal à 1, par :
Z 1
In =
xn e−x dx.
0
[9] Vérifiez que la fonction g définie sur R par g(x) = −(x + 1)e−x est une primitive de f1 .
Solution — g est définie, dérivable sur R (composée, somme et produits de telles fonctions).
On peut donc calculer sa fonction dérivée : g 0 (x) = −e−x + (x + 1)e−x = xe−x = f1 (x). La
fonction g est donc une primitive de f1 .
[10] En déduire la valeur de I1 .
Solution — I1 = g(1) − g(0) = −2e−1 + e0 = 1 − 2/e.
Sur le graphique de la figure 2.2, on a représenté les portions des courbes C1 , C2 , C3 , C10 ,
C20 , C30 comprises dans la bande définie par 0 ≤ x ≤ 1.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
2.3. Exercices
0.2
0.3
0.4
0.5
20
C1
C2
C3
0.1
C10
C20
0.0
C30
0.0
0.2
0.4
0.6
0.8
1.0
F IGURE 2.2 – Tracé de différentes courbes Ck .
[11] Formulez une conjecture sur le sens de variation de la suite (In ). Démontrez cette conjecture.
Solution — In est l’intégrale d’une fonction positive : c’est donc l’aire sous la courbe de
cette fonction. Graphiquement, on constate que ces aires sont de plus en plus petites (il y a
même inclusion stricte), ce qui signifierait que la suite (In ) est décroissante.
Démonstration. Soit n ≥ 0. Sur [0; 1] : xn > xn+1 donc ∀x ∈ [0; 1] : fn (x) > fn+1 (x) donc
In > In+1 .
[12] En déduire que la suite (In ) est convergente, et déterminer limn→+∞ In .
Solution — La suite (In ) est décroissante et bornée par 0 (intégrales de fonctions positives).
Elle est donc convergente.RSa limite est 0.
n+1
1
1
1
En effet : ∀n ≥ 1 : In ≤ 0 xn dx = [ xn+1 ]10 = n+1
. Donc 0 ≤ In ≤ n+1
, donc limn→+∞ In = 0
(«théorème des gendarmes»).
? [13] Pour n ≥ 1, déterminez une formule de récurrence liant In à In−1 .
Solution R— On fait une intégrationRpar parties :
1
1
In = 0 xn e−x dx = [ − xn e−x ]10 + 0 nxn−1 e−x dx = −e−1 + nIn−1 .
? [14] Faire un programme informatique (ou un tableur) qui calcule I20 à partir de la formule de la
question précédente. Commentez la valeur obtenue.
Solution — On a I0 = 1−e−1 , ce qui permet d’initier la récurrence ... On obtient alors (calculs
avec le tableur Gnumeric) : I20 = 16910841. Cette valeur est aberrante (se rappeler que la
1
suite In est décroissante et que 0 ≤ In ≤ n+1
).
??? [15] Expliquez le problème survenu à la question précédente, et calculez une valeur correcte de
I20 .
Solution — Le problème est que la valeur e−1 n’est pas connue exactement par l’ordinateur
(c’est un irrationnel). A chaque étape, on fait une petite erruer ... et surtout on multiplie
l’erreur de l’étape précédente par n ! L’erreur initiale est ainsi, potentiellement, multipliée
par n! lorsqu’on calcule In (pour n = 20, 20! > 2 × 1018 ).
Une solution est d’utiliser la récurrence ... à l’envers. En partant (par exemple) de I30 = 0
−1
1
on fait une erreur au plus 1 (car 0 ≤ I30 ≤ 31
) ; à chaque pas, on calcule alors : In−1 = In +e
n
est l’erreur est divisée par n, et ainsi gardée sous contrôle.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 2. Intégration
21
On obtient ainsi (calculs avec le tableur Gnumeric) : I20 = 0, 01835. Si on poursuit les
calculs, on obtient I0 = 0, 6321, ce qui est juste et donc rassurant.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
C HAPITRE 3
Algèbre et éléments propres d’une matrice
3.1
3.1.1
Rappels d’algèbre
Vecteurs et bases
Nous considérons l’ensemble Rn , en tant qu’espace vectoriel (sur R). Un vecteur ~v est ainsi
un élément quelconque de Rn , dont les éléments sont notés v1 , v2 , . . . , vn . On note ~0n le vecteur nul de Rn .
Définition 3.1. Familles libres, génératrices. Soit F = {~v1 , ~v2 , . . . , ~vk } une famille de vecteurs.
P
F est dite libre si et seulement si ki=1 λi~vi = 0~n ⇒ λ1 = λ2 = . . . = λk = 0 ; ses vecteurs sont
alors dits linéairement indépendants.
F est dite génératrice si et seulement si tout vecteur peut s’écrire comme combinaison des vecP
teurs de cette famille, c’est-à-dire : ∀~x ∈ Rn , ∃(λ1 , λ2 , . . . , λk ) : ~x = ki=1 λi~vi .
Définition 3.2. Base. Une famille de vecteurs est une base si et seulement si elle est libre et génératrice. La base canonique de Rn est la famille de vecteurs {~vi , i = 1..n}, où chaque ~vi n’a que des 0,
sauf sa ième composante, qui est 1.
Propriété 3.1.
Une famille libre a au plus n vecteurs. Une famille libre de n vecteurs est une base.
Une famille génératrice a au moins n vecteurs. Une famille génératrice de n vecteurs est une base.
3.1.2
Applications linéaires et matrices
Définition 3.3. Application linéaire Une application L de Rn dans Rp est une application
linéaire (ou morphisme) si et seulement si : ∀(~x, ~y ) ∈ Rn , ∀(λ, µ) ∈ R2 : L(λ~x + µ~y ) =
λL(~x) + µL(~y ).
Définition 3.4. Une matrice à coefficients dans R de dimension (m, n) est un tableau de m
lignes et n colonnes dont chaque élément est un réel. Pour une matrice A, on note en général ai,j
l’éléments de la ligne i, colonne j.
23
24
3.1. Rappels d’algèbre
Proposition 3.1. Toute application linéaire L de E = Rn dans F = Rp s’écrit sous forme d’une
matrice M de dimension (p, n). Les colonnes de M sont les images par L des vecteurs d’une base de
E exprimées dans une base de F . Pour des bases de E et de F données : M est unique et il existe un
isomorphisme entre les applications linéaires et les matrices.
Propriété 3.2. Calcul matriciel. Soit deux matrices A et B correspondant à deux applications
linéaires F et G exprimées dans les mêmes bases :
— Soit un réel λ ; la matrice Q = λA correspond à l’application λL.
Calcul : ∀(i, j) : qi,j = λai,j .
— La somme matricielle A + B est la matrice Q de l’application F + G.
Calcul : ∀(i, j) : qi,j = ai,j + bi,j .
— Le produit matriciel AB
P est la matrice Q de l’application composée Fo G.
Calcul : ∀(i, j) : qi,j = k ai,k bk,j .
Définition 3.5. Rang. Le rang d’une matrice est le nombre maximum de lignes (ou de colonnes)
formant une famille libre.
3.1.3
Cas des endomorphismes (matrices carrées)
Définition 3.6. Endomorphisme. Un endomorphisme est une application linéaire d’un ensemble
dans lui-même. Les matrices d’endomorphismes sont les matrices carrées (de taille n).
On note In la matrice identité de taille n ; ses coefficients diagonaux sont 1 et tous les autres
sont 0. In correspond à l’application identité.
Définition 3.7. Inverse. Une matrice carrée (de taille n) A est inversible, si et seulement si il existe
une matrice M telle que AM = M A = In . M est l’inverse de A, noté A−1 .
L’inverse d’une matrice se calcule efficacement à la main avec la méthode du pivot de Gauss
(ou élimination de Gauss-Jordan).
Propriété 3.3.
La matrice inverse, si elle existe, est unique.
Une matrice est inversible si et seulement si elle est de plein rang (son rang est n).
Une matrice est inversible si et seulement si son déterminant est différent de 0.
Un système A~x = ~b a une solution unique si et seulement si A est inversible. Sinon le système
n’a aucune ou une infinité de solutions.
Définition 3.8. Matrice de passage. La matrice de passage d’une base B à une base B 0 est la
matrice P dont les colonnes sont les vecteurs de B 0 exprimés dans la base B.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
25
Propriété 3.4. Soit P la matrice de passage d’une base B à une base B 0 .
P est inversible et son inverse est la matrice de passage de B 0 à B.
Un vecteur ~x exprimé dans la base B a pour coordonnées P −1~x dans la base B 0 .
3.1.4
Produits scalaires et normes
n
Définition 3.9. Produit scalaire canonique. Le produit scalaire (canonique)
Pn de R est l’application qui aux vecteurs ~x = [ x1 , . . . , xn ] et ~y = [ y1 , . . . , yn ] associe : (~x|~y ) = i=1 xi yi = ~x> ~y .
Définition 3.10. Norme vectorielle. Une norme (vectorielle) est une application de Rn dans R+ ,
qui a tout vecteur ~x ∈ Rn fait correspondre un nombre k~xk et qui vérifie :
1. k~xk = 0 ⇐⇒ ~x = ~0 ;
2. ∀~x ∈ Rn , ∀λ ∈ R : kλ~xk = |λ| k~xk ;
3. ∀~x, ~y ∈ Rn : k~x + ~y k ≤ k~xk + k~y k.
Quelques normes classiques de Rn :
P
1. la norme L1 : k~xk1 = ni=1 |xi | ;
2. la norme L2 (euclidienne) : k~xk2 =
pPn
i=1
x2i =
p
(~x|~x) ;
3. la norme L∞ : k~xk∞ = maxni=1 |xi |.
Définition 3.11. Norme matricielle induite. À partir d’une norme vectorielle k k, on définit une
kA~
xk
norme matricielle induite : kAk = max~x6=0 k~xk = maxk~xk=1 kA~xk.
Le produit scalaire mesure, entre autre, l’alignement de deux vecteurs. En effet, on a :
(~x|~y ) = k~xk2 k~y k2 cos(α), où α est l’angle entre les deux vecteurs. Ainsi, le produit scalaire est
maximal lorsque les vecteurs sont alignés, de même sens ; minimal lorsqu’ils sont alignés,
de sens opposés ; nul lorsqu’ils sont orthogonaux.
Une norme vectorielle est simplement une notion de distance.
Une norme matricielle mesure la déformation maximale provoquée par une matrice.
3.2
Éléments propres d’une matrice
Dans toute cette section, on ne considère que des matrices carrées, d’ordre n.
Définition 3.12. Valeur propre, vecteur propre. Un réel λ est valeur propre de A si et seulement si il existe ~v ∈ Rn , non nul, tel que : A~v = λ~v ; un tel vecteur ~v est qualifié de vecteur propre
de A pour la valeur propre λ.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
26
3.3. Références
Définition 3.13. Spectre. Le spectre d’une matrice A, noté Sp(A), est l’ensemble de ses valeurs
propres. Le rayon spectral d’une matrice A, noté ρ(A), est le module de sa plus grande valeur
propre.
Les vecteurs propres indiquent les directions caractéristiques de la matrice (celles qui sont
préservées), et les valeurs propres quantifient les déformations le long de ces directions. Les
valeurs propres complexes correspondent à des phénomènes de rotations.
Définition 3.14. Polynôme caractéristique. Le polynôme PA (x) = det(A − xIn ) est le polynôme caractéristique de la matrice A. Son degré est n.
Proposition 3.2.
λ est valeur propre de A si et seulement si il est racine de PA (x).
L’ensemble des vecteurs propres associés à λ est défini par le système : (A − λIn )~v = ~0.
Définition 3.15. Matrice diagonalisable. Une
si et seulement si il
 matrice est diagonalisable

λ1


...
.
existe une base où son expression est de la forme 


λn
0
0
Proposition 3.3. k vecteurs propres pour k valeurs propres distinctes forment une famille libre.
Par conséquent, une matrice qui a n valeurs propres distinctes est diagonalisable. Plus
généralement :
Proposition 3.4. Une matrice est diagonalisable si et seulement si son polynôme caractéristique est
scindé et que pour toute valeur propre, la multiplicité géométrique est égale à la multiplicité algébrique
Proposition 3.5. Une matrice symétrique (réelle) est diagonalisable (dans R)
3.3
Références
— A.-M. Spalanzani, Précis de mathématiques pour la gestion et l’économie, PUG, 2000.
— Wikipedia, http://fr.wikipedia.org, notamment : Espace vectoriel, Vecteur, Matrice, Élimination de Gauss-Jordan, Produit scalaire, Valeurs et vecteurs propres.
— Mathworld, http://mathworld.wolfram.com.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
3.4
27
Exercices
E XERCICE 3.1 : D ÉFORMATIONS D ’ IMAGES
On veut transformer une image en la déformant, comme le montrent les figures cidessous :
À chaque étape, la même transformation est effectuée : l’image est écrasée selon la diagonale
Sud-Ouest / Nord-Est. Les éléments de cette diagonale ne sont donc pas modifiés, tandis
que les autres éléments en sont rapprochés, selon un « facteur d’écrasement » α < 1.
Le repère de R2 dans lequel les points de l’image sont exprimés a pour
origine le coin Sud-Ouest et est orienté par la base orthonormale B =
{e~1 , e~2 }, comme indiqué sur la figure ci-contre.
Le but de cet exercice est de déterminer une matrice A permettant de
réaliser cet écrasement, c’est-à-dire qu’un point z~0 de l’image écrasée sera
obtenu à partir d’un point ~z = [ x; y ]> de l’image d’origine en faisant
z~0 = A~z.
[1] Déterminez un vecteur ~u, invariant par A.
Solution — D’après la définition de la transformation, les points de la diagonale Sud-Ouest/NordEst sont inchangés (et se sont les seuls) : il suffit (et il faut) prendre comme vecteur
un point
1
a
de cette diagonale. Par exemple : ~u =
. Plus généralement tout vecteur
fait l’affaire
1
a
(même avec a = 0, mais ce n’est pas judicieux pour la suite).
[2] Complétez ~u pour construire une base B 0 de R2 . Afin que A s’écrive simplement dans B 0 , on
choisira un vecteur orthogonal à ~u.
Solution — Pour former une base, n’importe quel vecteur non colinéaire à ~u ferait l’affaire...
0
autant en prendre un qui soit simple. Et orthogonal
à ~u : on nous le demande, et la base B
1
n’en sera que plus pratique. Par exemple :
a des coefficients simples, et permet de
−1
faire une base B 0 orthogonale, comme la base B d’origine. Attention, cette base n’est pas
normée !
0
[3] Donnez l’expression de Adans
la
base B (pour α = 0, 7).
1
1
1 0
Solution — Dans = {
;
}, A s’exprime très facilement : AB0 =
: les vecteurs
1
−1
0 α
colinéaires à ~u ne sont pas modifiés, les vecteurs orthogonaux sont comprimés du facteur α.
B0
[4] Déterminez la matrice de changement de base permettant de passer de la base d’origine B à
la base proposée B 0 .
Solution — Soit S la matrice de passage
deB dans B 0 . Les colonnes de S sont les vecteurs
1 1
de B 0 , exprimés dans la base B : S =
.
1 −1
[5] En déduire une expression de A dans la base d’origine.
Solution — On connaît AB0 , expression de la matrice A dans la base B 0 , et on connaît la
matrice de passage S de B à B 0 . L’expression de AB dans la base B est AB = SAB0 S−1 .
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
28
3.4. Exercices
1 1
1 1+α 1−α
Le calcul de
donne :
=
. On obtient : A(= AB ) = 2
.
1 −1
1−α 1+α
Remarque : si on avait pris la peine de normer B 0 (qui est déjà orthogonale et de même
orientation que B), la matrice de passage aurait été une matrice de rotation, dont l’inverse
aurait simplement été la transposée. Ne pas choisir B 0 trop au hasard simplifie les calculs
pour la suite...
S−1
S−1
1
2
? [6] On considère la suite de matrices définie par : ∀n ≥ 0 : Un = An . Montrez que la suite Un
tend vers une matrice de projecteur, à préciser. Comment cela se traduit-il en termes d’image
limite ?
Solution — On a : Un = (SAB0 S−1 )n = SAnB0 S−1 = S
1
0
0
S−1 . Un est simplement un
αn
écrasement de paramètre αn ... c’était prévisible.
1 0
S−1 . On vérifie bien que L2 = L,
Soit L la limite de la suite Un . L = limn→∞ Un = S
0 0
c’est donc bien un projecteur. En termes d’image limite : tous les points se retrouvent sur la
diagonale, seul invariant de l’image.
[7] Montrez que la transformation effectuée est réversible. Calculez sa réciproque.
Solution — A représente une application linéaire, qui est inversible (ou pas), indépendamment de la base choisie pour la représenter matriciellement. En d’autres termes
: A est in
1
0
−1
−1
versible si et seulement si AB0 l’est. Le calcul de AB0 est immédiat : AB0 =
puis on
0 1/α
−1 ...
a A−1 = SA−1
B0 S
Pour éviter les calculs, on peut simplement remarquer que A−1
B0 correspond à un « écrasement » de facteur 1/α ... ce qu’on peut prévoirrien qu’en se posant
la question de la
1 1 + 1/α 1 − 1/α
−1
réversibilité d’un écrasement. On a donc : A = 2
.
1 − 1/α 1 + 1/α
Remarque : A est inversible, ainsi que tous les An . Pourtant, la limite L de la suite des An
ne l’est pas...
Certains logiciels de manipulation d’images permettent de déformer une image grâce à
une matrice de transformation de taille 3. Les coordonnées d’un point sont transformées de
la manière suivante :
 0 
 
sx rx tx
x
x
 y 0  =  ry sy ty   y  ,
0 0 1
1
1
où sx , rx , ry , sy , tx et ty sont des coefficients choisis par l’utilisateur.
? [8] Montrez que cette transformation permet de faire : des rotations, des homothéties et des
translations. Quel est l’intérêt d’avoir ajouté une troisième
dimension?

cos θ − sin θ 0
Solution — Une rotation d’angle θ est obtenue avec  sin θ
cos θ 0  . Une homothétie de
0
0
1


s 0 0
a
rapport s est obtenue avec  0 s 0  . Une translation de vecteur
est obtenue avec
b
0 0 1


1 0 a
0 1 b.
0 0 1
Sans la troisième dimension, les translations sont impossibles.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
29
? [9] De manière générale, déterminez les conditions pour qu’une matrice d’ordre n corresponde
à une translation dans Rn . Montrez qu’une translation, dans Rn , d’un vecteur ~t arbitraire,
peut être réalisée grâce à une matrice d’ordre n + 1 à préciser.
Solution — Soit ~t un vecteur de Rn . Supposons qu’il existe une matrice A d’ordre n qui opère
la translation de vecteur ~t, c’est-à-dire : A~x = ~x + ~t, ∀~x ∈ Rn . En particulier, pour ~x = ~0, on a :
A~x = ~0 = ~0 + ~t, ce qui implique ~t = ~0. La seule translation possible de cette manière est donc
celle de vecteur nul...
~t
In
En autorisant un ordre de plus : on prend la matrice T =
et on obtient la
0...0 1
z~0
~z
translation voulue en faisant :
.
=T
1
1
Remarque : plonger un problème dans un espace de dimension supérieur permet de
« linéariser » certaines transformations.
? [10] Comment créer un court dessin-animé d’une chûte dans le vide, à partir de
l’image fixe ci-contre ? (Pour donner un effet de chûte, il faut que le personnage
tourne autour du centre de l’image en devenant de plus en plus petit.)
Solution — Première approche : on détermine les images de quelques points bien choisis,
et on résout le système linéaire correspondant... Long et hasardeux (si les points sont mal
choisis, le système n’aura pas de solution). D’où une autre approche ...
Il suffit de décomposer la transformation nécessaire, pour passer d’une image à la suivante, en transformations élémentaires. Avantages : calculs simples, et on peut paramétrer
facilement la méthode.
Le mouvement désiré est la composée d’une rotation (d’angle θ et de centre Ω, le centre
de l’image) et d’une homothétie (de rapport α). Ω est connu, et θ et α seront à régler empiriquement, visuellement.


α 0 0
Une homothétie de rapport α est obtenue avec H =  0 α 0 , tandis qu’une rotation
0 0 
1

cos θ − sin θ 0
de centre O et d’angle θ est obtenue par R =  sin θ
cos θ 0 . Pour régler le problème
0
0
1
du centre pour la rotation, il suffit de faire une translation amenant Ω à l’origine du repère. Il
faudra ensuite faire une autre transformation pour remettre Ω a sa vraie place : comme Ω est
en fait invariant, il suffit de faire la translation réciproque. Au final, la transformation désirée
est :




1 0 xΩ
1 0 −xΩ
 0 1 −yΩ  R H  0 1 yΩ  .
0 0 1
0 0
1
Remarque : R et H commutent, mais ce sont les seules.
En R, on peut tester le code suivant :
falling <- function(n, a, t){
H <- matrix(c(a,0,0, 0,a,0, 0,0,1), nrow=3)
R <- matrix(c(cos(t), sin(t), 0, -sin(t), cos(t), 0, 0,0,1), nrow=3)
T <- matrix(c(1,0,0, 0,1,0, -n/2,-n/2, 1), nrow=3)
solve(T) %*% H %*% R %*% T
}
falling(n=75, a=0.9, t=pi/6) -> M
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
30
3.4. Exercices
image.animate(M, image.create("human", 75), n=30)
E XERCICE 3.2 : S YSTÈME DYNAMIQUE DISCRET
Un système dynamique discret est un modèle de la forme ~xk+1 = A~xk , c’est-à-dire ~xk =
k
A ~x0 , pour la condition initiale ~x0 . Dans ce formalisme : k est l’instant considéré (le temps
s’écoule par pas discret (d’une unité)) ; ~xk est le vecteur d’état du système, caractéristique du
phénomène à l’instant k ; et A est la matrice de transition du système, qui détermine comment
le phénomène évolue.
On aimerait déterminer l’état limite du système, c’est-à-dire sa limite quand k tend vers
l’infini. Dans la suite, on suppose que la matrice A est diagonalisable avec n valeurs propres
distinctes |λ1 | > |λ2 | > ... > |λn |.
[1] Justifiez qu’il P
existe une base de vecteurs propres
Pn ~v1 , ~v2k, . . . , ~vn et donc qu’il existe c1 , c2 , . . . , cn
n
tels que ~x0 = i=1 ci~vi . En déduire que ~xk = i=1 ci λi ~vi .
Solution — Par définition, pour n valeurs propres distinctes, il existe n vecteurs propres distincts. Ceux-ci forment une famille libre, et donc une base.P
Le fait d’avoir une base implique
l’existence (et l’unicité) des coordonnées ci et on a : ~x0 = ni=1 ci~vi .
P
Les ~vi étant des vecteurs propres, il en découle immédiatement que ~xk = ni=1 ci λki~vi . [2] En déduire que, si c1 6= 0, alors limk→∞ ~xk = limk→∞ c1 λk1 ~v1 .
Solution — On a :
~xk =
n
X
ci λki~vi = λk1 (c1~v1 +
i=1
Or |λ1 | > |λi |, donc limk→∞ ci ( λλ1i )k~vi = ~0.
n
X
i=2
ci (
λi k
) ~vi )
λ1
[3] En déduire, pour c1 6= 0, l’état limite du système.
Solution —
— ρ(A) > 1 : le système divergence, dans la direction (principale) de ~v1 .
— ρ(A) < 1 : le système convergence vers ~0.
— ρ(A) = 1 : le système convergence vers c1~v1 . Il y a convergence vers un état stationnaire (état limite) solution de A~x = ~x, qui dépend de la condition initiale.
[4] On appelle trajectoire issue de ~x0 d’un système dynamique la suite {~xk }k≥0 obtenue à partir
de ~x0 . Caractérisez au mieu les matrices des systèmes dont les trajectoires sont données
figure 3.1.
Solution — (a) Toutes les trajectoires convergent vers ~0 : ρ(A) < 1. Quel que soit ~x0 , le système converge vers la même limite ; le système est stable. L’axe des ordonnées est direction
propre ; on peut estimer la valeur propre associée en mesurant (à la règle) le ratio des longueurs de deux points consécutifs (distance d’un point à l’origine)...
(b) Toutes les trajectoires divergent. On a ρ(A) > 1. La première direction propre est
l’axe des abscisses,
la deuxième l’axe des ordonnées et on a λ1 > λ2 > 1. La direction
1
asymptotique est
, mais le système est instable aux abord des axes.
0
(c) Les solutions gravitent autour de l’origine, sur des ellipses... Les valeurs propres sont
donc toutes de module égal à 1. Ce sont des valeurs propres complexes, c’est ce qui induit
la rotation. Le système converge (en norme) : ρ(A) = 1. Ce système est stable, cyclique.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
31
1
1
1
14
10
1
10
15
1
13
12
2
2
3
3
3
9
3
4
4
4
5
5
5
5
5
6
6
6
6
6
7 8 78 7
7
7
811
8109 8
910
914
9
911
1
014
10
10
11
11
11
12
12
12
12
12
13
13
13
13
13
14
14
14
15
15
15
12
12
12
12
12
11
11
11
1
015
10
10
109
910
911
915
911
7 8 78 8
7 87 8 7
6
6
6
6
6
−5
0
5
5
5
5
5
5
4
4
4
4
4
−10
3
3
3
2
2
2
6
6
7
6
5
−10
3
2
7
6
7
10
4
5
3
5
4
3
−5
5
4 53
6
7
8
9
−5
3
8
7
4
0
4
5
3 4
6
4
5
3 4
5
5
5
3
6
8
7
7
6
5
6
7
10
6
7
7
8
−5
3
11
10
9
8
7
6
5
43 4
3 2 3 24
2 121 2
111
21
12
1
1
2 2 1
2 1213 2
0
43 3
4
4
5
6
7
8
9
10
11
5
2
0
2
5
2
2
12
1
1
1
−10
−10
13
1
1
14
15
(b)
6
(a)
10
4
5
4
3
83
10
83
7
5
10
83 72
4 6
58394 61
10
9
94
1
7258
372 61
8
5
10
10
36
24
5
10
9
9
10716
5
417
3810
5
10
5
82
16 2749
1
2749316 4
9
5
063810
27 38
1
6
1
5
13
10
−4
10
5
−5
15
8
18 2322 21
14
24
20
19 25
25 19
13
20
−2
0
2
24
14
21
23 18
22
8
15
17
12
16
7
10
5
2
7
27
16
4
1
2
38
49
9
49
−4
38
−6
−10
6
11
10
3
(c)
7
−2
1
−5
6
17
0
6
1
0
1
6
9
2
12
7
2
5
10
−10
11
6
2
2
94
5
94
5
4
(d)
F IGURE 3.1 – Trajectoires de systèmes dynamiques
(d) Toutes les trajectoires convergent vers l’origine. On a ρ(A) < 1. Il y a un effet de
rotation : les valeurs propres sont complexes. Le système est stable.
E XERCICE 3.3 : É VOLUTION DE LA POPULATION D ’ UNE VILLE
Dans une agglomération, on distingue la ville elle-même de sa banlieue. Chaque année,
5% des habitants de la ville la quittent pour aller vivre en banlieue, tandis que 3% des habitants de la banlieue quittent celle-ci pour venir habiter en ville. Les autres habitants restent
dans leur logement actuel.
[1] Modélisez le problème
sous forme d’un système dynamique discret.
Solution — Soit ~xk =
v
le vecteur des proportions de gens vivant en ville (v) et en banlieue
b
(b) l’année k.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
32
3.4. Exercices
On a :
~xk = Ak ~x0
soit
~xk+1 = A~xk
avec
A=
0, 95
0, 05
0, 03
.
0, 97
[2] Actuellement (année 0), 60% des habitants vivent en ville. Quelle sera la proportion dans 3
ans (année 3) ?
0, 6
. On obtient : ~x3 =
0, 4
Solution — Il faut calculer ~x3 = A3 ~x0 , avec ~x0 =
ans, il y aura 55% de la population en ville.
0, 5502
. Dans 3
0, 4498
[3] Quelle sera la proportion d’habitants vivant en ville, à long terme ?
Solution — On calcule les éléments propres de la matrice de transition A : on obtient deux
valeurs propres λ1 = 1 et λ2 = 0, 92 (vecteurs propres associés ~v1 et ~v2 ). On peut donc
conclure que le système va tendre vers un état stable, qui sera un vecteur colinéaire à
~v1 .
−0.5144958
Numériquement, R donne ~v1 =
. Pour avoir des proportions, il suffit de prendre
−0.8574929
0, 5144958
0, 375
1
le vecteur 0,5144958+0,8574929
=
.
0, 8574929
0, 625
[4] Cette proportion dépend-elle de la proportion initiale ?
Solution — Les vecteurs propres ~v1 et ~v2 de la réponse précédente forment une base. La
population initiale ~x0 peut donc s’écrire sous la forme ~x0 = c1~v1 + c2~v2 . Si c1 6= 0, on est dans
les
de la question précédente. Si c1 = 0 : ~x0 est colinéaire à ~v2 et donc de la forme
conditions
a
, ce qui ne peut pas être une proportion (ce cas est donc exclu).
−a
[5] Tracez quelques trajectoires, pour différentes proportions initiales. L’expérience confirme-telle vos réponses précédentes ?
1
0
et
. Pour
1
1
toute proportion, on est sur la droite ainsi représentée, et on tend vers le point (0, 375; 0, 625).
1
0.6
0.8
0
2
3
4
5
67
89
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
0.4
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
0.2
population de la banlieue (%)
1.0
Solution — La figure ci-dessous montre le tracé obtenu à partir des points
8
7
6
5
4
3
2
0.0
1
0
0.0
0.2
0.4
0.6
0.8
population de l'agglomération (%)
1.0
[6] Tracez quelques trajectoires obtenues à partir de points initiaux ne correspondant pas à des
proportions. Que remarquez-vous ?
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
33
1
0, 2
0, 7
Solution — La figure ci-dessous montre le tracé obtenu à partir des points
,
,
,
0
0, 3
0, 6
−0, 2
. On remarque que toutes les trajectoires sont parallèles et aboutissent toutes sur une
0, 2
même droite.
0.8
0
0.4
0.6
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
987
65
43
21
0
39
38
37
36
35
34
33
32
31
30
29
28
26
25
27
23
24
20
22
21
19
18
16
17
15
13
14
12
11
10
9
8
7
6
5
4
3
2
1
0
0.2
population de la banlieue (%)
1.0
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
98
76
54
32
1
0.0
01
23
45
678
1911
0
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
0.0
0.2
0.4
0.6
0.8
1.0
population de l'agglomération (%)
? [7] Montrez que toutes les trajectoires sont parallèles et aboutissent toutes sur une même droite.
Solution — Soit ~x0 un vecteur quelconque.
En reprenant les notations précédentes : il existe (c1 , c2 ) tels que ~x0 = c1~v1 + c2~v2 et la
trajectoire des ~xk est donnée par c1 1k~v1 + c2 0.92k~v2 .
Conséquences :
— pour tout ~xk , la coordonnée sur ~v1 est 1 ;
— la coordonnée sur ~v2 tend vers 0.
En termes géométriques : la trajectoire est parallèle à ~v2 et s’arrête sur la droite dirigée
par ~v1 .
On veut maintenant prendre en compte la natalité, la mortalité et les migrations hors de
l’agglomération. Des études montrent que ces flux sont positifs pour la ville (au total, +3%
par an) et négatifs pour la banlieue (-2% par an).
[8] Modélisez ce nouveau problème.
Solution —
0, 98 0, 03
xk =
0, 05 0, 95
k
~x0
Remarque : la population totale variant, les composantes de ~xk ne correspondent plus à
des proportions (répartition entre ville et banlieue), mais à des cardinalités (nombre de personnes en ville et en banlieue).
[9] À long terme, la population totale de l’agglomération va-t-elle croître, décroître ou stagner ?
Solution — On procède comme précédemment... Le calcul des éléments propres avec R
donne :
0, 749
λ1 = 1, 007 vecteur propre associé : ~v1 =
0, 662 −0, 469
λ2 = 0, 923 vecteur propre associé : ~v2 =
0, 883
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
34
3.4. Exercices
Comme précédemment, et pour les mêmes raisons, tout vecteur ~x0 correspondant à des
populations initiales a une coordonnée c1 non nulle sur ~v1 et donc pour k assez grand : ~xk '
c1 (1, 007)k~v1 . Conclusion : la population globale de l’agglomération va croître indéfiniment
(à terme, de 0,7% par an).
L’étude portant sur la banlieue n’est pas très précise et la perte de 2% par an est incertaine.
? [10] À partir de quelle valeur pour cette perte l’agglomération est-elle condammnée à disparaître ?
Solution — Soit p la perte de la banlieue. Le modèle devient :
k
0, 98
0, 03
~xk =
~x0
0, 05 0, 97 − p
La ville disparaîtra quand la plus grande valeur propre de la matrice de transition sera
strictement inférieure à 1.
La résolution analytique du calcul des valeurs propres et vecteurs propres en fonctions
de p est possible, mais fastidieuse. Nous adoptons une approche numérique qui donnera un
résultat suffisamment précis.
Tout d’abord, on peut remarquer que la population totale décroîtra d’autant plus vite
(ou croîtra d’autant moins vite) que p est grand (et inversement). En d’autres termes : la
plus grande valeur propre est une fonction décroissante de p. Nous pouvons donc chercher
la valeur désirée par dichotomie : si on sait que p1 est trop petite (λ1 > 1) et p2 (λ1 < 1)
est trop grande, on essaiera le milieu ... et on recommence jusqu’à obtenir une précision
satisfaisante.
On obtient ainsi, rapidement que pour p = 0, 045, la plus grande valeur propre est ... 1.
Conclusion : l’agglomération disparaîtra si la perte pour la banlieue est strictement supérieure à 4,5%.
E XERCICE 3.4 : D E LA SURVIE DES CHOUETTES
Les chouettes tachetées septentrionales ont un cycle de vie qui se divise en trois étapes :
le stade juvénile (jusqu’à 1 an), le stade préadulte (de 1 à 2 ans) et le stade adulte (au delà de
2 ans). Seuls les adultes se reproduisent, avec un taux de reproduction de 33%. De plus, 94%
des adultes survivent d’une année sur l’autre, et 71% des préadultes deviennent adultes.
L’étape la plus critique dans la vie d’une chouette est le passage de l’état juvénile à l’état
de préadulte : cela signifie pour la chouette qu’elle doit se trouver un territoire d’environ
1000 hectares où elle pourra chasser sans concurrence. À cause de la déforestation, il est devenu difficile pour les chouettes de se trouver un territoire ; toutefois, grâce à un programme
adapté, 30% des jeunes survivent tout de même et deviennent des préadultes.
[1] Modéliser l’évolution de la population des chouettes sous forme d’un système dynamique
discret.
 
jk

Solution — On note ~xk = pk  la population de chouettes pour l’année k, où jk est le
ak
nombre de jeunes, pk est le nombre de préadultes et ak le nombre d’adultes. On a alors :


0
0
0, 33
~xk+1 =  0, 30
0
0  ~xk
0
0, 71 0, 94
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 3. Algèbre et éléments propres d’une matrice
35
[2] Les chouettes vont-elles survivre ?
Solution — Il faut calculer les éléments propres de la matrice de transition. Avec R, on obtient les valeurs propres suivantes : λ1 = 1, 0090366 ; λ2 = −0, 0345183 + 0, 2616658i et λ3 =
−0, 0345183 − 0, 2616658i.
λ1 est de module strictement supérieur à 1 (et c’est la seule). À terme, la population de
chouettes croîtra donc proportionnellement à λ1 , et donc croîtra d’un peu moins de 1% par
an.
[3] Quelle sera a terme la répartition de la population entre jeunes, préadultes et adultes ?
Solution — À terme, les proportions seront
celles de
 ~v1 , un vecteur propre pour la valeur

0, 30952420
propre λ1 . Le calcul avec R donne ~v1 =  0, 09202566 . En termes de proportions, cela donne
0, 94642805


0, 230
le vecteur  0, 068 , soit 23,0% de jeunes, 6,8% de préadultes et 70,2% d’adultes.
0, 702
Les données utilisées ci-dessus sont en fait très peu précises, et de faibles erreurs ont des
conséquences tragiques sur le destin des chouettes. Il est donc décidé de faire une deuxième
étude basée sur les données réelles relevées sur les dernières années. Le tableau suivant
donne la population de chouettes, telle que comptée pour la zone considérée :
année
jeunes
préadultes
adultes
0
5132
2147
8547
1
2650
1386
9601
2
2976
715
10037
3
3111
804
9957
4
3087
840
9946
5
3083
833
9963
6
3088
832
9973
7
3092
834
9983
8
3095
835
9992
9
3098
836
10002
On suppose que l’évolution de la population des chouettes est toujours modélisable par
un système dynamique de la forme : ~xk+1 = A~xk .
On suppose de plus que la matrice A est diagonalisable, avec 3 valeurs propres distinctes.
On note λ1 > λ2 > λ3 ces valeurs propres, et ~v1 , ~v2 , ~v3 des vecteurs propres associés.
[4] Exprimez la population de chouettes pour l’année k, ~xk , en fonction des éléments propres
de A et de la population initiale ~x0 .
Solution — Soit ~x0 la population initiale (année 0, de référence).
A est diagonalisable, avec 3 valeurs propres distinctes : les vecteurs propres ~v1 , ~v2 , ~v3
forment donc une base. Il existe donc (c1 , c2 , c3 ) tels que ~x0 = c1~v1 + c2~v2 + c3~v3 . Comme les ~vi
sont des vecteurs propres, on obtient alors :
~xk = c1 λk1 ~v1 + c2 λk2 ~v2 + c3 λk3 ~v3 .
? [5] Montrez que
k~
x
k
limk→∞ k~xk+1
kk
= |λ1 |. Quelle hypothèse supplémentaire faut-il faire sur la population initiale ~x0 ? Quelle norme choisir ?
Solution — On suppose que ~x0 n’est pas orthogonal à ~v1 , c’est-à-dire que c1 6= 0. On peut
alors ré-écrire ~xk :
X ci λi
~xk = c1 λk1 (~v1 +
( )k~vi ).
c1 λ1
i=2,3
Posons ~ek =
ci λi k
vi .
i=2,3 c1 ( λ1 ) ~
P
On a ~xk = c1 λk1 (~v1 + ~ek ).
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
36
3.4. Exercices
Par hypothèse : λ1 > λ2 > λ3 , donc ~ek tend vers 0 (Remarque : à la vitesse du rapport
λ2 /λ1 , si c2 6= 0). On a donc k~xk k = |c1 | |λ1 |k (k~v1 k + k ), avec k = O(( λλ12 )k ).
k~
x
k
Conclusions : ~xk tend vers c1 λk1 ~v1 , et k~xk+1
tend vers |λ1 |.
kk
Ce qui précède est valable pour n’importe quelle norme. On peut donc prendre, a priori,
n’importe laquelle. Toutefois, il se peut que certaines normes permettent une convergence
plus rapide que d’autres (ce serait à prouver ...). Un autre critère est la simplicité du calcul
de la norme : prendre la norme L∞ , par exemple, permet des calculs très simples et très
rapides.
? [6] En déduire une méthode de calcul de λ1 , la valeur propre de plus grand module.
k~
x
k
Solution — On calcule les rapports k~xk+1
pour approcher |λ1 |.
kk
Au besoin, on peut résoudre A~v1 = λ1 v~1 pour déterminer précisément λ1 , par exemple
dans le cas où λ1 est complexe. Le vecteur ~v1 est obtenu comme limite de la suite des ~xk .
Remarque : c’est la méthode de la puissance itérée (dans le cas où la matrice est diagonalisable et la valeur propre de plus grand module est unique). Pour éviter les problèmes
numériques, en pratique, on norme le vecteur xk à chaque itération.
[7] Donnez une estimation de λ1 .
k~
x k
Solution — On prend λ1 = k~x98 k . Pour avoir des calculs simples, on prend la norme L∞ et
on obtient : λ1 = 1, 000984. Remarque : on obtient λ1 = 1, 000980 pour la norme L1 et λ1 =
1, 000983 pour la norme L2 .
On peut donc considérer que λ1 = 1, 001.
[8] Les chouettes tachetées septentrionales vont-elles survivre ?
Solution — Les chouettes tachetées vont survivre, mais leur population ne va croître que de
0,1% par an.
[9] Quelles seront à terme les proportions de jeunes, de préadultes et d’adultes ?
Solution — La suite des ~xk tend vers ces proportions. Nous prenons donc celles de ~x9 : 22,2%
de jeunes, 6,0% de préadultes et 71,8% d’adultes.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
C HAPITRE 4
Algèbre de Boole
L’algèbre de Boole doit son nom et son origine à G. Boole, le fondateur de la logique
mathématique moderne ; son objet est l’étude des opérations et des fonctions logiques. Elle
permet de modéliser le fonctionnement de systèmes ne pouvant avoir que deux états (vrai/faux, oui/non, ouvert/fermé, 0/1...) et permet aussi de représenter des raisonnements logiques. Elle a de nombreuses applications notamment en informatique ou en conception de
circuits électroniques et automatiques.
4.1
Algèbre de Boole
Définition 4.1. Algèbre de Boole. On appelle algèbre de Boole l’ensemble B = {0, 1} munis :
— d’une opération unaire appelée négation, notée x̄, telle que 0̄ = 1 et 1̄ = 0 ;
— d’une opération binaire appelée conjonction, notée x · y, qui vaut 1 ssi x et y valent 1 ;
— d’une opération binaire appelée disjonction, notée x + y, qui vaut 1 ssi x ou y valent 1.
En place de 0/1 on utilise aussi (respectivement) Faux/Vrai, ou Bas(⊥)/Haut(>).
La négation (ou complémentaire ou inversion) est aussi notée ¬x ou, dans les langages
de programmation, !x voire 1 − x.
La conjonction («ET logique») correspond à une multiplication. Elle est parfois notée x∧y
ou, dans les langages de programmation, x&y ou x&&y.
La disjonction («OU logique») correspond à une addition. Elle est parfois notée x ∨ y ou,
dans les langages de programmation, x|y ou x||y.
Dans les calculs, la disjonction est moins prioritaire que la conjonction.
Propriété 4.1. Propriétés du calcul booléen (Table 4.1.)
4.2
Fonctions logiques
Définition 4.2. Fonction logique. Une fonction logique (ou fonction booléen) est une application
de B n dans B. On parle souvent d’entrées pour les paramètres, et de sortie pour le résultat.
37
38
4.3. Systèmes logiques combinatoires
Règle
Associativité
Commutativité
Distributivité
Élément neutre
Absorption
OU
(x + y) + z = x + (y + z)
x+y=y+x
x + (y · z) = (x + y) · (x + z)
x+0=x
x+1=1
x + (x · y) = x
Symétrie
x + x̄ = 1
Idempotence
x+x=x
Simplification
x + x̄ · y = x + y
Loi de De Morgan x + y = x̄ · ȳ
ET
(x · y) · z = x · (y · z)
x·y =y·x
x · (y + z) = (x · y) + (x · z)
x·1=x
x·0=0
x · (x + y) = x
x · x̄ = 0
x·x=x
x · (x̄ + y) = x · y
x · y = x̄ + ȳ
TABLE 4.1 – Règles du calcul booléen
x
0
1
Id. NON
x
x̄
0
1
1
0
x
0
0
1
1
y
0
1
0
1
ET
x·y
0
0
0
1
NAND OU
x·y
x+y
1
0
1
1
1
1
0
1
NOR
x+y
1
0
0
0
XOR
x⊕y
0
1
1
0
XNOR
x⊕y
1
0
0
1
IMP
x⇒y
1
1
0
1
INH
x⇒y
0
0
1
0
TABLE 4.2 – Tables de vérité des opérateurs unaires et binaires classiques.
Définition 4.3. Table de vérité. La table de vérité d’une fonction logique est une table qui présente, pour chacune des 2n combinaisons de valeurs des entrées possibles, la sortie produite.
Une table de vérité définit complètement une fonction logique. Ainsi, la table 4.2 définit
les fonctions (opérateurs) unaires et binaires classiques : l’identité (Id) et la négation (NON),
puis la conjonction (ET) et sa négation (NAND), la disjonction (OU) et sa négation (NOR),
le ou exclusif (XOR) et sa négation (NXOR, aussi appelé équivalence : x ⇔ y), l’implication
(IMP) et sa négation l’inhibition (INH).
4.3
Systèmes logiques combinatoires
Les fonctions logiques permettent de représenter des conditions (par exemple en informatique), des raisonnements (en logique), mais également le fonctionnement de système :
Définition 4.4. Système logique. Un système logique est un système dont l’état peut être caractérisé par des expressions logiques (booléennes), c’est-à-dire que chaque entrée est une variable
booléenne et chaque sortie est une fonction booléenne (définie sur les entrées et les sorties en cas de
rétro-action).
Ainsi un système électrique de va-et-vient peut être caractérisé par une fonction logique
où l’état de l’ampoule (allumée/éteinte) en fonction de la position de deux interrupteurs
(voir exercice 4.2).
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 4. Algèbre de Boole
39
Définition 4.5. Système logique combinatoire. Un système logique est combinatoire s’il est
de type boucle ouverte, c’est-à-dire qu’aucune des sorties n’est rebouclée comme entrée.
Les systèmes logiques combinatoires, sont les systèmes logiques les plus simples, où
chaque sortie ne dépend que des entrées (et pas des autres sorties). En particulier, un tel
système ne peut pas avoir de mémoire et son état ne dépend que du présent et peut être
entièrement caractérisé par une table de vérité de chaque sortie en fonction des entrées.
Pour représenter les systèmes logiques, on utilise les symboles de la figure 4.1.
NON
ET
OU
NAND
NOR
XOR
NON-XOR
CEI
ANSI
F IGURE 4.1 – Symboles des opérateurs logiques, selon les normes internationale (CEI 6061712) et américaine (ANSI).
4.4
Formes normales, formes canoniques
Une fonction logique peut s’écrire de bien des façons, et en particulier uniquement avec
les opérateurs NON, ET et OU (proposition 4.1 à suivre).
Définition 4.6.
On appelle littéral une variable ou sa négation.
On appelle produit fondamental un produit (ou conjonction) de littéraux ; on appelle mintterme d’ordre n un produit fondamental de n littéraux.
On appelle somme fondamentale une somme (ou disjonction) de littéraux ; on appelle maxterme d’ordre n une somme fondamentale de n littéraux.
Dans un produit ou une somme fondamentale, une négation ne porte que sur une variable. Le nom de «minterme» vient du fait que la valeur du minterme est la valeur minimale
des littéraux qui le compose ; de même, la valeur d’un maxterme est la valeur maximale des
littéraux qui le compose. On vérifie facilement qu’il y a exactement un minterme égal à 1, et
exactement un maxterme égal à 0, ce qui s’énonce :
Propriété 4.2.
Il y a 2n mintermes d’ordre n. La somme de tous les mintermes vaut 1. Le produit de 2 mintermes
d’ordre n (différents) vaut 0.
Il y a 2n maxtermes d’ordre n. Le produit de tous les maxtermes vaut 0. La somme de 2 maxtermes
d’ordre n (différents) vaut 1.
N’importe quelle fonction logique peut s’écrire uniquement comme une somme de produits fondamentaux ou comme un produit de sommes fondamentales :
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
40
4.5. Tableaux de Karnaugh
Définition 4.7. Formes normales disjonctives et conjonctives.
Une forme normale disjonctive est une disjonction d’une ou plusieurs conjonctions de littéraux
(i.e., une disjonction de produits fondamentaux).
Une forme normale conjonctive est une conjonction d’une ou plusieurs disjonctions de littéraux (i.e., une conjonction de sommes fondamentales).
Proposition 4.1. N’importe quelle fonction logique peut s’écrire comme une forme normale disjonctive. N’importe quelle fonction logique peut s’écrire comme une forme normale conjonctive.
Les formes normales sont très utiles en informatique, notamment pour faire de la vérification automatique car elle permettent un traitement uniforme des expressions logiques.
Elles s’obtiennent de manière systématique en appliquant les règles de calcul booléen.
On peut imposer que les produits et sommes fondamentaux soient des mintermes ou
maxtermes :
Définition 4.8. Formes canoniques disjonctives et conjonctives.
Une forme canonique disjonctive est une disjonction de mintermes (d’ordre n).
Une forme canonique conjonctive est une conjonction de maxtermes (d’ordre n).
Proposition 4.2. N’importe quelle fonction logique peut s’écrire comme une forme canonique disjonctive et cette expression est unique. N’importe quelle fonction logique peut s’écrire comme une
forme canonique conjonctive et cette expression est unique.
La forme canonique disjonctive peut être facilement déduite de la table de vérité : il faut
et il suffit de sommer (disjonction) tous les cas (mintermes) pour lesquels la sortie est 1. De
même, la forme canonique conjonctive peut-être obtenue comme la négation de la somme
des mintermes valant 0.
4.5
Tableaux de Karnaugh
Les formes canoniques ou normales peuvent avoir un très grand nombre de termes, il
est parfois utile de les simplifier (par exemple, pour la fabrication d’un système logique,
on voudra utiliser le moins de composants possible). On peut pour cela utiliser un outil
graphique : le tableau de Karnaugh.
La méthode, proposée par Maurice Karnaugh, se base sur une écriture particulière de
la table de vérité d’une expression : l’idée directrice est de mettre côte à côte les mintermes
qui ne sont différents que par un littéral, afin de permettre des regroupements, et donc des
simplifications, lorsque ces mintermes donnent le même résultat.
Pour une fonction f de n variables dont on connaît la table de vérité, on procède comme
suit (on pourra se référer à la figure 4.2 pour un exemple de résultat).
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 4. Algèbre de Boole
41
Construction d’une table de Karnaugh
1. On choisit p variables pour indicer les lignes de la table ; chaque colonne correspond
à un état des p variables (pour 2 variables a et b, on aura donc les lignes ab, āb, ab̄, āb̄).
Les n − p restantes indicent les colonnes. En général (et il est recommandé), on prend
p = [n/2].
2. On ordonne les lignes de manière à ce que deux lignes consécutives ne différent que
d’un littéral ; on fait de même pour les colonnes. Pour l’ordre, on utilise le code de
Gray (voir également exercice 4.3) :
— Pour une variable : 0, 1.
— Pour deux variables : 00, 01, 11, 10.
— Pour trois variables : 000, 001, 011, 010, 110, 111, 101, 100.
Ainsi, sur l’exemple, la troisième ligne correspond aux états avec ab et la quatrième
colonne aux états avec c̄dē.
3. On complète chaque case par la valeur de vérité de la fonction correspondante.
Ainsi, sur l’exemple, dans la case de la deuxième ligne, cinquième colonne, on a la
valeur pour l’état ābcdē.
Propriétés de la table
Un tableau de Karnaugh est torique 1 : les bords droit et gauche sont adjacents, de même
que les bords haut et bas.
Un tableau de Karnaugh a des axes de réflexion. Deux cases symétriques par rapport
à un axe ne sont différentes que par un littéral et peuvent donc être considérées comme
adjacentes. (Ceci est une conséquence du code de Gray, voir exercice 4.3.)
Ne pas oublier de tenir compte de ces propriétés lors de la recherche de blocs (voir ciaprès) ; à défaut les expressions obtenues seront moins simples qu’elles pourraient l’être.
Utilisation de la table
1. On cherche des blocs de 1 adjacents (au sens large, y compris par symétrie autour
d’axes de réflexion) avec les règles suivantes :
— le nombre de cases d’un bloc est une puissance de 2 ;
— un bloc est symétrique horizontalement et verticalement ;
— si un axe de réflexion vertical coupe un bloc, alors il doit exister un axe de symétrie
vertical. Idem horizontalement ;
— si un bloc (d’au moins 8 case) est symétrique par rapport à un axe de réflexion,
alors ses sous-blocs doivent vérifier ces règles.
Les blocs sont des rectangles dont les dimensions sont des puissances de 2 (ou des
unions de rectangles symétriques). Chaque bloc correspond à une conjonction : il faut
donc des blocs aussi grands que possible (moins de littéraux), et on ne considèrera pas
un bloc inclus dans un autre.
Sur l’exemple, tous les blocs possibles ont été mis en évidence.
2. On choisit une couverture des 1 par des blocs. Il faut avoir le moins de blocs les plus
grands possibles. Un bloc qui est seul à couvrir un 1 est dit «bloc principal» et fait
obligatoirement partie de la couverture ; les autres blocs sont des «blocs secondaires».
1. En forme de tore, ou hyper-cylindre, dont l’exemple le plus connu est le donut cher à Homer Simpson.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
42
4.6. Références
¯ ; ābcdē
Blocs principaux : b̄e ; ac̄d, āc̄e ; abdē
¯
¯
Blocs secondaires : bc̄dē ; ābc̄d.
¯ + ābcdē + bc̄dē
¯
f (a, b, c, d, e) = b̄e + ac̄d + āc̄e + abdē
F IGURE 4.2 – Exemple de tableau de Karnaugh
Sur l’exemple, il y a 5 blocs principaux et 2 blocs secondaires.
3. On déduit une expression de la fonction logique comme disjonction des conjonctions
correspondant aux regroupements choisis pour couvrir les 1.
¯
¯ ;
Sur l’exemple, on obtient l’expression f (a, b, c, d, e) = be+ac̄d+āc̄e+abdē+ābcdē+bc̄
dē
le dernier terme aurait pu être remplacé par l’autre bloc secondaire.
Au lieu de faire des regroupements sur les 1, on peut travailler sur le complémentaire de
l’expression : on regroupe les 0, puis on prend la négation de l’expression obtenue.
On peut avoir des fonctions partiellement définies, si la sortie est indifférente (ou non
définie) pour certaines combinaisons d’entrées. Dans ce cas, on peut choisir la valeur qui
arrange pour faire des regroupements.
4.6
—
—
—
—
Références
Wikipedia, Algèbre de Boole, consultée le 2015-10-07.
Walter Hammer, Systemes logiques, Cours de l’EPFL, 2001. (version PDF)
Wikipedia, Table de Karnaugh, consultée le 2015-10-07.
Jean-Yves Fabert, Automatismes et Automatique, Ellipses, deuxième édition, 2005. (extrait PDF sur tables de Karnaugh)
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 4. Algèbre de Boole
4.7
43
Exercices
E XERCICE 4.1 : C ALCUL BOOLÉEN
[1] Démontrez les lois de De Morgan à partir des tables de vérités.
Solution —
x
0
0
1
1
y
0
1
0
1
x+y x+y
0
1
1
0
1
0
1
0
x̄
1
1
0
0
ȳ x̄ · ȳ
1
1
0
0
1
0
0
0
x
0
0
1
1
y
0
1
0
1
x·y x·y
0
1
0
1
0
1
1
0
x̄
1
1
0
0
ȳ x̄ + ȳ
1
1
0
1
1
1
0
0
L’identité des colonnes 4 et 7 du tableau de gauche prouve la première loi ; l’identité des
colonnes 4 et 7 du tableau de droite prouve la deuxième loi.
[2] Démontrez avec les règles du calcul Booléen la règle du consensus : x·y+x̄·z+y·z = x·y+x̄·z.
Solution —
x · y + x̄ · z + y · z =
=
=
=
x · y + x̄ · z + (x + x̄)y · z
x · y + x̄ · z + x · y · z + x̄ · y · z
x · y · (1 + z) + x̄ · z · (1 + y)
x · y + x̄ · z
(neutre et complément)
(distributivité)
(associativité, commutativité)
(absorption)
[3] Exprimez chacun des opérateurs logiques binaires avec les seuls opérateurs NON, ET et OU.
On donnera les expressions sous formes normales disjonctive et conjonctive.
Solution — Dans tous les cas, on peut trouver la forme normale disjonctive (FND) comme
somme des mintermes valant 1 dans la table de vérité, et la forme normale conjonctive
(FNC) comme complémentaire de la somme des mintermes valant 0 dans la table de vérité.
— ET, OU : eux-mêmes (FND et FNC).
— NAND : x · y = x̄ + ȳ (FND et FNC).
— NOR : x + y = x̄ · ȳ (FND et FNC).
— XOR :
x ⊕ y = x · ȳ + x̄ · y (FND).
x ⊕ y = x · y + x̄ · ȳ = x · y · x̄ · ȳ = (x̄ + ȳ) · (x + y) (FNC).
— XNOR :
x ⊕ y = x · y + x̄ · ȳ (FND).
x ⊕ y = x · ȳ + x̄ · y = x · ȳ · x̄ · y = (x̄ + y) · (x + ȳ) (FNC).
— IMP :
x ⇒ y = x · y + x̄ · y + x̄ · ȳ (FNC) ; se simplifie en y + x̄ · ȳ (autre FNC) puis en x̄ + y (autre
FNC, aussi FND)
x ⇒ y = x · ȳ = x̄ + y (on retrouve la précédente FNC et FND).
— INH : x ⇒ y = x · ȳ (FNC et FND).
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
44
4.7. Exercices
E XERCICE 4.2 : VA - ET- VIENT
On considère le circuit électrique de va-et-vient classique :
[1] Exprimez ce système comme un système logique combinatoire. On précisera les entrées, les
sorties, et les expressions des sorties en fonction des entrées.
Solution — Les entrées du système sont les positions des interrupteurs ; on notera ces entrées
a et b (valeur 1 en position haute, 0 en position basse). La sortie du système est l’état de
l’ampoule, qu’on notera s (1 si l’ampoule est allumée, 0 sinon).
On a alors une relation : s = f (a, b) qui est : s = a XNOR b = a · b + ā · b̄.
E XERCICE 4.3 : C ODE DE G RAY
Le code de Gray peut être obtenu facilement par une construction récursive 2 :
1. Le code de Gray pour un chiffre est 0, 1.
2. Le code de Gray pour n + 1 chiffres est obtenu en prenant le code de Gray à n chiffres
préfixé par 0 puis le miroir du code de Gray à n chiffres (les termes eux-même ne sont
pas en miroir, mais pris du terme de droite à terme de gauche) préfixés par 1.
De part cette construction, le code de Gray est aussi appelé «binaire réfléchi», les termes
pour n + 1 chiffres étant obtenus par réflexion (dans un miroir) des termes de n chiffres.
[1] Donnez le code de Gray à 1, 2, 3 et 4 chiffres.
Solution — 1 variable : 0, 1.
2 variables : 00, 01, 11, 10.
3 variables : 000, 001, 011, 010, 110, 111, 101, 100.
4 variables : 0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010,
1011, 1001, 1000.
[2] Vérifiez que le code de Gray est «cyclique», dans le sens où le premier et le dernier termes
ne sont différents, eux-aussi, que d’un chiffre.
Solution — Par construction, le premier et le dernier termes sont identiques, sauf le premier
chiffre (respectivement 0 et 1).
[3] Déterminez les axes de réflexion des codes de Gray de 2 à 4 chiffres. Pour chaque axe, on
déterminera l’unique variable dont la valeur change entre deux termes symétriques.
Solution —
Code à 2 chiffres :
2. Il existe d’autres constructions, moins pratiques à mettre en œuvre à la main, mais parfois plus efficaces ;
voir Wikipedia, Code de Gray (consulté le 2015-10-10).
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 4. Algèbre de Boole
45
— 00 01 | 11 10
Code à 3 chiffres :
— 000 001 | 011 010 110 111 101 100, soit 101
— 000 001 011 010 | 110 111 101 100
— 000 001 011 010 110 111 | 101 100, soit 011
Code à 4 chiffres :
— 0000 0001 | 0011 0010 0110 0111 0101 0100
— 0000 0001 0011 0010 | 0110 0111 0101 0100
soit
1010 10 11 1001 1000 0000 0001 0011 0010 |
— 0000 0001 0011 0010 0110 0111 0101 0100 |
— etc.
100 000 001 | 011 010 110 111
010 110 111 | 101 100 000 001
1100 1101 1111 1110 1010 1011 1001 1000
1100 1101 1111 1110 1010 1011 1001 1000
0110 0111 0101 0100 1100 1101 11 11 1110
1100 1101 1111 1110 1010 1011 1001 1000
E XERCICE 4.4 : M INIMISATION D ’ UNE FONCTION LOGIQUE
Soit la fonction logique, donnée sous forme normale disjonctive :
f (a, b, c, d) = abcd + abcd¯ + ab̄cd¯ + ab̄c̄d¯ + ābcd + ābcd¯ + ābc̄d + ābc̄d¯ + āb̄cd¯ + āb̄c̄d + āb̄c̄d¯
[1] Écrivez la table de vérité de cette fonction sous forme de table de Karnaugh.
[2] Proposez une expression simple de cette fonction.
Solution —
¯ āc̄, bc
Blocs principaux : b̄d,
Blocs secondaires : āb, cd¯
f (a, b, c, d) = b̄d¯ + āc̄ + bc
E XERCICE 4.5 : A DDITIONNEUR 3 BITS
On aimerait fabriquer un système pour additionner deux nombres de 3 bits et afficher le
résultat sur des afficheurs sept segments (voir figure 4.3).
F IGURE 4.3 – Additionneur 3 bits
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
46
4.7. Exercices
[1] Proposez un schéma logique permettant d’additionner deux nombres de 1 bit ; indiquez les
fonctions logiques correspondantes.
Solution —
r1 = x ⊕ y
r2 = x · y
[2] Proposez un schéma logique permettant d’additionner trois nombres de 1 bit ; indiquez les
fonctions logiques correspondantes.
Solution —
r1 = x ⊕ y ⊕ r
r2 = r(x ⊕ y) + x · y
[3] Proposez un schéma logique permettant d’additionner deux nombres de 3 bits.
Solution — Il suffit d’enchaîner en cascade les schémas des questions précédentes...
On veut maintenant afficher le résultat à l’aide de deux afficheurs sept segments, ces
derniers étant numérotés conformément à la figure 4.3.
Tout d’abord, construisons le tableau des résultats décimaux
qui aidera à construire les tableaux de Karnaugh des différents segments. Noter que la valeur 15 est impossible (on
pourra donc choisir ce que l’on veut).
r2 r1
r4 r3
00
00
0
01
4
11
12
10
8
01 11 10
1
3 2
5
7 6
13 15 14
9 11 10
[4] Construisez le tableau de Karnaugh et une expression logique simple pour le segment 8.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 4. Algèbre de Boole
47
r2 r1
Solution —
r4 r3
00
01
11
10
00
0
0
1
0
01
0
0
1
0
11
0
0
?
1
10
0
0
1
1
f (r4 , r3 , r2 , r1 ) = r4 r3 + r4 r2
[5] Construisez le tableau de Karnaugh et une expression logique simple pour le segment 1.
r2 r1
Solution —
r4 r3
00
01
11
10
00
1
1
0
1
01
1
1
1
1
11
1
1
?
1
10
0
1
1
1
f (r4 , r3 , r2 , r1 ) = r¯4 r¯3 r2 r¯1 + r4 r3 r¯2 r¯1
[6] Construisez le tableau de Karnaugh et une expression logique simple pour le segment 7.
r2 r1
Solution —
r4 r3
00
01
11
10
00
1
0
1
1
01
0
0
0
0
11
0
0
?
0
10
1
1
0
1
f (r4 , r3 , r2 , r1 ) = r¯3 r¯1 + r4 r¯2 r¯1 + r¯4 r2 r¯1
E XERCICE 4.6 : L’ INTRUS
On a une très longue série de 2n + 1 nombres : x1 , x2 , . . . x2n+1 où chaque nombre est
répété exactement 2 fois, sauf 1. On ne peut lire chaque nombre qu’une seule fois, et on ne
peut retenir qu’un seul nombre en mémoire.
? [1] Proposez une méthode pour identifier le nombre unique.
Solution — On ne peut pas retenir tous les nombres, mais on peut retenir une combinaison
de ces nombres. On va faire un XOR sur la représentation binaire des nombres ; le résultat
sera le nombre unique cherché : x∗ = ⊕ni=1 xi .
En effet, on peut résonner sur des chiffres à un bit (sinon c’est valable pour chaque bit).
Le XOR est commutatif ; on peut échanger les termes sans changer le résultat, et on a (en
notant a, b, . . . les nombres répétés et x∗ le nombre unique) :
XORni=1 xi = a
⊕ a} ⊕ b| {z
⊕ }b ⊕ |{z}
. . . ⊕x∗ = 0 ⊕ x∗ = x∗
| {z
0
{z0
}
| 0
0
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
C HAPITRE 5
Transformation de Laplace
La «transformation de Laplace» est une transformation qui, a une fonction f associe une
intégrale particulière dont les propriétés permettent de simplifier certaines opérations. Elle
est particulièrement utile pour certains calculs de probabilités ou pour la résolution de certaines équations différentielles.
Historiquement, Pierre-Simon de Laplace, poursuivant des travaux d’Euler notamment
sur les propriétés des intégrales, a été le premier à se rendre compte des propriétés d’une
telle transformation et des facilités de calcul qu’elle permettait. La «transformation de Laplace» actuelle est une version remaniée de celle initialement considérée.
5.1
Définition et propriétés fondamentales
La transformée de Laplace peut être interprétée comme la transformation d’un signal
dépendant du temps (donc une fonction f (t) définie pour t ≥ 0) en une fonction dépendant
d’une fréquence complexe (F (p), pour p ∈ C). La transformée de Laplace d’une fonction
f (t) est traditionnellement notée F (s) ou L{f }(s).
Définition 5.1. Transformée de Laplace. Soit f : R+ → R. La transformée de Laplace de f
est la fonction F : C → C définie par :
Z +∞
e−st f (t)dt.
F (s) = L{f }(s) =
0
Une transformée de Laplace n’est bien entendu définie que si l’intégrale est définie. En
particulier, f doit avoir une croissance «sous-exponentielle». De même, bien se rappeler que
la transformée de Laplace n’est définie que pour une fonction définie sur R+ ; cela n’est
parfois qu’implicite (pour ne pas allourdir les notations 1 ), mais sera toujours le cas.
La transformation de Laplace permet de transformer certaines opérations sur les fonctions (par exemple la dérivation et l’intégration) en de simples opérations algébriques :
Proposition 5.1. Les principales propriétés de la transformée de Laplace sont données Table 5.1.
La transformée de Laplace permet également de retrouver les limites de la fonction f :
1. L’alternative rigoureuse serait de multiplier, chaque fois que nécessaire, la fonction considérée par la
fonction indicatrice de t ≥ 0, notée 1t>0 (parfois appelée fonction de Heaviside et notée u(t)).
49
50
5.2. Transformées de Laplace usuelles
Propriété
Fonction
Transformée
Transformée
f (t)
F (s)
Linéarité
αf (t) + βg(t)
αF (s) + βG(s)
Dérivation
f 0 (t)
sF (s) − f (0)
Dérivée seconde
f 00 (t)
Dérivée n-ième
f (n) (t)
s2 F (s) − sf (0) − f 0 (0)
P
sn F (s) − nk=1 sn−k f (k−1) (0)
Intégration
Rt
0
1
s F (s)
f (x)dx
Retard
f (t − T )
e−T s F (s)
Translation
e−at f (t)
F (s + a)
TABLE 5.1 – Propriétés calculatoires de la transformée de Laplace.
Théorème 5.1. Théorème de la valeur initiale. Pour f admettant une transformée de Laplace F :
lim f (t) = lim sF (s).
t→0+
s→∞
Théorème 5.2. Théorème de la valeur finale. Pour f admettant une transformée de Laplace F :
lim f (t) = lim sF (s)
t→∞
s→0
(sous réserve que la limite de droite soit définie 2 ).
5.2
Transformées de Laplace usuelles
La table 5.2 présente les transformées de Laplace des fonctions classiques.
5.3
Transformation inverse
Deux fonctions différentes ont des transformées de Laplace différentes 3 : cela implique
qu’on peut inverser la transformée de Laplace. C’est une propriété essentielle lorsqu’on veut
2. lims→0 sF (s) est définie si sF (s) n’a pas de pôle pour Re(s) ≥ 0 (un pôle étant une singularité où la
fonction est infinie, comme z = 0 pour la fonction z 7→ 1/z).
3. Il y a quelques restrictions... hors sujet dans ce cours.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 5. Transformation de Laplace
51
f (t)
F (s)
f (t)
1
1
s
sin(ωt)
1t≥T (t)
1 −T s
e
s
cos(ωt)
δ(t)
1
1 − cos(ωt)
δ(t − T )
e−T s
sinh(ωt)
t
tn (n ∈ N)
1
s2
n!
sn+1
1
e−at
s+a
n−1 −t/T
t e
1
T n (n − 1)!
(1 + T s)n
(T + t) −t/T
1
1−
e
T
s(1 + T s)2
t −t/T
1
T
e
−1
T
s2 (1 + T s)
cosh(ωt)
1 − e−t/T
a − T −t/T
1−
e
T
a−T
1+
t − 1 e−t/T
2
T
−t/T
(a − T ) 1 − e
+t
F (s)
ω
s2 + ω 2
s
s2 + ω 2
1
2
p(1 + ωs 2 )
ω
s2 − ω 2
s
2
s − ω2
1
s(1 + T s)
1+as
s(1 + T s)
1+as
s(1 + T s)2
1+as
s2 (1 + T s)
TABLE 5.2 – Transformées de Laplace usuelles. 1t≥T (t) est la marche unitaire de retard T .
δ(t) est la fonction de Dirac (impulsion) et δ(t − T ) est l’impulsion de retard T .
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
52
5.3. Transformation inverse
utiliser la transformation de Laplace pour des calculs : après avoir effectué les calculs dans
l’espace des fonctions de Laplace, il faut pouvoir revenir aux fonctions «normales».
5.3.1
Inverse de la transformée de Laplace
De manière formelle, on démontre que :
Proposition 5.2. Transformée inverse.
1
lim
f (t) = L {F }(t) =
2πi T →∞
−1
Z
γ+iT
est F (S)ds
γ−iT
(où γ est tel que l’intégration se fait dans la région de convergence de F ).
5.3.2
Calcul pratique de l’inverse
La proposition ci-dessus est très formelle et peu commode : en pratique, on utilise simplement les tables de transformées usuelles et les propriétés de la transformation de Laplace
(notamment la linéarité), afin de «deviner» l’inverse.
Exemple 5.1. Transformation inverse.
1
Soit F (s) = 2
.
s + 2s + 3
On peut factoriser F pour obtenir l’écriture F (s) =
1
. On peut remarquer que F (s)
(s + 1)2 + 2
√
1
s’obtient par translation de 1 de la fonction G(s) = 2
. G(s) peut se ré-écrire : G(s) = H(s)/ 2,
s +2
√
2
√ .
avec H(s) =
s2 + ( 2)2
√
Par
sin( 2t). Par linéarité, on a donc g(t) =
√ identification H(s) est est la transformée de h(t) =−t
h(t)/ 2. Par la propriété de translation, on a f (t) = g(t)e . Au final, on a :
√
1
f (t) = √ sin( 2 t)e−t .
2
5.3.3
Calcul par décomposition par pôles
Il n’est pas toujours évident de décomposer efficacement F pour identifier des transformées connues. Une méthodologie souvent efficace est la décomposition par pôles 4 . On
(s)
procède comme suit pour une fonction F de la forme F (s) = N
, où N et D sont des polyD(s)
nômes :
4. Un pôle est une singularité où la fonction est infinie, comme z = 0 pour la fonction z 7→ 1/z.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 5. Transformation de Laplace
53
1. Factoriser le dénominateur de F . Pour cela, il faut trouver les racines s1 , s2 , . . ., sn de
N (s)
D(s). On a alors F sous la forme F (s) =
.
(s − s1 )(s − s2 ) . . . (s − sn )
— Si D(s) est un polynôme de degré deux, les racines sont faciles à obtenir.
— Sinon, il faut chercher des racines évidentes, et en tous cas une première racine
qui permette une première factorisation...
ki
2. Écrire la transformée de Laplace comme une somme de termes de la forme (s−s
p . On
i )i
suppose deg(N ) < deg(P ), et alors :
ki
. ki s’obtient
— Si si est un pôle simple de F , alors on aura un terme de la forme
s − si
par le calcul : ki = F (s)(s − si ) pour s = si .
Ki
ki
— Si si est un pôle double de F , alors on aura un terme de la forme
.
+
(s − si )2 s − si
d(F (s)(s − si )2 )
On a : Ki = F (s)(s − si )2 pour s = si , et ki =
pour s = si .
ds
— Si si est un pôle complexe, alors s̄i (son conjugué) aussi. On aura alors deux termes
ki
k̄i
et
.
conjugués de la forme
s − si
s − s̄i
3. Identifier chaque terme et utiliser la linéarité de la transformation pour recomposer
la fonction f .
ki
donne ki esi t (lecture directe de table).
— Les termes de la forme
s − si
Ki
— Les termes de la forme
donne Ki tesi t (utiliser la propriété de translation
(s − si )2
et la transformée de t qui donne 1/s).
Exemple 5.2. Transformation inverse par décomposition par pôles.
−s − 3
.
Soit F (s) = 2
s + 3s + 2
On calcule les racines de s2 + 3s + 2, et on obtient -2 et -1. On a donc F (s) =
−s − 3
.
(s + 2)(s + 1)
A
B
On met F sous la forme F (s) = s+2
+ s+1
. On a : A = F (s)(s + 2) pour s = −2, soit
1
−2
2−3
A = −2+1
= −1/ − 1 = 1. De même, B = −2 et on obtient : F (s) =
+
.
s+2 s+1
1
1
Par identification : s+2
est la transformée de e−2t , s+1
ets la transformée de e−t . Par linéarité, on
−2t
−t
a alors : f (t) = e − 2e (pour t ≥ 0).
La décomposition par pôles, bien que pratique, n’est pas toujours effective, et elle n’est
pas obligatoire. De manière générale, plusieurs cheminements sont possibles pour déterminer l’inverse d’une transformée de Laplace.
5.3.4
Utilisation pour la résolution d’équations différentielles
La transformation de Laplace peut être efficacement utilisée pour résoudre des équations
différentielles, selon la méthode suivante :
1. Calculer la transformée de Laplace de chaque terme de l’équation différentielle.
2. Résoudre l’équation (algébrique) obtenue.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
54
5.4. Références
3. Faire la transformation inverse du résulat pour revenir à un résultat fonction de t.
L’exemple suivant illustre cela :
Exemple 5.3. Résolution d’une équation différentielle.
On veut résoudre l’équation
x00 (t) + x(t) = 8 sin(3t)
avec comme conditions initiales x(0) = 0 et x0 (0) = 0.
On exprime cette équation en termes de transformées de Laplace :
— le terme x00 (t) donne s2 X(s) − s x(0) − x0 (0) = s2 X(s) (conditions initiales) ;
— le terme x(t) donne X(s) ;
— le terme 8 sin(3t) donne 8 s23+9 .
Il faut donc résoudre l’équation :
s2 X(s) + X(s) = 8
s2
3
+9
qui donne immédiatement :
X(s) =
(s2
24
.
+ 9)(s2 + 1)
Il faut maintenant retourner dans l’espace des fonctions de t. On commence par chercher A et B
tels que X(S) = s2A+9 + s2B+1 ; cela se résoud facilement et on a :
X(s) =
3
−3
+ 2
.
+9 s +1
s2
Par linéarité et identification, on obtient alors :
f (t) = − sin(3t) + 3 sin(t).
5.4
Références
— Wikipedia, Laplace Transform, consultée le 2015-10-15.
— C. Saint-Blanquet et B. Fourcher, Résolution par utilisation de la transformée de Laplace,
consultée le 2015-10-16.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 5. Transformation de Laplace
5.5
55
Exercices
E XERCICE 5.1 : P ROPRIÉTÉS DE LA TRANSFORMÉE DE L APLACE
[1] Démontrez les propriétés fondamentales de la Transformée de Laplace. Dans tous les cas, on
fera l’hypothèse que toutes les intégrales nécessaires sont définies, et que toutes les fonctions
sont dérivables lorsque nécessaire.
Solution —
Linéarité : L{αf + βg}(s) = αF (s) + βG(s).
Cela provient de la linéarité de l’intégrale :
Z ∞
L{αf (t) + βg(t)}(s) =
e−st (αf (t) + βg(t))dt
0
Z ∞
Z ∞
−st
e−st g(t)dt
e f (t)dt + β
= α
0
0
= αF (s) + βG(s)
Dérivation : L{f 0 }(()s) = sF (s) − f (0).
La propriété de dérivation s’obtient par intégration par parties :
Z ∞
L{f 0 (t)}(s) =
e−st f 0 (t)dt
0
Z ∞
∞
−st
e−st f (t)dt
= [e f (t)]0 + s
0
= −f (0) + sF (s)
(−se−st f (t) = 0 quand t = ∞, car sinon la transformée de Laplace n’est pas définie).
en déduit la transformée de Laplace de la dérivée n-ième : L{f (n) }(s) = sn F (s) −
Pn On n−k
f (k−1) (0), par induction. En effet, on vient déjà de vérifier que la formule proposée
k=1 s
est vraie pour n = 0 et n = 1. Si elle est vraie au rang n, alors :
Z ∞
(n+1)
L{f
(t)}(s) =
e−st f (n+1) (t)dt
0
Z ∞
∞
−st (n)
= [e f (t)]0 + s
e−st f (n) (t)dt
0
= −f
(n)
(n)
}(s)
n
X
= −f (n) (0) + s(sn F (s) −
sn−k f (k−1) (0))
(0) + sL{f
k=1
= sn+1 F (s) −
= sn+1 F (s) −
n
X
k=1
n+1
X
sn+1−k f (k−1) (0) − f (n) (0)
sn+1−k f (k−1) (0)
k=1
Rt
Intégration : L{ 0 f (x)dx}(s) = F (s)/s.
Elle se déduit de la forme de dérivation.
Soit f (t) et sa transformée F (s).
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
56
5.5. Exercices
Rt
On pose g(t) = 0 f (x)dx et G(s) sa transformée de Laplace. D’après la propriété de
dérivation : L{g 0 }(s) = sG(s) − g(0). Or g(0) = 0, donc L{g 0 }(s) = sG(s).
Puisque g 0 (t) = fR(t), on a : F (s) = sG(s) et donc G(s) = F (s)/s.
t
Donc, on a : L{ 0 f (x)dx}(s) = F (s)/s.
Retard.
Z
∞
L{f (t − T )1t≥T }(s) =
Z0 ∞
=
Z−T
∞
=
0
−sT
= e
Translation.
L{e
−at
∞
Z
f (t)}(s) =
e−st f (t − T )1t≥T dt
e−s(t+T ) f (t)1t+T ≥T dt
e−sT e−st f (t)dt
F (s)
e−(s+a)t f (t)dt = F (s + a)
0
E XERCICE 5.2 : T RANSFORMÉES DE L APLACE USUELLES
[1] Calculez la transformée de Laplace de la fonction f (t) = 1 (pour t ≥ 0).
Solution — Soit f (t) = 1 (pour t ≥ 0). Par définition de la transformée de Laplace, on a :
Z ∞
−1 −st ∞ 1
−st
F (s) =
e dt =
e
=
s
s
0
0
[2] Calculez la transformée de Laplace de la fonction de Dirac δ(t). La fonction de Dirac est
δ(t) = lim→0 δ (t), où δ est la fonction qui vaut 1/ sur [0; ] et 0 partout ailleurs.
Solution — Soit f (t) = δ (t) (pour t ≥ 0). Par définition de la transformée de Laplace, on a :
Z ∞
Z 1 −st
1 − e−s
−st
F (s) =
δ (t)e dt =
e dt =
.
s
0
0 On a F (s) = lim→0 F (s). Nous avons affaire à une forme indéterminée «0/0» : on utilise la
règle de l’Hospital (si f (x0 ) = g(x0 ) = 0, alors lim x → x0 f (x)/g(x) = lim x → x0 f 0 (x)/g 0 (x) ; cela
se retrouve facilement avec les formules de Taylor). On a ainsi :
se−s
= 1.
→0
s
F (s) = lim F (s) = lim
→0
n
[3] Calculez la transformée de Laplace de la fonction f (t) = t .
Solution — Soit fn (t) = tn (t ≥ 0). Par définition de la transformée de Laplace puis intégration
par parties, on a :
n −st ∞
Z ∞
Z
t e
n ∞ n−1 −st
n
Fn (s) =
tn e−st dt =
+
t
e dt = Fn−1 (s)
−s
s
s
0
|0
{z
}
| {z 0}
0
Fn−1 (s)
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 5. Transformation de Laplace
57
(on se limite aux s tels que l’intégrale Fn (s) est définie, bien entendu).
Or f0 (t) = 1 et F0 (s) = 1/s. Par induction, on déduit immédiatement :
Fn (s) =
n!
sn+1
.
[4] Calculez la transformée de Laplace de f (t) = cos(ωt) (rappel : cos(ωt) =
1 iωt
(e
2
−iωt
+e
).
Solution — Soit f (t) = cos(ωt) (t ≥ 0). Par définition de la transformée de Laplace on a :
Z ∞ iωt
Z
e + e−iωt −st
1 ∞ (iω−s)t
F (s) =
e
+ e−(iω+s)t dt.
e dt =
2
2
0
0
Pour s tel que F (s) est définie (c’est-à-dire tel que «iω + s ≥ 0» et «iω − s ≤ 0» afin que les
exponentielles ne divergent pas), on a :
"
#∞
1 e(iω−s)t e−(iω+s)t
−1
s
1
1
F (s) =
= 2
.
−
=
+
2 iω − s
iω + s
2 iω − s iω + s
ω + s2
0
[5] En déduite la transformée de Laplace de f (t) = sin(ωt).
Solution — On va utiliser la propriété de dérivation.
Soit f (t) = sin(ωt). On a f (t) = g 0 (t) pour g(t) = −1
ω cos(ωt).
La propriété de dérivation donne : F (s) = sG(s) − g(0) avec g(0) =
s
G(s) = −1
ω ω 2 +s2 . On a donc :
F (s) = s
−1
ω
cos(0) =
−1
ω
et
s
1
1
s2
ω
−1
+
=
(1
−
)= 2
.
ω ω 2 + s2 ω
ω
ω 2 + s2
ω + s2
E XERCICE 5.3 : R ADIOACTIVITÉ
Un principe fondamental de physique nucléaire énonce que le nombre n d’atomes radioactifs diminue de manière proportionnel à ce nombre. En d’autres termes, on a l’équation :
dn
= −λn
dt
où λ est la constante de décroissance radioactive.
[1] Résoudre cette équation différentielle à l’aide de la transformation de Laplace.
Solution — Soit N (s) la transformée de Laplace de la fonction n(t). L’équation différentielle
se ré-écrit : sN (s) − n0 = λN (s), ou encore :
N (s) =
n0
s+λ
où n0 est le nombre d’atomes à l’instant 0.
1/(s + λ) est la transformée de Laplace de e−λt . On a donc :
n(t) = n0 e−λt .
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
58
5.5. Exercices
E XERCICE 5.4 : R ÉSOLUTION D ’ UNE ÉQUATION DIFFÉRENTIELLE
[1] Résoudre y 0 (t) + b y(t) = a u(t), avec y(0+ ) = 0. u(t) est la fonction de Heaviside : u(t) = 1 si
t ≥ 0 et u(t) = 0 sinon.
Solution — En passant dans l’espace des transformées de Laplace, on a : sY (s) − y(0) +
bY (s) = a/s. Avec la condition initiale y(0) = 0, cela se simplifie en (s + b)Y (s) = a/s, soit :
Y (s) =
a
.
s(s + b)
On ré-écrit Y pour le décomposer en pôles :
−1
1
+
Y (s) = a
b s b(s + b)
et on obtient :
y(t) = a
1 1 −bt
a
u(t) = (1 − e−bt )u(t).
− e
b
b
b
E XERCICE 5.5 : M OUVEMENT D ’ UN SYSTÈME MASSE - RESSORT- AMORTISSEUR
y0
y(t)
On considère un système formé d’une masse
M ; d’un ressort de constante de dureté k et de
longueur à vide y0 ; d’un amortisseur de résistance f (voir figure ci-contre).
La loi fondamentale de la dynamique exprimée pour la masse M donne :
F
Mass M
M y 00 (t) + f y 0 (t) + k y(t) = F
La masse est poussée sur la gauche puis relâchée : à l’instant 0, on a y(0+ ) = −1m,
y 0 (0+ ) = 0 et F = 0N.
[1] Pour M = 1000kg, f = 3000N/m/s et k = 2000N/m, déterminez l’équation du mouvement
y(t).
Solution — De manière générale, l’équation différentielle se ré-écrit avec les transformées
de Laplace :
M (s2 Y (s) − sy0 − y00 ) + f (sY (s) − y0 ) + kY (s) = 0
qui donne
Y (s) =
(sM + f )y0 + M y00
.
M s2 + f s + k
Avec les données proposées (on divise toutes les valeurs par 1000) :
Y (s) =
−(s + 3)
.
+ 3s + 2
s2
Les pôles de Y sont les racines de f (s) = s2 + 3s + 2 : -2 et -1. On a ainsi : Y (s) =
−(s+3)
(s+2)(s+1) .
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 5. Transformation de Laplace
59
On va utiliser la propriété de translation : on va trouver et y(t), qui a pour transformée
1
1
1
−t ; 1 est la transformée de
Y (s − 1) = −(s+2)
(s+1)s = − s+1 − 2 s2 +1 . Or : s+1 est la transformée de e
s2 +1
1 − e−t/1 .
Par conséquent : et y(t) = −e−t − 2(1 − e−t ) = e−t − 2.
On en déduit :
y(t) = e−2t − 2e−t .
Remarque : à partir de Y (s) =
A
s+2
−(s+3)
(s+2)(s+1) ,
on pouvait poursuivre la décomposition par
B
s+1
pôles : Y (s) =
+
avec : A = Y (s)(s + 2) pour s = −2, soit A = 1 ; B = Y (s)(s + 1) pour
1
1
s = −1, soit B = −2. D’où Y (s) = s+2
− 2 s+2
et on retrouve y(t) = e−2t − 2e−t .
[2] Même question pour f = 2000N/m/s.
Solution — Avec les nouvelles données, Y (s) =
Y (s) =
(sM +f )y0 +M y00
M s2 +f s+k
devient :
−(s + 2)
.
+ 2s + 2
s2
Les pôles de Y sont complexes : −1 ± i. On va donc chercher Y (s) sous la forme : Y (s) =
B
+ s+1+i
où A et B sont conjugués.
A
s+1−i
−(s+2)
s+1+i pour s = −1
−1−i
= Ā (cohérent).
2
A est obtenu en évaluant Y (s)(s + 1 − i) en s = −1 + i, soit A =
−(−1+i+2)
(−1+i+1+i)
A=
=
On a donc
−(1+i)
2i
1
Y (s) =
2
=
−i(1+i)
2i2
=
i−1
2 .
De même, on obtient : B =
−1 + i
−1 − i
+
s+1−i s+1+i
=
+i:
−1 + i
1
−1 − i
1
+
.
2 s + (1 − i)
2 (s + (1 + i)
Par identification, on a :
y(t) =
−1 + i −(1−i)t −1 − i −(1+i)t
e
+
e
.
2
2
On peut ré-arranger l’expression :


 eit + e−it 2 eit − e−it 
 = −e−t (cos(t) + sin(t)).
y(t) = e−t 
+i
−

2
2i
| {z }
| {z }
cos(t)
sin(t)
Remarque : on peut aussi utiliser la propriété de translation à partir de :
Y (s) =
−(s + 2)
−(s + 2)
=
.
+ 2s + 2
(s + 1)2 + 1
s2
En effet, on va chercher la transformée de et y(t) : Y (s − 1) = −(s+1)
. On obtient : Y (s −
s2 +1
s
1
t
1) = − s2 +12 − s2 +1 , et par identification : e y(t) = −(cos(t) + sin(t)), et on retrouve le résultat
précédent.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
Deuxième partie
Outils informatiques
61
C HAPITRE 6
GNU R
6.1
Une brève introduction à R
R est un logiciel de calcul à l’origine dédié aux probabilités et aux statistiques mais qui
permet également du calcul numérique de grande qualité (contrairement à des logiciels
comme Maple, toutefois, il ne permet pas de calcul formel).
6.1.1
L’interpréteur de commandes
R lui-même est avant tout un interpréteur de commandes : on tape un «calcul», R effectue
l’opération demandée, et renvoie le résultat (comme une calculatrice). Plus particulièrement,
R affiche une invite de commande :
1
>
indiquant qu’il attend une commande de l’utilisateur 1 . L’utilisateur tape alors sa commande
et appuie sur la touche Entrée pour la valider. R évalue alors, et affiche, le résultat. Voici un
exemple de commandes R avec leurs résultats :
1
2
3
4
5
6
> 5+7
[1] 12
> sum (1 ,2 ,4 ,8 ,16 ,32 ,64)
[1] 127
> integrate ( function ( x ) sin ( x ) , lower =0 , upper =10)
1.839072 with absolute error < 9.9 e -12
Astuces de saisie
— Les flèches haut et bas permettent de naviguer de retrouver des commandes précédemment tapées pour les réutiliser, éventuellement en les modifiant.
— La touche de tabulation permet de compléter automatiquement la ligne en cours de
saisie. Ainsi, si vous tapez integr puis une tabulation, R complètera de lui-même en
integrate (si R connaît plusieurs fonctions commençant par «integr», il complètera
pour ce qui est commun à tous, et affichera les différentes possibilités). La tabulation
permet aussi de compléter facilement les paramètres des fonctions.
— On peut interrompre l’exécution d’une commande avec la combinaison de touches
Ctrl+C.
1. Parfois, R affiche une invite de commande sous la forme d’un + : cela signifie que la ligne précédente
n’est pas complète, et qu’il faut la terminer (typiquement lorsqu’une parenthèse n’a pas été fermée).
63
6.1. Une brève introduction à R
64
6.1.2
Types et variables
On peut définir des variables en R. Il n’y a pas besoin de les déclarer, il suffit d’y stocker
une valeur avec l’opérateur d’affectations -> (ou <-, le nom de la variable étant du côté de
la flèche).
On peut créer des variables de tout type (nombre, chaînes de caractères, vecteurs, matrices, fonction, tableau de données, etc. ). Le type d’une variable et celui ... de son contenu.
Ainsi, une variable peut changer de type, comme dans l’exemple suivant où x est tour à tour
un entier, une chaîne de caractères, un vecteur de booléens :
1
2
3
> x <- 10
> x <- " Bonjour ! "
> x <- c( TRUE , FALSE , FALSE , TRUE )
Noms des variables. Un nom de variable (ou de fonction) est une combinaison quelconque
de lettres (sans accents), de chiffres et du caractère . (point). Il ne faut jamais que le premier
caractère soit un . (point) ou un chiffre. R fait la différence entre majuscules et minuscules :
x et X sont deux variables différentes.
Types primitifs. Les principaux types primitifs connus par R sont :
— Les nombres («numeric»). Pour R, les nombres sont a priori des réels (nombre à virgule flottante double précision). On peut utiliser l’écriture «décimale» (par exemple :
123.45) ou l’écriture «scientifique» (par exemple : 1.2345e2).
Les nombres complexes se reconnaissent au i dans leur écriture, par exemple : 2-3i
et 1i (un nombre devant le i est indispensable, et aucun espace ne doit les séparer).
— Les chaînes de caractères. Elles s’écrivent indifféremment entre guillemets doubles
(") ou simples ('). Ne pas confondre x (un nom de variable) et "x" (un texte).
— Les booléens. Les deux valeurs s’écrivent TRUE et FALSE (en majuscules) et peuvent
être abrégées en T et F.
Ces types peuvent êtres utilisés pour faire des vecteurs de réels, des matrices de booléens,
etc.
6.1.3
Particularités du calcul vectoriel et matriciel
R a une manière particulière et très pratique de faire les calculs avec des vecteurs ou des
matrices, mais celle-ci peut paraître déroutante, notamment en permettant d’effectuer des
calculs «incorrects» à première vue.
Operations composante par composante. Les opérateurs classiques (+, -, *, /, %%, ^, &, |,) sont
appliqués composantes par composante. Aussi, si A et B sont des matrices, A+B correspond
bien à la somme au sens matriciel, mais A*B est la matrice des produits des composantes
(pour le produit matriciel, il faut utiliser A%*%B).
Recyclage. R «recyle» les vecteurs et matrices qu’il utilise afin de rendre possible des opérations normalement impossibles : s’il manque des composantes l’élément le plus petit est
répliqué autant de fois que nécessaire pour obtenir deux éléments de même taille.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
65
On peut ainsi facilement ajouter 1 à toutes les composantes d’un vecteur, ou ajouter alternativement 10 et 20, comme dans l’exemple suivant :
1
2
3
4
5
6
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x + 1
[1] 2 3 4 5 6 7 8 9 10 11
> x + c (10 ,20)
[1] 11 22 13 24 15 26 17 28 19 30
On peut de même ajouter un même vecteur à toutes les colonnes d’une matrice, etc. .
Attention, dans l’exemple ci-dessous :
1
2
3
4
5
6
7
> x + c (10 ,20 ,30)
[1] 11 22 33 14 25 36
[1] 11 22 33 14 25 36
Message d ' avis :
In x + c (10 , 20 , 30) :
la taille d ' un objet
la taille d ' un objet
17 28 39 20
17 28 39 20
plus long n ' est pas multiple de
plus court
on remarque que le recyclage est appliqué même si l’objet le plus grand n’a pas une taille
multiple du plus petit (la dernière réplication étant alors tronquée). Il est toutefois déconseillé de faire de telles opérations.
Application des fonctions. A peu près toutes les fonctions définies dans R sont utilisables avec
des vecteurs. Lorsque la fonction est normalement une fonction de R dans R, le résultat est
simplement le vecteur des applications de la fonction à chaque composante du vecteur :
1
2
3
4
> x
[1] 1 2 3 4 5
> sqrt ( x )
[1] 1.0000 1.4142 1.7321 2.0000 2.2361
Le mécanisme peut être «cassé» par vos propres fonctions, si vous utilisez des structures
de contrôles (if, for, ...). La fonction sapply permet toutefois de réparer cela.
Indexation. R permet un mécanisme d’indexation extrêmement flexible, valable aussi bien
pour les vecteurs que pour les matrices. Il y a trois façon de sélectionner des composantes :
— si rien n’est précisé, on garde tout (le vecteur, la matrice, la colonne, ...) ;
— si on précise un vecteur d’indices, alors seuls ces indices sont conservés (si les indices
sont négatifs, alors ils correspondent aux indices qui ne sont pas conservés) ; à noter
que les composantes sont conservés dans l’ordre des indices et qu’un même indice
peut être sélectionné plusieurs fois ;
— si on précise un vecteur de booléen, alors seuls les indices à TRUE sont conservés (le
recyclage s’applique).
Ainsi pour un vecteur x : x est le vecteur complet ; x[2] est le deuxième élément ; x[2:6]
sont les élements 2 à 6. Pour une une matrice A : A est la matrice complète ; A[2,3] est le
composante de la deuxième ligne et troisième colonne ; A[2,] est la deuxième ligne ; A[,3]
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
6.1. Une brève introduction à R
66
est la troisième colonne ; A[2:6,3:6] est la sous-matrice extraite des lignes 2 à 6, colonnes 3
à 6.
Quelques exemples un peu particulier :
1
2
3
4
5
6
7
8
9
10
6.1.4
> x
[1] 10 6 1 5 9
> x [ c (1 ,3 ,1)]
[1] 10 1 10
> x [ c ( -1 , -4 , -10)]
[1] 6 1 9 4 2 3 8
> x [ c (T , F )]
[1] 10 1 9 2 8
> x [ x %% 3 == 0]
[1] 6 9 3
4 2 3 8 7
# element 1 , 3 et 1 ( en double )
# tout sauf elements 1 , 4 et 10
# on conserve un element sur deux
# on conserve les multiples de 3
Fonctions et éléments de programmation en R
R fournit un nombre impressionnant de fonctions et vous pouvez créer les vôtres.
Lorsque vous «appelez» une fonction en omettant les parenthèses (par exemple «ls»
au lieu de «ls()»), R affiche le code de la fonction, au lieu de l’exécuter. Vous pouvez ainsi
savoir comment une fonction est programmée (vous remarquerez toutefois que beaucoup de
fonctions pré-définies font appel à des fonctions définies ailleurs : primitives du langages,
bibliothèques logiciels, ...).
Définition de fonctions. Une fonction est créée par function. Par exemple :
1
f <- function ( x) x ^2
définit la fonction f : x → x2 . Les paramètres formels sont indiqués entre parenthèses, suivis
du corps de la fonction (si le corps est composé de plusieurs instructions, il faut les regrouper
dans un bloc { ... }). La valeur d’une fonction est la valeur de la dernière ligne évaluée
lors de son exécution ; elle peut être explicitée par return(valeur).
Paramètres : ordre et valeurs par défaut. Une fonction peut avoir un nombre quelconque de
paramètres, chacun ayant un nom. Lors de l’appel, on peut soit respecter l’ordre des paramètres (comme en mathématiques), soit les donner dans un ordre quelconque sous la forme
«nom=valeur». De plus, des paramètres peuvent avoir des valeurs par défaut (et deviennent
alors facultatifs lors de l’appel) en indiquant «nom=valeur» dans la définition de la fonction.
Ainsi la définition et les appels suivants sont corrects :
1
2
3
4
f <- function (x ,y , z =10)
f (1 ,2 ,3)
# appel avec
f (1 ,2)
# appel avec
f ( y =2 , x =3) # appel avec
{ x + 2*y
x =1 , y =2 ,
x =1 , y =2 ,
x =3 , y =2 ,
+ 3*z }
z =3 ( ordre de definition )
z =10 ( valeur par defaut )
z =10 ( parametres nommes )
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
67
if ... then ... else. La structure «if (condition) instr1 else instr2» exécute instr1 si la
condition est vraie, et instr2 sinon.
Les instructions instr1 et instr2 sont des instructions (ou des blocs d’instructions, délimités par {...}) quelconques. Si les instructions se terminent par une valeur, c’est cette
valeur qui est «renvoyée» par l’instruction if. La partie else est facultative. La condition est
une expression booléean quelconque ; elle peut être composée avec les opérateurs && (et), ||
(ou) et ! (non).
Il existe aussi une fonction ifelse : ifelse(b,v1,v2), qui vaut v1 si b est vrai et v2 sinon.
Cette fonction est préférable pour la définition de fonctions conditionnelles.
for(...). La structure «for(x in xs){ instructions }» exécute les instructions spécifiées,
itérativement pour chaque valeur x de xs. Il existe d’autres boucles en R.
6.1.5
Ressources complémentaires
Il existe de très nombreuses ressources sur R. Dans la plupart des cas, les tutoriaux ou
livres dédiés à R abordent les fonctionnalités du langage pour les probabilités et statistiques
(à découvrir lors de ces cours) mais aussi pour la manipulation de données (cela dépasse ce
que l’on fait en 1A).
Quelques ressources particulièrement intéressantes :
— Statistiques avec R. Pierre-André Cornillon et al., Presses Universitaires de Rennes,
2012 (disponible à la bibliothèque).
— Try R, http://tryr.codeschool.com/levels/1/challenges/1, visité le 17 septembre
2014 (introduction interactive toute à douceur).
— R Tutorial, http://www.cyclismo.org/tutorial/R/, visité le 17 septembre 2014 (faire
le tri ; en première lecture se limiter aux chapitres 1 (sauf 1.2), 2 (sauf 2.1.3, 2.1.4, 2.2),
3 (sauf 3.2), 5 et 6 (lecture rapide), 7, 15 ; les autres chapitres pourront servir pour le
cours de Probabilités ou d’autres cours dans la suite de votre scolarité).
— Quick-R, http://www.statmethods.net/, visité le 17 septembre 2014 (trucs et astuces
en R).
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
6.1. Une brève introduction à R
68
6.1.6
Aide mémoire R
variables
> x <- 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
opérateur d’affectation ; met la valeur spécifiée dans la variable indiquée.
> 2 -> x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (syntaxe alternative du précédent.)
> ls() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . affiche la liste des variables existantes.
> rm(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . efface la variable x.
opérateurs
> (2^3 + 3) *5 / (7 - 2) . . . . . . . . . . . . . . . . les 4 opérations arithmétiques (+, -, *, /) et
l’opération puissance (), dans l’ensemble des
réels (ou des complexes).
> 5 %/% 2 ; 5 %%2 . . . . . . . . . . . . . . . . . . . . . . . . quotient et reste de la division euclidienne.
> x <= 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . comparaison ; les opérateurs de comparaison
sont <, <=, >, >=, == et !=.
> T & F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . et logique ; les opérateurs logiques sont & (et),
| (ou), ! (non).
vecteurs
> c(1,2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vecteur 1 .
2
> cbind(1,2,3,4) . . . . . . . . . . . . . . . . . . . . . . . .
> rbind(1,2,3,4) . . . . . . . . . . . . . . . . . . . . . . . .
vecteur colonne [ 1; 2; 3; 4 ]> .
vecteur ligne [ 1; 2; 3; 4 ] 2 .
> v[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . deuxième élément du vecteur v.
> x + y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . addition composante par composante (similaire pour les autres opérateurs y compris *)
> x %*% y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . produit scalaire de x et y.
> length(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . longueur (nombre d’éléments) du vecteur v.
> t(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . transposée du vecteur v.
> 2:5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . raccourci pour c(2,3,4,5) 3 .
> seq(2, 3, by=0.1) . . . . . . . . . . . . . . . . . . . . . séquence (sous forme de vecteur) dont les élements vont de 2 à 3 par pas de 0,1.
2. cbind(c(...)) (ou rbind(c(...))) permet de lever l’ambiguïté de c(...) en imposant clairement que
le vecteur soit colonne (ou ligne) ; en fait, le résultat est une matrice à une colonne (ou une ligne). Les fonctions
cbind et rbind sont à utiliser avec précaution car elles permettent de faire bien plus que simplement créer des
vecteurs.
3. Attention : 2:5+1 équivaut à (2:5)+1 et non pas à 2:6.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
69
> seq(2, 3, length.out=10) . . . . . . . . . . . . . séquence (sous forme de vecteur) de 10 élements équi-répartis de 2 à 3 (inclus).
matrices
> matrix(c(1,2,3,4),nrow=2) . . . . . . . . . . .
> matrix(c(1,2,3,4),nrow=2,byrow=T) . .
> matrix(c(1,2,3,4,5,6),ncol=3) . . . . . . .
1 3
.
2 4
1 2
matrice 3 4 .
1 3 5
matrice
.
2 4 6
matrice
> A[1,2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l’élément de la ligne 1, colonne 2 de A.
> A[1,] ; A[,2] . . . . . . . . . . . . . . . . . . . . . . . . .
la ligne 1, la colonne 2 de A.
> dim(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . les dimensions de A ; dim(A)[1] est le nombre
de lignes, dim(A)[2] est le nombre de colonnes.
> A + B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . addition composante par composante (similaire pour les autres opérateurs y compris *)
> A %*% B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
produit matriciel de la matrice A par la matrice
B (ne pas confondre avec A*B).
> x %*% A %*% x . . . . . . . . . . . . . . . . . . . . . . . . . . . forme quadatrique (x> Ax) pour un vecteur x
et une matrice A.
> t(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . transposée de la matrice A.
> det(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . déterminant de la matrice A.
> solve(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
inverse de la matrice A.
> solve(A,b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vecteur solution du système A %*% x == b.
> eigen(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
éléments propres de la matrice A.
> eigen(A)$values . . . . . . . . . . . . . . . . . . . . . . . vecteur des valeurs propres de A (par module
décroissant).
> eigen(A)$vectors . . . . . . . . . . . . . . . . . . . . . . matrice des vecteurs propres associés (dans le
même ordre) 4 .
fonctions mathématiques usuelles
> cos ; sin ; tan . . . . . . . . . . . . . . . . . . . . . . . fonctions trigonométriques usuelles 5 .
> acos ; asin ; atan . . . . . . . . . . . . . . . . . . . . leurs réciproques.
> atan2(y,x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . angle entre l’axe des abscisses et le point de
coordonnées (x, y).
> sqrt ; exp ; abs . . . . . . . . . . . . . . . . . . . . . . racine-carrée, exponentielle, valeur absolue.
> log(x) ; log2(x) ; log10(x) . . . . . . . . . logarithmes de x (resp. base e, 2 et 10).
4. Ainsi eigen(A)$values[2] est la deuxième valeur propre, avec pour vecteur propre associé
eigen(A)$vectors[,2].
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
70
6.1. Une brève introduction à R
calculs analytiques
> integrate(f,lower=a,upper=b) . . . . . . . . intégrale de f sur [a; b].
> optimize(f,lower=a,upper=b) . . . . . . . . . minimum de f sur [a; b] (f : R → R).
> nlm(f,z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
minimum de f à partir de z (f : Rn → R).
fonctions sur les vecteurs (ou séquences)
> max(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . plus grand élément de v.
> min(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . plus petit élément de v.
> which.min(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . indice du plus petit élément de v.
> which.max(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . indice du plus grand élément de v.
> which(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
indice des éléments TRUE de v.
> mean(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
moyenne des éléments de v.
> sum(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . somme des éléments de v.
> sort(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
éléments de v triés par ordre croissant.
> order(v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
indices de v dans l’ordre croissant des éléments.
> sapply(x,f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . applique à chaque élément du vecteur x la
fonction f (et renvoie le résultat sous forme
de vecteur).
graphiques
> plot(x,y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . trace y en fonction de x (x et y sont deux vecteurs de même longueur).
> plot(x,y, type="l", col="red") . . . . .
trace y en fonction de x, avec des lignes rouges
(les principaux types de tracé sont : "l" (lines),
"p" (points), "b" (both)).
> plot(sqrt, 0, 10) . . . . . . . . . . . . . . . . . . . . . trace la fonction racine-carrée sur [1 : 10].
Remarque : la fonction plot admet de très nombreux paramètres, dont :
— sub="Titre" pour définir un titre.
— xlab="x" et ylab="y" pour définir le nom des axes.
— xlim=c(10,20) et ylim=c(1,5.3) pour définir les intervalles sur chaque axe.
— add=T pour ajouter une courbe à un graphique existant.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
71
définition de fonctions et structures de contrôle
> f <- function(x){ x + 2 } . . . . . . . . . . . .
définit la fonction f : x 7→ x + 2.
> f(3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . renvoie la valeur de f en 3.
> g <- function(x,y){ x*y + 2 } . . . . . . .
définit la fonction g : (x, y) 7→ xy + 2.
> if (x < 0) 1 else 2 . . . . . . . . . . . . . . . . . .
vaut 1 si x est négatif, 2 sinon
> for(i in xs) f(i) . . . . . . . . . . . . . . . . . . . . . pour chaque élément i du vecteur xs, faire
f(i).
interactions avec l’environnement
> q() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . quitte R.
> q("yes") . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
quitte R en sauvegardant la session de travail.
> help("truc") . . . . . . . . . . . . . . . . . . . . . . . . . . . affiche l’aide sur truc (si l’aide est installée et
qu’une aide est associée à truc).
> ?truc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (idem)
> source("script.R") . . . . . . . . . . . . . . . . . . . . lit le fichier script.R et exécute chacune de
ses lignes comme autant de commandes.
> load("session.Rdata") . . . . . . . . . . . . . . . . charge le fichier session.Rdata, sauvegarde
d’une session R précédente.
> save.image("session.Rdata") . . . . . . . . . enregistre sa session (tous les objets existants)
dans le fichier session.Rdata.
> getwd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
renvoie le nom du répertoire de travail.
> setwd("P:") . . . . . . . . . . . . . . . . . . . . . . . . . . . . définit P: comme répertoire de travail (si ce
répertoire est valide).
6.2
Prise en main de R (et RStudio)
À GI, nous utilisons R via le logiciel RStudio, un environnement de développement pour
R qui simplifie les interactions avec ce dernier. Pour lancer RStudio à partir du «menu démarrer» : choisir Tous les programmes puis Logiciels pédagogiques puis RStudio. RStudio se présente
comme ceci :
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
.
6.2. Prise en main de R (et RStudio)
72
La «zone d’interaction avec R» (ou «console») est l’endroit où s’exécute R ; c’est là qu’il
faut taper les calculs et autres commandes, lire les résultats, etc.
La zone «variables» indique toutes les variables connues avec leurs valeurs.
La zone «affichage de l’aide, des graphiques, ...» permet, comme son nom l’indique, d’afficher l’aide, les graphiques, etc.
E XERCICE 6.1 : P REMIERS
√ CALCULS
7
[1] Calculez (3 + 4 − 6)/2, 67 et sin( 3π
).
4
Solution —
> (3 + 4^7 - 6) / 2
# [1] 8190.5
2
> sqrt (67)
# [1] 8.1854
3
> sin (3 * pi / 4)
# [1] 0.70711
[2] Définissez x = tan(3), et y = cos(x). Que vaut y ?
1
Solution —
> x <- tan (3)
> y <- cos ( x )
3
> y
# [1] 0.98986
[3] Définissez une variable b valant vrai, et une variable mot valant «bonjour».
1
2
Solution —
> b <- TRUE
2
> mot <- " bonjour "
[4] Affichez la liste de toutes les variables existantes.
1
Solution —
> ls ()
[5] Supprimez mot.
1
# [1] " b "
" mot " " x "
"y"
Solution —
1
2
> rm ( mot )
> ls ()
# [1] " b " " x " " y "
( verification )
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
73
[6] Échangez le contenu de x et y.
Solution —
1
2
3
4
5
6
>
>
>
>
>
>
x ; y
# valeurs avant echange : -0.14255 et 0.98986
tmp <- x
x <- y
y <- tmp
rm ( tmp ) # facultatif , mais plus propre
x ; y
# valeurs apres echange : 0.98986 et -0.14255
E XERCICE 6.2 : I NTERACTIONS AVEC L’ ENVIRONNEMENT
[1] La valeur NaN est un «nombre» très particulier. Quelle est sa signification (lire l’aide) ?
Solution —
1
> ? NaN
(on peut aussi écrire help(NaN)). Il suffit de lire : «NaN means ‘Not a Number’» ... c’est le
résultat d’une opération non valide, typiquement une division par zéro.
[2] Que fait la fonction diag ?
Solution —
1
> ? diag
On apprend ainsi que diag permet de «extract or replace the diagonal of a matrix, or
construct a diagonal matrix».
Téléchargez (de Chamilo) le fichier exemple.R et enregistrez-le dans un dossier approprié
(typiquement, P:\AnalyseNumerique).
[3] Ouvrez ce fichier (avec le bloc-notes ou un quelconque éditeur de texte). Quel est son contenu ?
Copier-coller le dans R. L’exécution est-elle conforme à vos attentes ?
). Le fichier s’ouvre au dessus
[4] Ouvrez ce fichier avec RStudio (File puis Open File ; ou icône
de la console.
[5] Exécutez le contenu de ce fichier (bouton
en haut à droite du contenu du fichier).
Notez que l’exécution du fichier est effectuée, dans R, par la commande
1
source ( 'P :\ AnalyseNumerique \ exemple . R ')
Cette fonction source permet de charger le contenu d’un fichier de commandes R (en exécutant ces commandes).
À côté de
, remarquez le bouton
: celui-ci permet d’exécuter les lignes
sélectionnées du fichier de commandes (ou la ligne avec le curseur en l’absence de sélection).
[6] Ajoutez la commande 5*7 au fichier de commandes, et exécutez cette ligne (seulement).
Dans vos diverses utilisations de R, vous serez amenés à charger des fichiers de commandes (fichier textes .R, chargés avec source), des sessions (fichiers binaires .Rdata, chargés avec load), des fichiers de données, etc. Pour manipuler facilement ces fichiers, il est
pratique de savoir dans quel dossier (ou répertoire) R les cherche...
[7] Affichez votre répertoire de travail (getwd(), get working directory), puis changez-le pour
votre répertoire d’analyse numérique (setwd(), set working directory).
[8] Enregistrez votre session (save.image) ; faîtes bien attention à pouvoir retrouver ce fichier.
Le fichier crée est une copie de la «mémoire» de R que vous pouvez recharger plus tard
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
74
6.2. Prise en main de R (et RStudio)
(load) pour continuer le travail commencé. Attention : lorsqu’on charge une session, celle-ci
est ajoutée à la session en cours, ce qui peut donner un ensemble confus ; de plus, s’il y a des
variables de même nom, celles de la session chargée remplacent les autres.
Lorsque vous quittez RStudio, ce dernier vous propose d’enregistrer la session en cours.
Vous êtes maintenant capable d’une utilisation basique mais suffisante de RStudio. Pratiquez
pour que tout devienne simple, et n’hésitez pas à explorer le logiciel pour découvrir tout ce qu’il
peut faire pour vous. Pensez à utiliser la touche tabulation (pour compléter les noms de fonctions
et variables, mais aussi les noms de fichiers) qui permet de gagner beaucoup de temps et d’éviter
beaucoup de fautes de frappes.
Chaque fois que vous utilisez R, il est fortement recommandé de taper vos commandes dans un
fichier de commandes (typiquement au nom de l’exercice) afin de garder une trace de ce que vous faîtes
et de commenter ce fichier (#...). N’hésitez pas, non plus, à enregistrer vos sessions pour pouvoir
poursuivre votre travail plus tard.
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
75
E XERCICE 6.3 :M ANIPULATION

 DE
 VECTEURS
1
6
[1] Définissez ~x =  5  et ~y =  −2 .
−2
0
Solution —
> x <- c (1 ,5 , -2)
> y <- c (6 , -2 ,0)
[2] Calculez ~x + ~y , kxk2 (norme euclidienne) et ~x> ~y (produit scalaire).
1
2
Solution —
1
2
3
> x+y
> sqrt ( sum ( x * x ))
> t(x) %*% y
# [1] 7
# 5.4772
# -4
3 -2
Pour la norme, on peut aussi faire sqrt(x %*%x). Pour le produit scalaire, la transposée est
facultative (R ajuste pour que le calcul ait un sens).
[3] Soit ~z = [ 1; 2; 3; . . . ; 100 ]> . Calculez k~zk2 .
Solution —
> xx <- 1:100
2
> sqrt ( sum ( xx * xx ))
# [1] 581.68
>
? [4] Calculez le produit scalaire de et [ 1; 4; 9; 16; . . . ; 121 ] (vecteurs des 11 premiers carrés) et
[ 2; 4; 8; . . . 2048 ]> (vecteurs des 11 premières puissances de 2).
1
Solution —
> sum ((1:11)^2 * 2^(1:11))
# [1] 417786
? [5] Générez deux vecteurs ~x et ~y, aléatoires, de longeur 50 (la fonction runif(n,a,b) génère
un vecteur de longueur n avec des nombres tirés uniformément entre a et b) et déterminez
l’ensemble et le nombre d’indices tels que ~x est plus grand que ~y .
1
Solution —
1
2
3
4
>
>
>
>
x <- runif (50 , -10 ,10)
y <- runif (50 , -10 ,10)
which ( x < y )
# ensemble des indices tels que ...
length ((1:50)[ x < y ])) # nombre des indices tels que ...
Pour le nombre d’indices on peut, bien entendu, faire length(which(x < y).
[6] Déterminez le nombre de multiples de 7 pairs entre 1 et 100.
Solution —
> x <- 1:100
2
> length (x [ (x %% 7 == 0) & ( x %% 2 == 0) ]) # [1] 7
[7] La somme [ 1; 2; 3; 4; 5; 6 ]+[ 10; 20 ] n’est pas définie mathématiquement ... que vaut-elle avec
R?
1
Solution —
1
> c (1 ,2 ,3 ,4 ,5 ,6) + c (10 ,20)
# [1] 11 22 13 24 15 26
R fait du «recyclage» pour donner un sens au calcul : le plus petit vecteur est répliqué autant
de fois que nécessaire. Le calcul est donc équivalent à [ 1; 2; 3; 4; 5; 6 ] + [ 10; 20; 10; 20; 10; 20 ]
qui lui a bien un sens et correspond au résultat obtenu.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
6.2. Prise en main de R (et RStudio)
76
E XERCICE 6.4 : C ALCUL MATRICIEL
Soient la matrice M, et le vecteurs ~v suivant :


1
3 0
M =  −5 2 3 
1 −2 4


1
~v =  −1 
3
[1] Calculez 2A et A2 . Quel est le résultat des commandes M*M et M^2 ?
Solution —
>
>
>
>
1
2
3
4
M <- matrix ( c (1 , -5 ,1 , 3 ,2 , -2 , 0 ,3 ,4) , nrow =3)
v <- c (1 , -1 ,3)
2*M
M % * % M # M ^2:
Lorsqu’on définit une matrice toujours vérifier sa valeur en l’affichant ... il est si simple de
se tromper dans un coefficient, de ne pas avoir le bon nombre de lignes ou de faire la
transposée
!

−14
9
9
M2 =  −12 −17 18 , obtenu avec M %*% M.
15
−9 10
De manière générale A*B est la matrice C dont les coefficients sont les produits termes à
termes : cij = aij × bij ; cela peut-être très pratique mais n’est pas la multiplication matricielle.
De même A^2 est la matrice où chaque coefficient de A est élevé au carré.
[2] Quelle valeur R donne-t-ilà la somme
M+v ? et au produit M*v ?
2
4 1

Solution — On obtient : −6 1 2  : le vecteur v est ajouté à chaque colonne de M
4 17
(principe de «recyclage de R).
[3] Calculez l’inverse M.

Solution — L’inverse est obtenu par solve(M) est vaut (à 10−3 près) : M−1
0, 169

= 0, 277
0, 096
−0, 145
0, 048
0, 060

0, 108
−0, 036 
0, 205
[4] Résolvez A~x = ~v .
Solution — Le système est résolu par solve(M,v) est vaut (à 10−3


0, 639
près) :  0, 120 .
0, 651


−1
−1
1
[5] Soit A =  −4, 5 2, 5 4, 5 . Déterminez ses valeurs propres. Ses vecteurs propres sont-ils
−3, 5 3, 5 3, 5
orthogonaux ? La matrice est-elle inversible ?
Solution —
1
2
3
4
5
6
7
>
>
>
>
>
>
>
A <- matrix ( c ( -1 , -4.5 , -3.5 , -1 ,2.5 ,3.5 , 1 ,4.5 ,3.5) , nrow =3)
eigen ( A) $ values # [1] 7.000 e +00 -2.000 e +00 -3.871 e -16
eigen ( A) $ vectors [ ,1] %* % eigen ( A ) $ vectors [ ,3]
# 0.5
eigen ( A) $ vectors [ ,2] %* % eigen ( A ) $ vectors [ ,3]
# 0.5
eigen ( A) $ vectors [ ,1] %* % eigen ( A ) $ vectors [ ,2]
# 0.5
det ( A )
# [1] -3.4972 e -15
solve ( A)
# Erreur : systeme numeriquement singulier
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
77
Les valeurs propressont
7, 2et 0(il 
faut tenir compte de la précision numérique...). Les vec 
1
1
0
teurs propres sont  1 ,  0  et  1  (R norme les vecteurs propres, mais rien n’interdit d’en
0
1
1
choisir de plus pratiques). On vérifie que le produit scalaire des vecteurs propres 2 à 2 n’est
jamais nul : ils ne sont pas orthogonaux.
Le déterminant est non nul ... mais numériquement pas différent de zéro. Cela est confirmé
par solve qui ne peut pas inverser la matrice. Du point de vue numérique, la matrice n’est
pas inversible. Du point de vue mathématique, un léger doute peu subsister.
[6] Extrayez de la matrice A la sous-matrice obtenue en supprimant la première ligne et la
deuxième colonne.
Solution —
1
> A [ -1 , -2]
E XERCICE 6.5 : G RAPHIQUES
[1] Tracez la fonction sinus entre 0 et 5. La courbe doit être rouge, les axes doivent s’appeler «x»
et «sin(x)», et le graphique «Fonction sinus entre 0 et 5».
Solution —
> plot ( sin , xlim = c (0 ,5) ,
2
sub = " Fonction sinus entre 0 et 5 " ,
3
xlab = " x" , ylab = " sin ( x )" , col = " red " )
[2] Ajoutez la fonction cosinus, en vert, sur le graphique précédent.
1
Solution —
> plot ( cos , col = " green " , add =T , xlim = c (0 ,5))
[3] Tracez le nuage de points correspondant aux données suivantes :
1
âge (années) 0 1 2
4
6
9 12 15 18 21
taille (cm)
49 73 84 100 112 129 148 161 163 163
Nommez votre graphique et les axes.
Solution —
1
2
3
4
5
6
> age
<- c (0 ,1 ,2 ,4 ,6 ,9 ,12 ,15 ,18 ,21)
> taille <- c (49 ,73 ,84 ,100 ,112 ,129 ,148 ,161 ,163 ,163)
> plot ( age , taille ,
sub = " Taille en fonction de l ' age " ,
xlab = " age ( annees ) " , ylab = " taille ( cm ) " ,
col = " purple " , type = " b " )
Remarque : R propose une variété de graphiques impressionnante et une très grande flexibilité
dans leur conception. Nous nous limitons ici au strict minimum.
E XERCICE 6.6 : F ONCTIONS ET PREMIERS PAS DE PROGRAMMATION EN R
Remarque : si un calcul ne s’arrête pas, cliquez sur le panneau «STOP» en haut à droite
de la console !
[1] Définissez f : x 7→ cos(x2 + 1) et tracez-la sur l’intervalle [−5; 5]. Que vaut f (3) ?
Solution —
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
6.2. Prise en main de R (et RStudio)
78
> f <- function ( x ) cos (x ^2+1)
2
> plot (f , -5 ,5)
3
> f (3)
# [1] -0.83907
[2] Déterminez le minimum de f sur [0; 2] (utilisez optimize). La réponse est-t-elle correcte ?
1
Solution —
1
2
3
4
5
> optimize (f , lower =0 , upper =2)
$ minimum
[1] 1.4634
$ objective
[1] -1
La réponse de optimize est à interpréter comme «la fonction atteint un minimum en x =
1, 4634, et la valeur de la fonction en ce point est -1». La valeur renvoyée par optimize est
dans l’intervalle demandé, et cos étant toujours plus grand que -1, la valeur obtenue est
donc correcte : c’est un minimum (global). De plus, dans ce cas, on peut faire une résolution
analytique
: cos(x2 + 1) est minimum pour x2 + 1 ≡ π(2π), ce qui se résout facilement en
√
x = π − 1.
[3] Calculez l’intégrale de f sur [0; 2] (utilisez integrate).
Solution —
1
> integrate (f , lower =0 , upper =2)
# -0.42787
[4] Définissez g : (x; y) ∈ R2 7→ 2x2 + y 2 − 4xy.
Solution —
> g <- function (x ,y ) 2 *x ^2 + y ^2 - 4 * x * y
[5] Définissez h : ~z ∈ R2 7→ 2z12 + z22 − 4z1 z2 .
1
Solution —
> h <- function ( z ) 2 * z [1]^2 + z [2]^2 - 4 * z [1] * z [2]
[6] Déterminez le minimum de h sur R2 (utilisez nlm avec un point de départ de votre choix).
La réponse vous semble-t-elle juste ? Pourquoi ne peut-on pas utiliser nlm pour trouver un
minimum de g ?
1
Solution —
1
2
3
> nlm (h , c (1 ,0))
$ minimum
[1] -70642143
> nlm (h , c (0 ,0))
$ minimum
[1] 0
$ estimate
[1] 6738.9 8985.2
$ estimate
[1] 0 0
$ gradient
[1] -8985.2 -8985.2
$ gradient
[1] 0 0
$ code
[1] 5
$ code
[1] 1
$ iterations
[1] 66
$ iterations
[1] 1
4
5
6
7
8
9
10
11
12
13
14
15
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
79
1
Dans la solution de gauche, on part du point
et l’algorithme termine, après 66 itéra0
6738, 9
avec une valeur de -70642143. On peut remarquer que le gradient
tions, au point
8985, 2
n’est pas nul : la solution n’est pas un minimum (pas même local).
0
et l’algorithme termine immédiatement
Dans la solution de droite, on part du point
0
avec ce même point. Le gradient est nul ... mais ce n’est pas un minimum (même local).
Pour plus de détails (sur les algorithmes utilisés et les solutions proposées), se reporter au
chapitre d’optimisation qui aura lieu dans quelques semaines ...
Quant à savoir pourquoi nlm ne peut pas être utilisée pour g : c’est une contrainte technique. Pour être générique, nlm est définie pour des vecteur, ce qui lui permet d’être utilisée
pour des fonctions Rn → R, pour tout n.

si x < 0
 −2x
2
x +3
si x ∈ [0; 3] et tracez-là sur [−5; 5].
[7] Définissez A : x 7→
 3
2
(x − x − x)/10 si x > 3
Solution —
1
2
3
4
5
> # version 1
> A <- function ( x ) if (x <0) -2 * x
else if (x <=3) x ^2+3 else ( x ^3 - x ^2 - x ) / 10
> xs <- seq ( from = -5 , to =5 , length . out =1000)
> plot ( xs , sapply ( xs , A ) , type = " l " )
6
7
8
9
10
> # version 2
> A <- function ( x ) ifelse (x <0 , -2 *x ,
ifelse (x <=3 , x ^2+3 , ( x ^3 - x ^2 - x ) / 10))
> plot (A , -5 ,5)
La version 1 utilise l’instruction if ; le défaut est que la fonction obtenue n’est pas applicable directement avec un vecteur. Pour le tracer, il faut donc tracer des points dont on
génère les abscisses avec seq et dont on calcule les ordonnées grâce à sapply.
La version 2 utilise la fonction ifelse. La fonction A est alors directement utilisable.
Dans ce cas précis, la version 2 est meilleure (plus courte, plus simple, plus efficace). Dans
certains cas, on est obligé d’avoir recours à quelque chose similaire à la version 1.
[8] Utilisez sapply pour calculer le vecteur [ A(−5); A(−4); . . . ; A(4); A(5) ].
Solution —
1
2
> sapply ( -5:5 , A )
[1] 10.0 8.0 6.0
4.0
2.0
3.0
4.0
7.0 12.0
4.4
9.5
Question redondante avec les précédentes ... si on a fait la version 1. Mais il faut avoir
utiliser apply au moins une fois.
? [9] Définissez une fonction fact(n) qui calcule la factorielle de n (supposé entier positif), en
utilisant une boucle for.
Solution —
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
6.2. Prise en main de R (et RStudio)
80
1
2
3
4
5
fact <- function ( n ){
res <- 1
for ( i in 1: n ) res <- res * i
return ( res )
}
? [10] Soit la suite définie par u1 = 1 et un+1 =
3+un
.
2
Calculez le vecteur [ u1 , u2 , . . . , u20 ] (utiliser
une boucle for ; de plus, il est possible de rajouter des éléments à un vecteur, simplement en
donnant une valeur à cet élément).
Solution —
> Un <- c (1) # creation d ' un vecteur avec seulement U1
2
> for ( i in 2:20) Un [ i ] <- (3+ Un [i -1]) / 2
# ajout de Ui
3
> Un
4
[1] 1.000 2.000 2.500 2.750 2.875 2.938 2.969 2.984
5
[9] 2.992 2.996 2.998 2.999 3.000 3.000 3.000 3.000
6
[17] 3.000 3.000 3.000 3.000
n
? [11] Même question pour la suite définie par u1 = 1 et un+1 = 1+u
.
n
1
Solution —
1
2
3
4
5
6
> Un <- c (1) # creation d ' un vecteur avec seulement U1
> for ( i in 2:20) Un [ i ] <- (1+ Un [i -1]) / (i -1) # ajout de Un au vect
> Un
[1] 1.000 2.000 1.500 0.833 0.458 0.292 0.215 0.174
[9] 0.147 0.127 0.113 0.101 0.092 0.084 0.077 0.072
[17] 0.067 0.063 0.059 0.056
(Pour ce genre de suite, attention à ne pas décaller entre n et n + 1...)
? [12] Définissez une fonction suite(f,u1,n) qui renvoie le vecteur [ u1 ; u2 ; . . . ; un ] pour une suite
définie par u1 = u1 et un+1 = f (un ), où f est une fonction de la forme f (n, un ) pour plus de
généralité.
Solution —
1
2
3
4
> suite <- function (f , u1 , n ){
res <- c( u1 ) for ( i in 2: n ) res [ i ] <- f (i -1 , res [i -1])
res
}
5
6
7
8
# tests
> suite ( function (n , un ) (3+ un ) / 2 , 1 , 20)
> suite ( function (n , un ) (1+ un ) /n , 1 , 20)
Ne pa oublier de tester cette fonction ! A minima, vérifier qu’on retrouve les résultats des
questions précédentes.
un /2
si n est pair
. Une conjecture célèbre (dite
3un + 1 si n est impair
Conjecture de Collatz ou de Syracuse) énonce que, quelque soit u1 ∈ N∗ , il existe n tel que
un = 1. Vérifiez expérimentalement cette conjecture pour u1 ≤ 100.
[14] On appelle «temps de vol» le plus petit indice tel que un = 1 (en partant de u1 = 15, le temps
de vol est de 18 ; pour u1 = 127, il est de 47). Pour quel u1 ≤ 1000 le temps de vol est-il le
plus grand ?
?? [13] Soit la suite définie par un+1 =
Outils pour l’ingénieur (solutions des exercices)Grenoble INP – Génie Industriel, 1A, 2016–2017
Chapitre 6. GNU R
81
Solution — Cette question répond également à la précédente : il suffit de calculer le temps
de vol pour chaque u1 ≤ 1000 :
1
2
> # suite de Collatz
> collatz <- function (n , un ) ifelse ( un %% 2 == 0 , un / 2 , 3 * un +1)
3
4
5
6
> # calcul des termes ( pour verification )
> suite ( collatz , u1 =3 , n =10)
[1] 3 10 5 16 8 4 2 1 4 2
7
8
9
10
11
12
13
14
15
16
17
18
19
> # renvoie le temps de vol
> temps . de . vol <- function ( u1 ){
n <- 1
un . moins .1 <- u1
un <- u1
while ( un ! = 1){
n <- n + 1
un . moins .1 <- un
un <- collatz (n -1 , un )
}
return ( n )
}
20
21
22
23
> # calcul du plus grand temps de vol
> which . max ( sapply (1:1000 , temps . de . vol ))
[1] 871
Le plus grand temps de vol est obtenu pour u1 = 871 (temps de vol : 179).
Pour plus d’information sur cette suite mathématiquement surprenante, voir par exemple
http://fr.wikipedia.org/wiki/Conjecture_de_Syracuse.
Grenoble INP – Génie Industriel, 1A, 2016–2017Outils pour l’ingénieur (solutions des exercices)
Téléchargement