Vous êtes sur la page 1sur 134

Cours de mathmatiques

Premire anne
Complments

Exo7
2
Exo7

Sommaire

1 Zros des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5


1 La dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 La mthode de la scante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 La mthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Algorithmes et mathmatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1 Premiers pas avec Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 criture des entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3 Calculs de sinus, cosinus, tangente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Les rels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Arithmtique Algorithmes rcursifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6 Polynmes Complexit dun algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1 Le chiffrement de Csar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2 Le chiffrement de Vigenre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3 La machine Enigma et les cls secrtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 La cryptographie cl publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5 Larithmtique pour RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6 Le chiffrement RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4 La chanette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1 Le cosinus hyperbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2 quation de la chanette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3 Longueur dune chanette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5 La rgle et le compas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
1 Constructions et les trois problmes grecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2 Les nombres constructibles la rgle et au compas . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3 lments de thorie des corps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4 Corps et nombres constructibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5 Applications aux problmes grecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

6 Leons de choses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


1 Travailler avec les vidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
2 Alphabet grec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3 crire des mathmatiques : LATEX en cinq minutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4 Formules de trigonomtrie : sinus, cosinus, tangente . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5 Formulaire : trigonomtrie circulaire et hyperbolique . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6 Formules de dveloppements limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7 Formulaire : primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

3
4 SOMMAIRE

Cours et exercices de maths


exo7.emath.fr
Licence Creative Commons BY-NC-SA 3.0 FR
Exo7

1 Zros des fonctions

1 La dichotomie
2 La mthode de la scante
3 La mthode de Newton

Vido partie 1. La dichotomie


Vido partie 2. La mthode de la scante
Vido partie 3. La mthode de Newton

Dans ce chapitre nous allons appliquer toutes les notions prcdentes sur les suites et les fonctions,
la recherche des zros des fonctions. Plus prcisment, nous allons voir trois mthodes afin de
trouver des approximations des solutions dune quation du type ( f (x) = 0).

1. La dichotomie
1.1. Principe de la dichotomie
Le principe de dichotomie repose sur la version suivante du thorme des valeurs interm-
diaires :

Thorme 1

Soit f : [a, b] R une fonction continue sur un segment.

Si f (a) f (b) 0, alors il existe ` [a, b] tel que f (`) = 0.

La condition f (a) f (b) 0 signifie que f (a) et f (b) sont de signes opposs (ou que lun des deux est
nul). Lhypothse de continuit est essentielle !
y y

f (b) > 0

f (a) > 0

a ` b b
x a ` x

f (a) < 0

f (b) < 0

Ce thorme affirme quil existe au moins une solution de lquation ( f (x) = 0) dans lintervalle
[a, b]. Pour le rendre effectif, et trouver une solution (approche) de lquation ( f (x) = 0), il sagit
maintenant de lappliquer sur un intervalle suffisamment petit. On va voir que cela permet dobte-
nir un ` solution de lquation ( f (x) = 0) comme la limite dune suite.
6 Zros des fonctions

Voici comment construire une suite dintervalles embots, dont la longueur tend vers 0, et conte-
nant chacun une solution de lquation ( f (x) = 0).
On part dune fonction f : [a, b] R continue, avec a < b, et f (a) f (b) 0.
Voici la premire tape de la construction : on regarde le signe de la valeur de la fonction f
applique au point milieu a+2 b .
Si f (a) f ( a+2 b ) 0, alors il existe c [a, a+2 b ] tel que f (c) = 0.
Si f (a) f ( a+2 b ) > 0, cela implique que f ( a+2 b ) f (b) 0, et alors il existe c [ a+2 b , b] tel que
f (c) = 0.
y
y

a+b
a 2
b x
f ( a+ b
2 )>0 f ( a+ b
2 )<0
a
a+b b x
2

Nous avons obtenu un intervalle de longueur moiti dans lequel lquation ( f (x) = 0) admet une
solution. On itre alors le procd pour diviser de nouveau lintervalle en deux.
Voici le processus complet :
Au rang 0 :
On pose a 0 = a, b 0 = b. Il existe une solution x0 de lquation ( f (x) = 0) dans lintervalle
[a 0 , b 0 ].
Au rang 1 :
Si f (a 0 ) f ( a0 +2 b0 ) 0, alors on pose a 1 = a 0 et b 1 = a0 +2 b0 ,
sinon on pose a 1 = a0 +2 b0 et b 1 = b.
Dans les deux cas, il existe une solution x1 de lquation ( f (x) = 0) dans lintervalle [a 1 , b 1 ].
...
Au rang n : supposons construit un intervalle [a n , b n ], de longueur b2na , et contenant une
solution xn de lquation ( f (x) = 0). Alors :
Si f (a n ) f ( a n +2 b n ) 0, alors on pose a n+1 = a n et b n+1 = a n +2 b n ,
sinon on pose a n+1 = a n +2 b n et b n+1 = b n .
Dans les deux cas, il existe une solution xn+1 de lquation ( f (x) = 0) dans lintervalle
[a n+1 , b n+1 ].
chaque tape on a
a n xn b n .
On arrte le processus ds que b n a n = b2na est infrieur la prcision souhaite.
Comme (a n ) est par construction une suite croissante, (b n ) une suite dcroissante, et (b n a n ) 0
lorsque n +, les suites (a n ) et (b n ) sont adjacentes et donc elles admettent une mme limite.
Daprs le thorme des gendarmes, cest aussi la limite disons ` de la suite (xn ). La continuit de
f montre que f (`) = limn+ f (xn ) = limn+ 0 = 0. Donc les suites (a n ) et (b n ) tendent toutes les
deux vers `, qui est une solution de lquation ( f (x) = 0).

p
1.2. Rsultats numriques pour 10
p
Nous allons calculer une approximation de 10. Soit la fonction f dfinie par f (x) = x2 10, cest
p p
une fonction continue sur R qui sannule en 10. De plus 10 est lunique solution positive de
Zros des fonctions 7

lquation ( f (x) = 0). Nous pouvons restreindre la fonction f lintervalle [3, 4] : en effet 32 = 9 10
p p
donc 3 10 et 42 = 16 10 donc 4 10. En dautre termes f (3) 0 et f (4) 0, donc lquation
( f (x) = 0) admet une solution dans lintervalle [3, 4] daprs le thorme des valeurs intermdiaires,
p p
et par unicit cest 10, donc 10 [3, 4].
p p
Notez que lon ne choisit pas pour f la fonction x 7 x 10 car on ne connat pas la valeur de 10.
Cest ce que lon cherche calculer !

3 4
x
3.125

3.25

3.5

Voici les toutes premires tapes :

1. On pose a 0 = 3 et b 0 = 4, on a bien f (a 0 ) 0 et f (b 0 ) 0. On calcule a0 +2 b0 = 3, 5 puis f ( a0 +2 b0 ) :


p
f (3, 5) = 3, 52 10 = 2, 25 0. Donc 10 est dans lintervalle [3; 3, 5] et on pose a 1 = a 0 = 3 et
b 1 = a0 +2 b0 = 3, 5.

2. On sait donc que f (a 1 ) 0 et f (b 1 ) 0. On calcule f ( a1 +2 b1 ) = f (3, 25) = 0, 5625 0, on pose


a 2 = 3 et b 2 = 3, 25.

3. On calcule f ( a2 +2 b2 ) = f (3, 125) = 0, 23 . . . 0. Comme f (b 2 ) 0 alors cette fois f sannule sur


le second intervalle [ a2 +2 b2 , b 2 ] et on pose a 3 = a2 +2 b2 = 3, 125 et b 3 = b 2 = 3, 25.
p
ce stade, on a prouv : 3, 125 10 3, 25.
Voici la suite des tapes :
a0 = 3 b0 = 4
a1 = 3 b 1 = 3, 5
a2 = 3 b 2 = 3, 25
a 3 = 3, 125 b 3 = 3, 25
a 4 = 3, 125 b 4 = 3, 1875
a 5 = 3, 15625 b 5 = 3, 1875
a 6 = 3, 15625 b 6 = 3, 171875
a 7 = 3, 15625 b 7 = 3, 164062 . . .
a 8 = 3, 16015 . . . b 8 = 3, 164062 . . .

Donc en 8 tapes on obtient lencadrement :

p
3, 160 10 3, 165

p
En particulier, on vient dobtenir les deux premires dcimales : 10 = 3, 16 . . .

1.3. Rsultats numriques pour (1, 10)1/12

Nous cherchons maintenant une approximation de (1, 10)1/12 . Soit f (x) = x12 1, 10. On pose a 0 = 1
et b 0 = 1, 1. Alors f (a 0 ) = 0, 10 0 et f (b 0 ) = 2, 038 . . . 0.
8 Zros des fonctions

a0 = 1 b 0 = 1, 10
a1 = 1 b 1 = 1, 05
a2 = 1 b 2 = 1, 025
a3 = 1 b 3 = 1, 0125
a 4 = 1, 00625 b 4 = 1, 0125
a 5 = 1, 00625 b 5 = 1, 00937 . . .
a 6 = 1, 00781 . . . b 6 = 1, 00937 . . .
a 7 = 1, 00781 . . . b 7 = 1, 00859 . . .
a 8 = 1, 00781 . . . b 8 = 1, 00820 . . .

Donc en 8 tapes on obtient lencadrement :

1, 00781 (1, 10)1/12 1, 00821

1.4. Calcul de lerreur


La mthode de dichotomie a lnorme avantage de fournir un encadrement dune solution ` de
lquation ( f (x) = 0). Il est donc facile davoir une majoration de lerreur. En effet, chaque tape,
la taille lintervalle contenant ` est divise par 2. Au dpart, on sait que ` [a, b] (de longueur
b a) ; puis ` [a 1 , b 1 ] (de longueur b2 a ) ; puis ` [a 2 , b 2 ] (de longueur b4 a ) ; ... ; [a n , b n ] tant de
longueur b2na .
Si, par exemple, on souhaite obtenir une approximation de ` 10 N prs, comme on sait que
a n ` b n , on obtient |` a n | | b n a n | = b2na . Donc pour avoir |` a n | 10 N , il suffit de choisir
n tel que b2na 10 N .
Nous allons utiliser le logarithme dcimal :

ba
10 N (b a)10 N 2n
2n
log(b a) + log(10 N ) log(2n )
log(b a) + N n log 2
N + log(b a)
n
log 2

Sachant log 2 = 0, 301 . . ., si par exemple b a 1, voici le nombre ditrations suffisantes pour avoir
une prcision de 10 N (ce qui correspond, peu prs, N chiffres exacts aprs la virgule).

1010 ( 10 dcimales) 34 itrations


10100 ( 100 dcimales) 333 itrations
101000 ( 1000 dcimales) 3322 itrations

Il faut entre 3 et 4 itrations supplmentaires pour obtenir une nouvelle dcimale.

Remarque

En toute rigueur il ne faut pas confondre prcision et nombre de dcimales exactes, par
exemple 0, 999 est une approximation de 1, 000 103 prs, mais aucune dcimale aprs la
virgule nest exacte. En pratique, cest la prcision qui est la plus importante, mais il est plus
frappant de parler du nombre de dcimales exactes.
Zros des fonctions 9

1.5. Algorithmes
Voici comment implmenter la dichotomie dans le langage Python. Tout dabord on dfinit une
fonction f (ici par exemple f (x) = x2 10) :
Algorithme . dichotomie.py (1)

def f(x):
return x*x - 10

Puis la dichotomie proprement dite : en entre de la fonction, on a pour variables a, b et n le


nombre dtapes voulues.
Algorithme . dichotomie.py (2)

def dicho(a,b,n):
for i in range(n):
c = (a+b)/2
if f(a)*f(c) <= 0:
b = c
else:
a = c
return a,b

Mme algorithme, mais avec cette fois en entre la prcision souhaite :


Algorithme . dichotomie.py (3)

def dichobis(a,b,prec):
while b-a>prec:
c = (a+b)/2
if f(a)*f(c) <= 0:
b = c
else:
a = c
return a,b

Enfin, voici la version rcursive de lalgorithme de dichotomie.


Algorithme . dichotomie.py (4)

def dichotomie(a,b,prec):
if b-a<=prec:
return a,b
else:
c = (a+b)/2
if f(a)*f(c) <= 0:
return dichotomie(a,c,prec)
else:
10 Zros des fonctions

return dichotomie(c,b,prec)

Mini-exercices
p p
3
1. la main, calculer un encadrement 0, 1 prs de 3. Idem avec 2.
2. Calculer une approximation des solutions de lquation x3 + 1 = 3x.
3. Est-il plus efficace de diviser lintervalle en 4 au lieu den 2 ? ( chaque itration, la
dichotomie classique ncessite lvaluation de f en une nouvelle valeur a+2 b pour une
prcision amliore dun facteur 2.)
4. crire un algorithme pour calculer plusieurs solutions de ( f (x) = 0).
5. On se donne un tableau tri de taille N, rempli de nombres appartenant {1, . . . , n}.
crire un algorithme qui teste si une valeur k apparat dans le tableau et en quelle
position.

2. La mthode de la scante

2.1. Principe de la scante


Lide de la mthode de la scante est trs simple : pour une fonction f continue sur un intervalle
[a, b], et vrifiant f (a) 0, f (b) > 0, on trace le segment [AB] o A = (a, f (a)) et B = (b, f (b)). Si le
segment reste au-dessus du graphe de f alors la fonction sannule sur lintervalle [a0 , b] o (a0 , 0)
est le point dintersection de la droite (AB) avec laxe des abscisses. La droite (AB) sappelle la
scante. On recommence en partant maintenant de lintervalle [a0 , b] pour obtenir une valeur a00 .

a a0 a00 b
x
A 00
A0
A
Zros des fonctions 11

Proposition 1

Soit f : [a, b] R une fonction continue, strictement croissante et convexe telle que f (a) 0,
f (b) > 0. Alors la suite dfinie par

b an
a0 = a et a n+1 = a n f (a n )
f (b) f (a n )

est croissante et converge vers la solution ` de ( f (x) = 0).

Lhypothse f convexe signifie exactement que pour tout x, x0 dans [a, b] la scante (ou corde)
entre (x, f (x)) et (x0 , f (x0 )) est au-dessus du graphe de f .

(x0 , f (x0 ))
x
x0 x

(x, f (x))

Dmonstration

1. Justifions dabord la construction de la suite rcurrente.


Lquation de la droite passant par les deux points (a, f (a)) et ( b, f ( b)) est

f ( b ) f ( a)
y = ( x a) + f ( a)
ba
f ( b ) f ( a )
Cette droite intersecte laxe des abscisses en (a0 , 0) qui vrifie donc 0 = (a0 a) ba + f (a),
donc a0 = a f (bb)
a
f (a) f (a).
2. Croissance de (a n ).
Montrons par rcurrence que f (a n ) 0. Cest vrai au rang 0 car f (a 0 ) = f (a) 0 par hypothse.
Supposons vraie lhypothse au rang n. Si a n+1 < a n (un cas qui savrera a posteriori jamais ra-
lis), alors comme f est strictement croissante, on a f (a n+1 ) < f (a n ), et en particulier f (a n+1 ) 0.
Sinon a n+1 a n . Comme f est convexe : la scante entre (a n , f (a n )) et ( b, f ( b)) est au-dessus
du graphe de f . En particulier le point (a n+1 , 0) (qui est sur cette scante par dfinition a n+1 )
est au-dessus du point (a n+1 , f (a n+1 )), et donc f (a n+1 ) 0 aussi dans ce cas, ce qui conclut la
rcurrence.
ba n
Comme f (a n ) 0 et f est croissante, alors par la formule a n+1 = a n f ( b ) f ( a n ) f (a n ), on obtient
que a n+1 a n .
3. Convergence de (a n ).
La suite (a n ) est croissante et majore par b, donc elle converge. Notons ` sa limite. Par
continuit f (a n ) f (`). Comme pour tout n, f (a n ) 0, on en dduit que f (`) 0. En parti-
culier, comme on suppose f ( b) > 0, on a ` < b. Comme a n `, a n+1 `, f (a n ) f (`), lgalit
b`
a n+1 = a n f (bb)
a n
f (a n ) f (a n ) devient la limite (lorsque n +) : ` = ` f ( b) f (`) f (`), ce qui
implique f (`) = 0.
Conclusion : (a n ) converge vers la solution de ( f ( x) = 0).
12 Zros des fonctions

p
2.2. Rsultats numriques pour 10

Pour a = 3, b = 4, f (x) = x2 10 voici les rsultats numriques, est aussi indique une majoration
p
de lerreur n = 10 a n (voir ci-aprs).

a0 = 3 0 0, 1666 . . .
a 1 = 3, 14285714285 . . . 1 0, 02040 . . .
a 2 = 3, 16000000000 . . . 2 0, 00239 . . .
a 3 = 3, 16201117318 . . . 3 0, 00028 . . .
a 4 = 3, 16224648985 . . . 4 3, 28 . . . 105
a 5 = 3, 16227401437 . . . 5 3, 84 . . . 106
a 6 = 3, 16227723374 . . . 6 4, 49 . . . 107
a 7 = 3, 16227761029 . . . 7 5, 25 . . . 108
a 8 = 3, 16227765433 . . . 8 6, 14 . . . 109

2.3. Rsultats numriques pour (1, 10)1/12


Voici les rsultats numriques avec une majoration de lerreur n = (1, 10)1/12 a n , avec f (x) =
x12 1, 10, a = 1 et b = 1, 1

a0 = 1 0 0, 0083 . . .
a 1 = 1, 00467633 . . . 1 0, 0035 . . .
a 2 = 1, 00661950 . . . 2 0, 0014 . . .
a 3 = 1, 00741927 . . . 3 0, 00060 . . .
a 4 = 1, 00774712 . . . 4 0, 00024 . . .
a 5 = 1, 00788130 . . . 5 0, 00010 . . .
a 6 = 1, 00793618 . . . 6 4, 14 . . . 105
a 7 = 1, 00795862 . . . 7 1, 69 . . . 105
a 8 = 1, 00796779 . . . 8 6, 92 . . . 106

2.4. Calcul de lerreur


La mthode de la scante fournit lencadrement a n l b. Mais comme b est fixe cela ne donne
pas dinformation exploitable pour | l a n |. Voici une faon gnrale destimer lerreur, laide du
thorme des accroissements finis.

Proposition 2

Soit f : I R une fonction drivable et ` tel que f (`) = 0. Sil existe une constante m > 0 telle
que pour tout x I, | f 0 (x)| m alors

| f (x)|
| x `| pour tout x I.
m

Dmonstration

Par lingalit des accroissement finis entre x et ` : | f ( x) f (`)| m| x `| mais f (`) = 0, do la


majoration.
Zros des fonctions 13

p
Exemple 1. Erreur pour 10

Soit f (x) = x2 10 et lintervalle I = [3, 4]. Alors f 0 (x) = 2x donc | f 0 (x)| 6 sur I. On pose donc
p
m = 6, ` = 10, x = a n . On obtient lestimation de lerreur :

| f (a n )| |a2n 10|
n = |` a n | =
m 6
p |3,172 10|
Par exemple on a trouv a 2 = 3, 16... 3, 17 donc 10 a 2 6 = 0, 489.
p |a28 10|
Pour a 8 on a trouv a 8 = 3, 1622776543347473 . . . donc 10 a 8 6 = 6, 14 . . . 109 . On a
en fait 7 dcimales exactes aprs la virgule.

Dans la pratique, voici le nombre ditrations suffisantes pour avoir une prcision de 10n pour
cet exemple. Grosso-modo, une itration de plus donne une dcimale supplmentaire.
1010 ( 10 dcimales) 10 itrations
10100 ( 100 dcimales) 107 itrations
101000 ( 1000 dcimales) 1073 itrations

Exemple 2. Erreur pour (1, 10)1/12

On pose f (x) = x12 1, 10, I = [1; 1, 10] et ` = (1, 10)1/12 . Comme f 0 (x) = 12x11 , si on pose de plus
m = 12, on a | f 0 (x)| m pour x I. On obtient

|a12
n 1, 10|
n = |` a n | .
12
Par exemple a 8 = 1.0079677973185432 . . . donc

|a12
8 1, 10|
|(1, 10)1/12 a 8 | = 6, 92 . . . 106 .
12

2.5. Algorithme
Voici lalgorithme : cest tout simplement la mise en uvre de la suite rcurrente (a n ).
Algorithme . secante.py

def secante(a,b,n):
for i in range(n):
a = a-f(a)*(b-a)/(f(b)-f(a))
return a

Mini-exercices
p p
3
1. la main, calculer un encadrement 0, 1 prs de 3. Idem avec 2.
2. Calculer une approximation des solutions de lquation x3 + 1 = 3x.
3. Calculer une approximation de la solution de lquation (cos x = 0) sur [0, ]. Idem avec
(cos x = 2 sin x).
14 Zros des fonctions

4. tudier lquation (exp( x) = ln(x)). Donner une approximation de la (ou des) solu-
tion(s) et une majoration de lerreur correspondante.

3. La mthode de Newton

3.1. Mthode de Newton


La mthode de Newton consiste remplacer la scante de la mthode prcdente par la tangente.
Elle est dune redoutable efficacit.
Partons dune fonction drivable f : [a, b] R et dun point u 0 [a, b]. On appelle (u 1 , 0) linter-
section de la tangente au graphe de f en (u 0 , f (u 0 )) avec laxe des abscisses. Si u 1 [a, b] alors
on recommence lopration avec la tangente au point dabscisse u 1 . Ce processus conduit la
dfinition dune suite rcurrente :

f (u n )
u 0 [a, b] et u n+1 = u n .
f 0 (u n )

Dmonstration

En effet la tangente au point dabscisse u n a pour quation : y = f 0 ( u n )( x u n )+ f ( u n ). Donc le point ( x, 0)


f (u )
appartenant la tangente (et laxe des abscisses) vrifie 0 = f 0 ( u n )( x u n ) + f ( u n ). Do x = u n f 0 (un ) .
n

f (u n )

un
u n+1

p
3.2. Rsultats pour 10
p
Pour calculer a, on pose f (x) = x2 a, avec f 0 (x) = 2x. La suite issue de la mthode de Newton
u2 a
est dtermine par u 0 > 0 et la relation de rcurrence u n+1 = u n 2nu n . Suite qui pour cet exemple
sappelle suite de Hron et que lon rcrit souvent

1 a

u0 > 0 et u n+1 = un + .
2 un
Zros des fonctions 15

Proposition 3
p
Cette suite (u n ) converge vers a.

p
Pour le calcul de 10, on pose par exemple u 0 = 4, et on peut mme commencer les calculs la
main :

u0 = 4
1
u 0 + 10 1 10
13
u1 = 2 u 0 = 2 4 + 4 = = 3, 25
! 4

u 2 = 21 u 1 + 10 1 13 10 329
u 1 = 2 4 + 13 = 104 = 3, 1634 . . .
4
u 3 = 21 u 2 + 10
u2 = 216 401
68 432 = 3, 16227788 . . .
u 4 = 3, 162277660168387 . . .
p
Pour u 4 on obtient 10 = 3, 1622776601683 . . . avec dj 13 dcimales exactes !
p
Voici la preuve de la convergence de la suite (u n ) vers a.
Dmonstration

1 a

u0 > 0 et u n+1 = un + .
2 un
p
1. Montrons que u n a pour n 1.
Tout dabord
2
1 u2n + a 1 1 ( u2n a)2

u2n+1 a = a= ( u 4
n 2 au 2
n + a 2
) =
4 un 4 u2n 4 u2n

Donc u2n+1 a 0. Comme il est clair que pour tout n 0, u n 0, on en dduit que pour tout
p
n 0, u n+1 a. (Notez que u 0 lui est quelconque.)
2. Montrons que ( u n)n1 est
une suite dcroissante qui converge.
Comme uun+n 1 = 12 1 + a2 , et que pour n 1 on vient de voir que u2n a (donc a
1), alors
un u2n
u n+1
un 1, pour tout n 1.
Consquence : la suite ( u n )n1 est dcroissante et minore par 0 donc elle converge.
p
3. ( u n ) converge vers a.
Notons
` la
limite de ( u n ). Alors u n ` et u n+1 `. Lorsque n + dans la relation u n+1 =
1 a 1 a
` ` . Ce qui conduit la relation `2 = a et par positivit de la

2 u n + un , on obtient = 2 + `
p
suite, ` = a.

3.3. Rsultats numriques pour (1, 10)1/12


Pour calculer (1, 10)1/12 , on pose f (x) = x12 a avec a = 1, 10. On a f 0 (x) = 12x11 . On obtient u n+1 =
u12 a
u n 12n u11 . Ce que lon reformule ainsi :
n

1 a

u 0 > 0 et u n+1 = 11u n + 11 .
12 un
Voici les rsultats numriques pour (1, 10)1/12 en partant de u 0 = 1.
u0 = 1
u 1 = 1, 0083333333333333 . . .
u 2 = 1, 0079748433368980 . . .
u 3 = 1, 0079741404315996 . . .
u 4 = 1, 0079741404289038 . . .
16 Zros des fonctions

Toutes les dcimales affiches pour u 4 sont exactes : (1, 10)1/12 = 1, 0079741404289038 . . .

p
3.4. Calcul de lerreur pour 10

Proposition 4
p
1. Soit k tel que u 1 a k. Alors pour tout n 1 :
2n1
p p k

un a 2 a p
2 a

2. Pour a = 10, u 0 = 4, on a :
2n1
p 1
u n 10 8
24

Admirez la puissance de la mthode de Newton : 11 itrations donnent dj 1000 dcimales exactes


aprs la virgule. Cette rapidit de convergence se justifie grce au calcul de lerreur : la prcision
est multiplie par 2 chaque tape, donc chaque itration le nombre de dcimales exactes double !

1010 ( 10 dcimales) 4 itrations


10100 ( 100 dcimales) 8 itrations
101000 ( 1000 dcimales) 11 itrations

Dmonstration

1. Dans la preuve de la proposition 3, nous avons vu lgalit :


p p
( u2n a)2 p p ( u n a)2 ( u n + a)2
u2n+1 a = donc ( u n+1 a)( u n+1 + a) =
4 u2n 4 u2n
p
Ainsi comme u n a pour n 1 :
p 2
p p 11 a p 1 1 1 p

2
u n+1 a = ( u n a) p 1+ ( u n a)2 p (1 + 1)2 = p ( u n a)2
u n+1 + a 4 u n 2 a 4 2 a
p
Si k vrifie u 1 a k, nous allons en dduire par rcurrence, pour tout n 1, la formule
2n1
p k p

un a 2 a p
2 a

Cest vrai pour n = 1. Supposons la formule vraie au rang n, alors :


2n1 !2 2n
p 1 p 1 p k p k

u n+1 a p ( u n a)2 = p (2 a)2 p =2 a p
2 a 2 a 2 a 2 a

La formule est donc vrai au rang suivant.


p p
2. Pour a = 10 avec u 0 = 4 on a u 1 = 3, 25. Comme 3 10 4 alors u 1 10 u 1 3 14 . On fixe
p
donc k = 41 . Toujours par lencadrement 3 10 4, la formule obtenue prcdemment devient

1
!2n1 2n1
p 1

4
un a 2 4 =8 .
23 24
Zros des fonctions 17

3.5. Algorithme
p
Voici lalgorithme pour le calcul de a. On prcise en entre le rel a 0 dont on veut calculer la
racine et le nombre n ditrations.
Algorithme . newton.py

def racine_carree(a,n):
u=4 # N'importe qu'elle valeur > 0
for i in range(n):
u = 0.5*(u+a/u)
return u

p
En utilisant le module decimal le calcul de u n pour n = 11 donne 1000 dcimales de 10 :

3,
16227766016837933199889354443271853371955513932521
68268575048527925944386392382213442481083793002951
87347284152840055148548856030453880014690519596700
15390334492165717925994065915015347411333948412408
53169295770904715764610443692578790620378086099418
28371711548406328552999118596824564203326961604691
31433612894979189026652954361267617878135006138818
62785804636831349524780311437693346719738195131856
78403231241795402218308045872844614600253577579702
82864402902440797789603454398916334922265261206779
26516760310484366977937569261557205003698949094694
21850007358348844643882731109289109042348054235653
40390727401978654372593964172600130699000095578446
31096267906944183361301813028945417033158077316263
86395193793704654765220632063686587197822049312426
05345411160935697982813245229700079888352375958532
85792513629646865114976752171234595592380393756251
25369855194955325099947038843990336466165470647234
99979613234340302185705218783667634578951073298287
51579452157716521396263244383990184845609357626020

Mini-exercices
p
1. la calculette, calculer les trois premires tapes pour une approximation de 3, sous
p3
forme de nombres rationnels. Idem avec 2.
2. Implmenter la mthode de Newton, tant donnes une fonction f et sa drive f 0 .
3. Calculer une approximation des solutions de lquation x3 + 1 = 3x.
4. Soit a > 0. Comment calculer a1 par une mthode de Newton ?
p
5. Calculer n de sorte que u n 10 10` (avec u 0 = 4, u n+1 = 12 u n + uan , a = 10).
18 Zros des fonctions

Auteurs

Auteurs : Arnaud Bodin, Niels Borne, Laura Desideri


Dessins : Benjamin Boutin
Exo7

2 Algorithmes et mathmatiques

1 Premiers pas avec Python


2 criture des entiers
3 Calculs de sinus, cosinus, tangente
4 Les rels
5 Arithmtique  Algorithmes rcursifs
6 Polynmes  Complexit d'un algorithme

Vido partie 1. Premiers pas avec Python


Vido partie 2. Ecriture des entiers
Vido partie 3. Calculs de sinus, cosinus, tangente
Vido partie 4. Les rels
Vido partie 5. Arithmtique  Algorithmes rcursifs
Vido partie 6. Polynmes  Complexit d'un algorithme

1. Premiers pas avec Python


Dans cette partie on vrifie dabord que Python fonctionne, puis on introduira les boucles (for et
while), le test if ... else ... et les fonctions.

1.1. Hello world !


Pour commencer testons si tout fonctionne !
Travaux pratiques 1

1. Dfinir deux variables prenant les valeurs 3 et 6.


2. Calculer leur somme et leur produit.

Voici quoi cela ressemble :


Algorithme . hello-world.py

>>> a=3
>>> b=6
>>> somme = a+b
>>> print(somme)
9
>>> # Les rsultats
>>> print("La somme est", somme)
La somme est 9
>>> produit = a*b
>>> print("Le produit est", produit)
Le produit est 18
20 Algorithmes et mathmatiques

On retient les choses suivantes :


On affecte une valeur une variable par le signe gal =.
On affiche un message avec la fonction print().
Lorsque quune ligne contient un dise #, tout ce qui suit est ignor. Cela permet dinsrer
des commentaires, ce qui est essentiel pour relire le code.
Dans la suite on omettra les symboles >>>. Voir plus de dtails sur le fonctionnement en fin de
section.

1.2. Somme des cubes

Travaux pratiques 2

1. Pour un entier n fix, programmer le calcul de la somme S n = 13 + 23 + 33 + + n3 .


2. Dfinir une fonction qui pour une valeur n renvoie la somme n = 1 + 2 + 3 + + n.
3. Dfinir une fonction qui pour une valeur n renvoie S n .
4. Vrifier, pour les premiers entiers, que S n = (n )2 .

1.
Algorithme . somme-cubes.py (1)

n = 10
somme = 0
for i in range(1,n+1):
somme = somme + i*i*i
print(somme)

Voici ce que lon fait pour calculer S n avec n = 10.


On affecte dabord la valeur 0 la variable somme, cela correspond linitialisation S 0 = 0.
Nous avons dfini une boucle avec linstruction for qui fait varier i entre 1 et n.
Nous calculons successivement S 1 , S 2 ,. . . en utilisant la formule de rcurrence S i = S i1 +
i 3 . Comme nous navons pas besoin de conserver toutes les valeurs des S i alors on garde
le mme nom pour toutes les sommes, chaque tape on affecte somme lancienne valeur
de la somme plus i 3 : somme = somme + i*i*i.
range(1,n+1) est lensemble des entiers {1, 2, . . . , n}. Cest bien les entiers strictement
infrieurs n + 1. La raison est que range(n) dsigne {0, 1, 2, . . . , n 1} qui contient n
lments.
n( n+1)
2. Nous savons que n = 1 + 2 + 3 + + n = 2 donc nous navons pas besoin de faire une
boucle :
Algorithmes et mathmatiques 21

Algorithme . somme-cubes.py (2)

def somme_entiers(n):
return n*(n+1)/2

Une fonction en informatique est similaire une fonction mathmatique, cest un objet
qui prend en entre des variables (dites variables formelles ou variables muettes, ici n) et
retourne une valeur (un entier, une liste, une chane de caractres,... ici n(n2+1) ).
3. Voici la fonction qui retourne la somme des cubes :
Algorithme . somme-cubes.py (3)

def somme_cubes(n):
somme = 0
for i in range(1,n+1):
somme = somme + i**3
return somme

2
n( n+1)
4. Et enfin on vrifie que pour les premiers entiers S n = 2 , par exemple pour n = 12 :

Algorithme . somme-cubes.py (4)

n = 12
if somme_cubes(n) == (somme_entiers(n)**2):
print("Pour n=", n, "l'assertion est vraie.")
else:
print("L'assertion est fausse !")

On retient :
Les puissances se calculent aussi avec ** : 52 scrit 5*5 ou 5**2, 53 scrit 5*5*5 ou 5**3,...
Une fonction se dfinit par def ma_fonction(variable): et se termine par return resultat.
if condition: ... else: ... excute le premier bloc dinstructions si la condition est
vraie ; si la condition est fausse cela excute lautre bloc.
Exemple de conditions
a < b : a < b,
a <= b : a b,
a == b : a = b,
a != b : a 6= b.
Attention ! Il est important de comprendre que a==b vaut soit vraie ou faux (on compare a et
b) alors quavec a=b on affecte dans a la valeur de b.
Enfin en Python (contrairement aux autres langages) cest lindentation (les espaces en dbut
de chaque ligne) qui dtermine les blocs dinstructions.

1.3. Calcul de au hasard


Nous allons voir quil est possible de calculer les premires dcimales de par la mthode de
Monte-Carlo, cest dire avec laide du hasard. On considre le carr de cot 1, le cercle de rayon 1
centr lorigine, dquation x2 + y2 = 1, et la portion de disque dans le carr (voir la figure).
22 Algorithmes et mathmatiques

(0, 1)

(0, 0) (1, 0)

Travaux pratiques 3

1. Calculer laire du carr et de la portion de disque.


2. Pour un point (x, y) tir au hasard dans le carr, quelle est la probabilit que le point
soit en fait dans la portion de disque ?
3. Tirer un grand nombre de points au hasard, compter ceux qui sont dans la portion de
disque.
4. En dduire les premires dcimales de .

Voici le code :
Algorithme . pi-hasard.py

import random # Module qui gnre des nombres alatoires

Tir = 0 # Numro du tir


NbTirDansLeDisque = 0 # Nombre de tirs dans le disque

while (Tir < 1000):


Tir = Tir + 1
# On tire au hasard un point (x,y) dans [0,1] x [0,1]
x = random.random()
y = random.random()
if (x*x+y*y <= 1): # On est dans le disque
NbTirDansLeDisque = NbTirDansLeDisque + 1

MonPi = 4*NbTirDansLeDisque / Tir


print("Valeur exprimentale de Pi : %0.3f" %MonPi)

Commentaires :
Un petit calcul prouve que laire de la portion de disque est 4 , laire du carr est 1. Donc la
probabilit de tomber dans le disque est 4 .
Pour tirer un nombre au hasard on utilise une fonction random() qui renvoie un nombre rel
de lintervalle [0, 1[. Bien sr chaque appel de la fonction random() le nombre obtenu est
diffrent !
Cette fonction nest pas connue par dfaut de Python, il faut lui indiquer le nom du module
o elle se trouve. En dbut de fichier on ajoute import random pour le module qui gre
les tirages au hasard. Et pour indiquer quune fonction vient dun module il faut lappeler
Algorithmes et mathmatiques 23

par module.fonction() donc ici random.random() (module et fonction portent ici le mme
nom !).
La boucle est while condition: ... Tant que la condition est vrifie les instructions de la
boucle sont excutes. Ici Tir est le compteur que lon a initialis 0. Ensuite on commence
excuter la boucle. Bien sr la premire chose que lon fait dans la boucle est dincrmenter
le compteur Tir. On continue jusqu ce que lon atteigne 999. Pour Tir= 1000 la condition
nest plus vraie et le bloc dinstructions du while nest pas excut. On passe aux instructions
suivantes pour afficher le rsultat.
chaque tir on teste si on est dans la portion de disque ou pas laide de lingalit x2 + y2 1.
Cette mthode nest pas trs efficace, il faut beaucoup de tirs pour obtenir le deux premires
dcimales de .

1.4. Un peu plus sur Python


Le plus surprenant avec Python cest que cest lindentation qui dtermine le dbut et la
fin dun bloc dinstructions. Cela oblige prsenter trs soigneusement le code.
Contrairement dautres langages on na pas besoin de dclarer le type de variable. Par
exemple lorsque lon initialise une variable par x=0, on na pas besoin de prciser si x est un
entier ou un rel.
Nous travaillerons avec la version 3 (ou plus) de Python, que lon appelle par python ou
python3. Pour savoir si vous avez la bonne version tester la commande 4/3. Si la rponse
est 1.3333... alors tout est ok. Par contre avec les versions 1 et 2 de Python la rponse est
1 (car il considrait que cest quotient de la division euclidienne de deux entiers).
La premire faon de lancer Python est en ligne de commande, on obtient alors linvite >>>
et on tape les commandes.
Mais le plus pratique est de sauvegarder ses commandes dans un fichier et de faire un appel
par python monfichier.py
Vous trouverez sans problme de laide et des tutoriels sur internet !

Mini-exercices

1. Soit le produit P n = (1 21 ) (1 31 ) (1 14 ) (1 n1 ). Calculer une valeur approche


de P n pour les premiers entiers n.
2. Que vaut la somme des entiers i qui apparaissent dans linstruction for i in range(1,10).
Idem pour for i in range(11). Idem pour for i in range(1,10,2). Idem pour
for i in range(0,10,2). Idem pour for i in range(10,0,-1).
3. On considre le cube [0, 1] [0, 1] [0, 1] et la portion de boule de rayon 1 centre
lorigine incluse dans ce cube. Faire les calculs de probabilit pour un point tir au
hasard dans le cube dtre en fait dans la portion de boule. Faire une fonction pour le
vrifier exprimentalement.
4. On lance deux ds. Exprimenter quelle est la probabilit que la somme soit 7, puis 6,
puis 3 ? Quelle est la probabilit que lun des deux ds soit un 6 ? davoir un double ? La
fonction randint(a, b) du module random retourne un entier k au hasard, vrifiant
a k b.
5. On lance un d jusqu ce que lon obtienne un 6. En moyenne au bout de combien de
lancer sarrte-t-on ?
24 Algorithmes et mathmatiques

2. criture des entiers


Nous allons faire un peu darithmtique : le quotient de la division euclidienne //, le reste %
(modulo) et nous verrons lcriture des entiers en base 10 et en base 2. Nous utiliserons aussi la
notion de listes et le module math.

2.1. Division euclidienne et reste, calcul avec les modulo


La division euclidienne de a par b, avec a Z et b Z scrit :

a = bq + r et 0r<b

o q Z est le quotient et r N est le reste.


En Python le quotient se calcule par : a // b. Le reste se calcule par a % b. Exemple : 14 // 3
retourne 4 alors que 14 % 3 (lire 14 modulo 3) retourne 2. On a bien 14 = 3 4 + 2.
Les calculs avec les modulos sont trs pratiques. Par exemple si lon souhaite tester si un entier
est pair, ou impair cela revient un test modulo 2. Le code est if (n%2 == 0): ... else: ....
Si on besoin de calculer cos(n 2 ) alors il faut discuter suivant les valeurs de n%4.

Appliquons ceci au problme suivant :

Travaux pratiques 4

Combien y-a-t-il doccurrences du chiffre 1 dans les nombres de 1 999 ? Par exemple le
chiffre 1 apparat une fois dans 51 mais deux fois dans 131.

Algorithme . nb-un.py

NbDeUn = 0
for N in range(1,999+1):
ChiffreUnite = N % 10
ChiffreDizaine = (N // 10) % 10
ChiffreCentaine = (N // 100) % 10
if (ChiffreUnite == 1):
NbDeUn = NbDeUn + 1
if (ChiffreDizaine == 1):
NbDeUn = NbDeUn + 1
if (ChiffreCentaine == 1):
NbDeUn = NbDeUn + 1
print("Nombre d'occurences du chiffre '1' :", NbDeUn)

Commentaires :
Comment obtient-on le chiffre des units dun entier N ? Cest le reste modulo 10, do
linstruction ChiffreUnite = N % 10.
Comment obtient-on le chiffre des dizaines ? Cest plus dlicat, on commence par effectuer la
division euclidienne de N par 10 (cela revient supprimer le chiffre des units, par exemple
si N = 251 alors N // 10 retourne 25). Il ne reste plus qu calculer le reste modulo 10, (par
exemple (N // 10) % 10 retourne le chiffre des dizaines 5.
Pour le chiffre des centaines on divise dabord par 100.
Algorithmes et mathmatiques 25

2.2. criture des nombres en base 10


Lcriture dcimale dun nombre, cest associer un entier N la suite de ses chiffres [a 0 , a 1 , . . . , a n ]
de sorte que a i soit le i-me chiffre de N. Cest--dire

N = a n 10n + a n1 10n1 + + a 2 102 + a 1 10 + a 0 et a i {0, 1, . . . , 9}

a 0 est le chiffre des units, a 1 celui des dizaines, a 2 celui des centaines,...

Travaux pratiques 5

1. crire une fonction qui partir dune liste [a 0 , a 1 , . . . , a n ] calcule lentier N correspon-
dant.
2. Pour un entier N fix, combien a-t-il de chiffres ? On pourra saider dune ingalit du
type 10n N < 10n+1 .
3. crire une fonction qui partir de N calcule son criture dcimale [a 0 , a 1 , . . . , a n ].

Voici le premier algorithme :


Algorithme . decimale.py (1)

def chiffres_vers_entier(tab):
N = 0
for i in range(len(tab)):
N = N + tab[i] * (10 ** i)
return N

La formule mathmatique est simplement N = a n 10n + a n1 10n1 + + a 2 102 + a 1 10 + a 0 . Par


exemple chiffres_vers_entier([4,3,2,1]) renvoie lentier 1234.

Expliquons les bases sur les listes (qui sappelle aussi des tableaux)
En Python une liste est prsente entre des crochets. Par exemple pour tab = [4,3,2,1]
alors on accde aux valeurs par tab[i] : tab[0] vaut 4, tab[1] vaut 3, tab[2] vaut 2,
tab[3] vaut 1.
Pour parcourir les lments dun tableau le code est simplement for x in tab, x vaut alors
successivement 4, 3, 2, 1.
La longueur du tableau sobtient par len(tab). Pour notre exemple len([4,3,2,1]) vaut 4.
Pour parcourir toutes les valeurs dun tableau on peut donc aussi crire for i in range(len(tab)),
puis utiliser tab[i], ici i variant ici de 0 3.
La liste vide est seulement note avec deux crochets : []. Elle est utile pour initialiser une
liste.
Pour ajouter un lment une liste tab existante on utilise la fonction append. Par exemple
dfinissons la liste vide tab=[], pour ajouter une valeur la fin de la liste on saisit :
tab.append(4). Maintenant notre liste est [4], elle contient un seul lment. Si on conti-
nue avec tab.append(3). Alors maintenant notre liste a deux lments : [4, 3].
Voici lcriture dun entier en base 10 :
26 Algorithmes et mathmatiques

Algorithme . decimale.py (2)

def entier_vers_chiffres(N):
tab = []
n = floor(log(N,10)) # le nombre de chiffres est n+1
for i in range(0,n+1):
tab.append((N // 10 ** i) % 10)
return tab

Par exemple entier_vers_chiffres(1234) renvoie le tableau [4, 3, 2, 1]. Nous avons expliqu
tout ce dont nous avions besoin sur les listes au-dessus, expliquons les mathmatiques.
Dcomposons N sous la forme [1, 10[ [10, 100[ [100, 1000[ [1 000, 10 000[ Chaque
intervalle est du type [10n , 10n+1 [. Pour N N il existe donc n N tel que 10n N < 10n+1 .
Ce qui indique que le nombre de chiffres de N est n + 1.
Par exemple si N = 1234 alors 1 000 = 103 N < 104 = 10 000, ainsi n = 3 et le nombre de
chiffres est 4.
Comment calculer n partir de N ? Nous allons utiliser le logarithme dcimal log10 qui vrifie
log10 (10) = 1 et log10 (10 i ) = i. Le logarithme est une fonction croissante, donc lingalit
10n N < 10n+1 devient log10 (10n ) log10 (N) < log10 (10n+1 ). Et donc n log10 (N) < n + 1. Ce
qui indique donc que n = E(log10 (N)) o E(x) dsigne la partie entire dun rel x.

2.3. Module math


Quelques commentaires informatiques sur un module important pour nous. Les fonctions math-
matiques ne sont pas dfinies par dfaut dans Python ( part | x| et x n ), il faut faire appel une
librairie spciale : le module math contient les fonctions mathmatiques principales.

abs(x) | x|
x ** n xn
p
sqrt(x) x
exp(x) exp x
log(x) ln x logarithme nprien
log(x,10) log x logarithme dcimal
cos(x), sin(x), tan(x) cos x, sin x, tan x en radians
acos(x), asin(x), atan(x) arccos x, arcsin x, arctan x en radians
floor(x) partie entire E(x) :plus grand entier n x (floor = plancher)
ceil(x) plus petit entier n x (ceil = plafond)

Comme on aura souvent besoin de ce module on lappelle par le code from math import *.
Cela signifie que lon importe toutes les fonctions de ce module et quen plus on na pas
besoin de prciser que la fonction vient du module math. On peut crire cos(3.14) au lieu
math.cos(3.14).
Dans lalgorithme prcdent nous avions utilis le logarithme dcimal log(x,10), ainsi que
la partie entire floor(x).
Algorithmes et mathmatiques 27

2.4. criture des nombres en base 2


On dispose dune rampe de lumire, chacune des 8 lampes pouvant tre allume (rouge) ou teinte
(gris).

0 1 2 3 4 5 6 7

On numrote les lampes de 0 7. On souhaite contrler cette rampe : afficher toutes les combinai-
sons possibles, faire dfiler une combinaison de la gauche droite (la chenille), inverser ltat de
toutes les lampes,... Voyons comment lcriture binaire des nombres peut nous aider. Lcriture
binaire dun nombre cest son criture en base 2.
Comment calculer un nombre qui est crit en binaire ? Le chiffre des dizaines correspond 2
(au lieu de 10), le chiffre des centaines 4 = 22 (au lieu de 100 = 102 ), le chiffres des milliers
8 = 23 (au lieu de 1000 = 103 ),... Pour le chiffre des units cela correspond 20 = 1 (de mme que
100 = 1).
Par exemple 10011b vaut le nombre 19. Car

10011b = 1 24 + 0 23 + 0 22 + 1 21 + 1 20 = 16 + 2 + 1 = 19.

De faon gnrale tout entier N N scrit de manire unique sous la forme

N = a n 2n + a n1 2n1 + + a 2 22 + a 1 2 + a 0 et a i {0, 1}

On note alors N = a n a n1 . . . a 1 a 0 b (avec un indice b pour indiquer que cest son criture binaire).

Travaux pratiques 6

1. crire une fonction qui partir dune liste [a 0 , a 1 , . . . , a n ] calcule lentier N correspon-
dant lcriture binaire a n a n1 . . . a 1 a 0 b .
2. crire une fonction qui partir de N calcule son criture binaire sous la forme
[a 0 , a 1 , . . . , a n ].

La seule diffrence avec la base 10 cest que lon calcule avec des puissances de 2.
Algorithme . binaire.py (1)

def binaire_vers_entier(tab):
N = 0
for i in range(len(tab)):
N = N + tab[i] * (2 ** i)
return N

Idem pour le sens inverse o lon a besoin du logarithme en base 2, qui vrifie log2 (2) = 1 et
log2 (2 i ) = i.
Algorithme . binaire.py (2)

def entier_vers_binaire(N):
tab = []
n = floor(log(N,2)) # le nombre de chiffres est n+1
28 Algorithmes et mathmatiques

for i in range(0,n+1):
tab.append((N // 2 ** i) % 2)
return tab

Maintenant appliquons ceci notre problme de lampes. Si une lampe est allume on lui attribut
1, et si elle est teinte 0. Pour une rampe de 8 lampes on code [a 0 , a 1 , . . . , a 7 ] ltat des lampes.
Par exemple la configuration suivante :

20 21 22 23 24 25 26 27

est cod [1, 0, 0, 1, 0, 1, 1, 1] ce qui correspond au nombre binaire 11101001b = 233.

Travaux pratiques 7

1. Faire une boucle qui affiche toutes les combinaisons possibles (pour une taille de rampe
donne).
2. Quelle opration mathmatique lmentaire transforme un nombre binaire a n . . . a 1 a 0 b
en a n . . . a 1 a 0 0 b (dcalage vers la gauche et ajout dun 0 la fin) ?
3. Soit N 0 = a n a n1 . . . a 1 a 0 0 b (une criture avec n + 2 chiffres). Quelle est lcriture binaire
de N 0 (mod 2n+1 ) ? (Cest une criture avec n + 1 chiffres.)
4. En dduire un algorithme qui pour une configuration donne de la rampe, fait permuter
cycliquement (vers la droite) cette configuration. Par exemple [1, 0, 1, 0, 1, 1, 1, 0] devient
[0, 1, 0, 1, 0, 1, 1, 1].
5. Quelle opration mathmatique lmentaire permet de passer dune configuration son
oppose (une lampe teinte sallume, et rciproquement). Par exemple si la configuration
tait [1, 0, 1, 0, 1, 1, 1, 0] alors on veut [0, 1, 0, 1, 0, 0, 0, 1]. (Indication : sur cet exemple
calculer les deux nombres correspondants et trouver la relation qui les lie.)

1. Il sagit dabord dafficher les configurations. Par exemple si lon a 4 lampes alors les configu-
rations sont [0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0],. . . , [1, 1, 1, 1]. Pour chaque lampe nous
avons deux choix (allum ou teint), il y a n + 1 lampes donc un total de 2n+1 configurations.
Si lon considre ces configurations comme des nombres crits en binaire alors lnumration
ci-dessus correspond compter 0, 1, 2, 3, . . . , 2n+1 1.
Do lalgorithme :
Algorithme . binaire.py (3)

def configurations(n):
for N in range(2**(n+1)):
print(entier_vers_binaire_bis(N,n))

O entier_vers_binaire_bis(N,n) est similaire entier_vers_binaire(N), mais en af-


fichant aussi les zros non significatifs, par exemple 7 en binaire scrit 111b , mais cod sur
8 chiffres on ajoute devant des 0 non significatifs : 00000111b .
2. En criture dcimale, multiplier par 10 revient dcaler le nombre initial et rajouter un
zro. Par exemple 10 19 = 190. Cest la mme chose en binaire ! Multiplier un nombre par 2
Algorithmes et mathmatiques 29

revient sur lcriture un dcalage vers la gauche et ajout dun zro sur le chiffre des units.
Exemple : 19 = 10011b et 2 19 = 38 donc 2 10011b = 100110b .
3. Partant de N = a n a n1 . . . a 1 a 0 b . Notons N 0 = 2N, son criture est N 0 = a n a n1 . . . a 1 a 0 0 b .
Alors N 0 (mod 2n+1 ) scrit exactement a n1 a n2 . . . a 1 a 0 0 b et on ajoute a n qui est le quotient
de N 0 par 2n+1 .
Preuve : N 0 = a n 2n+1 + a n1 2n + + a 0 2. Donc N 0 (mod 2n+1 ) = a n1 2n + + a 0 2. Donc
N 0 (mod 2n+1 ) + a n = a n1 2n + + a 0 2 + a n .
4. Ainsi lcriture en binaire de N 0 (mod 2n+1 ) + a n sobtient comme permutation circulaire de
celle de N. Do lalgorithme :
Algorithme . binaire.py (4)

def decalage(tab):
N = binaire_vers_entier(tab)
n = len(tab)-1 # le nombre de chiffres est n+1
NN = 2*N % 2**(n+1) + 2*N // 2**(n+1)
return entier_vers_binaire_bis(NN,n)

5. On remarque que si lon a deux configurations opposes alors leur somme vaut 2n+1 1 :
par exemple avec [1, 0, 0, 1, 0, 1, 1, 1] et [0, 1, 1, 0, 1, 0, 0, 0], les deux nombres associs sont N =
11101001b et N 0 = 00010110b (il sagit juste de les rcrire de droite gauche). La somme est
N + N 0 = 11101001b + 00010110b = 11111111b = 28 1. Laddition en criture binaire se fait de
la mme faon quen criture dcimale et ici il ny a pas de retenue. Si M est un nombre avec
n + 1 fois le chiffres 1 alors M + 1 = 2n+1 . Exemple si M = 11111b alors M + 1 = 100000b = 25 ;
ainsi M = 25 1. Donc loppos de N est N 0 = 2n+1 1 N (remarquez que dans Z/(2n+1 1)Z
alors N 0 N).
Cela conduit :
Algorithme . binaire.py (5)

def inversion(tab):
N = binaire_vers_entier(tab)
n = len(tab)-1 # le nombre de chiffres est n+1
NN = 2**(n+1)-1 - N
return entier_vers_binaire_bis(NN,n)

Mini-exercices

1. Pour un entier n fix, combien y-a-t-il doccurrences du chiffre 1 dans lcriture des
nombres de 1 n ?
2. crire une fonction qui calcule lcriture dcimale dun entier, sans recourir au log (une
boucle while est la bienvenue).
3. crire un algorithme qui permute cycliquement une configuration de rampe vers la
droite.
4. On dispose de n + 1 lampes, chaque lampe peut sclairer de trois couleurs : vert, orange,
30 Algorithmes et mathmatiques

rouge (dans cet ordre). Trouver toutes les combinaisons possibles. Comment passer
toutes les lampes la couleur suivante ?
5. Gnrer toutes les matrices 4 4 nayant que des 0 et des 1 comme coefficients. On
codera une matrice sous la forme de lignes [[1, 1, 0, 1], [0, 0, 1, 0], [1, 1, 1, 1], [0, 1, 0, 1]].
6. On part du point (0, 0) Z2 . A chaque pas on choisit au hasard un direction Nord, Sud,
Est, Ouest. Si on va au Nord alors on ajoute (0, 1) sa position (pour Sud on ajoute
(0, 1) ; pour Est (1, 0) ; pour Ouest (1, 0)). Pour un chemin dune longueur fixe de
n pas, coder tous les chemins possibles. Caractriser les chemins qui repassent par
lorigine. Calculer la probabilit p n de repasser par lorigine. Que se passe-t-il lorsque
n + ?
7. crire une fonction, qui pour un entier N, affiche son criture en chiffres romains :
M = 1000, D = 500, C = 100, X = 10, V = 5, I = 1. Il ne peut y avoir plus de trois
symboles identiques suivre.

3. Calculs de sinus, cosinus, tangente


Le but de cette section est le calcul des sinus, cosinus, et tangente dun angle par nous mme, avec
une prcision de 8 chiffres aprs la virgule.

3.1. Calcul de arctan x


Nous aurons besoin de calculer une fois pour toute arctan(10 i ), pour i = 0, . . . , 8, cest--dire que
lon cherche les angles i ] 2 , 2 [ tels que tan i = 10 i . Nous allons utiliser la formule :

+ x2k+1 x3 x5 x7
(1)k
X
arctan x = = x + +
k=0 2k + 1 3 5 7

Travaux pratiques 8

1. Calculer arctan 1.
2. Calculer i = arctan 10 i (avec 8 chiffres aprs la virgule) pour i = 1, . . . , 8.
3. Pour quelles valeurs de i, lapproximation arctan x ' x tait-elle suffisante ?

Algorithme . tangente.py (1)

def mon_arctan(x,n):
somme = 0
for k in range(0,n+1):
if (k%2 == 0): # si k est pair signe +
somme = somme + 1/(2*k+1) * (x ** (2*k+1))
else: # si k est impair signe -
somme = somme - 1/(2*k+1) * (x ** (2*k+1))
return somme

La srie qui permet de calculer arctan x est une somme infinie, mais si x est petit alors chacun
2 k+1
des termes (1)k 2xk+1 est trs trs petit ds que k devient grand. Par exemple si 0 x 10 1
Algorithmes et mathmatiques 31


2 k+1
alors x2k+1 1021k+1 et donc pour k 4 nous aurons (1)k 2xk+1 < 109 . Chacun des termes

suivants ne contribue pas aux 8 premiers chiffres aprs la virgule. Attention : il se pourrait
cependant que la somme de beaucoup de termes finissent par y contribuer, mais ce nest pas
le cas ici (cest un bon exercice de le prouver).
Dans la pratique on calcule la somme un certain ordre 2k + 1 jusqu ce que les 8 chiffres
aprs la virgules ne bougent plus. Et en fait on saperoit que lon a seulement besoin dutiliser
3 5 7
arctan x ' x x3 + x5 x7 .
Pour i 4, arctan x ' x donne dj 8 chiffres exacts aprs la virgule !
On remplit les valeurs des angles i obtenus dans une liste nomme theta.

3.2. Calcul de tan x


Le principe est le suivant : on connat un certain nombre dangles avec leur tangente : les angles
i (calculs ci-dessus) avec par dfinition tan i = 10 i . Fixons un angle a [0, 2 ]. Partant du point
M0 = (1, 0), nous allons construire des points M1 , M2 , . . . , M n jusqu ce que M n soit ( peu prs)
y
sur la demi-droite correspondant langle a. Si M n a pour coordonnes (xn , yn ) alors tan a = xnn .
Langle pour passer dun point M k M k+1 est lun des angles i .

Mn
M n1

M2

M1
a
i n

i2

i1
O M0

Rappelons que si lon a un point M(x, y) alors la rotation centre lorigine et dangle envoie
M(x, y) sur le point N(x0 , y0 ) avec
! ! ! (
x0 cos sin x x0 = x cos y sin
0 = cest--dire
y sin cos y y0 = x sin + y cos

Pour un point M, on note M 0 le point de la demi-droite [ON) tel que les droites (OM) et (MM 0 )
soient perpendiculaires en M.

M0
Mn
N
y
tan a ' xn
n

yn

a

O M
O xn
32 Algorithmes et mathmatiques

Travaux pratiques 9

1.(a) Calculer la longueur OM 0 .


(b) En dduire les coordonnes de M 0 .
(c) Exprimez-les uniquement en fonction de x, y et tan .
2. Faire une boucle qui dcompose langle a en somme dangles i ( une prcision de 108 ;
avec un minimum dangles, les angles pouvant se rpter).
3. Partant de M0 = (1, 0) calculer les coordonnes des diffrents M k , jusquau point
y
M n (xn , yn ) correspondant lapproximation de langle a. Renvoyer la valeur xnn comme
approximation de tan a.

Voici les prliminaires mathmatiques :


OM OM
Dans le triangle rectangle OMM 0 on a cos = OM 0
0 donc OM = cos .

Dautre part comme la rotation dangle conserve les distances alors OM = ON. Si les
coordonnes de M 0 sont (x00 , y00 ) alors x00 = cos1 x0 et y00 = cos1 y0 .
Ainsi (
x00 = cos1 x0 = cos1 x cos y sin = x y tan

y00 = cos1 y0 = cos1 x sin + y cos = x tan + y


Autrement dit : ! ! !
x00 1 tan x
=
y00 tan 1 y
Voici une boucle simple pour dcomposer langle : on commence par retirer le plus grand angle
0 autant de fois que lon peut, lorsque ce nest plus possible on passe langle 1 ,...
Algorithme . tangente.py (2)

i = 0
while (a > precision): # boucle tant que la precision pas atteinte
while (a < theta[i]): # choix du bon angle theta_i soustraire
i = i+1
a = a - theta[i] # on retire l'angle theta_i et on recommence

Ici precision est la prcision souhait (pour nous 109 ). Et le tableau theta contient les valeurs
des angles i . !
x0
Posons x0 = 1, y0 = 0 et M0 = . Alors on dfinit par rcurrence M k+1 = P( i ) M k o P( ) =
y0
!
1 tan
. Les i sont ceux apparaissant dans la dcomposition de langle en somme de
tan 1
i , donc on connat tan i = 10 i . Ainsi si lon passe dun point M k M k+1 par un angle i on a
simplement : (
xk+1 = xk yk 10 i
yk+1 = xk 10 i + yk
y
La valeur xnn est la tangente de la somme des angles i , donc une approximation de tan a.
Le code est maintenant le suivant.
Algorithmes et mathmatiques 33

Algorithme . tangente.py (3)

def ma_tan(a):
precision = 10**(-9)
i = 0 ; x = 1 ; y = 0
while (a > precision):
while (a < theta[i]):
i = i+1
newa = a - theta[i] # on retire l'angle theta_i
newx = x - (10**(-i))*y # on calcule le nouveau point
newy = (10**(-i))*x + y
x = newx
y = newy
a = newa
return y/x # on renvoie la tangente

Commentaires pour conclure :


En thorie il ne faut pas confondre prcision et nombre de chiffres exacts aprs la virgule.
Par exemple 0.999 est une valeur approche de 1 103 prs, mais aucun chiffre aprs la
virgule nest exact. Dans la pratique cest la prcision qui importe plus que le nombre de
chiffres exacts.
Notez quel point les oprations du calcul de tan x sont simples : il ny a quasiment que des
additions effectuer. Par exemple lopration xk+1 = xk yk 10 i peut tre fait la main :
multiplier par 10 i cest juste dcaler la virgule droite de i chiffres, puis on additionne.
Cest cet algorithme C O R D I C qui est implment dans les calculatrices, car il ncessite
trs peu de ressources. Bien sr, si les nombres sont cods en binaire on remplace les 10 i
par 2 i pour navoir qu faire des dcalages droite.

3.3. Calcul de sin x et cos x

Travaux pratiques 10

Pour 0 x 2 , calculer sin x et cos x en fonction de tan x. En dduire comment calculer les
sinus et cosinus de x.

1
Solution : On sait cos2 + sin2 x = 1, donc en divisant par cos2 x on trouve 1 + tan2 x = cos2 x
. On en
dduit que pour 0 x 2 cos x = p 1 2 . On trouve de mme sin x = p tan x 2 .
1+tan x 1+tan x
Donc une fois que lon a calcul tan x on en dduit sin x et cos x par un calcul de racine carre.
Attention cest valide car x est compris entre 0 et 2 . Pour un x quelconque il faut se ramener par
les formules trigonomtriques lintervalle [0, 2 ].

Mini-exercices

1. On dispose de billets de 1, 5, 20 et 100 euros. Trouvez la faon de payer une somme de


n euros avec le minimum de billets.
2. Faire un programme qui pour nimporte quel x R, calcule sin x, cos x, tan x.
34 Algorithmes et mathmatiques

3. Pour t = tan 2x montrer que tan x = 12t


t2
. En dduire une fonction qui calcule tan x. (Uti-
liser que pour x assez petit tan x ' x).
4. Modifier lalgorithme de la tangente pour quil calcule aussi directement le sinus et le
cosinus.

4. Les rels
Dans cette partie nous allons voir diffrentes faons de calculer la constante dEuler. Cest un
nombre assez mystrieux car personne ne sait si est un nombre rationnel ou irrationnel. Notre
objectif est davoir le plus de dcimales possibles aprs la virgule en un minimum dtapes. Nous
verrons ensuite comment les ordinateurs stockent les rels et les problmes que cela engendre.

4.1. Constante dEuler


Considrons la suite harmonique :
1 1 1 1
Hn = + + ++
1 2 3 n
et dfinissons
u n = H n ln n.

Cette suite (u n ) admet une limite lorsque n + : cest la constante dEuler.

Travaux pratiques 11

1. Calculer les premires dcimales de . Sachant que u n 21n , combien de dcimales


exactes peut-on esprer avoir obtenues ?
2. On considre vn = H n ln n + 12 + 241n . Sachant vn 481n3 , calculer davantage de

dcimales.

Algorithme . euler.py (1)

def euler1(n):
somme = 0
for i in range(n,0,-1):
somme = somme + 1/i
return somme - log(n)

Algorithme . euler.py (2)

def euler2(n):
somme = 0
for i in range(n,0,-1):
somme = somme + 1/i
return somme - log(n+1/2+1/(24*n))

Vous remarquez que la somme est calcule partir de la fin. Nous expliquerons pourquoi en fin de
section.
Algorithmes et mathmatiques 35

4.2. 1000 dcimales de la constante dEuler


Il y a deux techniques pour obtenir plus de dcimales : (i) pousser plus loin les itrations, mais pour
avoir 1000 dcimales de les mthodes prcdentes sont insuffisantes ; (ii) trouver une mthode
encore plus efficace. Cest ce que nous allons voir avec la mthode de Bessel modifie.
Soit
An EX( n) n k 2 EX( n) n k 2
wn = ln n avec A n = H k et B n =
Bn k=1 k! k=0 k!
o = 3.59112147... est la solution de (ln 1) = 1 et E(x) dsigne la partie entire. Alors

C
|wn |
e4n

o C est une constante (non connue).


Travaux pratiques 12

1. Programmer cette mthode.


2. Combien ditrations faut-il pour obtenir 1000 dcimales ?
3. Utiliser le module decimal pour les calculer.

Voici le code :
Algorithme . euler.py (3)

def euler3(n):
alpha = 3.59112147
N = floor(alpha*n) # Borne des sommes
A = 0 ; B = 0
H = 0
for k in range(1,N+1):
c = ( (n**k)/factorial(k) ) ** 2 # Coefficient commun
H = H + 1/k # Somme harmonique
A = A + c*H
B = B + c
return A/B - log(n)

Pour obtenir N dcimales il faut rsoudre linquation eC4n 101N . On passe au log pour obtenir
n N ln(10)4 +ln(C ) . On ne connat pas C mais ce nest pas si important. Moralement pour une itration
de plus on obtient ( peu prs) une dcimale de plus (cest--dire un facteur 10 sur la prcision !).
Pour n 800 on obtient 1000 dcimales exactes de la constante dEuler :

0,
57721566490153286060651209008240243104215933593992
35988057672348848677267776646709369470632917467495
14631447249807082480960504014486542836224173997644
92353625350033374293733773767394279259525824709491
60087352039481656708532331517766115286211995015079
84793745085705740029921354786146694029604325421519
05877553526733139925401296742051375413954911168510
28079842348775872050384310939973613725530608893312
36 Algorithmes et mathmatiques

67600172479537836759271351577226102734929139407984
30103417771778088154957066107501016191663340152278
93586796549725203621287922655595366962817638879272
68013243101047650596370394739495763890657296792960
10090151251959509222435014093498712282479497471956
46976318506676129063811051824197444867836380861749
45516989279230187739107294578155431600500218284409
60537724342032854783670151773943987003023703395183
28690001558193988042707411542227819716523011073565
83396734871765049194181230004065469314299929777956
93031005030863034185698032310836916400258929708909
85486825777364288253954925873629596133298574739302

Pour obtenir plus de dcimales que la prcision standard de Python, il faut utiliser le module
decimal qui permet de travailler avec une prcision arbitraire fixe.

4.3. Un peu de ralit


En mathmatique un rel est un lment de R et son criture dcimale est souvent infinie aprs la
virgule : par exemple = 3, 14159265 . . . Mais bien sr un ordinateur ne peut pas coder une infinit
dinformations. Ce qui se rapproche dun rel est un nombre flottant dont lcriture est :

1, 234567890123456789 e 123
| {z } | {z }
mantisse exposant

pour 1, 234 . . . 10123 . La mantisse est un nombre dcimal (positif ou ngatif) appartenant
[1, 10[ et lexposant est un entier (lui aussi positif ou ngatif). En Python la mantisse une
prcision de 16 chiffres aprs la virgule.
Cette ralit informatique fait que des erreurs de calculs peuvent apparatre mme avec des
oprations simples. Pour voir un exemple de problme faites ceci :

Travaux pratiques 13

Poser x = 1016 , y = x + 1, z = y 1. Que vaut z pour Python ?

Comme Python est trs prcis nous allons faire une routine qui permet de limiter drastiquement
le nombre de chiffres et mettre en vidence les erreurs de calculs.
Travaux pratiques 14

1. Calculer lexposant dun nombre rel. Calculer la mantisse.


2. Faire une fonction qui ne conserve que 6 chiffres dun nombre (6 chiffres en tout : avant
+ aprs la virgule, exemple 123, 456789 devient 123, 456).

Voici le code :
Algorithme . reels.py (1)

precision = 6 # Nombre de dcimales conserves


def tronquer(x):
n = floor(log(x,10)) # Exposant
m = floor( x * 10 ** (precision-1 - n)) # Mantisse
Algorithmes et mathmatiques 37

return m * 10 ** (-precision+1+n) # Nombre tronqu

Comme on la dj vu auparavant lexposant se rcupre laide du logarithme en base 10. Et


pour tronquer un nombre avec 6 chiffres, on commence par le dcaler vers la gauche pour obtenir
6 chiffres avant la virgule (123, 456789 devient 123456, 789) il ne reste plus qu prendre la partie
entire (123456) et le redcaler vers la droite (pour obtenir 123, 456).

Absorption

Travaux pratiques 15

1. Calculer tronquer(1234.56 + 0.007).


2. Expliquer.

Chacun des nombres 1234, 56 et 0, 007 est bien un nombre scrivant avec moins de 6 dcimales
mais leur somme 1234, 567 a besoin dune dcimale de plus, lordinateur ne retient pas la 7-me
dcimale et ainsi le rsultat obtenu est 1234, 56. Le 0, 007 napparat pas dans le rsultat : il a t
victime dune absorption.

limination

Travaux pratiques 16

1. Soient x = 1234, 8777, y = 1212, 2222. Calculer x y la main. Comment se calcule la


diffrence x y avec notre prcision de 6 chiffres ?
2. Expliquer la diffrence.

Comme x y = 22, 6555 qui na que 6 chiffres alors on peut penser que lordinateur va obtenir
ce rsultat. Il nen est rien, lordinateur ne stocke pas x mais tronquer(x), idem pour y. Donc
lordinateur effectue en fait le calcul suivant : tronquer(tronquer(x)-tronquer(y)), il calcule
donc 1234, 87 1212, 22 = 22, 65. Quel est le problme ? Cest quensuite lutilisateur considre
tort que le rsultat est calcul avec une prcision de 6 chiffres. Donc on peut penser que le rsultat
est 22, 6500 mais les 2 derniers chiffres sont une pure invention.
Cest un phnomne dlimination. Lorsque lon calcule la diffrence de deux nombres proches,
le rsultat a en fait une prcision moindre. Cela peut tre encore plus dramatique avec lexemple
= 1234, 569 1234, 55 la diffrence est 0, 01900 alors que lordinateur retournera 0, 01000. Il y a
presque un facteur deux, et on aura des problmes si lon a besoin de diviser par .

Signalons au passage une erreur dinterprtation frquente : ne pas confondre la prcision daf-
fichage (exemple : on calcule avec 10 chiffres aprs la virgule) avec lexactitude du rsultat
(combien de dcimales sont vraiment exactes ?).

Conversion binaire dcimale

Enfin le problme le plus troublant est que les nombres flottants sont stocks en criture binaire
et pas en criture dcimale.
38 Algorithmes et mathmatiques

Travaux pratiques 17

Effectuer les commandes suivantes et constater !


1. sum = 0 puis for i in range(10): sum = sum + 0.1. Que vaut sum ?
2. 0.1 + 0.1 == 0.2 et 0.1 + 0.1 + 0.1 == 0.3
3. x = 0.2 ; print("0.2 en Python = %.25f" %x)

La raison est simple mais nanmoins troublante. Lordinateur ne stocke pas 0, 1, ni 0, 2 en mmoire
mais le nombre en criture binaire qui sen rapproche le plus.
En criture dcimale, il est impossible de coder 1/3 = 0, 3333 . . . avec un nombre fini de chiffres
aprs la virgule. Il en va de mme ici : lordinateur ne peut pas stocker exactement 0, 2. Il stocke un
nombre en criture binaire qui sen rapproche le plus ; lorsquon lui demande dafficher le nombre
stock, il retourne lcriture dcimale qui se rapproche le plus du nombre stock, mais ce nest plus
0, 2, mais un nombre trs trs proche :
0.2000000000000000111022302. . .

4.4. Somme des inverses des carrs


Voyons une situation concrte o ces problmes apparaissent.

Travaux pratiques 18

1
1. Faire une fonction qui calcule la somme S n = 12
+ 212 + 312 + + n12 .
2. Faire une fonction qui calcule cette somme mais en utilisant seulement une criture
dcimale 6 chiffres ( laide de la fonction tronquer() vue au-dessus).
3. Reprendre cette dernire fonction, mais en commenant la somme par les plus petits
termes.
4. Comparez le deux dernires mthodes, justifier et conclure.

La premire fonction ne pose aucun problme et utilise toute la prcision de Python.


Dans la seconde on doit, chaque calcul, limiter notre prcision 6 chiffres (ici 1 avant la virgule
et 5 aprs).
Algorithme . reels.py (2)

def somme_inverse_carres_tronq(n):
somme = 0
for i in range(1,n+1):
somme = tronquer(somme + tronquer(1/(i*i)))
return somme

Il est prfrable de commencer la somme par la fin :


Algorithmes et mathmatiques 39

Algorithme . reels.py (3)

def somme_inverse_carres_tronq_inv(n):
somme = 0
for i in range(n,0,-1):
somme = tronquer(somme + tronquer(1/(i*i)))
return somme

Par exemple pour n = 100 000 lalgorithme somme_inverse_carres_tronq() (avec criture tron-
que, somm dans lordre) retourne 1, 64038 alors que lalgorithme somme_inverse_carres_tronq_inv()
(avec la somme dans lordre inverse) on obtient 1, 64490. Avec une prcision maximale et n trs
2
grand on doit obtenir 1, 64493 . . . (en fait cest 6 ).
Notez que faire grandir n pour lalgorithme somme_inverse_carres_tronq() ny changera rien, il
bloque 2 dcimales exactes aprs la virgule : 1, 64038 ! La raison est un phnomne dabsorption :
on rajoute des termes trs petits devant une somme qui vaut plus de 1. Alors que si lon part des
termes petits, on ajoute des termes petits une somme petite, on garde donc un maximum de
dcimales valides avant de terminer par les plus hautes valeurs.

Mini-exercices

1. crire une fonction qui approxime la constante qui vrifie (ln 1) = 1. Pour cela
poser f (x) = x(ln x 1) 1 et appliquer la mthode de Newton : fixer u 0 (par exemple ici
f (u )
u 0 = 4) et u n+1 = u n f 0 (unn ) .
2. Pour chacune des trois mthodes, calculer le nombre approximatif ditrations nces-
saires pour obtenir 100 dcimales de la constante dEuler.
k)!]3 An Cn
3. Notons C n = 41n 2kn=0 (k!)[(2
4 (16 n)2 k . La formule de Brent-McMillan affirme = B B2
P
n n
ln n + O( e18n ) o cette fois les sommations pour A n et B n vont jusqu E( n) avec =
4, 970625759 . . . la solution de (ln 1) = 3. La notation O( e18n ) indique que lerreur
est eC8n pour une certaine constante C. Mettre en uvre cette formule. En 1999 cette
formule a permis de calculer 100 millions de dcimales. Combien a-t-il fallu ditrations ?
1
4. Faire une fonction qui renvoie le terme u n de la suite dfinie par u 0 = 3 et u n+1 = 4u n 1.
Que vaut u 100 ? Faire ltude mathmatique et commenter.

5. Arithmtique Algorithmes rcursifs


Nous allons prsenter quelques algorithmes lmentaires en lien avec larithmtique. Nous en
profitons pour prsenter une faon compltement diffrente dcrire des algorithmes : les fonctions
rcursives.

5.1. Algorithmes rcursifs


Voici un algorithme trs classique :
40 Algorithmes et mathmatiques

Algorithme . recursif.py (1)

def factorielle_classique(n):
produit = 1
for i in range(1,n+1):
produit = i * produit
return produit

Voyons comment fonctionne cette boucle. On initialise la variable produit 1, on fait varier un
indice i de 1 n. chaque tape on multiplie produit par i et on affecte le rsultat dans produit.
Par exemple si n = 5 alors la variable produit sinitialise 1, puis lorsque i varie la variable
produit devient 1 1 = 1, 2 1 = 2, 3 2 = 6, 4 6 = 24, 5 24 = 120. Vous avez bien sr reconnus le
calcul de 5!

tudions un autre algorithme.


Algorithme . recursif.py (2)

def factorielle(n):
if (n==1):
return 1
else:
return n * factorielle(n-1)

Que fait cet algorithme ? Voyons cela pour n = 5. Pour n = 5 la condition du si (if) nest pas vrifie
donc on passe directement au sinon (else). Donc factorielle(5) renvoie comme rsultat :
5 * factorielle(4). On a plus ou moins progress : le calcul nest pas fini car on ne connat pas
encore factorielle(4) mais on sest ramen un calcul au rang prcdent, et on itre :
factorielle(5) = 5 * factorielle(4) = 5 * 4 * factorielle(3) = 5 * 4 * 3 * factorielle(2)
et enfin factorielle(5) = 5 * 4 * 3 * 2 * factorielle(1). Pour factorielle(1) la condi-
tion du if (n==1) est vrifie et alors factorielle(1)=1. Le bilan est donc que factorielle(5) = 5 * 4 * 3 *
cest bien 5!
Une fonction qui lorsque elle sexcute sappelle elle-mme est une fonction rcursive. Il y a une
analogie trs forte avec la rcurrence. Par exemple on peut dfinir la suite des factorielles ainsi :

u1 = 1 et u n = n u n1 si n 2.

Nous avons ici u n = n! pour tout n 1.


Comme pour la rcurrence une fonction rcursive comporte une tape dinitialisation (ici
if (n==1): return 1 correspondant u1 = 1) et une tape dhrdit (ici return n * factorielle(n-1)
correspondant u n = n u n1 ).

On peut mme faire deux appels la fonction :


Algorithmes et mathmatiques 41

Algorithme . recursif.py (3)

def fibonacci(n):
if (n==0) or (n==1):
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)

Faites-le calcul de fibonacci(5). Voici la version mathmatique des nombres de Fibonacci.

F0 = 1, F1 = 1 et F n = F n1 + F n2 si n 2.

On obtient un nombre en additionnant les deux nombres des rangs prcdents :

1 1 2 3 5 8 13 21 34 ...

5.2. Lalgorithme dEuclide


Lalgorithme dEuclide est bas sur le principe suivant

si b|a alors pgcd(a, b) = b sinon pgcd(a, b) = pgcd(b, a mod b)

Travaux pratiques 19

1. Crer une fonction rcursive pgcd(a,b) qui calcule le pgcd.


2. On note p n la probabilit que deux entiers a, b tirs au hasard dans 1, 2, . . . , n soient
premiers entre eux. Faire une fonction qui approxime p n . Lorsque n devient grand,
comparer p n et 62 .

Voici le code pour lalgorithme dEuclide rcursif. Notez quel point le code est succinct et pur !
Algorithme . arith.py (1)

def pgcd(a,b):
if a%b == 0:
return b
else:
return pgcd(b, a%b)

Deux entiers a, b sont premiers entre eux ssi pgcd(a, b) = 1, donc voici lalgorithme :
Algorithme . arith.py (2)

def nb_premiers_entre_eux(n,nbtirages):
i = 1
nbpremiers = 0
while i <= nbtirages:
i = i+1
a = random.randint(1,n)
b = random.randint(1,n)
42 Algorithmes et mathmatiques

if pgcd(a,b)==1:
nbpremiers = nbpremiers + 1
return nbpremiers

On tire au hasard deux entiers a et b entre 1 et n et on effectue cette opration nbtirages fois.
Par exemple entre 1 et 1000 si lon effectue 10 000 tirage on trouve une probabilit mesure par
nbpremiers/nbtirages de 0, 60 . . . (les dcimales daprs dpendent des tirages).
Lorsque n tend vers + alors p n 62 = 0.607927 . . . et on dit souvent que : la probabilit que
deux entiers tirs au hasard soient premiers entre eux est 62 .

Commentaires sur les algorithmes rcursifs :


Les algorithmes rcursifs ont souvent un code trs court, et proche de la formulation math-
matique lorsque lon a une relation de rcurrence.
Selon le langage ou la fonction programme il peut y avoir des problmes de mmoire (si par
exemple pour calculer 5! lordinateur a besoin de stocker 4! pour lequel il a besoin de stocker
3!...).
Il est important de bien rflchir la condition initiale (qui est en fait celle qui termine
lalgorithme) et la rcurrence sous peine davoir une fonction qui boucle indfiniment !
Il nexiste pas des algorithmes rcursifs pour tout (voir par exemple les nombres premiers)
mais ils apparaissent beaucoup dans les algorithmes de tris. Autre exemple : la dichotomie
se programme trs bien par une fonction rcursive.

5.3. Nombres premiers


Les nombres premiers offrent peu de place aux algorithmes rcursifs car il ny a pas de lien de
rcurrence entre les nombres premiers.

Travaux pratiques 20

1. crire une fonction qui dtecte si un nombre n est premier ou pas en testant sil existe
p
des entiers k qui divise n. (On se limitera aux entiers 2 k n, pourquoi ?).
2. Faire un algorithme pour le crible dEratosthne : crire tous les entiers de 2 n,
conserver 2 (qui est premier) et barrer tous les multiples suivants de 2. Le premier
nombre non barr (cest 3) est premier. Barrer tous les multiples suivants de 3,...
3. Dessiner la spirale dUlam : on place les nombres entiers en spirale, et on colorie en
rouge les nombres premiers.

..
5 4 3 .
6 1 2 11
7 8 9 10

p p
1. Si n nest pas premier alors n = a b avec a, b 2. Il est clair que soit a n ou bien b n
p
(sinon n = a b > n). Donc il suffit de tester les diviseurs 2 k n. Do lalgorithme :
Algorithmes et mathmatiques 43

Algorithme . arith.py (3)

def est_premier(n):
if (n<=1): return False
k = 2
while k*k <= n:
if n%k==0:
return False
else:
k = k +1
return True

Notez quil vaut mieux crire la condition k*k <= n plutt que k <= sqrt(n) : il est beau-
coup plus rapide de calculer le carr dun entier plutt quextraire une racine carre.
Nous avons utilis un nouveau type de variable : un boolen est une variable qui ne
peut prendre que deux tats Vrai ou Faux (ici True or False, souvent cod 1 et 0). Ainsi
est_premier(13) renvoie True, alors que est_premier(14) renvoie False.
2. Pour le crible dEratosthne le plus dur est de trouver le bon codage de linformation.
Algorithme . arith.py (4)

def eratosthene(n):
liste_entiers = list(range(n+1)) # tous les entiers
liste_entiers[1] = 0 # 1 n'est pas premier
k = 2 # on commence par les multiples de 2
while k*k <= n:
if liste_entiers[k] != 0: # si le nombre k n'est pas barr
i = k # les i sont les multiples de k
while i <= n-k:
i = i+k
liste_entiers[i] = 0 # multiples de k : pas premiers
k = k +1
liste_premiers = [k for k in liste_entiers if k !=0] # efface les 0
return liste_premiers

Ici on commence par faire un tableau contenant les entiers [0,1,2,3,4,5,6,7,8,9,10,11,12,13,...].


Pour signifier quun nombre nest pas premier ou remplace lentier par 0. Comme 1
nest pas un nombre premier : on le remplace par 0. Puis on fait une boucle, on part
de 2 et on remplace tous les autres multiples de 2 par 0 : la liste est maintenant :
[0,0,2,3,0,5,0,7,0,9,0,11,0,13,...]. Le premiers nombre aprs 2 est 3 cest donc
un nombre premier. (car sil na aucun diviseur autre que 1 et lui-mme car sinon il aurait t
ray). On garde 3 et remplace tous les autres multiples de 3 par 0. La liste est maintenant :
[0,0,2,3,0,5,0,7,0,0,0,11,0,13,...]. On itre ainsi, la fin on efface les zros pour
obtenir : [2,3,5,7,11,13,...].
3. Pour la spirale dUlam la seule difficult est de placer les entiers sur une spirale, voici le
rsultat.
44 Algorithmes et mathmatiques

gauche le dbut de la spirale (de n = 1 37) en rouge les nombres premiers (en noir les
nombres non premiers) ; droite le motif obtenu jusqu de grandes valeurs (en blanc les
nombres non premiers).

Mini-exercices

1. crire une version itrative et une version rcursive pour les fonctions suivantes : (a)
la somme des carrs des entiers de 1 n ; (b) 2n (sans utiliser dexposant) ; (c) la partie
entire dun rel x 0 ; (d) le quotient de la division euclidienne de a par b (avec a N,
b N ) ; (e) le reste de cette division euclidienne (sans utiliser les commandes % ni //).
2. crire une version itrative de la suite de Fibonacci.
3. crire une version itrative de lalgorithme dEuclide. Faire une version qui calcule les
coefficients de Bzout.
4. crire une fonction itrative, puis rcursive, qui pour un entier n renvoie la liste de ses
diviseurs. Dessiner une spirale dUlam, dont lintensit de la couleur dpend du nombre
de diviseurs.
5. Une suite de Syracuse est dfinie ainsi : partant dun entier sil est pair on le divise par
deux, sil est impair on le multiplie par 3 et on ajoute 1. On itre ce processus. Quelle
conjecture peut-on faire sur cette suite ?
Algorithmes et mathmatiques 45

1
6. Dessiner le triangle de Pascal 1 1 Ensuite effacer tous les coefficients pairs (ou
1 2 1

mieux : remplacer les coefficients pairs par un carr blanc et les coefficients impairs par
un carr rouge). Quelle figure reconnaissez-vous ?

6. Polynmes Complexit dun algorithme


Nous allons tudier la complexit des algorithmes travers lexemple des polynmes.

6.1. Quest-ce quun algorithme ?


Quest ce quun algorithme ? Un algorithme est une succession dinstructions qui renvoie un r-
sultat. Pour tre vraiment un algorithme on doit justifier que le rsultat retourn est exact (le
programme fait bien ce que lon souhaite) et ceci en un nombre fini dtapes (cela renvoie le
rsultat en temps fini).
Maintenant certains algorithmes peuvent tre plus rapides que dautres. Cest souvent le temps
de calcul qui est le principal critre, mais cela dpend du langage et de la machine utilise. Il
existe une manire plus mathmatique de faire : la complexit dun algorithme cest le nombre
doprations lmentaires effectuer.
Ces oprations peuvent tre le nombre doprations au niveau du processeur, mais pour nous ce
sera le nombre dadditions +, le nombre de multiplications effectuer. Pour certains algorithmes
la vitesse dexcution nest pas le seul paramtre mais aussi la taille de la mmoire occupe.

6.2. Polynmes

Travaux pratiques 21

On code un polynme a 0 + a 1 X + + a n X n sous la forme dune liste [a 0 , a 1 , . . . , a n ].


1. crire une fonction correspondant la somme de deux polynmes. Calculer la complexit
de cet algorithme (en terme du nombre dadditions sur les coefficients, en fonctions du
degr des polynmes).
2. crire une fonction correspondant au produit de deux polynmes. Calculer la complexit
de cet algorithme (en terme du nombre dadditions et de multiplications sur les coeffi-
cients).
3. crire une fonction correspondant au quotient et au reste de la division euclidienne de
A par B o B est un polynme unitaire (son coefficient de plus haut degr est 1). Majorer
la complexit de cet algorithme (en terme du nombre dadditions et de multiplications
sur les coefficients).

1. La seule difficult est de grer les indices, en particulier on ne peut appeler un lment
dune liste en dehors des indices o elle est dfinie. Une bonne ide consiste commencer
par dfinir une fonction degre(poly), qui renvoie le degr du polynme (attention au 0 non
significatifs).
Voici le code dans le cas simple o deg A = deg B :
46 Algorithmes et mathmatiques

Algorithme . polynome.py (1)

def somme(A,B): # si deg(A)=deg(B)


C = []
for i in range(0,degre(A)+1):
s = A[i]+B[i]
C.append(s)

Calculons sa complexit, on suppose deg A n et deg B n : il faut faire laddition des


coefficients a i + b i , pour i variant de 0 n : donc la complexit est de n + 1 additions (dans Z
ou R).

2. Pour le produit il faut se rappeler que si A(X ) = m


P i Pn j
i =0 a i X , B(X ) = j =0 b j X et C = A B =
P m+ n
c X k alors le k-me coefficient de C est c k = i+ j=k a i b j . Dans la pratique on fait
P
k=0 k
attention de ne pas accder des coefficients qui nont pas t dfinis.
Algorithme . polynome.py (2)

def produit(A,B):
C = []
for k in range(degre(A)+degre(B)+1):
s = 0
for i in range(k+1):
if (i <= degre(A)) and (k-i <= degre(B)):
s = s + A[i]*B[k-i]
C.append(s)
return C

Pour la complexit on commence par compter le nombre de multiplications (dans Z ou R).


Notons m = deg A et n = deg B. Alors il faut multiplier les m + 1 coefficients de A par les n + 1
coefficients de B : il y a donc (m + 1)(n + 1) multiplications.

Comptons maintenant les additions : les coefficients de A B sont : c 0 = a 0 b 0 , c 1 = a 0 b 1 + a 1 b 0 ,


c 2 = a 2 b 0 + a 1 b 1 + a 2 b 0 ,...

Nous utilisons lastuce suivante : nous savons que le produit A B est de degr m + n donc a
(au plus) m + n + 1 coefficients. Partant de (m + 1)(n + 1) produits, chaque addition regroupe
deux termes, et nous devons arriver m + n + 1 coefficients. Il y a donc (m + 1)(n + 1) (m +
n + 1) = mn additions.

3. Pour la division euclidienne, le principe est de poser une division de polynme. Par exemple
pour A = 2X 4 X 3 2X 2 + 3X 1 et B = X 2 X + 1.
Algorithmes et mathmatiques 47

2X 4 X 3 2X 2 + 3X 1 X2 X +1
2X 4 2X 3 + 2X 2

X 3 4X 2 + 3X 1 2X 2 + X 3
X3 X2 + X

3X 2 + 2X 1
3X 2 + 3X 3

X + 2

Alors on cherche quel monme P1 fait diminuer le degr de A P1 B, cest 2X 2 (le coefficient 2
est le coefficient dominant de A). On pose ensuite R 1 = A P1 B = X 3 4X 2 + 3X 1, Q 1 = 2X 2 ,
on recommence avec R 1 divis par B, R 2 = R 1 P2 B avec P2 = X , Q 2 = Q 1 + P2 ,... On arrte
lorsque deg R i < deg B.
Algorithme . polynome.py (3)

def division(A,B):
Q = [0] # Quotient
R = A # Reste
while (degre(R) >= degre(B)):
P = monome(R[degre(R)],degre(R)-degre(B))
R = somme(R,produit(-P,B))
Q = somme(Q,P)
return Q,R

Cest une version un peu simplifie du code : o P = r n X deg R deg B et o il faut remplacer P
par [a 0 , a 1 , ...]. Si A, B Z[X ] alors le fait que B soit unitaire implique que Q et R sont
aussi coefficients entiers.

Quelle est la complexit de la division euclidienne ? chaque tape on effectue une multi-
plication de polynmes (P i B) puis une addition de polynme (R i P i B) ; chaque tape le
degr de R i diminue (au moins) de 1. Donc il y a au plus deg A deg B + 1 tapes.
Mais dans la pratique cest plus simple que cela. La multiplication P i B est trs simple :
car P i est un monme P i = p i X i . Multiplier par X i cest juste un dcalage dindice (comme
multiplier par 10 i en criture dcimale) cest donc une opration ngligeable. Il reste donc
multiplier les coefficients de B par p i : il y a donc deg B + 1 multiplications de coefficients.
La soustraction aussi est assez simple on retire R i un multiple de B, donc on a au plus
deg B + 1 coefficients soustraire : il y a chaque tape deg B + 1 additions de coefficients.
Bilan : si m = deg A et n = deg B alors la division euclidienne seffectue en au plus (m n +
1)(m + 1) multiplications et le mme nombre dadditions (dans Z ou R).

6.3. Algorithme de Karatsuba


Pour diminuer la complexit de la multiplication de polynmes, on va utiliser un paradigme trs
classique de programmation : diviser pour rgner . Pour cela, on va dcomposer les polynmes
48 Algorithmes et mathmatiques

multiplier P et Q de degrs strictement infrieurs 2n en

P = P1 + P2 X n et Q = Q1 + Q2 X n

avec les degrs de P1 , P2 , Q 1 et Q 2 strictement infrieurs n.

Travaux pratiques 22

1. crire une formule qui rduit la multiplication des polynmes P et Q de degrs stricte-
ment infrieurs 2n en multiplications de polynmes de degrs strictement infrieurs
n.
2. Programmer un algorithme rcursif de multiplication qui utilise la formule prcdente.
Quelle est sa complexit ?
3. On peut raffiner cette mthode avec la remarque suivante de Karatsuba : le terme
intermdiaire de P Q scrit

P1 Q 2 + P2 Q 1 = (P1 + P2 ) (Q 1 + Q 2 ) P1 Q 1 P2 Q 2

Comme on a dj calcul P1 Q 1 et P2 Q 2 , on change deux multiplications et une addition


( gauche) contre une multiplication et quatre additions ( droite). crire une fonction
qui ralise la multiplication de polynmes la Karatsuba.
4. Trouver la formule de rcurrence qui dfinit la complexit de la multiplication de Karat-
suba. Quelle est sa solution ?

1. Il suffit de dvelopper le produit (P1 + X n P2 ) (Q 1 + X n Q 2 ) :

(P1 + X n P2 ) (Q 1 + X n Q 2 ) = P1 Q 1 + X n (P1 Q 2 + P2 Q 1 ) + X 2n P2 Q 2

On se ramne ainsi aux quatre multiplications P1 Q 1 , P1 Q 2 , P2 Q 1 et P2 Q 2 entre polynmes


de degrs strictement infrieurs n, plus deux multiplications par X n et X 2n qui ne sont
que des ajouts de zros en tte de liste.
2. On spare les deux tapes de lalgorithme : dabord la dcoupe des polynmes (dans laquelle
il ne faut pas oublier de donner n en argument car ce nest pas forcment le milieu du poly-
nme, n doit tre le mme pour P et Q). Le dcoupage P1,P2 = decoupe(P,n) correspond
lcriture P = P1 + X n P2 .
Algorithme . polynome.py (4)

def decoupe(P,n):
if (degre(P)<n): return P, [0]
else: return P[0:n], P[n:]

On a aussi besoin dune fonction produit_monome(P,n) qui renvoie le polynme X n P


par un dcalage. Voici la multiplication proprement dite avec les appels rcursifs et leur
combinaison.
Algorithmes et mathmatiques 49

Algorithme . polynome.py (5)

def produit_assez_rapide(P,Q):
p = degre(P) ; q = degre(Q)
if (p == 0): return [P[0]*k for k in Q] # Condition initiale: P=cst
if (q == 0): return [Q[0]*k for k in P] # Condition initiale: Q=cst
n = (max(p,q)+1)//2 # demi-degr
P1,P2 = decoupe(P,n) # decoupages
Q1,Q2 = decoupe(Q,n)
P1Q1 = produit_assez_rapide(P1,Q1) # produits en petits degrs
P2Q2 = produit_assez_rapide(P2,Q2)
P1Q2 = produit_assez_rapide(P1,Q2)
P2Q1 = produit_assez_rapide(P2,Q1)
R1 = produit_monome(somme(P1Q2,P2Q1),n) # dcalages
R2 = produit_monome(P2Q2,2*n)
return somme(P1Q1,somme(R1,R2)) # sommes

La relation de rcurrence qui exprime la complexit de cet algorithme est C(n) = 4C(n/2) +
O(n) et elle se rsout en C(n) = O(n2 ). Voir la question suivante pour une mthode de rsolu-
tion.
3.
Algorithme . polynome.py (6)

def produit_rapide(P,Q):
p = degre(P) ; q = degre(Q)
if (p == 0): return [P[0]*k for k in Q] # Condition initiale: P=cst
if (q == 0): return [Q[0]*k for k in P] # Condition initiale: Q=cst
n = (max(p,q)+1)//2 # demi-degr
P1,P2 = decoupe(P,n) # decoupages
Q1,Q2 = decoupe(Q,n)
P1Q1 = produit_rapide(P1,Q1) # produits en petits degrs
P2Q2 = produit_rapide(P2,Q2)
PQ = produit_rapide(somme(P1,P2),somme(Q1,Q2))
R1 = somme(PQ,somme([-k for k in P1Q1],[-k for k in P2Q2]))
R1 = produit_monome(R1,n) # dcalages
R2 = produit_monome(P2Q2,2*n)
return somme(P1Q1,somme(R1,R2)) # sommes

4. Notons C(n) la complexit de la multiplication entre deux polynmes de degrs strictement


infrieurs n. En plus des trois appels rcursifs, il y a des oprations linaires : deux calculs
de degrs, deux dcoupes en n/2 puis des additions : deux de taille n/2, une de taille n, une
de taille 3n/2 et une de taille 2n. On obtient donc la relation de rcurrence suivante :

C(n) = 3 C(n/2) + n

15 C (2` ) 2 `
o = 2 . Une mthode de rsolution est de poser ` = 3`
qui vrifie ` = `1 + 3 .
50 Algorithmes et mathmatiques

Do on tire, puisque 0 = C(1) = 1,

` 2 k
`+1 !
X 2
` = + 0 = 3 1 +1
k=1 3 3

puis pour n = 2` :
ln 3 ln 3
C(n) = C(2` ) = 3` ` = (3`+1 2`+1 ) + (1 )3` = O(3` ) = O(2` ln 2 ) = O(n ln 2 )
ln 3
La complexit de la multiplication de Karatsuba est donc O(n ln 2 ) ' O(n1.585 ).

6.4. Optimiser ses algorithmes


Voici quelques petites astuces pour acclrer lcriture ou la vitesse des algorithmes :
k ** 3 au lieu de k * k * k (cela conomise de la mmoire, une seule variable au lieu de
3) ;
k ** 2 <= n au lieu de k <= sqrt(n) (les calculs avec les entiers sont beaucoup plus ra-
pides quavec les rels) ;
x += 1 au lieu de x = x +1 (gain de mmoire) ;
a,b = a+b, a-b au lieu de newa = a+b ; newb = a-b ; a = newa ; b = newb (gain de
mmoire, code plus court).
Cependant il ne faut pas que cela nuise la lisibilit du code : il est important que quelquun puisse
relire et modifier votre code. Le plus souvent cest vous mme qui modifierez les algorithmes qui
vous avez crits et vous serez ravi dy trouver des commentaires clairs et prcis !

Mini-exercices

1. Faire une fonction qui renvoie le pgcd de deux polynmes.


2. Comparer les complexits des deux mthodes suivantes pour valuer un polynme P en
n1 n
une valeur x0 R : P(x0 ) = a 0 + a 1 x0 + + a n1 x0 + a n x0 et P(x0 ) = a 0 + x0 a 1 + x0 a 2 +


+ x0 (a n1 + a n x0 ) (mthode de Horner).
3. Comment trouver le maximum dune liste ? Montrer que votre mthode est de com-
plexit minimale (en terme du nombre de comparaisons).
4. Soit f : [a, b] R une fonction continue vrifiant f (a) f (b) 0. Combien ditrations de
la mthode de dichotomie sont ncessaires pour obtenir une racine de f (x) = 0 avec une
prcision infrieure ?
5. Programmer plusieurs faons de calculer les coefficients du binme de Newton nk et les

comparer.
6. Trouver une mthode de calcul de 2n qui utilise peu de multiplications. On commencera
par crire n en base 2.

Auteurs

Rdaction : Arnaud Bodin


Relecture : Jean-Franois Barraud
Remerciements Lionel Rieg pour son tp sur lalgorithme de Karatsuba
Exo7

3 Cryptographie

1 Le chirement de Csar
2 Le chirement de Vigenre
3 La machine Enigma et les cls secrtes
4 La cryptographie cl publique
5 L'arithmtique pour RSA
6 Le chirement RSA

Vido partie 1. Le chiffrement de Csar


Vido partie 2. Le chiffrement de Vigenre
Vido partie 3. La machine Enigma et les cls secrtes
Vido partie 4. La cryptographie cl publique
Vido partie 5. L'arithmtique pour RSA
Vido partie 6. Le chiffrement RSA

1. Le chiffrement de Csar

1.1. Csar a dit...


Jules Csar a-t-il vraiment prononc la clbre phrase :
DOHD MDFWD HVW
ou bien comme le disent deux clbres Gaulois : Ils sont fous ces romains ! .
En fait Csar, pour ses communications importantes son arme, cryptait ses messages. Ce que
lon appelle le chiffrement de Csar est un dcalage des lettres : pour crypter un message, A
devient D, B devient E, C devient F,...

A 7 D B 7 E C 7 F ... W 7 Z X 7 A Y 7 B Z 7 C

Voici une figure avec lalphabet dorigine en haut et en rouge, en correspondance avec lalphabet
pour le chiffrement en-dessous et en vert.

Nous adopterons la convention suivante, en vert cest la partie du message laquelle tout le
monde a accs (ou qui pourrait tre intercept), cest donc le message crypt. Alors quen rouge
cest la partie du message confidentiel, cest le message en clair.
52 Cryptographie

Pour prendre en compte aussi les dernires lettres de lalphabet, il est plus judicieux de reprsent
lalphabet sur un anneau. Ce dcalage est un dcalage circulaire sur les lettres de lalphabet.

Pour dchiffrer le message de Csar, il suffit de dcaler les lettres dans lautre sens, D se dchiffre
en A, E en B,...
Et la clbre phrase de Csar est :
ALEA JACTA EST
qui traduite du latin donne Les ds sont jets .

1.2. Des chiffres et des lettres


Il est plus facile de manipuler des nombres que des lettres, aussi nous passons une formulation
mathmatique. Nous associons chacune des 26 lettres de A Z un nombre de 0 25. En termes
mathmatiques, nous dfinissons une bijection :

f : A, B, C, . . . , Z 0, 1, 2, . . . , 25

par
A 7 0 B 7 1 C 7 2 ... Z 7 25

Ainsi "A L E A" devient "0 11 4 0".


Le chiffrement de Csar est un cas particulier de chiffrement mono-alphabtique, cest--dire
un chiffrement lettre lettre.
Quel est lintrt ? Nous allons voir que le chiffrement de Csar correspond une opration math-
matique trs simple. Pour cela, rappelons la notion de congruence et lensemble Z/26Z.

1.3. Modulo
Soit n 2 un entier fix.
Dfinition 1

On dit que a est congru b modulo n, si n divise b a. On note alors

a b (mod n).

Pour nous n = 26. Ce qui fait que 28 2 (mod 26), car 28 2 est bien divisible par 26. De mme
85 = 3 26 + 7 donc 85 7 (mod 26).
On note Z/26Z lensemble de tous les lments de Z modulo 26. Cet ensemble peut par exemple
tre reprsent par les 26 lments {0, 1, 2, . . . , 25}. En effet, puisquon compte modulo 26 :

0, 1, 2, . . . , 25, puis 26 0, 27 1, 28 2, . . . , 52 0, 53 1, . . .
Cryptographie 53

et de mme 1 25, 2 24,...

Plus gnralement Z/nZ contient n lments. Pour un entier a Z quelconque, son reprsentant
dans {0, 1, 2, . . . , n 1} sobtient comme le reste k de la division euclidienne de a par n : a = bn + k.
De sorte que a k (mod n) et 0 k < n.

De faon naturelle laddition et la multiplication dentiers se transposent dans Z/nZ.

Pour a, b Z/nZ, on associe a + b Z/nZ.


Par exemple dans Z/26Z, 15 + 13 gale 2. En effet 15 + 13 = 28 2 (mod 26). Autre exemple : que
vaut 133 + 64 ? 133 + 64 = 197 = 7 26 + 15 15 (mod 26). Mais on pourrait procder diffremment :
tout dabord 133 = 5 26 + 3 3 (mod 26) et 64 = 2 26 + 12 12 (mod 26). Et maintenant sans
calculs : 133 + 64 3 + 12 15 (mod 26).

On fait de mme pour la multiplication : pour a, b Z/nZ, on associe a b Z/nZ.


Par exemple 3 12 donne 10 modulo 26, car 3 12 = 36 = 1 26 + 10 10 (mod 26). De mme :
3 27 = 81 = 3 26 + 3 3 (mod 26). Une autre faon de voir la mme opration est dcrire dabord
27 = 1 (mod 26) puis 3 27 3 1 3 (mod 26).

1.4. Chiffrer et dchiffrer


Le chiffrement de Csar est simplement une addition dans Z/26Z ! Fixons un entier k qui est
le dcalage (par exemple k = 3 dans lexemple de Csar ci-dessus) et dfinissons la fonction de
chiffrement de Csar de dcalage k qui va de lensemble Z/26Z dans lui-mme :
(
Z/26Z Z/26Z
Ck :
x 7 x+ k

Par exemple, pour k = 3 : C 3 (0) = 3, C 3 (1) = 4. . .


Pour dchiffrer, rien de plus simple ! Il suffit daller dans lautre sens, cest--dire ici de soustraire.
La fonction de dchiffrement de Csar de dcalage k est
(
Z/26Z Z/26Z
Dk :
x 7 x k

En effet, si 1 a t chiffr en 4, par la fonction C 3 alors D 3 (4) = 4 3 = 1. On retrouve le nombre


original. Mathmatiquement, D k est la bijection rciproque de C k , ce qui implique que pour tout
x Z/26Z :

D k C k (x) = x

En dautres termes, si x est un nombre, on applique la fonction de chiffrement pour obtenir le


nombre crypt y = C k (x) ; ensuite la fonction de dchiffrement fait bien ce que lon attend delle
D k (y) = x, on retrouve le nombre original x.

Ck

Z/26Z Z/26Z

Dk
54 Cryptographie

Une autre faon de voir la fonction de dchiffrement est de remarquer que D k (x) = C k (x). Par
exemple C 3 (x) = x + (3) x + 23 (mod 26).

Voici le principe du chiffrement : Alice veut envoyer des messages secrets Bruno. Ils se sont
dabord mis daccord sur une cl secrte k, par exemple k = 11. Alice veut envoyer le message
"COUCOU" Bruno. Elle transforme "COUCOU" en "2 14 20 2 14 20". Elle applique la fonction
de chiffrement C 11 (x) = x + 11 chacun des nombres : "13 25 5 13 25 5" ce qui correspond au mot
crypt "NZFNZF". Elle transmet le mot crypt Bruno, qui selon le mme principe applique la
fonction de dchiffrement D 11 (x) = x 11.

ALICE BRUNO

COUCOU NZFNZF NZFNZF COUCOU

Ck Dk

2 14 20 2 14 20 13 25 5 13 25 5 13 25 5 13 25 5 2 14 20 2 14 20

Exemple 3

Un exemple classique est le "rot13" (pour rotation par un dcalage de 13) :

C 13 (x) = x + 13

et comme 13 13 (mod 26) alors D 13 (x) = x + 13. La fonction de dchiffrement est la mme
que la fonction de chiffrement !
Exemple : dchiffrez le mot "PRFNE".

Notons ici deux points importants pour la suite : tout dabord nous avons naturellement considr
un mot comme une succession de lettres, et chaque opration de chiffrement et dchiffrement
seffectue sur un bloc dune seule lettre. Ensuite nous avons vu que chiffrer un message est une
opration mathmatique (certes sur un ensemble un peu spcial).

1.5. Espace des cls et attaque


Combien existe-t-il de possibilits de chiffrement par la mthode de Csar ? Il y a 26 fonctions C k
diffrentes, k = 0, 1, . . . , 25. Encore une fois, k appartient Z/26Z, car par exemple les fonctions C 29
et C 3 sont identiques. Le dcalage k sappelle la cl de chiffrement, cest linformation ncessaire
pour crypter le message. Il y a donc 26 cls diffrentes et lespace des cls est Z/26Z.

Il est clair que ce chiffrement de Csar est dune scurit trs faible. Si Alice envoie un message
secret Bruno et que Chlo intercepte ce message, il sera facile pour Chlo de le dcrypter mme
si elle ne connat pas la cl secrte k. Lattaque la plus simple pour Chlo est de tester ce que
donne chacune des 26 combinaisons possibles et de reconnatre parmi ces combinaisons laquelle
donne un message comprhensible.

1.6. Algorithmes
Les ordinateurs ont rvolutionn la cryptographie et surtout le dcryptage dun message intercept.
Nous montrons ici, laide du langage Python comment programmer et attaquer le chiffrement de
Csar. Tout dabord la fonction de chiffrement se programme en une seule ligne :
Cryptographie 55

Algorithme . cesar.py (1)

def cesar_chiffre_nb(x,k):
return (x+k)%26

Ici x est un nombre de {0, 1, . . . , 25} et k est le dcalage. (x+k)%26 renvoie le reste modulo 26 de la
somme (x+k). Pour le dcryptage, cest aussi simple :
Algorithme . cesar.py (2)

def cesar_dechiffre_nb(x,k):
return (x-k)%26

Pour chiffrer un mot ou un phrase, il ny a pas de problmes thoriques, mais seulement des
difficults techniques :
Un mot ou une phrase est une chane de caractres, qui en fait se comporte comme une liste.
Si mot est une chane alors mot[0] est la premire lettre, mot[1] la deuxime lettre... et la
boucle for lettre in mot: permet de parcourir chacune des lettres.
Pour transformer une lettre en un nombre, on utilise le code Ascii qui chaque caractre
associe un nombre, ord(A) vaut 65, ord(B) vaut 66... Ainsi (ord(lettre) - 65) renvoie le
rang de la lettre entre 0 et 25 comme nous lavons fix ds le dpart.
La transformation inverse se fait par la fonction char : char(65) renvoie le caractre A,
char(66) renvoie B...
Pour ajouter une lettre une liste, faites maliste.append(lettre). Enfin pour transformer
une liste de caractres en une chane, faites "".join(maliste).
Ce qui donne :
Algorithme . cesar.py (3)

def cesar_chiffre_mot(mot,k):
message_code = [] # Liste vide
for lettre in mot: # Pour chaque lettre
nb = ord(lettre)-65 # Lettre devient nb de 0 25
nb_crypte = cesar_chiffre(nb,k) # Chiffrement de Csar
lettre_crypte = chr(nb_crypte+65) # Retour aux lettres
message_code.append(lettre_crypte) # Ajoute lettre au message
message_code = "".join(message_code) # Revient chaine caractres
return(message_code)

Pour lattaque on parcourt lintgralit de lespace des cls : k varie de 0 25. Noter que pour
dcrypter les messages on utilise ici simplement la fonction de Csar avec la cl k.
56 Cryptographie

Algorithme . cesar.py (4)

def cesar_attaque(mot):
for k in range(26):
print(cesar_chiffre_mot(mot,-k))
return None

2. Le chiffrement de Vigenre

2.1. Chiffrement mono-alphabtique


Principe

Nous avons vu que le chiffrement de Csar prsente une scurit trs faible, la principale raison
est que lespace des cls est trop petit : il y a seulement 26 cls possibles, et on peut attaquer un
message chiffr en testant toutes les cls la main.
Au lieu de faire correspondre circulairement les lettres, on associe maintenant chaque lettre une
autre lettre (sans ordre fixe ou rgle gnrale).
Par exemple :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
F Q B M X I T E P A L W H S D O Z K V G R C N Y J U

Pour crypter le message


ETRE OU NE PAS ETRE TELLE EST LA QUESTION
on regarde la correspondance et on remplace la lettre E par la lettre X, puis la lettre T par la lettre
G, puis la lettre R par la lettre K...
Le message crypt est alors :
XGKX DR SX OFV XGKX GXWWX XVG WF ZRXVGPDS
Pour le dcrypter, en connaissant les substitutions, on fait lopration inverse.

Avantage : nous allons voir que lespace des cls est gigantesque et quil nest plus question dnu-
mrer toutes les possibilits.
Inconvnients : la cl retenir est beaucoup plus longue, puisquil faut partager la cl consti-
tue des 26 lettres "FQBMX...". Mais surtout, nous allons voir que finalement ce protocole de
chiffrement est assez simple craquer .

Espace des cls



Mathmatiquement, le choix dune cl revient au choix dune bijection de lensemble A, B, . . . , Z

vers le mme ensemble A, B, . . . , Z . Il y a 26! choix possibles. En effet pour la lettre A de lensemble
de dpart, il y a 26 choix possibles (nous avions choisi F), pour B il reste 25 choix possibles (tout
sauf F qui est dj choisi), pour C il reste 24 choix... enfin pour Z il ne reste quune seule possibilit,
la seule lettre non encore choisie. Au final il y a : 26 25 24 2 1 soit 26! choix de cls. Ce
qui fait environ 4 1026 cls. Il y a plus de cls diffrentes que de grains de sable sur Terre ! Si un
ordinateur pouvait tester 1 000 000 de cls par seconde, il lui faudrait alors 12 millions dannes
pour tout numrer.
Cryptographie 57

Attaque statistique

La principale faiblesse du chiffrement mono-alphabtique est quune mme lettre est toujours
chiffre de la mme faon. Par exemple, ici E devient X. Dans les textes longs, les lettres nap-
paraissent pas avec la mme frquence. Ces frquences varient suivant la langue utilise. En
franais, les lettres les plus rencontres sont dans lordre :
ESAINTRULODCPMVQGFHBXJYZKW
avec les frquences (souvent proches et dpendant de lchantillon utilis) :

E S A I N T R U L O D
14.69% 8.01% 7.54% 7.18% 6.89% 6.88% 6.49% 6.12% 5.63% 5.29% 3.66%

Voici la mthode dattaque : dans le texte crypt, on cherche la lettre qui apparat le plus, et si
le texte est assez long cela devrait tre le chiffrement du E, la lettre qui apparat ensuite dans
ltude des frquences devrait tre le chiffrement du S, puis le chiffrement du A... On obtient
des morceaux de texte clair sous la forme dune texte trous et il faut ensuite deviner les lettres
manquantes.

Par exemple, dchiffrons la phrase :


LHLZ HFQ BC HFFPZ WH YOUPFH MUPZH
On compte les apparitions des lettres :
H:6 F:4 P:3 Z:3
On suppose donc que le H crypte la lettre E, le F la lettre S, ce qui donne
*E** ES* ** ESS** *E ***SE ****E
Daprs les statistiques P et Z devraient se dcrypter en A et I (ou I et A). Le quatrime mot
"HFFPZ", pour linstant dcrypt en "ESS**", se complte donc en "ESSAI" ou "ESSIA". La
premire solution semble correcte ! Ainsi P crypte A, et Z crypte I. La phrase est maintenant :
*E*I ES* ** ESSAI *E ***ASE **AIE
En rflchissant un petit peu, on dcrypte le message :
CECI EST UN ESSAI DE PHRASE VRAIE

2.2. Le chiffrement de Vigenre


Blocs

Lespace des cls du chiffrement mono-alphabtique est immense, mais le fait quune lettre soit
toujours crypte de la mme faon reprsente une trop grande faiblesse. Le chiffrement de Vigenre
remdie ce problme. On regroupe les lettres de notre texte par blocs, par exemple ici par blocs
de longueur 4 :
CETTE PHRASE NE VEUT RIEN DIRE
devient
CETT EPHR ASEN EVEU TRIE NDIR E
(les espaces sont purement indicatifs, dans la premire phrase ils sparent les mots, dans la
seconde ils sparent les blocs).
Si k est la longueur dun bloc, alors on choisit une cl constitue de k nombres de 0 25 :
(n 1 , n 2 , . . . , n k ). Le chiffrement consiste effectuer un chiffrement de Csar, dont le dcalage dpend
du rang de la lettre dans le bloc :
un dcalage de n 1 pour la premire lettre de chaque bloc,
un dcalage de n 2 pour la deuxime lettre de chaque bloc,
...
un dcalage de n k pour la k-me et dernire lettre de chaque bloc.
58 Cryptographie

Pour notre exemple, si on choisit comme cl (3, 1, 5, 2) alors pour le premier bloc "CETT" :
un dcalage de 3 pour C donne F,
un dcalage de 1 pour E donne F,
un dcalage de 5 pour le premier T donne Y,
un dcalage de 2 pour le deuxime T donne V.
Ainsi "CETT" de vient "FFYV". Vous remarquez que les deux lettres T ne sont pas cryptes par
la mme lettre et que les deux F ne cryptent pas la mme lettre. On continue ensuite avec le
deuxime bloc...

Mathmatiques

Llment de base nest plus une lettre mais un bloc, cest--dire un regroupement de lettres. La
fonction de chiffrement associe un bloc de longueur k, un autre bloc de longueur k, ce qui donne
en mathmatisant les choses :
(
Z/26Z Z/26Z Z/26Z Z/26Z Z/26Z Z/26Z
C n1 ,n2 ,...,n k :
(x1 , x2 , . . . , xk ) 7 (x1 + n 1 , x2 + n 2 , . . . , xk + n k )

Chacune des composantes de cette fonction est un chiffrement de Csar. La fonction de dchiffre-
ment est juste C n1 ,n2 ,...,n k .

Espace des cls et attaque

Il y a 26k choix possibles de cls, lorsque les blocs sont de longueur k. Pour des blocs de longueur
k = 4 cela en donne dj 456 976, et mme si un ordinateur teste toutes les combinaisons possibles
sans problme, il nest pas question de parcourir cette liste pour trouver le message en clair, cest-
-dire celui qui est comprhensible !
Il persiste tout de mme une faiblesse du mme ordre que celle rencontre dans le chiffrement
mono-alphabtique : la lettre A nest pas toujours crypte par la mme lettre, mais si deux lettres
A sont situes la mme position dans deux blocs diffrents (comme par exemple "ALPH ABET")
alors elles seront cryptes par la mme lettre.
Une attaque possible est donc la suivante : on dcoupe notre message en plusieurs listes, les
premires lettres de chaque bloc, les deuximes lettres de chaque bloc... et on fait une attaque
statistique sur chacun de ces regroupements. Ce type dattaque nest possible que si la taille des
blocs est petite devant la longueur du texte.

2.3. Algorithmes
Voici un petit algorithme qui calcule la frquence de chaque lettre dune phrase.
Algorithme . statistiques.py

def statistiques(phrase):
liste_stat = [0 for x in range(26)] # Une liste avec des 0
for lettre in phrase: # On parcourt la phrase
i = ord(lettre)-65
if 0 <= i < 26: # Si c'est une vraie lettre
liste_stat[i] = liste_stat[i] + 1
return(liste_stat)
Cryptographie 59

Et voici le chiffrement de Vigenre.


Algorithme . vigenere.py

def vigenere(mot,cle): # Cl est du type [n_1,...,n_k]


message_code = []
k = len(cle) # Longueur de la cl
i = 0 # Rang dans le bloc
for lettre in mot: # Pour chaque lettre
nomb = ord(lettre)-65 # Lettre devient nb de 0 25
nomb_code = (nomb+cle[i]) % 26 # Vigenre : on ajoute n_i
lettre_code = chr(nomb_code+65) # On repasse aux lettres
i=(i+1) % k # On passe au rang suivant
message_code.append(lettre_code) # Ajoute lettre au message
message_code = "".join(message_code) # Revient chaine caractres
return(message_code)

3. La machine Enigma et les cls secrtes

3.1. Un secret parfait


Linconvnient des chiffrements prcdents est quune mme lettre est rgulirement chiffre de
la mme faon, car la correspondance dun alphabet un ou plusieurs autres est fixe une fois
pour toutes, ce qui fait quune attaque statistique est toujours possible. Nous allons voir quen
changeant la correspondance chaque lettre, il est possible de crer un chiffrement parfait !
Expliquons dabord le principe laide dune analogie : jai choisi deux entiers m et c tels que
m + c = 100. Que vaut m ? Cest bien sr impossible de rpondre car il y a plusieurs possibilits :
0 + 100, 1 + 99, 2 + 98,... Par contre, si je vous donne aussi c alors vous trouvez m immdiatement
m = 100 c.

Voici le principe du chiffrement : Alice veut envoyer Bruno le message secret M suivant :
ATTAQUE LE CHATEAU
Alice a dabord choisi une cl secrte C quelle a transmise Bruno. Cette cl secrte est de la
mme longueur que le message (les espaces ne comptent pas) et compose dentiers de 0 25, tirs
au hasard. Par exemple C :
[4, 18, 2, 0, 21, 12, 18, 13, 7, 11, 23, 22, 19, 2, 16, 9]
Elle crypte la premire lettre par un dcalage de Csar donn par le premier entier : A est dcal
de 4 lettres et devient donc E. La seconde lettre est dcale du second entier : le premier T devient
L. Le second T est lui dcal de 2 lettres, il devient V. Le A suivant est dcal de 0 lettre, il reste
A... Alice obtient un message chiffr X quelle transmet Bruno :
ELVALGW YL NEWMGQD
Pour le dcrypter, Bruno, qui connat la cl, na qu faire le dcalage dans lautre sens.
Notez que deux lettres identiques (par exemples les T) nont aucune raison dtre cryptes de la
mme faon. Par exemple, les T du message initial sont crypts dans lordre par un L, un V et un
M.

Formalisons un peu cette opration. On identifie A avec 0, B avec 1, ..., Z avec 25. Alors le message
crypt X est juste la "somme" du message M avec la cl secrte C, la somme seffectuant lettre
60 Cryptographie

lettre, terme terme, modulo 26.


Notons cette opration M C = X .

A T T A Q U E L E C H A T E A U
0 19 19 0 16 20 4 11 4 2 7 0 19 4 0 20

4 18 2 0 21 12 18 13 7 11 23 22 19 2 16 9

= 4 11 21 0 11 6 22 24 11 13 4 22 12 6 16 3
E L V A L G W Y L N E W M G Q D

Bruno reoit X et connat C, il effectue donc X C = M.


Pourquoi ce systme est-il inviolable ? Pour chacune des lettres, cest exactement le mme problme
que trouver m, sachant que m + c = x (o x = 100), mais sans connatre c. Toutes les possibilits
pour m pourraient tre juste. Et bien sr, ds que lon connat c, la solution est triviale : m = x c.
Il y a trois principes respecter pour que ce systme reste inviolable :

1. La longueur de la cl est gale la longueur du message.


2. La cl est choisie au hasard.
3. La cl ne sert quune seule fois.

Ce systme appel "masque jetable" ou chiffrement de Vernam est parfait en thorie, mais sa
mise en uvre nest pas pratique du tout ! Tout dabord il faut que la cl soit aussi longue que le
message. Pour un message court cela ne pose pas de problme, mais pour envoyer une image par
exemple cela devient trs lourd. Ensuite, il faut trouver un moyen sr denvoyer la cl secrte
son interlocuteur avant de lui faire parvenir le message. Et il faut recommencer cette opration
chaque message, ou bien se mettre daccord ds le dpart sur un carnet de cls : une longue liste
de cls secrtes.
Pour justifier que ce systme est vraiment inviolable voici une exprience amusante : Alice veut
envoyer le message M ="ATTAQUE LE CHATEAU" Bruno, elle choisit la cl secrte C=[4, 18,
2, 0,...] comme ci-dessus et obtient le message chiffr X ="ELVA..." quelle transmet Bruno.
Alice se fait kidnapper par Chlo, qui veut lobliger dchiffrer son message. Heureusement, Alice
a anticip les soucis : elle a dtruit le message M, la cl secrte C et a cr un faux message M 0 et
une fausse cl secrte C 0 . Alice fournit cette fausse cl secrte C 0 Chlo, qui dchiffre le message
par lopration X C 0 et elle trouve le message bien inoffensif M 0 :
RECETTE DE CUISINE
Alice est innocente !
Comment est-ce possible ? Alice avait au pralable prpar un message neutre M 0 de mme lon-
gueur que M et calcul la fausse cl secrte C 0 = X M 0 . Chlo a obtenu (par la contrainte) X et
C 0 , elle dchiffre le message ainsi

X C 0 = X (X M 0 ) = (X X ) M 0 = M 0

Chlo trouve donc le faux message.


Ici la fausse cl C 0 est :
[13, 7, 19, 22, 18, 13, 18, 21, 7, 11, 10, 14, 20, 24, 3, 25]
La premire lettre du message chiffr est un E, en reculant de 13 lettres dans lalphabet, elle se
dchiffre en R...
Cryptographie 61

3.2. La machine Enigma

Afin de sapprocher de ce protocole de chiffrement parfait, il faut trouver un moyen de gnrer


facilement de longues cls, comme si elles avaient t gnres au hasard. Nous allons tudier
deux exemples utiliss en pratique la fin du sicle dernier, une mthode lectro-mcanique : la
machine Enigma et une mthode numrique : le D E S .

La machine Enigma est une machine lectro-mcanique qui ressemble une machine crire.
Lorsque quune touche est enfonce, des disques internes sont actionns et le caractre crypt
sallume. Cette machine, qui sert aussi au dchiffrement, tait utilise pour les communications
de larme allemande durant la seconde guerre mondiale. Ce que les Allemands ne savaient pas,
cest que les services secrets polonais et britanniques avaient russi percer les secrets de cette
machine et taient capables de dchiffrer les messages transmis par les allemands. Ce long travail
dtudes et de recherches a ncessit tout le gnie dAlan Turing et linvention de lanctre de
lordinateur.

Nous symbolisons llment de base de la machine Enigma par deux anneaux :

Un anneau extrieur contenant lalphabet "ABCDE..." symbolisant le clavier de saisie des


messages. Cet anneau est fixe.
Un anneau intrieur contenant un alphabet dans le dsordre (sur la figure "GWQRU...").
Cet anneau est mobile et effectue une rotation chaque touche tape au clavier. Il reprsente
la cl secrte.

Voici, dans ce cas, le processus de chiffrement du mot "BAC", avec la cl de chiffrement "G" :

1. Position initiale. Loprateur tourne lanneau intrieur de sorte que le A extrieur et fixe
soit en face du G intrieur (et donc B en face de W).
62 Cryptographie

2. Premire lettre. Loprateur tape la premire lettre du message : B, la machine affiche la


correspondance W.
3. Rotation. Lanneau intrieur tourne de 1/26me de tour, maintenant le A extrieur et fixe
est en face du W, le B en face du Q,...

4. Deuxime lettre. Loprateur tape la deuxime lettre du message A, la machine affiche la


correspondance, cest de nouveau W.
5. Rotation. Lanneau intrieur tourne de 1/26me de tour, maintenant le A extrieur et fixe
est en face du Q, le B en face du R, le C en face du U,...

6. Troisime lettre. Loprateur tape la troisime lettre du message C, la machine affiche la


correspondance U.
7. Rotation. Lanneau intrieur effectue sa rotation.
8. Message chiffr. Le message crypt est donc "WWU"
Cette mthode de chiffrement est identique un chiffrement de type Vigenre pour une cl de
longueur 26. Il y a 26 cls diffrents disposition avec un seul anneau intrieur et identifies par
lettre de la position initiale : G, W, Q... T correspondant aux alphabets : "GWQ...PT", "WQR...TG",
"QRU...GW"...
En fait, la machine Enigma tait beaucoup plus sophistique, il ny avait pas un mais plusieurs
anneaux intrieurs. Par exemple pour deux anneaux intrieurs comme sur la figure : B senvoie sur
W, qui senvoie sur A ; la lettre B est crypte en A. Ensuite lanneau intrieur numro 1 effectue
1/26me de tour. La lettre A senvoie sur W, qui senvoie sur A ; la lettre A est crypte en A. Lorsque
Cryptographie 63

lanneau intrieur numro 1 a fait une rotation complte (26 lettres ont t tapes) alors lanneau
intrieur numro 2 effectue 1/26me de tour. Cest comme sur un compteur kilomtrique, lorsque
le chiffre des kilomtres parcourt 0, 1, 2, 3, ..., 9, alors au kilomtre suivant, le chiffre des kilomtres
est 0 et celui des dizaines de kilomtres est augment dune unit.

Sil y a trois anneaux, lorsque lanneau intrieur 2 a fait une rotation complte, lanneau intrieur
3 tourne de 1/26me de tour. Il y a alors 263 cls diffrentes facilement identifiables par les trois
lettres des positions initiales des anneaux.
Il fallait donc pour utiliser cette machine, dabord choisir les disques (nos anneaux intrieurs) les
placer dans un certain ordre, fixer la position initiale de chaque disque. Ce systme tait rendu
largement plus complexe avec lajout de correspondances par fichage entre les lettres du clavier
(voir photo). Le nombre de cls possibles dpassait plusieurs milliards de milliards !

3.3. La ronde des chiffres : DES


La machine Enigma gnre mcaniquement un alphabet diffrent chaque caractre crypt,
tentant de se rapprocher dun chiffrement parfait. Nous allons voir une autre mthode, cette fois
numrique : le DES. Le DES (Data Encryption Standard) est un protocole de chiffrement par blocs.
Il a t, entre 1977 et 2001, le standard de chiffrement pour les organisations du gouvernement
des tats-Unis et par extension pour un grand nombre de pays dans le monde.

Commenons par rappeler que lobjectif est de gnrer une cl alatoire de grande longueur. Pour
ne pas avoir retenir lintgralit de cette longue cl, on va la gnrer de faon pseudo-alatoire
partir dune petite cl.
Voyons un exemple lmentaire de suite pseudo-alatoire.
Soit (u n ) la suite dfinie par la donne de (a, b) et de u 0 et la relation de rcurrence

u n+1 a u n + b (mod 26).

Par exemple pour a = 2, b = 5 et u 0 = 6, alors les premiers termes de la suites sont :

6 17 13 5 15 9 23 25 3 11 1 7 19 17 13 5
64 Cryptographie

Les trois nombres (a, b, u 0 ) reprsentent la cl principale et la suite des (u n )nN les cls secondaires.
Avantages : partir dune cl principale on a gnr une longue liste de cls secondaires. Inconv-
nients : la liste nest pas si alatoire que cela, elle se rpte ici avec une priode de longueur 12 :
17, 13, 5, ..., 17, 13, 5, ...

Le systme DES est une version sophistique de ce processus : partir dune cl courte et dopra-
tions lmentaires on crypte un message. Comme lors de ltude de la machine Enigma, nous allons
prsenter une version trs simplifie de ce protocole afin den expliquer les tapes lmentaires.
Pour changer, nous allons travailler modulo 10. Lorsque lon travaille par blocs, les additions se
font bit par bit. Par exemple : [1 2 3 4] [7 8 9 0] = [8 0 2 4] car (1 + 7 8 (mod 10), 2 + 8 0
(mod 10),...)
Notre message est coup en blocs, pour nos explications ce seront des blocs de longueur 8. La cl
est de longueur 4.
Voici le message (un seul bloc) : M = [1 2 3 4 5 6 7 8] et voici la cl : C = [3 1 3 2].

tape 0. Initialisation. On note M0 = M et on dcoupe M en une partie gauche et une partie


droite
M0 = [G 0 k D 0 ] = [1 2 3 4 k 5 6 7 8]

tape 1. Premier tour. On pose

M1 = [D 0 k C (G 0 )]

o est une permutation circulaire.


On effectue donc trois oprations pour passer de M0 M1 :
1. On change la partie droite et la partie gauche de M0 :

M0 7 [5 6 7 8 k 1 2 3 4]

2. Sur la nouvelle partie droite, on permute circulairement les nombres :

7 [5 6 7 8 k 2 3 4 1]

3. Puis on ajoute la cl secrte C droite (ici C = [3 1 3 2]) :

7 [5 6 7 8 k 5 4 7 3] = M1

On va recommencer le mme processus. Cela revient appliquer la formule de rcurrence, qui


partant de M i = [G i k D i ], dfinit

M i+1 = [D i k C (G i )]

tape 2. Deuxime tour. On part de M1 = [5 6 7 8 k 5 4 7 3].


1. On change la partie droite et la partie gauche de M0 :

M0 7 [5 4 7 3 k 5 6 7 8]

2. Sur la nouvelle partie droite, on permute circulairement les nombres.

7 [5 4 7 3 k 6 7 8 5]
Cryptographie 65

3. Puis on ajoute la cl secrte C droite.

7 [5 4 7 3 k 9 8 1 7] = M2

On peut dcider de sarrter aprs ce tour et renvoyer le message crypt X = M2 = [5 4 7 3 9 8 1 7].


Comme chaque opration lmentaire est inversible, on applique un protocole inverse pour dchif-
frer.
Dans le vrai protocole du DES, la cl principale est de taille 64 bits, il y a plus de manipulations
sur le message et les tapes mentionnes ci-dessus sont effectues 16 fois (on parle de tours).
chaque tour, une cl diffrente est utilise. Il existe donc un prambule ce protocole : gnrer 16
cls secondaires (de longueur 48 bits) partir de la cl principale, ce qui se fait selon le principe
de la suite pseudo-alatoire (u n ) explique plus haut.

4. La cryptographie cl publique
Les Grecs pour envoyer des messages secrets rasaient la tte du messager, tatouaient le message
sur son crne et attendaient que les cheveux repoussent avant denvoyer le messager effectuer sa
mission !
Il est clair que ce principe repose uniquement sur le secret de la mthode.

4.1. Le principe de Kerckhoffs


Cette mthode rudimentaire va lencontre du principe de Kerckhoffs. Le principe de Kerckhoffs
snonce ainsi :
La scurit dun systme de chiffrement ne doit reposer que sur la cl.

Cela se rsume aussi par :


Lennemi peut avoir connaissance du systme de chiffrement.

Voici le texte original dAuguste Kerckhoffs de 1883 La cryptographie militaire paru dans le
Journal des sciences militaires.
Il traite notamment des enjeux de scurit lors des correspondances :
Il faut distinguer entre un systme dcriture chiffr, imagin pour un change
momentan de lettres entre quelques personnes isoles, et une mthode de cryptogra-
phie destine rgler pour un temps illimit la correspondance des diffrents chefs
darme entre eux.
Le principe fondamental est le suivant :
Dans le second cas, [. . . ] il faut que le systme nexige pas le secret, et quil
puisse sans inconvnient tomber entre les mains de lennemi.
Ce principe est novateur dans la mesure o intuitivement il semble opportun de dissimuler le maxi-
mum de choses possibles : cl et systme de chiffrement utiliss. Mais lobjectif vis par Kerckhoffs
est plus acadmique, il pense quun systme dpendant dun secret mais dont le mcanisme est
connu de tous sera test, attaqu, tudi, et finalement utilis sil savre intressant et robuste.

4.2. Factorisations des entiers


Quels outils mathmatiques rpondent au principe de Kerckoffs ?
Un premier exemple est la toute simple multiplication ! En effet si je vous demande combien font
5 7, vous rpondez 35. Si je vous demande de factoriser 35 vous rpondez 5 7. Cependant ces
66 Cryptographie

deux questions ne sont pas du mme ordre de difficult. Si je vous demande de factoriser 1591,
vous aller devoir faire plusieurs tentatives, alors que si je vous avais directement demand de
calculer 37 43 cela ne pose pas de problme.
Pour des entiers de plusieurs centaines de chiffres le problme de factorisation ne peut tre rsolu
en un temps raisonnable, mme pour un ordinateur. Cest ce problme asymtrique qui est la
base de la cryptographie RSA (que nous dtaillerons plus tard) : connatre p et q apporte plus
dinformation utilisable que p q. Mme si en thorie partir de p q on peut retrouver p et q,
en pratique ce sera impossible.

Formalisons ceci avec la notion de complexit. La complexit est le temps de calculs (ou le nombre
doprations lmentaires) ncessaire pour effectuer une opration.
Commenons par la complexit de laddition : disons que calculer la somme de deux chiffres (par
exemple 6 + 8) soit de complexit 1 (par exemple 1 seconde pour un humain, 1 milliseconde pour
un ordinateur). Pour calculer la somme de deux entiers n chiffres, la complexit est dordre
n (exemple : 1234 + 2323, il faut faire 4 additions de chiffres, donc environ 4 secondes pour un
humain).
La multiplication de deux entiers n chiffres est de complexit dordre n2 . Par exemple pour
multiplier 1234 par 2323 il faut faire 16 multiplications de chiffres (chaque chiffre de 1234 est
multiplier par chaque chiffre de 2323).
1
Par contre la meilleure mthode de factorisation connue est de complexit dordre exp(4n 3 ) (cest
moins que exp(n), mais plus que n d pour tout d, lorsque n tend vers +).
Voici un tableau pour avoir une ide de la difficult croissante pour multiplier et factoriser des
nombres n chiffres :

n multiplication factorisation
3 9 320
4 16 572
5 25 934
10 100 5 528
50 2 500 2 510 835
100 10 000 115 681 968
200 40 000 14 423 748 780

4.3. Fonctions sens unique


Il existe bien dautres situations mathmatiques asymtriques : les fonctions sens unique. En
dautres termes, tant donne une fonction f , il est possible connaissant x de calculer facilement
f (x) ; mais connaissant un lment de lensemble image de f , il est difficile ou impossible de
trouver son antcdent.
Dans le cadre de la cryptographie, possder une fonction sens unique qui joue le rle de chif-
frement na que peu de sens. En effet, il est indispensable de trouver un moyen efficace afin de
pouvoir dchiffrer les messages chiffrs. On parle alors de fonction sens unique avec trappe
secrte.

Prenons par exemple le cas de la fonction f suivante :

f : x 7 x3 (mod 100).

Connaissant x, trouver y = f (x) est facile, cela ncessite deux multiplications et deux divi-
sions.
Cryptographie 67

Connaissant y image par f dun lment x (y = f (x)), retrouver x est difficile.

Tentons de rsoudre le problme suivant : trouver x tel que x3 11 (mod 100).


On peut pour cela :
soit faire une recherche exhaustive, cest--dire essayer successivement 1, 2, 3, ..., 99, on
trouve alors :
713 = 357 911 11 (mod 100),

soit utiliser la trappe secrte : y 7 y7 (mod 100) qui fournit directement le rsultat !

117 = 19 487 171 71 (mod 100).

La morale est la suivante : le problme est dur rsoudre, sauf pour ceux qui connaissent la trappe
secrte. (Attention, dans le cas de cet exemple, la fonction f nest pas bijective.)

4.4. Chiffrement cl prive


Petit retour en arrire. Les protocoles tudis dans les chapitres prcdents taient des chif-
frements cl prive. De faon image, tout se passe comme si Bruno pouvaient dposer son
message dans un coffre fort pour Alice, Alice et Bruno tant les seuls possder la cl du coffre.

BRUNO

ALICE

En effet, jusquici, les deux interlocuteurs se partageaient une mme cl qui servait chiffrer (et
dchiffrer) les messages. Cela pose bien sr un problme majeur : Alice et Bruno doivent dabord
se communiquer la cl.

BRUNO ALICE

Message M Cl C Message M

Message crypt X
Chiffrement C Dchiffrement D

4.5. Chiffrement cl publique


Les fonctions sens unique trappe donnent naissance des protocoles de chiffrement cl
publique. Lassociation cl et publique peut paratre incongrue, mais il signifie que le principe
de chiffrement est accessible tous mais que le dchiffrement ncessite une cl quil faut bien sr
garder secrte.
68 Cryptographie

BRUNO

ALICE

De faon image, si Bruno veut envoyer un message Alice, il dpose son message dans la bote
aux lettres dAlice, seule Alice pourra ouvrir sa bote et consulter le message. Ici la cl publique
est symbolise par la bote aux lettre, tout le monde peut y dposer un message, la cl qui ouvre la
bote aux lettres est la cl prive dAlice, que Alice doit conserver labri.
BRUNO ALICE
Cl publique
Message M Cl prive Message M

Message crypt X
Chiffrement C Dchiffrement D

En prenant appui sur lexemple prcdent, si le message initial est 71 et que la fonction f de
chiffrement est connue de tous, le message transmis est 11 et le dchiffrement sera rapide si la
trappe secrte 7 est connue du destinataire.
Les paramtres dun protocole de chiffrement cl publique sont donc :
les fonctions de chiffrement et de dchiffrement : C et D ,
la cl publique du destinataire qui va permettre de paramtrer la fonction C ,
la cl prive du destinataire qui va permettre de paramtrer la fonction D .
Dans le cadre de notre exemple Bruno souhaite envoyer un message Alice, ces lments sont :
C : x 7 x? (mod 100) et D : x 7 x? (mod 100),
3 : la cl publique dAlice qui permet de dfinir compltement la fonction de chiffrement :

C : x 7 x3 (mod 100),

7 : la cl prive dAlice qui permet de dfinir compltement la fonction de dchiffrement :

D : x 7 x7 (mod 100).

Dans la pratique, un chiffrement cl publique ncessite plus de calculs et est donc assez lent,
plus lent quun chiffrement cl prive. Afin de gagner en rapidit, un protocole hybride peut tre
mis en place de la faon suivante :
laide dun protocole de chiffrement cl publique, Alice et Bruno changent une cl,
Alice et Bruno utilise cette cl dans un protocole de chiffrement cl prive.

5. Larithmtique pour RSA


Pour un entier n, sachant quil est le produit de deux nombres premiers, il est difficile de retrouver
les facteurs p et q tels que n = pq. Le principe du chiffrement RSA, chiffrement cl publique,
repose sur cette difficult.
Dans cette partie nous mettons en place les outils mathmatiques ncessaires pour le calcul des
cls publique et prive ainsi que les procds de chiffrement et dchiffrement RSA.
Cryptographie 69

5.1. Le petit thorme de Fermat amlior

Nous connaissons le petit thorme de Fermat

Thorme 2. Petit thorme de Fermat

Si p est un nombre premier et a Z alors

a p a (mod p)

et sa variante :

Corollaire 1

Si p ne divise pas a alors

a p1 1 (mod p)

Nous allons voir une version amliore de ce thorme dans le cas qui nous intresse :

Thorme 3. Petit thorme de Fermat amlior

Soient p et q deux nombres premiers distincts et soit n = pq. Pour tout a Z tel que
pgcd(a, n) = 1 alors :

a( p1)( q1) 1 (mod n)

On note (n) = (p 1)(q 1), la fonction dEuler. Lhypothse pgcd(a, n) = 1 quivaut ici ce que
a ne soit divisible ni par p, ni par q. Par exemple pour p = 5, q = 7, n = 35 et (n) = 4 6 = 24. Alors
pour a = 1, 2, 3, 4, 6, 8, 9, 11, 12, 13, 16, 17, 18, ... on a bien a24 1 (mod 35).
Dmonstration

Notons c = a( p1)( q1) . Calculons c modulo p :

c a( p1)( q1) (a( p1) ) q1 1 q1 1 (mod p)

o lon appliquer le petit thorme de Fermat : a p1 1 (mod p), car p ne divise pas a.
Calculons ce mme c mais cette fois modulo q :

c a( p1)( q1) (a( q1) ) p1 1 p1 1 (mod q)

o lon appliquer le petit thorme de Fermat : a q1 1 (mod q), car q ne divise pas a.
Conclusion partielle : c 1 (mod p) et c 1 (mod q).

Nous allons en dduire que c 1 (mod pq).


Comme c 1 (mod p) alors il existe Z tel que c = 1 + p ; comme c 1 (mod q) alors il existe Z
tel que c = 1 + q. Donc c 1 = p = q. De lgalit p = q, on tire que p| q.
Comme p et q sont premiers entre eux (car ce sont des nombres premiers distincts) alors par le lemme
de Gauss on en dduit que p|. Il existe donc 0 Z tel que = 0 p.
Ainsi c = 1 + q = 1 + 0 pq. Ce qui fait que c 1 (mod pq), cest exactement dire a( p1)( q1) 1 (mod n).
70 Cryptographie

5.2. Lalgorithme dEuclide tendu


Nous avons dj tudi lalgorithme dEuclide qui repose sur le principe que pgcd(a, b) = pgcd(b, a
(mod b)).
Voici sa mise en uvre informatique.
Algorithme . euclide.py (1)

def euclide(a,b):
while b !=0 :
a , b = b , a % b
return a

On profite que Python assure les affectations simultanes, ce qui pour nous correspond aux suites
(
a i+1 = b i
b i+1 a i (mod b i )

initialise par a 0 = a, b 0 = b.
Nous avons vu aussi comment remonter lalgorithme dEuclide la main pour obtenir les
coefficients de Bzout u, v tels que au + bv = pgcd(a, b). Cependant il nous faut une mthode plus
automatique pour obtenir ces coefficients, cest lalgorithme dEuclide tendu.
On dfinit deux suites (x i ), (yi ) qui vont aboutir aux coefficients de Bzout.
Linitialisation est :
x0 = 1 x1 = 0 y0 = 0 y1 = 1

et la formule de rcurrence pour i 1 :

x i+1 = x i1 q i x i yi+1 = yi1 q i yi

o q i est le quotient de la division euclidienne de a i par b i .


Algorithme . euclide.py (2)

def euclide_etendu(a,b):
x = 1 ; xx = 0
y = 0 ; yy = 1
while b != 0 :
q = a // b
a , b = b , a % b
xx , x = x - q*xx , xx
yy , y = y - q*yy , yy
return (a,x,y)

Cet algorithme renvoie dabord le pgcd, puis les coefficients u, v tels que au + bv = pgcd(a, b).

5.3. Inverse modulo n


Soit a Z, on dit que x Z est un inverse de a modulo n si ax 1 (mod n).
Trouver un inverse de a modulo n est donc un cas particulier de lquation ax b (mod n).
Cryptographie 71

Proposition 5

a admet un inverse modulo n si et seulement si a et n sont premiers entre eux.


Si au + nv = 1 alors u est un inverse de a modulo n.

En dautres termes, trouver un inverse de a modulo n revient calculer les coefficients de Bzout
associs la paire (a, n).
Dmonstration

La preuve est essentiellement une reformulation du thorme de Bzout :

pgcd(a, n) = 1 u, v Z au + nv = 1
u Z au 1 (mod n)

Voici le code :
Algorithme . euclide.py (3)

def inverse(a,n):
c,u,v = euclide_etendu(a,n) # pgcd et coeff. de Bzout
if c != 1 : # Si pgcd diffrent de 1 renvoie 0
return 0
else :
return u % n # Renvoie l'inverse

5.4. Lexponentiation rapide


Nous aurons besoin de calculer rapidement des puissances modulo n. Pour cela il existe une
mthode beaucoup plus efficace que de calculer dabord a k puis de le rduire modulo n. Il faut
garder lesprit que les entiers que lon va manipuler ont des dizaines voir des centaines de
chiffres.
Voyons la technique sur lexemple de 511 (mod 14). Lide est de seulement calculer 5, 52 , 54 , 58 ...
et de rduire modulo n chaque fois. Pour cela on remarque que 11 = 8 + 2 + 1 donc

511 = 58 52 51 .

i
Calculons donc les 52 (mod 14) :

5 5 (mod 14)
52 25 11 (mod 14)
54 52 52 11 11 121 9 (mod 14)
58 54 54 9 9 81 11 (mod 14)

chaque tape est effectue une multiplication modulaire. Consquence :

511 58 52 51 11 11 5 11 55 11 13 143 3 (mod 14).

Nous obtenons donc un calcul de 511 (mod 14) en 5 oprations au lieu de 10 si on avait fait
555.
72 Cryptographie

Voici une formulation gnrale de la mthode. On crit le dveloppement de lexposant k en base


2 : (k ` , . . . , k 2 , k 1 , k 0 ) avec k i {0, 1} de sorte que
`
k i 2i .
X
k=
i =0

On obtient alors
P` i
` i
xk = x i =0 k i 2 (x2 )k i .
Y
=
i =0
Par exemple 11 en base 2 scrit (1, 0, 1, 1), donc, comme on la vu :
3 2 1 0
511 = (52 )1 (52 )0 (52 )1 (52 )1 .

Voici un autre exemple : calculons 17154 (mod 100). Tout dabord on dcompose lexposant k = 154
en base 2 : 154 = 128 + 16 + 8 + 2 = 27 + 24 + 23 + 21 , il scrit donc en base 2 : (1, 0, 0, 1, 1, 0, 1, 0).
Ensuite on calcule 17, 172 , 174 , 178 , ..., 17128 modulo 100.

17 17 (mod 100)
172 17 17 289 89 (mod 100)
174 172 172 89 89 7921 21 (mod 100)
178 174 174 21 21 441 41 (mod 100)
1716 178 178 41 41 1681 81 (mod 100)
1732 1716 1716 81 81 6561 61 (mod 100)
1764 1732 1732 61 61 3721 21 (mod 100)
17128 1764 1764 21 21 441 41 (mod 100)

Il ne reste qu rassembler :

17154 17128 1716 178 172 41 81 41 89 3321 3649 21 49 1029 29 (mod 100)

On en dduit un algorithme pour le calcul rapide des puissances.


Algorithme . puissance.py

def puissance(x,k,n):
puiss = 1 # Rsultat
while (k>0):
if k % 2 != 0 : # Si k est impair (i.e. k_i=1)
puiss = (puiss*x) % n
x = x*x % n # Vaut x, x^2, x^4,...
k = k // 2
return(puiss)

En fait Python sait faire lexponentiation rapide : pow(x,k,n) pour le calcul de a k modulo n, il
faut donc viter (x ** k) % n qui nest pas adapt.

6. Le chiffrement RSA
Voici le but ultime de ce cours : la chiffrement RSA. Il est temps de relire lintroduction du chapitre
Arithmtique pour sapercevoir que nous sommes prts !
Cryptographie 73

Pour crypter un message on commence par le transformer en un ou plusieurs


nombres. Les processus de chiffrement et dchiffrement font appel plusieurs
notions :
On choisit deux nombres premiers p et q que lon garde secrets et on
pose n = p q. Le principe tant que mme connaissant n il est trs difficile
de retrouver p et q (qui sont des nombres ayant des centaines de chiffres).
La cl secrte et la cl publique se calculent laide de lalgorithme
dEuclide et des coefficients de Bzout.
Les calculs de cryptage se feront modulo n.
Le dchiffrement fonctionne grce une variante du petit thorme de
Fermat.

Dans cette section, cest Bruno qui veut envoyer un message secret Alice. La processus se dcom-
pose ainsi :
1. Alice prpare une cl publique et une cl prive,
2. Bruno utilise la cl publique dAlice pour crypter son message,
3. Alice reoit le message crypt et le dchiffre grce sa cl prive.

6.1. Calcul de la cl publique et de la cl prive


Choix de deux nombres premiers

Alice effectue, une fois pour toute, les oprations suivantes (en secret) :
elle choisit deux nombres premiers distincts p et q (dans la pratique ce sont de trs grand
nombres, jusqu des centaines de chiffres),
Elle calcule n = p q,
Elle calcule (n) = (p 1) (q 1).

Exemple 1.
p = 5 et q = 17
n = p q = 85
(n) = (p 1) (q 1) = 64
Vous noterez que le calcul de (n) nest possible que si la dcomposition de n sous la forme p q
est connue. Do le caractre secret de (n) mme si n est connu de tous.

Exemple 2.
p = 101 et q = 103
n = p q = 10 403
(n) = (p 1) (q 1) = 10 200

Choix dun exposant et calcul de son inverse

Alice continue :
elle choisit un exposant e tel que pgcd(e, (n)) = 1,
elle calcule linverse d de e module (n) : d e 1 (mod (n)). Ce calcul se fait par lalgo-
rithme dEuclide tendu.

Exemple 1.
Alice choisit par exemple e = 5 et on a bien pgcd(e, (n)) = pgcd(5, 64) = 1,
74 Cryptographie

Alice applique lalgorithme dEuclide tendu pour calculer les coefficients de Bzout corres-
pondant pgcd(e, (n)) = 1. Elle trouve 5 13 + 64 (1) = 1. Donc 5 13 1 (mod 64) et
linverse de e modulo (n) est d = 13.

Exemple 2.
Alice choisit par exemple e = 7 et on a bien pgcd(e, (n)) = pgcd(7, 10 200) = 1,
Lalgorithme dEuclide tendu pour pgcd(e, (n)) = 1 donne 7 (1457) + 10 200 1 = 1. Mais
1457 8743 (mod (n)), donc pour d = 8743 on a d e 1 (mod (n)).

Cl publique

La cl publique dAlice est constitue des deux nombres :

n et e

Et comme son nom lindique Alice communique sa cl publique au monde entier.

Exemple 1. n = 85 et e = 5

Exemple 2. n = 10 403 et e = 7

Cl prive

Alice garde pour elle sa cl prive :

Alice dtruit en secret p, q et (n) qui ne sont plus utiles. Elle conserve secrtement sa cl prive.

Exemple 1. d = 13

Exemple 2. d = 8743

6.2. Chiffrement du message

Bruno veut envoyer un message secret Alice. Il se dbrouille pour que son message soit un entier
(quitte dcouper son texte en bloc et transformer chaque bloc en un entier).

Message

Le message est un entier m, tel que 0 m < n.

Exemple 1. Bruno veut envoyer le message m = 10.

Exemple 2. Bruno veut envoyer le message m = 1234.


Cryptographie 75

Message chiffr

Bruno rcupre la cl publique dAlice : n et e avec laquelle il calcule, laide de lalgorithme


dexponentiation rapide, le message chiffr :

x m e (mod n)

Il transmet ce message x Alice

Exemple 1. m = 10, n = 85 et e = 5 donc

x me (mod n) 105 (mod 85)

On peut ici faire les calculs la main :

102 100 15 (mod 85)


104 (102 )2 152 225 55 (mod 85)
x 105 104 10 55 10 550 40 (mod 85)

Le message chiffr est donc x = 40.

Exemple 2. m = 1234, n = 10 403 et e = 7 donc

x me (mod n) 12347 (mod 10 403)

On utilise lordinateur pour obtenir que x = 10 378.

6.3. Dchiffrement du message


Alice reoit le message x chiffr par Bruno, elle le dcrypte laide de sa cl prive d, par lopra-
tion :

m x d (mod n)

qui utilise galement lalgorithme dexponentiation rapide.


Nous allons prouver dans le lemme 1, que par cette opration Alice retrouve bien le message
original m de Bruno.

Exemple 1. c = 40, d = 13, n = 85 donc

x d (40)13 (mod 85).

Calculons la main 4013 (mod 85) on note que 13 = 8 + 4 + 1, donc 4013 = 408 404 40.

402 1600 70 (mod 85)


404 (402 )2 702 4900 55 (mod 85)
408 (404 )2 552 3025 50 (mod 85)
Donc
x d 4013 408 404 40 50 55 40 10 (mod 85)

qui est bien le message m de Bruno.

Exemple 2. c = 10 378, d = 8743, n = 10 403. On calcule par ordinateur x d (10 378)8743


(mod 10 403) qui vaut exactement le message original de Bruno m = 1234.
76 Cryptographie

n, e d

? x m e (mod n) ?
m - C - D - m x d (mod n)

Bruno Alice

6.4. Schma

Cls dAlice :
publique : n, e
prive : d

6.5. Lemme de dchiffrement


Le principe de dchiffrement repose sur le petit thorme de Fermat amlior.

Lemme 1

Soit d linverse de e modulo (n).

Si x m e (mod n) alors m x d (mod n).

Ce lemme prouve bien que le message original m de Bruno, chiffr par cl publique dAlice (e, n)
en le message x, peut-tre retrouv par Alice laide de sa cl secrte d.
Dmonstration

Que d soit linverse de e modulo ( n) signifie d e 1 (mod ( n)). Autrement dit, il existe k Z
tel que d e = 1 + k ( n).
On rappelle que par le petit thorme de Fermat gnralis : lorsque m et n sont premiers entre
eux
m(n) m( p1)( q1) 1 (mod n)

Premier cas pgcd( m, n) = 1.


Notons c m e (mod n) et calculons x d :

x d ( m e )d m ed m1+k(n) m m k(n) m ( m(n) )k m (1)k m (mod n)

Deuxime cas pgcd( m, n) 6= 1.


Comme n est le produit des deux nombres premiers p et q et que m est strictement plus petit que
n alors si m et n ne sont pas premiers entre eux cela implique que p divise m ou bien q divise
m (mais pas les deux en mme temps). Faisons lhypothse pgcd( m, n) = p et pgcd( m, q) = 1, le
cas pgcd( m, n) = q et pgcd( m, p) = 1 se traiterait de la mme manire.
tudions ( m e )d la fois modulo p et modulo q limage de ce que nous avons fait dans la preuve
du thorme de Fermat amlior.
modulo p : m 0 (mod p) et ( m e )d 0 (mod p) donc ( m e )d m (mod p),
modulo q : ( m e )d m ( m(n) )k m ( m q1 )( p1)k m (mod q).
Comme p et q sont deux nombres premiers distincts, ils sont premiers entre eux et on peut crire
comme dans la preuve du petit thorme de Fermat amlior que

( m e )d m (mod n)
Cryptographie 77

6.6. Algorithmes
La mise en uvre est maintenant trs simple. Alice choisit deux nombres premiers p et q et un
exposant e.
Voici le calcul de la cl secrte :
Algorithme . rsa.py (1)

def cle_privee(p,q,e) :
n = p * q
phi = (p-1)*(q-1)
c,d,dd = euclide_etendu(e,phi) # Pgcd et coeff de Bzout
return(d % phi) # Bon reprsentant

Le chiffrement dun message m est possible par tout le monde, connaissant la cl publique (n, e).
Algorithme . rsa.py (2)

def codage_rsa(m,n,e):
return pow(m,e,n)

Seule Alice peut dchiffrer le message crypt x, laide de sa cl prive d.


Algorithme . rsa.py (3)

def decodage_rsa(x,n,d):
return pow(x,d,n)

Pour continuer...
Bibliographie commente :
1. Histoire des codes secrets de Simon Singh, Le livre de Poche.
Les codes secrets raconts comme un roman policier. Passionnant. Idal pour les plus litt-
raires.
2. Comprendre les codes secrets de Pierre Vigoureux, dition Ellipses.
Un petit livre trs clair et trs bien crit, qui prsente un panorama complet de la cryptogra-
phie sans rentrer dans les dtails mathmatiques. Idal pour les esprits logiques.
3. Codage et cryptographie de Joan Gmez, dition Le Monde Images des mathmatiques.
Un autre petit livre trs clair et trs bien, un peu de maths, des explications claires et des
encarts historiques intressants.
4. Introduction la cryptographie de Johannes Buchmann, dition Dunod.
Un livre dun niveau avanc (troisime anne de licence) pour comprendre les mthodes
mathmatiques de la cryptographie moderne. Idal pour unifier les points de vue des math-
matiques avec linformatique.
5. Algbre - Premire anne de Liret et Martinais, dition Dunod.
Livre qui recouvre tout le programme dalgbre de la premire anne, trs bien adapt aux
tudiants des luniversit. Pas de cryptographie.
78 Cryptographie

Auteurs

Arnaud Bodin
Franois Recher
Exo7

4 La chanette

1 Le cosinus hyperbolique
2 quation de la chanette
3 Longueur d'une chanette

Vido partie 1. Le cosinus hyperbolique


Vido partie 2. quation de la chanette
Vido partie 3. Longueur d'une chanette

Introduction

La chanette est le nom que porte la courbe


obtenue en tenant une corde (ou un collier, un
fil,. . . ) par deux extrmits. Sans plus tarder
voici lquation dune chanette :
x
y = a ch
a

Ici ch dsigne
le cosinus hyperbolique, dfini partir de la fonction exponentielle : y(x) =
x x
a
2 e +e
a a , nous y reviendrons.

Le paramtre a dpend de la chanette : on peut carter plus ou moins les mains. Ou, ce qui revient
au mme, si lon garde les mains fixes, on peut prendre des cordes de diffrentes longueurs.
Cest donc une courbe que vous voyez tous les jours : la chane qui pend votre cou ou le fil
lectrique entre deux pylnes. Mais on le retrouve dans des endroits plus surprenants : vous
pouvez voir des chanettes avec des films de savon. Trempez deux cercles mtalliques parallles
dans de leau savonneuse. Il en sort une surface de rvolution dont le profil est une chanette. Enfin,
si vous souhaitez faire une arche qui sappuie sur deux piles alors la forme la plus stable est une
chanette renverse. Gaudi a beaucoup utilis cette forme dans les btiments quil a construits.
80 La chanette

Pour finir sur un bateau, si une voile rectangulaire est maintenue par deux mats horizontaux et
que le vent souffle perpendiculairement alors le profil de la voile est une chanette.
Stop ! Place aux maths : nous allons expliquer comment calculer lquation dune chanette.

1. Le cosinus hyperbolique
1.1. Dfinition
Le cosinus hyperbolique et le sinus hyperbolique sont la partie paire et impaire de lexponen-
tielle :
e x + e x e x e x
ch x = , sh x = .
2 2

ch x

ex

1 1

0 1 0 1

sh x

Voici quelques proprits dont nous aurons besoin :

Proposition 6

1. ch2 x sh2 x = 1, pour tout x R.


2. ch0 x = sh x et sh0 x = ch x.

Remarque 1

Le nom cosinus hyperbolique et sinus hyperbolique ne sont pas un hasard : souvenez-vous


des formules dEuler pour le cosinus et sinus classiques (dits aussi circulaires) :

ei x + ei x ei x ei x
cos x = , sin x = .
2 2i
Lanalogie avec la dfinition de ch x et sh x justifie les termes cosinus et sinus. Reste
justifier le terme hyperbolique.
La chanette 81

Mt
sin t
sh t Mt

cos t ch t

Si nous dessinons une courbe paramtre par (x(t) = cos t, y(t) = sin t) alors x(t)2 + y(t)2 =
cos2 t + sin2 t = 1. Donc nous avons affaire un cercle (do le terme circulaire). Par contre si
on dessine une courbe paramtre par (x(t) = ch t, y(t) = sh t). Alors x(t)2 y(t)2 = ch2 t sh2 t =
1. Cest lquation dune branche dhyperbole !

1.2. Fonctions rciproques

Proposition 7

La fonction x 7 ch x est une bijection de [0, +[ dans [1, +[. Sa bijection rciproque
est note argch x. Donc :

ch argch(x) = x x [1, +[ argch ch(x) = x x [0, +[

La fonction x 7 sh x est une bijection de R dans R. Sa bijection rciproque est note


argsh x. Donc :

x R

sh argsh(x) = x argsh sh(x) = x

sh x

(y = x)
ch x

(y = x) argsh x

argch x
1

0
1

Pour rsoudre une quation diffrentielle nous aurons besoin de la drive de argsh x.
82 La chanette

Proposition 8

Les fonctions x 7 argch x et x 7 argsh x sont drivables et

1 1
argch0 x = p argsh0 x = p .
x2 1 x2 + 1

1.3. Expression logarithmique


En fait, les fonctions hyperboliques inverses peuvent sexprimer laide des fonctions usuelles :

Proposition 9
p
argch x = ln x + x2 1 , pour x 1.
p
argsh x = ln x + x2 + 1 , pour x R.

1.4. Les dmonstrations


Nous donnons les preuves des propositions prcdentes pour la fonction cosinus hyperbolique. Les
formules pour le sinus hyperbolique sobtiennent de faon similaire.
Dmonstration Preuve de la proposition 6
1 1
1. ch2 x sh2 x = x x 2 x x 2
2x
( e + 2 + e2 x ) ( e2 x 2 + e2 x ) = 1.

4 (e + e ) (e e ) = 4
d d e x + e x x x
2. dx (ch x) = dx 2 = e 2e = sh x.

Dmonstration Preuve de la proposition 7

tudions la restriction de la fonction ch : [0, +[ [1, +[.


Comme ch0 x = sh x 0, pour x 0, alors la restriction de la fonction ch est croissante. Elle est
mme strictement croissante (la drive ne sannule quen 0).
Comme ch 0 = 1, que ch x + lorsque x +, alors par continuit et la stricte croissance, la
restriction ch : [0, +[ [1, +[ est une bijection.
Par dfinition, la bijection rciproque de cette restriction est argch x : [1, +[ [0, +[ et vrifie :

argch ch x = x pour tout x [0, +[

ch argch x = x pour tout x [1, +[.

Dmonstration Preuve de la proposition 8

Comme la fonction x 7 ch0 x ne sannule pas sur ]0, +[ alors la fonction argch est drivable sur
]1, +[. On calcule la drive par drivation de lgalit ch(argch x) = x :

argch0 x sh(argch x) = 1

puis on utilise lidentit ch2 u sh2 u = 1 avec u = argch x :

1 1 1
argch0 x = =q =p .
sh(argch x) x2 1
ch2 (argch x) 1
La chanette 83

Dmonstration Preuve de la proposition 9


p
Notons f ( x) = ln x + x2 + 1 .

1 + p x2 1
0 x +1
f ( x) = p =p = argsh0 x.
2
x+ x +1 2
x +1
Comme de plus f (0) = ln(1) = 0 et argsh 0 = 0 (car sh 0 = 0), on en dduit que pour tout x R, f ( x) =
argsh x.

1.5. Drive des physiciens, drive des mathmaticiens


df
Deux notations pour la drive saffrontent : celle du mathmaticien f 0 (x) et celle du physicien dx .
Comparons-les. La drive de f en x est par dfinition la limite (si elle existe) du taux daccroisse-
ment :
f (x + h) f (x)
,
x+hx

lorsque h tend vers 0. Notons h = dx et d f = f (x + h) f (x) = f (x + dx) f (x) alors le taux dac-
df
croissement vaut dx et comme dx est un nombre aussi petit que lon veut (il est infinitsimal), on
df
identifie ce quotient dx avec la limite lorsque dx 0.
Lavantage de la notation des physiciens est que cela peut correspondre un raisonnement phy-
sique. On peut raisonner sur des petits morceaux (de longueur dx petite mais pas nulle) et en
dduire une relation avec des drives. Cest ce que nous ferons dans le paragraphe 2.3.
Autre avantage de cette notation, il est facile de retenir la formule :

df dy df
= .
dx dx d y

Il sagit juste de simplifier le numrateur avec le dnominateur.



Cette opration est justifie, car il sagit de la drive de la compose f y (x) = f y(x) qui est bien

( f y)0 (x) = y0 (x) f 0 y(x) .


2. quation de la chanette

Soit (O,~i,~j) un repre orthonorm direct, ~j est un vecteur vertical dirig vers le haut (cest--dire
oppos au champ de pesanteur).

2.1. Dcoupage infinitsimal de la chanette

Nous dcoupons la chanette en petits morceaux, chaque morceau tant compris entre les abscisses
x et x + dx. Ici dx dsigne donc un rel aussi petit que lon veut. Nous noterons d ` la longueur de
ce petit morceau de chanette.
Trois forces sappliquent notre mini-bout de chanette :
84 La chanette

~ + dx)
T(x

d`

~
P
~
T(x)

x x + dx

Le poids P. ~ Cest une force verticale, proportionnelle la masse du morceau. Si est la


masse linique (cest--dire la masse que ferait un mtre de chane, exprime en k g/m),
la masse de notre petit bout est d `. Si g dnote la constante de gravitation (avec g
~ = P~j = d ` g ~j.
9, 81 m/s2 ) alors le poids est P
~
La tension gauche T(x). La tension gauche, sapplique au point dont labscisse est x.
Par un principe physique, les forces de tension de notre morceau lquilibre sont des forces
tangentes la chanette.
La tension droite T(x~ + dx). La tension droite sapplique au point dabscisse x + dx.
Comme notre morceau est en quilibre elle soppose la tension gauche du morceau suivant
compris entre x + dx et x + 2dx. La tension droite de notre morceau est donc loppose de la
tension gauche du morceau suivant, cette force est donc T(x~ + dx).

Une remarque : pour cette modlisation nous supposons que dx est le mme pour tous les morceaux
de chane. Par contre x varie, et aussi la longueur du morceau de chane entre les abscisses x et
x + dx, qui devrait donc plutt tre note d `(x) au lieu de d `. Le poids dun morceau de chane
dpend lui aussi de x et devrait plutt tre not P(x).

2.2. Principe fondamental de la mcanique


Le principe fondamental de la mcanique nous dit que, lquilibre, la somme des forces est nulle,
donc :
~ + T(x)
P ~ T(x
~ + dx) = ~0. (4.1)

Dcomposons chaque force de tension, en une tension horizontale et une tension verticale :

~ = T h (x)~i T v (x)~j.
T(x)

La convention pour le choix des signes permet davoir des valeurs T h (x) et T v (x) positives.

T h (x)~i

T v (x)~j
~
T(x)
La chanette 85

Alors le principe fondamental de la mcanique devient :

P~j T h (x)~i T v (x)~j T h (x + dx)~i T v (x + dx)~j = ~0.


Comme (~i,~j) est une base, nous reformulons le principe fondamental de la mcanique en deux
quations, correspondant aux forces horizontales et aux forces verticales :
(
T h (x + dx) T h (x) = 0
(4.2)
T v (x + dx) T v (x) P = 0

2.3. Tension horizontale


La premire quation du systme (4.2) nous permet de montrer que la tension horizontale est
constante.

Lemme 2

La tension horizontale est indpendante de x :

T h (x) = T h .

Dmonstration

En effet, fixons x, nous savons T h ( x + dx) T h ( x) = 0, donc le rapport

T h ( x + dx) T h ( x)
= 0.
x + dx x
Ceci est vrai quelque soit llment infinitsimal dx. Ce taux daccroissement tant toujours nul, la
limite lorsque dx tend vers 0 est nulle. Mais la limite est par dfinition la drive T h0 ( x). Bilan :
T h0 ( x) = 0. La fonction T h ( x) est donc une fonction constante comme nous lavions annonc.

2.4. Tension verticale et poids


Nous noterons y(x) lquation de la chanette. Nous considrons que chaque morceau infinitsimal
de la chane est rectiligne, nous pouvons alors appliquer le thorme de Pythagore, dans un petit
triangle rectangle dont lhypotnuse est d ` :

d `2 = dx2 + d y2 .

y(x)

d`
dy

dx

Cela conduit : 2 2
d` dy

= 1+ .
dx dx
86 La chanette

Do s
2
d` dy

= 1+ .
dx dx
Nous allons maintenant nous concentrer sur la deuxime quation du principe fondamental (4.2),
le poids tant P = gd ` :
T v (x + dx) T v (x) = gd `.

Cela donne en divisant par dx :


s
2
T v (x + dx) T v (x) d` dy

= g = g 1+ .
dx dx dx
dy
En terme de drive dx vaut la limite y0 (x) et Tv ( x+dx
dx
) T v ( x )
vaut la limite T v0 (x).
Nous avons donc montr : q
T v0 (x) = g 1 + y0 (x)2 . (4.3)

2.5. Calcul de lquation

Thorme 4

Une quation de la chanette est x


y(x) = a ch
a
Th
o a est une constante qui vaut a = g
.

Dmonstration

1. Lien tension verticale/tension horizontale.


Tout dabord nous lions la tension horizontale T h et la tension verticale T v en fonction de langle que
forme la chanette avec lhorizontale. T dnote la norme de T~.

T h (x)~i
(x)

T v (x)~j
~
T(x)

On obtient :
T h ( x) = T ( x) cos ( x) et T v ( x) = T ( x) sin ( x).

Ce qui conduit T v ( x) = T h ( x) tan ( x).


dy
Maintenant, dans le triangle infinitsimal, nous avons aussi que tan ( x) = dx = y0 ( x).

y(x)

d`
dy
(x)

dx
La chanette 87

Ce qui nous mne la relation :


T v ( x) = T h ( x) y0 ( x).

2. quations diffrentielles.
Nous savons que la tension horizontale est constante (lemme 2), donc en drivant lgalit prcdente,
nous avons
T v0 ( x) = T h y00 ( x).

Avec lquation (4.3) nous crivons


q
g 1 + y0 ( x)2 = T h y00 ( x).

Cest une quation diffrentielle du second dordre :

g
q
y00 ( x) = 1 + y0 ( x)2 . (4.4)
Th

T
Soit a la constante a = gh . Posons z( x) = y0 ( x). Cela nous conduit une quation diffrentielle du
p
premier ordre z0 ( x) = a1 1 + z( x)2 ou encore :

z 0 ( x) 1
= .
a
p
1 + z( x)2

3. Solutions de lquation diffrentielle.


0
Une primitive de p z ( x) 2 est argsh z( x), donc
1+ z( x)

x
argsh z( x) = +
a
o est une constante. En composant des deux cts par le sinus hyperbolique :
x
y0 ( x) = z( x) = sh + .
a
Une primitive de sh x tant ch x, il ne reste plus qu intgrer :
x
y( x) = a ch + + .
a

4. Choix des constantes.


Si lon suppose que le point le plus bas de la chanette a pour coordonnes (0, a) alors y(0) = a et
y0 (0) = 0. On a choisit = 0 et = 0 pour les deux constantes.

(0, a)

x
Lquation est alors y( x) = a ch a .
88 La chanette

3. Longueur dune chanette

3.1. Longueur dune chanette

Proposition 10

La longueur de la portion de la chanette de paramtre a entre le point le plus bas (0, a) et le


point dabscisse x0 est :
x0
` = a sh .
a

(x0 , y0 )

(0, a) `
La chanette 89

Dmonstration

On rappelle lquation de la chanette : y( x) = a ch ax . Par dfinition la longueur vaut


Z x0 q
`= 1 + y0 ( x)2 dx.
0

Ainsi :
R x0 q
` = 0 1 + sh2 ax dx car ch0 x
a = 1
a sh ax
R x0 q
= ch2 ax dx car 1 + sh2 u = ch2 u
R0x0 x
x x0

= 0 ch a dx = a sh a 0
= a sh xa0 .

3.2. Calcul du paramtre


La chanette ne dpend que du seul paramtre a. Ce paramtre a vaut a = Tgh et est fonction de la
masse du fil par unit de longueur, de la constante de gravitation g et de la tension horizontale
T h , qui elle dpend de lcartement de deux points par lesquels passe la chanette. Ce qui fait quil
nest pas facile de calculer a ainsi.
Fixons deux points, pour simplifier nous supposerons quils sont la mme hauteur (mme ordon-
ne). Prenons une chanette de longueur 2` fixe (et connue !). Nous allons calculer le paramtre
a en fonction de la longueur 2` et de la flche h. La flche est la hauteur h entre les deux points
daccroche et le point le plus bas de la chanette.

( x0 , y0 ) (x0 , y0 )

Proposition 11

Pour une chanette de longueur 2` et de flche h alors

`2 h 2
a= .
2h

Dmonstration

Soient ( x0 , y0 ) les coordonnes des points daccroche. Lquation de la chanette tant y = a ch ax , alors
y0 = a ch xa0 qui vaut aussi y0 = a + h.
Quant la longueur elle vaut 2` = 2a sh xa0 . Nous avons donc les quations :

x0
(
` = a sh a
x0
h = a ch a a
90 La chanette

Nous obtenons donc :


2
`2 h 2 a2 sh2 xa0 a ch xa0 a

=
= a2 sh2 xa0 a2 ch2 xa0 a2 + 2a2 ch xa0
2a a + a ch xa0 car ch2 u sh2 u = 1

=
= 2ah.

`2 h 2
Ainsi a = .
2h

3.3. quation paramtrique

Proposition 12

Une quation paramtrique de la chanette est :


(
x(t) = a ln t
y(t) = a2 t + 1t

pour t > 0.

Dmonstration
x y
Nous connaissons lquation cartsienne y = a ch , qui est quivalente argcha a = ax . Utilisons la
p
forme logarithmique de la fonction argch : argch u = ln u + u2 1 (pour u 1).
Nous obtenons : s !
y y 2 x
ln + 1 = .
a a a
Nous cherchons maintenant une paramtrisation ( x( t), y( t)) de la chanette, posons x( t) = a ln( t) (ce qui
est toujours possible car ln est une bijection de ]0, +[ dans R). Alors lquation prcdente conduit
(aprs simplification des ln) : s
y( t ) y( t ) 2

+ 1 = t,
a a
ou encore s
y( t ) 2 y( t )

1 = t
a a
ce qui implique en levant au carr :
2 2
y( t ) y( t ) y( t)

1 = t2 + 2t
a a a
y( t) t2 +1 a
t + 1t .

do a = 2t , et donc y( t) = 2

3.4. Calcul de la tension


La chanette 91

Proposition 13

Nous pouvons calculer la tension en un point (x0 , y0 ) de la chanette. On note h la flche


correspondante et ` la longueur entre le point le plus bas et (x0 , y0 ).

~ h (x0 , y0 )
T

~v
T
h

~
T
`

La tension horizontale T h est constante et vaut :

`2 h 2
T h = a g = g.
2h
Le tension verticale au point (x0 , y0 ) est :

x0 `
T v = T h sh = Th .
a a
La tension totale au point (x0 , y0 ) est :
q x0 a+h
T= T h2 + T v2 = T h ch = Th .
a a

La tension crot donc avec la hauteur du point.


92 La chanette

Dmonstration

On a vu dans le lemme 2 que la tension horizontale est constante. La formule T h = a g provient


de la dfinition mme de la constante a (voir le thorme 4). Enfin, la dernire galit est donne
par la proposition 10.
Par la preuve du thorme 4 : T v ( x0 ) = T h y0 ( x0 ) = T h sh xa0 = T h a` .
~ ( x) = T h ( x)~i T v ( x)~j , donc la norme au point dabscisse x0 est T ( x0 ) =
Le vecteurqtension est T q
~ ( x0 )k = T + T v = T h 1 + sh2 x0 = T h ch x0 = T h a+h . La dernire galit est juste le fait
kT 2 2
h a a a
que y0 = a + h = a ch xa0 .

3.5. Exercices

Exercice 1. Tension minimale

On se donne deux poteaux distants dune longueur 2x0 fixe et dune hauteur suffisante.
Parmi toutes les chanettes passant par les sommets de ces poteaux, on cherche celle qui a les
forces de tensions minimales.
Nous savons que la tension totale (voir la proposition 13) vaut
x
T x (a) = a g ch .
a
Pour une chanette donne, la tension est donc maximale au point daccroche (en x = x0 ) car
le cosinus hyperbolique est une fonction croissante sur [0, +[. Pour un a fix, la tension
maximale est donc T x0 (a). Notre problme, x0 tant fix, est de trouver le a qui minimise
T x0 (a).

( x0 , y0 ) (x0 , y0 )
~x
T 0

1. Considrations physiques : Que vaut la tension si la chanette est rectiligne (la longueur
La chanette 93

de la chanette est celle de lcartement) ? Que vaut la tension si la longueur de la


chanette est infinie ?
2. Montrer que lquation ch t = t sh t est quivalente lquation (t 1)e2 t = t + 1. Montrer
que, sur [0, +[, cette quation a une unique solution . Une valeur approche de est
= 1, 19968 . . .
x0
3. Montrer que la tension T x0 (a) est minimale en a =
.
4. Calculer la longueur correspondante, ainsi que la flche.

Exercice 2. Pont suspendu

Nous allons calculer que la courbe du cble dun pont suspendu est une parabole.
Soit le tablier dun pont de longueur L et de masse totale M. Un gros cble est accroch
entre deux pylnes. ce cble sont accrochs un grand nombre de petits cbles de suspension
verticaux reliant le gros cble au tablier.

Cbles de supension
Cble
Pylne

Tablier

Nous allons calculer lquation y(x) du cble. On sinspirera pour les premires questions des
calculs sur la chanette.

1. Quelles sont les forces qui sappliquent une portion de cble dont labscisse est entre x
et x + dx ?
2. crire lquation du principe fondamental de la mcanique, appliqu cette portion.
3. Montrer que la tension horizontale est indpendante de x.
4. Montrer que la tension verticale vrifie lquation diffrentielle : T v0 (x) = T h y00 (x).
5. Dans toute la suite nous supposerons que la masse du cble est ngligeable devant celle
du tablier. Cela revient supposer que le poids P(x) du cble est ngligeable devant la
charge C(x) du tablier. Nous posons donc P(x) = 0. Montrer que le principe fondamental
de la mcanique scrit alors :
M
T h y00 (x) = g.
L
6. Quelle est lquation y(x) du cble ?
94 La chanette

7. Calculer une quation du cble du Golden Bridge (San Francisco). Le tablier mesure
1280 mtres de long, les pylnes ont une hauteur de 160 mtres (au-dessus du tablier)
et le cble descend jusquau tablier (au milieu du pont).

Auteurs

Arnaud Bodin
Relu par Laura Desideri.
Photos : fdecomite, soapbubble.dk, N. Jamal, G. Sivills, M. Gunn.
Exo7

5 La rgle et le compas

1 Constructions et les trois problmes grecs


2 Les nombres constructibles la rgle et au compas
3 lments de thorie des corps
4 Corps et nombres constructibles
5 Applications aux problmes grecs

Vido partie 1. Constructions


Vido partie 2. Nombres constructibles
Vido partie 3. lments de thorie des corps
Vido partie 4. Corps et nombres constructibles
Vido partie 5. Applications aux problmes grecs

Vous avez votre disposition une rgle et un compas et bien sr du papier et un crayon ! Avec si
peu de matriel souvre vous un monde merveilleux rempli de gomtrie et dalgbre.

1. Constructions et les trois problmes grecs


Nous allons voir dans cette premire partie que tout un tas de constructions sont possibles. Mais
le but de ce cours est de rpondre trois problmes qui datent des mathmaticiens grecs : la
trisection des angles, la duplication du cube ainsi que le clbre problme de la quadrature du
cercle.

1.1. Premires constructions gomtriques


Nous avons notre disposition un compas et une rgle (non gradue). On dmarre par des construc-
tions lmentaires.
Si A, B sont deux points donns du plan, alors on peut construire, la rgle et au compas,
le symtrique de B par rapport A. Pour cela, il suffit juste de tracer la droite (AB) et le
cercle de centre A passant par B. Cette droite et ce cercle se coupent en B bien sr et aussi
en B0 = s A (B), le symtrique de B par rapport A.

C
B
B

A I

A
B0

D
96 La rgle et le compas

Si A, B sont deux points donns du plan, alors on peut construire la mdiatrice de [AB].
Pour cela, tracer le cercle centr en A passant par B et aussi le cercle centr en B passant
par A. Ces deux cercles sintersectent en deux points C, D. Les points C, D appartiennent
la mdiatrice de [AB]. Avec la rgle on trace la droite (CD) qui est la mdiatrice de [AB].
En particulier cela permet de construire le milieu I du segment [AB]. En effet, cest linter-
section de la droite (AB) et de la mdiatrice (CD) que lon vient de construire.
Si A, B, C sont trois points donns alors on peut construire la parallle la droite (AB)
passant par C. Tout dabord construire le milieu I de [AC]. Puis construire D le symtrique
de B par rapport I. La figure ABCD est un paralllogramme, donc la droite (CD) est
bien la parallle la droite (AB) passant par C.
D

C
C

A B
B

Pour construire la perpendiculaire (AB) passant par un point C, on construit dabord


deux points de la mdiatrice de [AB], puis la parallle cette mdiatrice passant par C.

1.2. Rgles du jeu

Il est peut-tre temps dexpliquer ce que lon est autoris faire. Voici les rgles du jeu : partez
de points sur une feuille. Vous pouvez maintenant tracer dautres points, partir de cercles et de
droites en respectant les conditions suivantes :

vous pouvez tracer une droite entre deux points dj construits,


vous pouvez tracer un cercle dont le centre est un point construit et qui passe par un autre
point construit,
vous pouvez utiliser les points obtenus comme intersections de deux droites traces, ou bien
intersections dune droite et dun cercle trac, ou bien intersections de deux cercles tracs.
La rgle et le compas 97

Une remarque importante : la rgle est une rgle simple, qui nest pas gradue.
Convention pour les couleurs : les points donns lavance sont les points bleus. Les construc-
tions se font en rouge (rouge ple pour les constructions qui viennent en premier, rouge vif
pour les constructions qui viennent en dernier).

1.3. Conserver lcartement du compas


On peut conserver lcartement du compas. Cest une proprit importante qui simplifie
les constructions.
Si lon a plac des points A, B, A 0 alors on peut placer la pointe en A avec un cartement de
longueur AB. Cest--dire que lon peut mesurer le segment [AB], puis soulever le compas
en gardant lcartement pour tracer le cercle centr en A 0 et dcartement AB.
Cette opration se justifie de la faon suivante : on pourrait construire le point B0 tel que
A 0 ABB0 soit un paralllogramme et ensuite tracer le cercle centr en A 0 passant par B0 .
B B0

A A0

En conservant lcartement du compas, nous pouvons plus facilement construire les paral-
llogrammes, avec seulement deux traits de compas. Donnons-nous trois points A, B, C. On
mesure lcartement [AB], on trace le cercle centr en C de rayon AB. Puis on mesure lcar-
tement [BC] et on trace le cercle centr en A de rayon BC. Ces deux cercles se recoupent en
deux points, dont lun est D, tel que ABCD est un paralllogramme.

B
98 La rgle et le compas

1.4. Thals et Pythagore


Voyons comment le thorme de Thals nous permet de diviser un segment en n morceaux.
Fixons n un entier. Voici les tapes pour diviser un segment [AB] en n parts gales.

1. Tracer une droite D quelconque, passant par A, autre que la droite (AB).
2. Prendre un cartement quelconque du compas. Sur la droite D et en partant de A, tracer n
segments de mme longueur. On obtient des points A 1 , A 2 , . . . , A n .
3. Tracer la droite (A n B). Tracer les parallles cette droite passant par A i . Ces droites re-
coupent le segment [AB] en des points B1 , B2 , . . . , B n1 qui dcoupent lintervalle [AB] en n
segments gaux.

Cette construction fonctionne grce au thorme de Thals.

A5
A4
A3
A2
A1 A1

A B A B A B

A5 A5
A4 A4
A3 A3
A2 A2
A1 A1

A B A B1 B2 B3 B4 B A B

Voyons maintenant comment le thorme de Pythagore va nous permettre de faire apparatre des
racines carres. Supposons que lon parte dun segment de longueur 1. Il est facile de construire
p
un segment de longueur 2 : cest la longueur de la diagonale du carr de ct 1. Repartons du
p
segment diagonal de longueur 2 : on construit un triangle rectangle avec un ct de longueur
p
1, et lhypotnuse a alors pour longueur 3 (voir le calcul plus bas). Repartant de ce segment, on
p p
construit un escargot avec des segments de longueurs 4, 5...

1 1

1
1
p p
p 4 3
5
p
1 p 2 1
6
1 p
7 1
p
1 1 8
1 p
p 9
p 4 p p
3 3 10
p p p 1
2 1 2 1 2 1

1
1 1 1
La rgle et le compas 99

Tout ceci se justifie par le thorme de Pythagore : dans un triangle rectangle ayant un ct de
p
longueur ` et un autre de longueur 1, lhypotnuse est de longueur `2 + 1. En partant de `1 = 1,
q p q p p p
on trouve `2 = `21 + 1 = 2, puis `3 = `22 + 1 = 3, `4 = 4 = 2, et plus gnralement `n = n.

p
`2 + 1
1

Voici maintenant trois questions qui datent de la Grce antique et qui vont nous occuper le reste
du chapitre.

1.5. La trisection des angles


Considrons un angle , cest--dire la donne dun point A et de deux demi-droites issues de ce
point. Nous savons diviser cet angle en deux laide dune rgle et dun compas : il suffit de tracer
la bissectrice. Pour cela on fixe un cartement de compas et on trace un cercle centr en A : il
recoupe les demi-droites en des points B et C. On trace maintenant deux cercles centrs en B puis
C (avec le mme rayon pour les deux cercles). Si D est un point de lintersection de ces deux cercles
alors la droite (AD) est la bissectrice de langle.

C
A A

Problme de la trisection. Peut-on diviser un angle donn en trois


angles gaux laide de la rgle et du compas ?

1.6. La duplication du cube


Commenons par un problme assez simple : tant donn un carr, construire ( la rgle et au
compas) un carr dont laire est le double. Cest facile, car cela revient savoir tracer un ct de
p
longueur a 2 partir dun ct de longueur a. En fait la diagonale de notre carr original a la
p p
longueur voulue a 2. Partant de cette longueur, on construit un carr dont laire est (a 2)2 = 2a2 :
son aire est bien le double de celle du carr de dpart.
100 La rgle et le compas

p
a 2

a
p
a 2
a

S = a2 S = 2a2

Posons nous la question dans lespace : tant donn un cube, peut-on construire un second cube
dont le volume est le double de celui du premier ? Si le premier cube a ses cts de longueur a,
p
3
alors le second doit avoir ses cts de longueur a 2. La question se formule alors de la manire
suivante :

p
3
a a 2

V = a3 V = 2a3

Problme de la duplication du cube. tant donn un segment de


longueur 1, peut-on construire la rgle et au compas un segment
p3
de longueur 2 ?

1.7. La quadrature du cercle

Problme de la quadrature du cercle. tant donn un cercle,


peut-on construire la rgle et au compas un carr de mme aire ?

p
r

p
r
r

S = r2 S = r2

p
Cela revient construire un segment de longueur la rgle et au compas, partir dun segment
de longueur 1.

2. Les nombres constructibles la rgle et au compas


Pour rsoudre les trois problmes grecs, il va falloir les transformer compltement. Dune question
gomtrique nous allons passer une question algbrique. Dans cette partie on ramne le pro-
blme de la construction de points dans le plan la construction de points sur la droite numrique
relle.
La rgle et le compas 101

2.1. Nombre constructible


On considre le plan euclidien P muni dun repre orthonorm, que lon identifiera R2 (ou C).
On dfinit des ensembles de points C i P par rcurrence.

O I

On se donne au dpart seulement deux points : C 0 = {O, I } o O = (0, 0) et I = (1, 0).


Fixons i 0, et supposons quun certain ensemble de points C i soit dj construit. Alors on d-
finit C i+1 par rcurrence, comme lensemble des points lmentairement constructibles
partir de C i . Cest--dire : P C i+1 si et seulement si

0. P C i

1. ou P (AB) (A 0 B0 ) avec A, B, A 0 , B0 C i ,

2. ou P (AB) C (A 0 , A 0 B0 ) avec A, B, A 0 , B0 C i ,

3. ou P C (A, AB) C (A 0 , A 0 B0 ) avec A, B, A 0 , B0 C i .

On a not C (A, r) le cercle de centre A et de rayon r.


Il faut comprendre cette construction ainsi : si A, B, A 0 , B0 ont t construits et sont dans C i alors,
partir de ces points, on peut tracer plusieurs objets la rgle et au compas : par exemple la
droite (AB) laide de la rgle ou le cercle de centre A 0 et de rayon de longueur A 0 B0 en plaant
la pointe du compas en A 0 avec un cartement faisant passer le cercle par B0 . Si cette droite (AB)
et ce cercle C (A 0 , A 0 B0 ) sintersectent alors les points dintersection sont par dfinition dans C i+1 .
Voici les trois situations possibles. Les points A, B, A 0 , B0 en bleu sont dans C i , et les points P en
rouge sont dans C i+1 .

B P
B
B
A0
A0 B0
P P
A
P0
P0
B0
A A0 B0
A

Voici la premire tape. Partant de C 0 (en bleu gauche), on peut tracer une droite et deux cercles
(au milieu), ce qui donne pour C 1 quatre points supplmentaires (en rouge droite).
102 La rgle et le compas

O I O I O I

Pour C 2 on repartirait de tous les points (rouges ou bleus) de C 1 , et on tracerait tous les cercles ou
droites possibles (il y en a beaucoup !), et les points dintersection formeraient lensemble C 2 .

Dfinition 2

C = i0 C i est lensemble des points constructibles. Autrement dit C = C 0 C 1 C 2


S

De plus P C si et seulement sil existe i 0 tel que P C i .


C R R est lensemble des abscisses des points constructibles : ce sont les nombres
(rels) constructibles.
C C C est lensemble des affixes des points constructibles : ce sont les nombres com-
plexes constructibles.

Attention ! Mme si deux points A, B sont constructibles et que lon peut tracer la droite (AB),
pour autant les points de (AB) ne sont pas tous constructibles. Seuls les points dintersection de
(AB) avec dautres objets construits sont constructibles.
Dterminer les points constructibles C ou dterminer les nombres constructibles C R sont deux
problmes quivalents. En effet, si (x, y) est un point constructible alors par projection sur laxe
des abscisses nous obtenons le rel constructible x, et de mme pour y projection sur laxe des
ordonnes, puis report sur laxe des abscisses. Rciproquement on peut passer de deux nombres
constructibles x, y R un point constructible (x, y) dans le plan. Voici comment : partant du point
(y, 0) on construit (0, y) sur laxe des ordonnes par un coup de compas en reportant y. Une fois
que (x, 0) et (0, y) sont construits, il est facile de construire (x, y).

(0, y) (x, y)

0 y x

2.2. Premires constructions algbriques


La rgle et le compas 103

Proposition 14

Si x, x0 sont des rels constructibles alors :


1. x + x0 est constructible,
2. x est constructible,
3. x x0 est constructible.
4. Si x0 6= 0, alors x/x0 est constructible.
Tous ces rsultats sont valables si lon remplace x, x0 par des nombres complexes z, z0 .

Dmonstration

1. La construction pour le rel x + x0 est facile en utilisant le report du compas (on reporte la
0
longueur x0 partir de x). Une autre mthode est de construire dabord le milieu x+2x puis le
symtrique de 0 par rapport ce milieu : cest x + x0 .
La somme de deux nombres complexes z + z0 correspond la construction dun paralllogramme
de sommets 0, z, z0 , z + z0 : les points daffixes 0, z, z0 tant supposs constructibles, on construit
un paralllogramme de sorte que z + z0 soit le quatrime sommet.

z + z0

z0

2. Loppos du rel x (resp. du complexe z) sobtient comme symtrique par rapport lorigine :
tracez la droite passant par 0 et x (resp. z) ; tracez le cercle de centre 0 passant par x (resp. z) ;
ce cercle recoupe la droite en x (resp. z).

x 0 x

3. Commenons par le produit de deux nombres rels x x0 . On suppose construits les points ( x, 0)
et (0, x0 ) (dessin de gauche). On trace la droite D passant par ( x, 0) et (0, 1). On construit ensuite
la rgle et au compas la droite D 0 parallle D et passant par (0, x0 ). Le thorme de Thals
prouve que D 0 recoupe laxe des abscisses en ( x x0 , 0).
104 La rgle et le compas

x0
x0

1 1

x x x0 x/x0 x

4. Pour le quotient la mthode est similaire (dessin de droite).


5. Il reste soccuper du produit et du quotient de deux nombres complexes. Tout dabord, si
z = ei est un nombre complexe constructible, alors est constructible (considrer le cercle
centr lorigine qui passe par z ; il recoupe laxe des abscisses en ( , 0)). Le nombre ei est
aussi constructible : cest lintersection de la droite passant par lorigine et z avec le cercle unit.
Rciproquement avec et ei on construit facilement z = ei .

ei

0 0
ei(+ ) ei
ei
ei
0
+ 0

0 0
Maintenant si z = ei et z0 = 0 ei alors z z0 = ( 0 ) ei(+ ) . Le rel 0 est constructible comme
0
nous lavons vu au-dessus. Il reste construire le nombre complexe ei(+ ) , qui correspond la
somme de deux angles et 0 . Cela se fait simplement, partir du cercle unit, en reportant au
compas la mesure dun angle partir de lextrmit de lautre.
Pour le quotient la mthode est similaire.

Corollaire 2

N CR Z CR Q CR

Autrement dit, tous les rationnels (et en particulier tous les entiers) sont des nombres rels
constructibles.

La preuve dcoule facilement de la proposition :


Dmonstration

Puisque 1 est un nombre constructible alors 2 = 1 + 1 est constructible, mais alors 3 = 2 + 1 est
constructible et par rcurrence tout entier n 0 est un lment de C R .
Comme tout entier n 0 est constructible alors n lest aussi ; donc tous les entiers n Z sont
constructibles.
p p
Enfin pour q Q, comme les entiers p, q sont constructibles, alors le quotient q est constructible
et ainsi Q C R .

Nous allons voir que C R contient davantage de nombres que les rationnels.
La rgle et le compas 105

Proposition 15
p
Si x 0 est un nombre constructible, alors x est constructible.

Remarques :
p
1. La rciproque est vraie. En effet si x0 = x est un nombre constructible, alors par la proposi-
p p
tion 14 : x0 x0 est constructible. Or x0 x0 = x x = x, donc x est constructible.
2. On peut en dduire aussi que si z C est constructible alors les racines carres (complexes)
de z sont constructibles. On utilise pour cela la racine carre du module et la bissection de
largument comme on la vue au paragraphe 1.5.
p p
3. En particulier 2, 3, . . . sont des nombres constructibles (comme on lavait vu en premire
partie).

Dmonstration

1 0 x1 x
2

Soient les nombres constructibles 0, 1, x placs sur laxe des abscisses. Traons le cercle dont le
diamtre est [1, x] (cela revient construire le centre du cercle x2 1 ; voir la proposition 14). Ce cercle
recoupe laxe des ordonnes en y 0.

a p b
y= x

1 x

On applique le thorme de Pythagore dans trois triangles rectangles, pour obtenir :



2 2
a +b
= (1 + x)2
2
1+ y = a2
2 2
= b2 .

x +y

On en dduit a2 + b2 = (1 + x)2 = 1 + x2 + 2 x dune part et a2 + b2 = 1 + x2 + 2 y2 dautre part. Ainsi


p
1 + x2 + 2 x = 1 + x2 + 2 y2 do y2 = x. Comme y 0 alors y = x.
Une autre mthode consiste remarquer que le triangle de sommets (0, 0), (1, 0), (0, y) et le triangle
y p
de sommets (0, 0), ( x, 0), (0, y) sont semblables donc xy = 1 , do x = y2 , donc y = x.
106 La rgle et le compas

2.3. Retour sur les trois problmes grecs


Avec le langage des nombres constructibles les problmes historiques snoncent ainsi :
p
3
La duplication du cube. Est-ce que 2 est un nombre constructible ?
La quadrature du cercle. Est-ce que est un nombre constructible ?
La trisection des angles. tant donn un rel constructible cos , est-ce que cos 3 est aussi
constructible ?
Si vous ntes pas convaincu voici les preuves :
Si on a un cube de volume a3 , alors il faut construire un cube de volume 2a3 . Fixons a un rel
p3
p
3
constructible. Que 2 soit aussi constructible quivaut a 2 constructible. Un segment de
p
longueur a 2 dfinit bien un cube de volume 2a3 . On aurait rsolu la duplication du cube.
3

p
Soit construit un cercle de rayon r, donc daire r 2 . Que soit constructible quivaut
p
constructible. Construire un segment de longueur r, correspond un carr daire r 2 ,
donc de mme aire que le cercle initial. Nous aurions construit un carr de mme aire que le
cercle ! On aurait rsolu la quadrature du cercle.
Remarquons que construire un angle gomtrique de mesure est quivalent construire
le nombre rel cos (voir la figure de gauche). Partons dun angle gomtrique , cest--dire
partons dun rel cos constructible. Construire cos 3 est quivalent construire un angle
gomtrique de mesure 3 . On aurait rsolu la trisection des angles.

cos

cos cos 3

2.4. Les ensembles


Une dernire motivation propos des nombres constructibles concerne les ensembles. Nous avons
les inclusions densembles :
N Z Q R C.
Le passage dun ensemble un ensemble plus grand se justifie par la volont de rsoudre davan-
tage dquations :
passage de N Z, pour rsoudre des quations du type x + 7 = 0,
passage de Z Q, pour rsoudre des quations du type 5x = 4,
passage de Q R, pour rsoudre des quations du type x2 = 2,
passage de R C, pour rsoudre des quations du type x2 = 1.
Mais en fait le passage de Q R est un saut beaucoup plus grand que les autres : Q est un
ensemble dnombrable (il existe une bijection entre Z et Q) alors que R ne lest pas.
Nous allons dfinir et tudier deux ensembles intermdiaires :

Q CR Q R

o
La rgle et le compas 107

C R est lensemble des nombres rels constructibles la rgle et au compas,


Q est lensemble des nombres algbriques : ce sont les rels x qui sont solutions dune qua-
tion P(x) = 0, pour un polynme P coefficients dans Q.

3. lments de thorie des corps


La thorie des corps nest pas vidente et mriterait un chapitre entier. Nous rsumons ici les
grandes lignes utiles nos fins. Il est important de bien comprendre le paragraphe suivant ; les
autres paragraphes peuvent tre sauts lors de la premire lecture.

3.1. Les exemples comprendre


Premier exemple. Soit lensemble
p n p o
Q( 2) = a + b 2 | a, b Q .

Cest un sous-ensemble de R, qui contient par exemple 0, 1, 13 et tous les lments de Q, mais aussi
p p
2 (qui nest pas rationnel !), 21 23 2.
Voici quelques proprits :
p p p p p
Soient a + b 2 et a0 + b0 2 deux lments de Q( 2). Alors leur somme (a + b 2) + (a0 + b0 2)
p p p
est encore un lment de Q( 2). De mme (a + b 2) Q( 2).
p p p p p
Plus surprenant, si a + b 2, a0 + b0 2 Q( 2) alors (a + b 2) (a0 + b0 2) = aa0 + 2bb0 + (ab0 +
p p p
a0 b) 2 est aussi un lment de Q( 2). Enfin linverse dun lment non nul a + b 2 est
1p
p p
= a2 12b2 (a b 2) : cest encore un lment de Q( 2).
a+ b 2 p
Ces proprits font de Q( 2) un corps. Comme ce corps contient Q on parle dune extension de Q.
p
De plus, il est tendu avec un lment du type : on parle alors dune extension quadratique.
p
Notez que, mme si Q, nest gnralement pas un lment de Q.

Deuxime srie dexemples. On peut gnraliser lexemple prcdent : si K est lui-mme un


corps et est un lment de K alors
p n p o
K( ) = a + b | a, b K

est un corps. On vrifie comme ci-dessus que la somme et le produit de deux lments restent dans
p
K( ), ainsi que loppos et linverse.
Cela permet de construire de nouveaux corps : partant de K 0 = Q, on choisit un lment, disons
p p p
0 = 2 et on obtient le corps plus gros K 1 = Q( 2). Si on prend 1 = 3 alors 3 Q( 2) et donc
p
K 2 = K 1 ( 3) est un nouveau corps (qui contient K 1 ). Le corps K 2 est :
p p p n p p p p o
K 2 = K 1 ( 3) = Q( 2)( 3) = a + b 2 + c 3 + d 2 3 | a, b, c, d Q .
p p p
On pourrait continuer avec 2 = 11 et exprimer chaque lment de Q( 2)( 3)( 11) comme une
p p p p p p p p p p p p
somme de 8 lments a 1 + a 2 2 + a 3 3 + a 4 11 + a 5 2 3 + a 6 2 11 + a 7 3 11 + a 8 2 3 11
avec les a i Q.
p p p p p p p
En partant de K 1 = Q( 2), on aurait pu considrer 1 = 1+ 2 et K 2 = K 1 ( 1 + 2) = Q( p
2)( 1 + 2).
p p
Chaque lment de K 2 peut scrire comme une somme de 4 lments a + b 2 + c 1 + 2 +
p p p
d 2 1 + 2.
p
Une proprit. Il faut noter que chaque lment de Q( 2) est racine dun polynme de degr au
p
plus 2 coefficients dans Q. Par exemple 3 + 2 est annul par P(X ) = (X 3)2 2 = X 2 6X + 7. Les
108 La rgle et le compas

nombres qui sont annuls par un polynme coefficients rationnels sont les nombres algbriques.
p
Plus gnralement, si K est un corps et K, alors tout lment de K( ) est annul par un
p p
polynme de degr 1 ou 2 coefficients dans K. On en dduit que chaque lment de Q( 2)( 3)
p p p
(ou de Q( 2)( 1 + 2)) est racine dun polynme de Q[X ] de degr 1, 2 ou 4. Et chaque lment
p p p
de Q( 2)( 3)( 11) est racine dun polynme de Q[X ] de degr 1, 2, 4 ou 8, etc.

Nous allons maintenant reprendre ces exemples dune manire plus thorique.

3.2. Corps
Un corps est un ensemble sur lequel sont dfinies deux oprations : une addition et une multipli-
cation.
Dfinition 3

Un corps (K, +, ) est un ensemble K muni des deux oprations + et , qui vrifient :
0. + et sont des lois de composition interne, cest dire x + y K et x y K (pour tout
x, y K).
1. (K, +) est un groupe commutatif, cest--dire :
Il existe 0 K tel que 0 + x = x (pour tout x K).
Pour tout x K il existe x tel que x + ( x) = 0.
+ est associative : (x + y) + z = x + (y + z) (pour tout x, y, z K).
x + y = y + x (pour tout x, y K).
2. (K \ {0}, ) est un groupe commutatif, cest--dire :
Il existe 1 K \ {0} tel que 1 x = x (pour tout x K).
Pour tout x K \ {0}, il existe x1 tel que x x1 = 1.
est associative : (x y) z = x (y z) (pour tout x, y, z K \ {0}).
x y = y x (pour tout x, y K \ {0}).
3. est distributive par rapport + : (x + y) z = x z + y z (pour tout x, y, z K).

Voici des exemples classiques :


Q, R, C sont des corps. Laddition et la multiplication sont les oprations usuelles.
Par contre (Z, +, ) nest pas un corps. (Pourquoi ?)
Voici des exemples qui vont tre importants pour la suite :
p p
Q( 2) = a + b 2 | a, b Q est un corps (avec laddition et la multiplication habituelles des

nombres rels). Voir les exemples introductifs.


Q(i) = a + ib | a, b Q est un corps (avec laddition et la multiplication habituelles des

nombres complexes).
Par contre a + b | a, b Q nest pas un corps (o = 3, 14 . . .). (Cest une consquence du

fait que nest pas un nombre algbrique comme on le verra plus loin.)

La proposition 14 de la premire partie se reformule avec la notion de corps en :


La rgle et le compas 109

Proposition 16

Lensemble des nombre rels constructibles (C R , +, ) est un corps inclus dans R.

On a aussi que (C C , +, ) est un corps inclus dans C.

3.3. Extension de corps


Nous cherchons des propositions qui lient deux corps, lorsque lun est inclus dans lautre. Les
rsultats de ce paragraphe seront admis.

Proposition 17

Soient K, L deux corps avec K L. Alors L est un espace vectoriel sur K.

Dfinition 4

L est appel une extension de K. Si la dimension de cet espace vectoriel est finie, alors on
lappelle le degr de lextension, et on notera :

[L : K] = dimK L.

Si ce degr vaut 2, nous parlerons dune extension quadratique.

Proposition 18

Si K, L, M sont trois corps avec K L M et si les extensions ont un degr fini alors :

[M : K] = [M : L] [L : K].

Exemple 4
p p p p
Q( 2) est une extension de Q. De plus, comme Q( 2) = a + b 2 | a, b Q , alors Q( 2)

p
est un espace vectoriel (sur Q) de dimension 2 : en effet (1, 2) en est une base. Attention :
p p
ici 1 est un vecteur et 2 est un autre vecteur. Le fait que 2 Q se traduit en : ces
deux vecteurs sont linairement indpendants sur Q. Cest un peu droutant au dbut !
C est une extension de degr 2 de R car tout lment de C scrit a + ib. Donc les vecteurs
1 et i forment une base de C, vu comme un espace vectoriel sur R.
p p p p p p p p p
Notons Q( 2, 3) = Q( 2)( 3) = a + b 3 | a, b Q( 2) . Alors Q Q( 2) Q( 2, 3).

p p
Calculer le degr des extensions. Expliciter une base sur Q de Q( 2, 3).

Pour x R, on note Q(x) le plus petit corps contenant Q et x : cest le corps engendr par x. Cest
p
cohrent avec la notation pour les extensions quadratiques Q( ), qui est bien le plus petit corps
p
contenant .
p
3 1
Par exemple, si x = 2 = 2 3 , alors il nest pas dur de calculer que
p
3
n p
3
p
3 2
o
Q( 2) = a + b 2 + c 2 | a, b, c Q .
p 2
En effet Q( 2) contient x, x2 , x3 , . . . mais aussi 1x , x12 , . . . Mais comme x3 = 2 Q et 1x = x2 , alors
3

p
a + bx + cx2 , avec a, b, c Q, engendrent tous les lments de Q(x). Conclusion : [Q( 2) : Q] = 3.
3
110 La rgle et le compas

3.4. Nombre algbrique


Lensemble des nombres algbriques est

Q = x R | il existe P Q[X ] non nul tel que P(x) = 0 .


Proposition 19

Q est un corps.

Dmonstration

Laddition et la multiplication dfinies sur Q sont celles du corps (R, +, ). Ainsi beaucoup de proprits
dcoulent du fait que lensemble des rels est un corps (on parle de sous-corps).
La premire chose que lon doit dmontrer, cest que + et sont des lois de composition interne, cest-
-dire que si x et y sont des nombres rels algbriques alors x + y et x y le sont aussi. Ce sera prouv
dans le corollaire 3.
1. (Q, +) est un groupe commutatif, car :
0 Q (prendre P ( X ) = X ) et 0 + x = x (pour tout x Q).
Si x Q alors x Q (si P ( X ) est un polynme qui annule x alors P ( X ) annule x).
+ est associative : cela dcoule de lassociativit sur R.
x + y = y + x : idem.
2. (Q \ {0}, ) est un groupe commutatif, car :
1 Q \ {0} et 1 x = x (pour tout x Q \ {0}).
Si x Q \ {0} alors x1 Q \ {0} : en effet, si P ( X ) est un polynme de degr n annulant x, alors
X n P ( X1 ) est un polynme annulant 1x .
est associative : cela dcoule de lassociativit sur R \ {0}.
x y = y x : idem.
3. est distributive par rapport + : cela dcoule de la distributivit sur R.

Si x Q est un nombre algbrique, alors le plus petit degr, parmi tous les degrs des polynmes P
Q[X ] tels que P(x) = 0, est le degr algbrique de x. Par exemple, calculons le degr algbrique
p
de 2 : un polynme annulant ce nombre est P(X ) = X 2 2 et il nest pas possible den trouver
p p
de degr 1, donc le degr algbrique de 2 vaut 2. Plus gnralement avec Q est de degr
p p
algbrique gal 1 ou 2 (de degr algbrique 1 si Q, de degr 2 sinon). Par contre 2 est de
3

degr 3, car il est annul par P(X ) = X 3 2 mais pas par des polynmes de degr plus petit.

Proposition 20

1. Soit L une extension finie du corps Q. Si x L, alors x est un nombre algbrique.


2. Si x un nombre algbrique alors Q(x) est une extension finie de Q.
3. Si x est un nombre algbrique alors le degr de lextension [Q(x) : Q] et le degr alg-
brique de x concident.

Dmonstration

1. Soit L une extension finie de Q, et soit n = [L : Q]. Fixons x L. Les n + 1 lments (1, x, x2 , . . . , x n )
forment une famille de n + 1 vecteurs dans un espace vectoriel de dimension n. Donc cette famille
est lie. Il existe donc une combinaison linaire nulle non triviale, cest--dire il existe a i Q non
tous nuls tels que ni=0 a i x i = 0. Si lon dfinit P ( X ) = ni=0 a i X i , alors P ( X ) Q[ X ], P ( X ) nest
P P

pas le polynme nul et P ( x) = 0. Cest exactement dire que x est un nombre algbrique.
La rgle et le compas 111

2. Soit P ( X ) = ni=0 a i X i non nul qui vrifie P ( x) = 0. En cartant le le cas trivial x = 0, on peut donc
P

supposer que a 0 6= 0 et a n 6= 0. Alors x n = a1n ni=01 a i x i et 1x = a10 ni=1 a i x i1 . Ce qui prouve que
P P

x n Vect(1, x, . . . , x n1 ) et 1x Vect(1, x, . . . , x n1 ). De mme pour tout k Z, x k Vect(1, x, . . . , x n1 ),


donc Q( x) Vect(1, x, . . . , x n1 ). Ce qui prouve que Q( x) est un espace vectoriel de dimension finie
sur Q.
3. Ce sont peu prs les mmes arguments. Si m = [Q( x) : Q] alors il existe a i Q non tous nuls
tels que m i
P
i =0 a i x = 0. Donc il existe un polynme non nul de degr m annulant x. Donc le degr
algbrique de x est infrieur ou gal m.
Mais sil existait un polynme P ( X ) = m
P 1 i
i =0 b i X non nul de degr strictement infrieur m qui
Pm1
annulait x, alors nous aurions une combinaison linaire nulle non triviale i=0 b i x i = 0. Cela
impliquerait que x m1 Vect(1, x, . . . , x m2 ) et plus gnralement que Q( x) Vect(1, x, . . . , x m2 ),
ce qui contredirait le fait que Q( x) soit un espace vectoriel de dimension m sur Q.
Bilan : le degr algbrique de x est exactement [Q( x) : Q].

Corollaire 3

Si x et y sont des nombres rels algbriques alors x + y et x y aussi.

Dmonstration

Comme x est un nombre algbrique alors L = Q( x) est une extension finie de K = Q. Posons M =
Q( x, y) = Q( x) ( y). Comme y est un nombre algbrique alors M est une extension finie de Q( x). Par la

proposition 18 M = Q( x, y) est une extension finie de K = Q.


Comme x + y Q( x + y) Q( x, y) et que Q( x, y) est une extension finie de Q alors par la proposition 20,
x + y est un nombre algbrique.
Cest la mme preuve pour x y Q( x y) Q( x, y).

4. Corps et nombres constructibles


Cette partie est la charnire de ce chapitre. Nous expliquons quoi correspondent algbriquement
les oprations gomtriques effectues la rgle et au compas.

4.1. Nombre constructible et extensions quadratiques


Voici le rsultat thorique le plus important de ce chapitre. Cest Pierre-Laurent Wantzel qui a
dmontr ce thorme en 1837, lge de 23 ans.

Thorme 5. Thorme de Wantzel

Un nombre rel x est constructible si et seulement sil existe des extensions quadratiques

Q = K0 K1 K r

telles que x K r .

Chacune des extensions est quadratique, cest--dire [K i+1 : K i ] = 2. Autrement dit, chaque exten-
p
sion est une extension quadratique de la prcdente : K i+1 = K i ( i ) pour un certain i K i . Donc
en partant de K 0 = Q, les extensions sont :
p p p
Q Q( 0 ) Q( 0 )( 1 )
112 La rgle et le compas

Dmonstration

Il y a un sens facile : comme on sait construire les racines carres des nombres constructibles (voir la
proposition 15) alors on sait construire tout lment dune extension quadratique K 1 = Q( 0 ), puis
p

par rcurrence tout lment de K 2 , K 3 ,. . .

Passons au sens difficile. Rappelons-nous que les points constructibles sont construits par tapes C 0 ,
C 1 , C 2 ,. . .
Lensemble C j+1 sobtient partir de C j en ajoutant les intersections des droites et des cercles que lon
peut tracer partir de C j . Nous allons voir que ce passage correspond une extension quadratique.
Soit donc K le plus petit corps contenant les coordonnes des points de C j . Nous considrons P un
point de C j+1 . Ce point P est lintersection de deux objets (deux droites ; une droite et un cercle ; deux
cercles). Distinguons les cas :
P est lintersection de deux droites. Ces droites passent par des points de C j donc elles ont
pour quations ax + b y = c et a0 x + b0 y = c0 et il est important de noter que lon peut prendre
a, b, c, a0 , b0 , c0 comme tant des lments de K . Par exemple une quation de la droite passant
y y
par A ( x A , yA ) et B( xB , yB ) (avec x A , yA , xB , yB K ) est y = xB x A ( x x A ) + yA , ce qui donne bien
B A
une quation coefficients dans K . Les coordonnes de P sont donc

cb0 c0 b ac0 a0 c

, .
ab0 a0 b ab0 a0 b

Comme K est un corps alors labscisse et lordonne de ce P sont encore dans K . Dans ce cas il
ny a pas besoin dextension : le plus petit corps contenant les coordonnes des points de C j et
de P est K .
P appartient lintersection dune droite et dun cercle. Notons lquation de la droite ax + b y = c
avec a, b, c K et ( x x0 )2 + ( y y0 )2 = r 2 lquation du cercle. On note que x0 , y0 , r 2 (mais pas
ncessairement r ) sont des lments de K car les coordonnes du centre et dun point du cercle
sont dans K . Il reste calculer les intersections de la droite et du cercle : en posant

= 2 x0 a3 b y0 + 2 y0 a2 cb b2 y0 2 a2 + b2 r 2 a2 + 2 a3 x0 c a4 x0 2 a2 c2 + a4 r 2 K,

on trouve deux points ( x, y), ( x0 , y0 ) avec

b 1
2 c 2 2
p c ax
x= x 0 ab + y0 a + cb ( a + b )+ et y= ,
a a2 + b 2 b b

b 1 c p c ax0
x0 = 2 2
x0 ab + y0 a2 + cb (a2 + b2 ) et y0 = .
a a +b b b
p
Les coordonnes sont bien de la forme + avec , K et cest le mme K pour x, y, x0 , y0 .
p
Donc les coordonnes de P sont bien dans lextension quadratique K ( ).
P appartient lintersection de deux cercles. On trouve aussi deux points ( x, y), ( x0 , y0 ) et x, y, x0 , y0
p
sont aussi de la forme + pour un certain K fix et , K . Les formules sont plus
longues crire et on se contentera ici de faire un exemple (voir juste aprs).
On pourrait donner un autre argument : lintersection du cercle C centr en O et du cercle C 0
centr en O 0 est aussi lintersection du cercle C avec la mdiatrice de [OO 0 ]. (Exercice : justifier
que cette mdiatrice est constructible sans tendre le corps.) On se ramne donc au cas de
lintersection dun cercle et dune droite.
La rgle et le compas 113

C0

O0
O

En rsum, dans tous les cas, les coordonnes de P sont dans une extension quadratique du corps K ,
qui contient les coefficients qui servent construire P . Par rcurrence, cela donne le rsultat souhait.

Exemple 5

Donnons les extensions ncessaires dans chacun des trois cas de la preuve sur un exemple
concret.
1. P est lintersection de deux droites (AB) et (A 0 B0 ) avec par exemple A(0, 1), B(1, 1),
A 0 (0, 2), B0 (1, 1) dont les coordonnes sont dans K = Q. Les quations sont 2x + y = 1
et 3x y = 2 ; le point dintersection P a pour coordonnes ( 35 , 15 ), donc labscisse et
lordonne sont dans Q. Il ny a pas besoin dtendre le corps.

A B0

A0

2. P et P 0 sont les intersections de la droite passant par A(0, 1) et B(1, 1) et du cercle de


centre A 0 (2, 1) passant par le point B0 (1, 1) (et donc de rayon 3). Les quations sont
alors 2x + y = 1 et (x 2)2 + (y 1)2 = 9. Les deux solutions sont les points :

1 p 1 p 1 p 1 p

2 29 , 1 + 2 29 , 2 + 29 , 1 2 29 .
5 5 5 5

Donc si on pose = 29 (qui est bien un rationnel) alors les coordonnes des points
p
dintersection sont de la forme + (, Q), cest--dire appartiennent lextension
p
quadratique Q( 29).
114 La rgle et le compas

B0 A A0

P0

3. Soient le cercle C ((1, 0), 2) (qui a pour centre A(1, 0) et passe par B(1, 0)) et le cercle
p
C ((2, 1), 5) (qui a pour centre A 0 (2, 1) et passe par B0 (0, 0)). Les quations sont (x + 1)2 +
y2 = 4, (x 2)2 + (y 1)2 = 5. Les deux points dintersection sont :

1 p 3 p 1 p 3 p

7 79 , 3 + 79 , 7 + 79 , 3 79 .
20 20 20 20

Encore une fois, pour le rationnel = 79, les abscisses et ordonnes des points dinter-
p
section sont de la forme + avec , Q ; lextension quadratique qui convient est
p
donc Q( 79).

A0

A
B0 B

P0

4.2. Corollaires
La consquence la plus importante du thorme de Wantzel est donne par lnonc suivant. Cest
ce rsultat que lon utilisera dans la pratique.
La rgle et le compas 115

Corollaire 4

Tout nombre rel constructible est un nombre algbrique dont le degr algbrique est de la
forme 2n , n 0.

Dmonstration

Soit x un nombre constructible. Par le thorme de Wantzel, il existe des extensions quadratiques
Q = K 0 K 1 K r telles que x K r . Donc x appartient une extension de Q de degr fini. Ainsi,
par la proposition 20, x est un nombre algbrique.
On sait de plus que [K i+1 : K i ] = 2, donc par la proposition 18, nous avons [K r : Q] = 2r . Il nous reste en
dduire le degr algbrique [Q( x) : Q]. Comme Q( x) K r , alors nous avons toujours par la proposition
18 que : [K r : Q( x)] [Q( x) : Q] = [K r : Q] = 2r . Donc [Q( x) : Q] divise 2r et est donc de la forme 2n .

Voici une autre application plus thorique du thorme de Wantzel, qui caractrise les nombres
constructibles.

Corollaire 5

C R est le plus petit sous-corps de R stable par racine carre, cest--dire tel que :
p
(x C R et x 0) x C R ,
si K est un autre sous-corps de R stable par racine carre alors C R K.

La preuve est faire en exercice.

5. Applications aux problmes grecs


Nous allons pouvoir rpondre aux problmes de la trisection des angles, de la duplication du
cube et de la quadrature du cercle, tout cela en mme temps ! Il aura fallu prs de 2 000 ans
pour rpondre ces questions. Mais pensez que, pour montrer quune construction est possible,
il suffit de lexhiber (mme si ce nest pas toujours vident). Par contre pour montrer quune
construction nest pas possible, cest compltement diffrent. Ce nest pas parce que personne na
russi une construction quelle nest pas possible ! Ce sont les outils algbriques qui vont permettre
de rsoudre ces problmes gomtriques.
Rappelons le corollaire au thorme de Wantzel, qui va tre la cl pour nos problmes.

Corollaire 6

1. Si un nombre rel x est constructible alors x est un nombre algbrique. Cest--dire quil
existe un polynme P Q[X ] tel que P(x) = 0.
2. De plus le degr algbrique de x est de la forme 2n , n 0. Cest--dire que le plus
petit degr, parmi tous les degrs des polynmes P Q[X ] vrifiant P(x) = 0, est une
puissance de 2.

5.1. Limpossibilit de la duplication du cube


La duplication du cube ne peut pas seffectuer la rgle et au compas.

Cela dcoule du fait suivant :


116 La rgle et le compas

Thorme 6
p
3
2 nest pas un nombre constructible.

Dmonstration
p
3
2 est une racine du polynme P ( X ) = X 3 2. Ce polynme est unitaire et irrductible dans Q[ X ],
p
3
donc 2 est un nombre algbrique de degr 3. Ainsi son degr algbrique nest pas de la forme 2n .
p
3
Bilan : 2 nest pas constructible.

5.2. Limpossibilit de la quadrature du cercle

La quadrature du cercle ne peut pas seffectuer la rgle et au com-


pas.

Cest une reformulation du thorme suivant, d Ferdinand von Lindemann (en 1882) :

Thorme 7

nest pas un nombre algbrique (donc nest pas constructible).

p
Comme nest pas constructible, alors nest pas constructible non plus (cest la contrapose de
x C R = x2 C R ).
Nous ne ferons pas ici la dmonstration que nest pas un nombre algbrique, mais cest une
dmonstration qui nest pas si difficile et abordable en premire anne.

5.3. Limpossibilit de la trisection des angles

La trisection des angles ne peut pas seffectuer la rgle et au com-


pas.

Plus prcisment nous allons exhiber un angle que lon ne peut pas couper en trois.
La rgle et le compas 117

Thorme 8

Langle 3 est constructible mais ne peut pas tre coup en trois car cos 9 nest pas un nombre
constructible.

Bien sr langle 3 est constructible car cos 3 = 12 . La preuve de la non constructibilit de langle 9
fait lobjet dun exercice : cos 9 est un nombre algbrique de degr algbrique 3, donc il nest pas
constructible.


3

9

cos 1 cos
3 =2 9

La trisection nest donc pas possible en gnral, mais attention, pour certains angles particuliers
cest possible : par exemple les angles ou 2 !

Pour aller plus loin voici quelques rfrences :


Thorie des corps. La rgle et le compas. J.-L. Carrega, Hermann, 2001.
Un livre complet sur le sujet !
Nombres constructibles. V. Vassallo, Ph. Royer, IREM de Lille, 2002.
Avec un point de vue pour le collge et le lyce.
Sur les nombres algbriques constructibles la rgle et au compas. A. Chambert-Loir, Gazette
des mathmaticiens 118, 2008.
Vous trouverez dans cet article une rciproque du corollaire au thorme de Wantzel, prouve
de faon lmentaire , cest--dire sans faire usage de la thorie de Galois.

Auteurs

Arnaud Bodin.
Relu par Vianney Combet.
118 La rgle et le compas
Exo7

6 Leons de choses

1 Travailler avec les vidos


2 Alphabet grec
3 crire des mathmatiques : LATEX en cinq minutes
4 Formules de trigonomtrie : sinus, cosinus, tangente
5 Formulaire : trigonomtrie circulaire et hyperbolique
6 Formules de dveloppements limits
7 Formulaire : primitives

Vido partie 2. L'alphabet grec


Vido partie 3. LATEX en cinq minutes
Vido partie 4. Formules de trigonomtrie : sinus, cosinus, tangente
Vido partie 5. Formulaire: trigonomtrie circulaire et hyperbolique
Vido partie 6. Dveloppements limits
Vido partie 7. Primitives

1. Travailler avec les vidos


Les vidos ne remplacent pas les vrais cours. Cependant elle peuvent vous aider pour prparer,
approfondir ou rviser vos connaissances. Nous vous offrons deux outils supplmentaires pour
travailler : les polycopi de cours et les vidos. Voici quelques conseils pour optimiser le visionnage.

1.1. Les vidos


Les deux outils de bases : papier & crayon. Notez les points qui vous chappent pour
pouvoir y revenir plus tard, faites des petits croquis, rsolvez les mini-exercices,... Soyez
actifs devant votre cran !
Limitez-vous : une ou deux vidos daffile cest dj beaucoup de travail. Il vaut mieux
privilgier la rgularit (par exemple une vido de cours par jour et deux vidos dexercices).
Si vous enchanez les vidos comme une sance de cinma, vous oublierez tout au bout de
trois jours.
Profitez des fonctions pause & retour en arrire pour prendre le temps de bien comprendre
les notions, quitte repassez la squence trois fois. Les vidos vont quatre cinq fois plus
vite que la vraie vie : une vido de 15 minutes correspond un cours dune heure, un
exercice corrig en 5 6 minutes en vido serait corrig en une demi-heure en TD.
Il faut du temps et du travail. Les mathmatiques exigent pas mal defforts, mais cela vaut
vraiment le coup. Tout le monde peut russir, il ny a pas besoin dun don spcial ni dtre
un gnie des maths. Cependant ne vous leurrez pas, il y a des notions difficiles : bien sr les
profs et les vidos sont l pour vous aider les surmonter, mais lapprentissage repose avant
tout sur la qualit et la quantit de votre travail personnel.
titre dexemple le chapitre Nombres complexes cest 1h15 de cours en vidos et aussi 1h15
dexercices en vidos. Cela correspond 6 heures de cours dans la ralit et 12 heures de
sances dexercices (sur 2 3 semaines). Pensez aussi que les tudiants, en plus dassister
120 Leons de choses

aux cours et aux td, doivent fournir un travail personnel consquent : une heure de cours
correspond une heure de travail personnel en plus ! Ainsi le chapitre Nombres complexes cest
plus de 30 heures de travail en tout et pas seulement 3 heures de visionnage.
Retenez donc le facteur 10 : Une vido de 12 minutes cest 120 minutes de travail.

1.2. Pour les cours


Il faut :
Recopier le cours au fur et mesure du visionnage : crire permet de mmoriser et dadop-
ter un rythme plus lent que celui de la vido.
Travailler avec le poly qui contient plus de dtails.
Comprendre le cours.
Apprendre le cours. Les dfinitions, les thormes et les propositions doivent tre appris
par cur. Bien sr une notion bien comprise est beaucoup plus facile apprendre !
Faire les mini-exercices.
Faire les fiches dexercices.

1.3. Pour les exercices


Chercher dabord rsoudre lexercice tout seul, sans regarder la correction (ni crite, ni
vido). Chercher demande du temps et de la persvrance. Cela permet de vrifier si lon
connat bien son cours. Les exercices ne sont pas une suite dastuces retenir, mais un moyen
de travailler par vous-mme.
Le lendemain seulement, vous pouvez regarder la correction.
La vido de correction et la correction crite sont complmentaires. tudiez les deux.

1.4. Note aux collgues enseignants


Si vous tes enseignants ces vidos peuvent tre utiles de plusieurs faons :
Vous pouvez proposer les vidos en complments ou en rvision de vos cours.
Vous pouvez les proposer comme complments ou comme sujet dexposs faire par les
tudiants.
Vous pouvez passez une vidos dans vos cours : le support audiovisuel est mieux mmoris
quun cour classique, cela permet en plus de regagner lattention des tudiants en diversifiant
les types dactivits.
Vous pouvez donner vos tudiants tudier seul un chapitre lavance, sur lequel vous
revenez dans votre cours.
Vous trouverez des conseils efficaces dans le livre Enseigner luniversit de Markus Brauer. Si
vous utilisez ces vidos dune faon ou dune autre nous serions ravis davoir un retour de votre
exprience !

1.5. Dautres sources pour travailler


Rien ne remplace un vrai prof dans une vraie salle de cours !

Voici deux livres papiers : Algbre et Analyse de Franois Liret, Dominique Martinais aux ditions
Dunod.
Deux livres qui recouvrent le programme de premire anne.
Adapts aux tudiants de luniversit.
Un peu cher !
Leons de choses 121

Voici un cours de premire anne accessible en ligne : Cours concis de mathmatiques Premire
anne de Pierre Guillot.
Cours concis et complet (370 pages).
Adapt aux tudiants de luniversit.
Gratuit !

Et un livre accessible gratuitement en ligne Cours de mathmatiques Math Sup (attention gros
fichier : 11 Mo) dAlain Soyeur, Franois Capaces, Emmanuel Vieillard-Baron.
Cours trs complet (1200 pages !).
Adapt aux lves des classes prpas.
Gratuit !

2. Alphabet grec

alpha nu
beta xi
gamma o omicron
delta pi
epsilon , % rho
zeta sigma
eta tau
theta upsilon
iota , phi
kappa chi
lambda psi
mu omega

On rencontre aussi nabla , loprateur de drive partielle (dites d rond), et aussi la premire
lettre de lalphabet hbreu aleph .
122 Leons de choses

3. crire des mathmatiques : LATEX en cinq minutes

3.1. Les bases

Pour crire des mathmatiques, il existe un langage pratique et universel, le langage LATEX (pro-
nonc [latek]). Il est utile pour rdiger des textes contenant des formules, mais aussi accept sur
certains blogs et vous permet dcrire des maths dans un courriel ou un texto.

Une formule scrit entre deux dollars $\pi^2$ qui donne 2 ou entre double dollars si lon veut la
centrer sur une nouvelle ligne ; $$\lim u_n = +\infty$$ affichera :

lim u n = +

Dans la suite on omettra les balises dollars.

3.2. Premires commandes

Les exposants sobtiennent avec la commande ^ et les indices avec _ : a2 scrit a^2 ; u n scrit
u_n ; 2i scrit \alpha_i^2. Les accolades { } permettent de grouper du texte : 2^{10} pour 210 ;
a_{i,j} pour a i, j .
Il y a ensuite toute une liste de commandes (qui commencent par \) dont voici les plus utiles :
p
\sqrt racine a \sqrt{a}
p p
1+ 2 \sqrt{1+\sqrt{2}}
p
3
x \sqrt[3]{x}
a
\frac fraction \frac{a}{b}
b
3
\frac{\pi^3}{12}
12
1
\frac{1}{2 + \frac{3}{4}}
2 + 34
1
n \gamma^{\frac{1}{n}}

\lim limite limn+ u n = 0 \lim_{n \to +\infty} u_n = 0

lim x0+ f (x) < \lim_{x \to 0^+} f(x) < \epsilon
n 1
\sum \sum_{i=1}^n \frac{1}{i}
X
somme
i =1 i

\sum_{i \ge 0} a_i


X
ai
i 0
Z b
\int intgrale (t)dt \int_a^b \phi(t) dt
a

3.3. Dautres commandes

Voici dautres commandes, assez naturelles pour les anglophones.


Leons de choses 123

aE a \in E
f :EF f : E \to F
AE A \subset E
+ +\infty
P = Q P \implies Q
a0 a \le 0
P Q P \iff Q
a>0 a > 0
\forall
a1 a \ge 1
\exists
\delta
\cup
\Delta
\cap

3.4. Pour allez plus loin


Il est possible de crer ses propres commandes avec \newcommand. Par exemple avec linstruction
\newcommand{\Rr}{\mathbb{R}}
vous dfinissez une nouvelle commande \Rr qui excutera linstruction \mathbb{R} et affichera
donc R.
Autre exemple, aprs avoir dfini
\newcommand{\monintegrale}{\int_0^{+\infty} \frac{\sin t}{t} dt}
la commande \monintegrale affichera 0 sint t dt.
R +

Pour (beaucoup) plus de dtails, consultez le manuel Une courte ( ?) introduction LATEX.

3.5. Mini-exercices
crire en LATEX toutes ces formules (qui par ailleurs sont vraies !).
p p ab
1. a b = p p
a+ b
+
X 1 2
2. 2
=
n=1 n 6
Z +R
2 p
3. lim e t dt =
R + R
4. > 0 0 (| x x0 | < = | ln(x) ln(x0 )| < )
+
X 1

4 2 1 1

5. k 8k + 1
=
k=0 16 8k + 4 8k + 5 8k + 6
124 Leons de choses

4. Formules de trigonomtrie : sinus, cosinus, tangente

4.1. Le cercle trigonomtrique

(0, 1)
p p
12 , 23 1
2, 2
3

p p p p
22 , 22
2
2 , 2
2
2
2
p 3 3 p
23 , 21 3
90
3 1
2 ,2
4 4
120 60
5
6 135 45 6
150 30

(1, 0) (1, 0)
180 360 2 x

210 330
7 11
6 225 315 6
p 240 300 p
5 7
270

23 , 21 4 4
3 1
2 , 2
4 5
3 3
p p 3 p p
22 , 22 2 2
2 , 2
2

p p
12 , 23 1
2 , 2
3

(0, 1)

Voici le cercle trigonomtrique (de rayon 1), le sens de lecture est linverse du sens des aiguilles
dune montre. Les angles remarquables sont marqus de 0 2 (en radian) et de 0 360 . Les
coordonnes des points correspondant ces angles sont aussi indiques.
Leons de choses 125

T
1

M
sin x
tan x

x
x
O cos x 1

Le point M a pour coordonnes (cos x, sin x). La droite (OM) coupe la droite dquation (x = 1) en T,
lordonne du point T est tan x.

Les formules de base :

cos2 x + sin2 x = 1
cos(x + 2) = cos x
sin(x + 2) = sin x

sin x Nous avons les formules suivantes :

cos( x) = cos x

x cos x sin( x) = sin x


x cos( x)

On retrouve graphiquement ces formules


sin( x) laide du dessin des angles x et x.

Il en est de mme pour les formules suivantes :


cos( + x) = cos x cos( x) = cos x cos( x) = sin x
2

sin( + x) = sin x sin( x) = sin x sin( x) = cos x
2
126 Leons de choses

sin( x) sin x
sin x

cos( + x) + x x
x x
cos x cos( x) cos x

sin( + x)

sin(
2 x)

sin x

2 x
x
cos(
2 x)
cos x


x 0
6 4 3 2

p p
3 2 1
cos x 1 0
2 2 2

p p
1 2 3
sin x 0 1
2 2 2

1 p
tan x 0 p 1 3
3

Valeurs que lon retrouve bien sur le cercle trigonomtrique.

(0, 1) p
1 3
2, 2
p p
2 2
2 2 , 2
3
p
90

3 1
4 2 ,2
60
45
6
30

(1, 0)
0 0
Leons de choses 127

4.2. Les fonctions sinus, cosinus, tangente

La fonction cosinus est priodique de priode 2 et elle paire (donc symtrique par rapport laxe
des ordonnes). La fonction sinus est aussi priodique de priode de 2 mais elle impaire (donc
symtrique par rapport lorigine).

y
+1
cos x

x
sin x
0 2 3

Voici un zoom sur lintervalle [, ].

y
+1

sin x x
0
2 2

1 cos x

Pour tout x nappartenant pas {. . . , 2 , 2 , 32 , 52 , . . .} la tangente est dfinie par

sin x
tan x =
cos x

La fonction x 7 tan x est priodique de priode ; cest une fonction impaire.

y tan x

+1

0 x

2

2
3
2
1
128 Leons de choses

Voici les drives :

cos0 x = sin x
sin0 x = cos x
1
tan0 x = 1 + tan2 x =
cos2 x

4.3. Les formules dadditions

cos(a + b) = cos a cos b sin a sin b


sin(a + b) = sin a cos b + sin b cos a
tan a + tan b
tan(a + b) =
1 tan a tan b

On en dduit immdiatement :

cos(a b) = cos a cos b + sin a sin b


sin(a b) = sin a cos b sin b cos a
tan a tan b
tan(a b) =
1 + tan a tan b

Il est bon de connatre par cur les formules suivantes (faire a = b dans les formules dadditions) :

cos 2a = 2 cos2 a 1
= 1 2 sin2 a
= cos2 a sin2 a
sin 2a = 2 sin a cos a
2 tan a
tan 2a =
1 tan2 a

4.4. Les autres formules


Voici dautres formules qui se dduisent des formules dadditions. Il nest pas ncessaire de les
connatre mais il faut savoir les retrouver en cas de besoin.

1
cos a cos b = cos(a + b) + cos(a b)
2
1
sin a sin b = cos(a b) cos(a + b)
2
1
sin a cos b = sin(a + b) + sin(a b)
2
Leons de choses 129

Les formules prcdentes se reformulent aussi en :


p+q pq
cos p + cos q = 2 cos cos
2 2
p+q pq
cos p cos q = 2 sin sin
2 2
p+q pq
sin p + sin q = 2 sin cos
2 2
pq p+q
sin p sin q = 2 sin cos
2 2

Enfin les formules de la tangente de larc moiti permettent dexprimer sinus, cosinus et tangente
en fonction de tan 2x .

cos x 1 t 2

= 1+ t 2
x
2t
Avec t = tan on a sin x = 1+ t 2
2
2t

tan x

= 1 t 2

Ces formules sont utiles pour le calcul de certaines intgrales par changement de variable, en
2dt
utilisant en plus la relation dx = .
1 + t2

4.5. Mini-exercices
1
1. Montrer que 1 + tan2 x = cos2 x
.
2. Montrer la formule daddition de tan(a + b).
3. Prouver la formule pour cos a cos b.
4. Prouver la formule pour cos p + cos q.
2 tan 2x
5. Prouver la formule : sin x = .
1 + (tan 2x )2
pp
6. Montrer que cos 8 = 21
2 + 2. Calculer cos 16
, cos 32 ,. . .
7. Exprimer cos(3x) en fonction cos x ; sin(3x) en fonction sin x ; tan(3x) en fonction tan x.
130 Leons de choses

5. Formulaire : trigonomtrie circulaire et hyperbolique


Fonctions circulaires et hyperboliques
Proprits trigonomtriques : remplacer cos par ch et sin par i sh.

cos2 x + sin2 x = 1 p+q pq


cos p + cos q = 2 cos cos
2 2
p+q pq
cos p cos q = 2 sin sin
2 2
p+q pq
sin p + sin q = 2 sin cos
cos(a + b) = cos a cos b sin a sin b 2 2
pq p+q
sin(a + b) = sin a cos b + sin b cos a sin p sin q = 2 sin cos
2 2
tan a + tan b
tan(a + b) =
1 tan a tan b

ch2 x sh2 x = 1

cos(a b) = cos a cos b + sin a sin b


ch(a + b) = ch a ch b + sh a sh b
sin(a b) = sin a cos b sin b cos a
tan a tan b sh(a + b) = sh a ch b + sh b ch a
tan(a b) = th a + th b
1 + tan a tan b th(a + b) =
1 + th a th b

cos 2a = 2 cos2 a 1 ch(a b) = ch a ch b sh a sh b


2
= 1 2 sin a sh(a b) = sh a ch b sh b ch a
= cos2 a sin2 a th a th b
th(a b) =
1 th a th b
sin 2a = 2 sin a cos a

2 tan a
tan 2a =
1 tan2 a

ch 2a = 2 ch2 a 1
= 1 + 2 sh2 a
= ch2 a + sh2 a

1 sh 2a = 2 sh a ch a
cos a cos b = cos(a + b) + cos(a b)
2
1 2 th a
sin a sin b = cos(a b) cos(a + b) th 2a =
2 1 + th2 a
1
sin a cos b = sin(a + b) + sin(a b)
2
Leons de choses 131

p+q pq
ch p + ch q = 2 ch ch
2 2
1 p+q pq
ch a ch b = ch(a + b) + ch(a b) ch p ch q = 2 sh sh
2 2 2
1 p+q pq
sh a sh b = ch(a + b) ch(a b) sh p + sh q = 2 sh ch
2 2 2
1 pq p+q
sh a ch b = sh(a + b) + sh(a b) sh p sh q = 2 sh ch
2 2 2
132 Leons de choses


1 t 2 1+ t 2


cos x = 1+ t 2


ch x = 1 t 2
x
2t x
2t
avec t = tan on a sin x = 1+ t 2
avec t = th on a sh x = 1 t 2
2 2
2t 2t

tan x

= th x

=
1 t 2 1+ t 2

Drives : la multiplication par i nest plus valable

cos0 x = sin x ch0 x = sh x


sin0 x = cos x sh0 x = ch x
1 1
tan0 x = 1 + tan2 x = th0 x = 1 th2 x =
cos2 x ch2 x

1 1
Arccos0 x = p (| x| < 1) Argch0 x = p (x > 1)
1 x2 x2 1
1 1
Arcsin0 x = p (| x| < 1) Argsh0 x = p
1 x2 x2 + 1
1 1
Arctan0 x = Argth0 x = (| x| < 1)
1 + x2 1 x2
Leons de choses 133

6. Formules de dveloppements limits


Dveloppements limits usuels (au voisinage de 0)
x x2 xn n xk
ex = 1 + + o(x n ) = + o(x n )
X
+ ++
1! 2! n! k=0 k!

x2 x4 x2 n n x2 k
+ (1)n + o(x2n+1 ) = (1)k + o(x2n+1 )
X
cos x = 1 +
2! 4! (2n)! k=0 (2k)!

x3 x5 x2n+1 n x2k+1
+ (1)n + o(x2n+2 ) = (1)k + o(x2n+2 )
X
sin x = x +
3! 5! (2n + 1)! k=0 (2k + 1)!

x3 2 5 17 7
tan x = x + + x + x + o(x8 )
3 15 315

x2 x4 x2 n n x2 k
+ o(x2n+1 ) = + o(x2n+1 )
X
ch x = 1 + + ++
2! 4! (2n)! k=0 (2k)!

x3 x5 x2n+1 n x2k+1
+ o(x2n+2 ) = + o(x2n+2 )
X
sh x = x + + ++
3! 5! (2n + 1)! k=0 (2k + 1)!

x3 2 5 17 7
th x = x + x x + o(x8 )
3 15 315

x2 x3 xn n xk
+ (1)n1 + o(x n ) = (1)k+1 + o(x n )
X
ln (1 + x) = x +
2 3 n k=1 k

!
( 1) ( 1) ( n + 1) n
n n
2
x k + o(x n )
X
(1 + x) = 1 + x + x ++ x + o(x ) =
2! n! k=0 k

1 n
= 1 x + x2 + (1)n x n + o(x n ) = (1)k x k + o(x n )
X
1+ x k=0

1 n
= 1 + x + x2 + + x n + o(x n ) = x k + o(x n )
X
1 x k=0

p x 1 1 1 3 5 (2n 3) n
1 + x = 1 + x2 + (1)n1 x + o(x n )
2 8 2n n!
1 x 3 1 3 5 (2n 1) n
p = 1 + x2 + (1)n x + o(x n )
1+ x 2 8 2n n!

1 x3 1 3 x5 1 3 5 (2n 1) x2n+1
arccos x = x + o(x2n+2 )
2 2 3 24 5 2 4 6 (2n) 2n + 1

1 x3 1 3 x5 1 3 5 (2n 1) x2n+1
arcsin x = x + + ++ + o(x2n+2 )
2 3 24 5 2 4 6 (2n) 2n + 1

x3 x5 x2n+1
arctan x = x + + + (1)n + o(x2n+2 )
3 5 2n + 1
134 Leons de choses

7. Formulaire : primitives
Primitives usuelles
C dsigne une constante arbitraire. Les intervalles sont prciser.

e t
Z
e t dt = +C ( C )

t+1 dt
Z Z
= ln | t| + C
t dt = +C ( 6= 1)
+1 t

dt 1 1 + t
Z
dt
Z
= ln +C
= Arctan t + C 1 t2 2 1 t
1 + t2
dt
Z p
p = ln t + t2 + + C

Z
dt t2 +
p = Arcsin t + C
1 t2
Z
ch t dt = sh t + C
Z
cos t dt = sin t + C Z
sh t dt = ch t + C
Z
sin t dt = cos t + C Z
dt
= th t + C
ch2 t
dt
Z
= tan t + C
cos2 t dt
Z
= coth t + C
sh2 t
dt
Z
= cotan t + C
sin2 t dt
Z
= 2Arctan e t + C
Z
dt



t
ch t
= ln tan + + C
cos t 2 4
dt t
Z

Z
dt

t = ln th + C

sh t 2

= ln tan + C

sin t 2
Z
th t dt = ln (ch t) + C
Z
tan t dt = ln |cos t| + C
Z Z
cotan t dt = ln |sin t| + C coth t dt = ln |sh t| + C

Les auteurs
Les auteurs des chapitres sont cits la fin de chaque chapitre.

Les exercices en vidos sont de Arnaud Bodin et La Blanc-Centi (universit Lille 1).

La musique du gnrique est de Victor Fleurant.