Centrale 2018 Python
Centrale 2018 Python
Algèbre et géométrie
∑
n ( )
P n,i = (1 − X )i (1 + X )n−i = βn,i , j X j et M n = βn,i , j ∈ M n+1 (R).
0Éi , j Én
j =0
a) Écrire une fonction Python qui calcule P n,i . Écrire une fonction Python qui calculer M n . Calculer M n2 pour différentes valeurs de n. Que
peut-on conjecturer ?
1−x
b) Soit x 0 ∈ R\{−1} et Un (x 0 ) = t (1, x 0 , . . . , x 0n ). Montrer que M n Un (x 0 ) = (1+ x 0 )n Un (y 0 ) où y 0 = 1 + x 0 . En déduire que M n2 = 2n I n+1 . Peut-on
0
conclure que M n est diagonalisable ?
( )
. On pose x i = i et y i = 1 − i pour i ∈ J0 ; n K. Montrer
j
c) Pour x = (x 0 , . . . , x n ) ∈ Rn+1 , on définit la matrice de Vandermonde Vn (x) = x i
0Éi , j Én 1+i
que
(−2)n(n+1)/2
det(Vn (y)) = detVn (x).
(n + 1)!n
1
Analyse/Algèbre/Probabilités Centrale Python
b) Écrire un programme Python qui calcule les X k puis les afficher pour X = t (1, 0, 0) avec A et B précédemment donnés. Conjecture ?
c) Montrer que X k = (I −1 −1
( n − D A)X)k−1 + D B où D est la matrice diagonale de diagonale (a 11 , a 22 , . . . , a nn ).
1 ∑
On pose g = max |a i k | . On note ∥X ∥ = max(|x 1 |, . . . , |x n |).
1Éi Én a i i k̸=i
° ° ° °
d) Montrer que ° X k+1 − X k ° É g ° X k − X k−1 ° . En déduire que la suite (X k ) converge et prouver la conjecture.
e) Écrire un programme qui donne la solution de AX = B à ε près.
2
Analyse/Algèbre/Probabilités Centrale Python
et
0 si n est divisible par le carré d’un nombre premier
µ(n) = (−1)k si n est le produit de k nombres premiers distincts
1 si n = 1
Montrer que ces quatre fonctions sont multiplicatives.
c) Programmer en Python ces fonctions.
∑
d) On note M l’ensemble des fonctions multiplicatives non nulles. Pour f , g ∈ M, on définit f ∗ g : n 7→ f (d )g (n/d ). On admet que M est
d |n
un groupe abélien. Soit e : N∗ → C telle que e(n) = δn1 et 1 : n 7→ 1. Montrer que e est l’élément neutre de M et que 1 ∗ µ = e.
∑
e) Soit H ∈ M. On définit h : N∗ → C par h(n) = H (d ). Montrer que H = µ ∗ h. Expliciter cette relation lorsque H = φ.
d |n
( ) ( )
f) Soit f ∈ M, F = µ ∗ f et M = f (i ∧ j ) 1Éi , j Én ∈ M n (C). On pose D la matrice diagonale de diagonale (F (1), . . . , F (n)) et A = 1i | j . Calculer
t AD A et en déduire det M . Calculer det M pour f = Id, f = σ et f = τ.
Analyse
3
Analyse/Algèbre/Probabilités Centrale Python
[ ¯ tn ° °
∀n ∈ N, x, y ∈ E , t ∈ [0, T ], ϕn (x)(t ) − ϕn (y)(t )¯ É °x − y ° .
∞
n!
c) Avec les notations précédentes, soit x ∈ E , montrer que (ϕn (x)) converge uniformément vers un élément z de E et que z vérifie les propriétés
de x a .
4
Analyse/Algèbre/Probabilités Centrale Python
+∞
∑ tr (A k ) ∫ 1 ′
P A (t )
=− dt,
k=1 k 0 P A (t )
lorsque P A (X ) = X n χ A (1/X ).
∑ tr (A k )
c) On suppose que converge. Montrer que ρ(A) É 1 et que 1 n’est pas valeur propre de A. En déduire le résultat cherché.
k
5
Analyse/Algèbre/Probabilités Centrale Python
Probas
∑ h définie sur [0, 1] par h(x) = −x ln x si x > 0 et h(0) = 0. Soit X une variable aléatoire réelle. On définit l’entropie de X par H (X ) =
Soit
h(P (X = x)) (si la famille est sommable).
x∈X (Ω)
a) i) Écrire une fonction entropie(p) qui renvoie le couple (e, d ) avec e = H (X ) et d = e − ln n où n est le nombre de valeurs prises par X et
p est la liste des probabilités correspondantes.
ii) Écrire une fonction loibin(n,p) et loiuni(N) qui renvoie respectivement la liste des probabilités d’une variable aléatoire suivant
respectivement les lois B(n, p) et U ({0, . . . , N }).
iii) Calculer H (X ) pour X ,→ B(15, 2/5) puis lorsque X ,→ U ({0, . . . , 15}).
iv) Montrer que tout variable aléatoire prenant un nombre fini de valeurs admet une entropie avec 0 É H (x) É ln n.
v) Caractériser les cas d’égalité.
b) On considère une urne avec une boule noire et une boule rouge. On tire une boule. Si elle est rouge, on s’arrête ; sinon on la remet dans
l’urne avec une autre boule noire et l’on recommence. On note X le nombre de tirages, avec X = 0 si l’on n’obtient jamais de boule rouge.
La variable aléatoire X admet-elle une espérance ? une entropie ?
( )
1 1
c) Pour n Ê 2, on pose P (X = n) = ln 2 − . Montrer que l’on définit bien une loi. La variable aléatoire X admet-elle une espé-
ln n ln(n + 1)
rance ? une entropie ?
6
Analyse/Algèbre/Probabilités Centrale Python
7
Analyse/Algèbre/Probabilités Centrale Python
8
Analyse/Algèbre/Probabilités Centrale Python
Solutions
Exercice 1
a) Soient T1 et T2 deux polynômes et λ ∈ C. On écrit les divisions euclidiennes T1 P ′ = Q 1 P + R 1 et T2 P ′ = Q 2 P + R 2 avec R 1 et R 2 de degré au plus
n−1. On a alors (T1 +λT2 ) = (Q 1 +λT2 )P +(R 1 +λR 2 ) avec deg(R 1 +λR 2 ) É n−1. On a ainsi ΦP (T1 +λT2 ) = R 1 +λR 2 et par définition, R 1 = ΦP (T1 )
et R 2 = ΦP (T2 ). On a bien ΦP (T1 + λT2 ) = ΦP (T1 ) + λΦP (T2 ). Évidemment, ΦP est à valeurs dans Cn−1 [X ] et ΦP est un endomorphisme de
Cn−1 [X ].
b)
1 from numpy . polynomial import Polynomial
2 import numpy as np
3
4 def det_matrice ( P ) :
5 n = P . degree ()
6 X = Polynomial ([0 ,1])
7 Pprime = P . deriv ()
8 Xn = 1
9 A = np . zeros (( n , n ) )
10 for i in range ( n ) :
11 Q = ( Xn * Pprime ) % P
12 A [: len ( Q ) ,i ]= Q . coef
13 Xn = Xn * X # permet d ’ avoir les puissances de X
14 return np . linalg . det ( A )
c) Différentes options : effectuer la division euclidienne en évaluant en les différents λi mais cela semble compliqué ; on peut chercher à diago-
naliser en résolvant T P ′ %P = λT , c’est à dire trouver T tel que T (P ′ − λ) soit multiple de P (pour des raisons de degré, on se rend compte que
l’une des racines de P doit être racine de P ′ − λ, ce qui donne λ = P ′ (λi ) et on trouve alors un polynôme propre pour chacune des n valeurs
propres P ′ (λi ). On peut enfin effectuer les calculs dans la base la plus raisonnable qui soit vu le problème, c’est-à-dire la base de Lagrange.
∑
n
Soit (L 1 , . . . , L n ) la base de Lagrange associée aux racines λ1 , . . . , λn . Pour i ∈ J1 ; n K, on a L i P ′ = Q i P + R i où R i = α(ij ) L j . En évaluant en λk ,
j =1
on obtient L i (λk )P ′ (λk ) = α(i
k
)
. Finalement les α(ij ) sont tous nuls sauf α(i
i
)
= P ′ (λi ). On a finalement obtenu ΦP (L i ) = P ′ (λi )L i (on retrouve
∏
n
les résultats envisagés au dessus). L’application ΦP est diagonalisable et son déterminant est d = P ′ (λk ).
k=1
d) Si P est à racines simples alors ΦP est inversible. Supposons que P admette une racine double λ : on a P = (X − λ)2Q 1 et P ′ = (X − λ)Q 2 . On
cherche T tel que ΦP (T ) = 0 soit T de degré au plus n − 1 et tel que T P ′ soit divisible par P . On choisit T = (X − λ)Q 1 , il est de degré n − 1 et
T P ′ = (X − λ)2Q 1Q 2 = PQ 2 donc ΦP (T ) = 0 sans que T soit nul. L’application ΦP est inversible si et seulement si P est à racines simples.
Exercice 2
a)
1 from numpy . polynomial import Polynomial
2 import numpy as np
3
4 def Mat ( n ) :
5 A = np . zeros (( n +1 , n +1) )
6 X = Polynomial ([0 ,1])
7 for i in range ( n +1) :
8 P = (1 - X ) ** i *(1+ X ) **( n - i )
9 A [: , i ]= P . coef
10 return A
11
12 for n in range (2 ,10) :
13 M = Mat ( n )
14 print (n , np . dot (M , M ) )
Les calculs semblent montrer que M n2 = 2n I n .
b) On peut évidemment effectuer les calculs brutalement, ça passe sans soucis : le terme en ligne i de M n Un (x 0 ) (avec i allant de 0 à n) est
( )
∑
n 1 − x0 i
βn,i , j x 0i = P n,i (x 0 ) = (1 − x 0 )i (1 + x 0 )n−i = (1 + x 0 )n = (1 + x 0 )n y 0i .
j =0 1 + x0
9
Analyse/Algèbre/Probabilités Centrale Python
1+ j −i −i j −1−i + j +i j 2( j − i ) xi − x j
c) On a y i − y j = =− . On calcule alors le déterminant de Vandermonde (la taille est n + 1, le
(1 + i )(1 + j ) (1 + i )(1 + j ) (1 + i )(1 + j )
nombre de terme est (n + 1)n ):
2
( )
∏ ∏ xi − x j 1
detVn (y) = (y i − y j ) = − = (−2)(n(n+1)/2 ∏ ,
i>j i>j (1 + i )(1 + j ) (1 + i )(1 + j )
i>j
avec
∏ ∏ −1
n i∏ n (
∏ )
(1 + i )(1 + j ) = (1 + i )(1 + j ) = (1 + i )i i !
i>j i =1 j =0 i =1
∏ ∏
qui n’est pas immédiat. Pour des raisons de symétrie, on a (1 + i )(1 + j ) = (1 + i )(1 + j ) = P . On calcule alors
nÊi > j Ê0 nÊ j >i Ê0
∏
n ∏
n n (
∏ )
(1 + i )(1 + j ) = (1 + i )n+1 (n + 1)! = (n + 1)!n+1 (n + 1)!n+1 , = ((n + 1)!)2n+2 ,
i =0 j =0 i =0
∏
n
et ce terme est aussi P 2 (1 + i )(1 + i ) = (n + 1)!2 P 2 . On a P 2 = ((n + 1)!)2n , et puisque P > 0, on en déduit que P = ((n + 1)!)n . Cela donne la
i =0
relation.
d) On calcule M n Vn (x) = Wn . La colonne i (entre 0 et n) de Wn est (1 + x i )n = (1 + i )n fois la colonne i de Vn (y). On en déduit alors
det(M n Vn (x)) = det(M n ) det(Vn (x)) = 1n 2n . . . (n + 1)n det(Vn (y)) = ((n + 1)!)n detVn (y),
et avec la question précédente (puisque Vn (x) est de déterminant non nul), on obtient det M n = (−2)n(n+1)/2 . Les deux réels 2n/2 et −2n/2 sont
valeurs propres (et la parité du nombre de −2n/2 est celle de (−1)n(n+1)/2 .
Exercice 3
p
a) On parcourt les entiers de 2 à n et on teste si n est divisible :
1 def prem ( n ) :
2 d = 2
3 while d * d <= n :
4 if n % d == 0:
5 return False
6 d += 1
7 return True
b)
1 def piprime ( n ) :
2 k = 0
3 for p in range (2 , n + 1) :
4 if prem ( p ) :
5 k += 1
6 return k
On peut évidemment programmer un crible d’Eratosthène pour accéler un peu tout cela (enfin après c’est la taille de la liste qui devient le
facteur limitant).
c)
1 for n in [10** k for k in range (1 , 7) ]:
2 print ( n / piprime ( n ) )
Il semble quen est de limite infinie (ou l’inverse est de limite nulle)... enfin difficile de dire cela à cette vitesse
π(n)
d) L’inégalité donne n Ê ln n donc la limite est bien infinie.
π(n) 2 ln 2
e) On a n = kπ(n) qui donne n É 2k ln 2 n soit ln n É 2k ln 2 et n É 22k .
ln
f)
1 def solution () :
2 L = []
3 for n in range (2 ,2**11+1) :
4 if 2* n ==11* piprime ( n ) :
5 L . append ( n )
6 return L
et en évaluant, on trouve
[561 , 583 , 594 , 605 , 616 , 627 , 649 , 660]
10
Analyse/Algèbre/Probabilités Centrale Python
g) Si n ∈ F k , on obtient la même majoration qu’au dessus donc F k est fini. De plus 2 ∈ F k puisque k est un entier supérieur ou égal à 2 (π(2) = 1
et 2 É k). Soit N le maximum de F k (il existe donc). On a N É kπ(N ) et N + 1 > kπ(N + 1). Supposons que N ne soit pas dans E k - on a alors
n < kπ(n). On envisage deux situations :
• N + 1 n’est pas premier : π(N + 1) = π(N ). On obtient N < kπ(N ) < N + 1 impossible pour des entiers.
• N + 1 est premier : π(N + 1) = π(N ) + 1. On obtient N < kπ(N ) < N + 1 − k encore plus impossible.
Dans tous les cas, on a une contradiction. Ainsi N ∈ E k .
Exercice 4
a)
1 import numpy as np
2 import numpy . linalg as alg
3
4 def tournoi ( n ) :
5 A = np . zeros (( n , n ) )
6 for i in range ( n ) :
7 for j in range ( i ) :
8 t = np . random . rand ()
9 if t < 0.5:
10 A [i , j ] = 1
11 A [j , i ] = -1
12 else :
13 A [i , j ] = -1
14 A [j , i ] = 1
15 return A
b)
1 for n in range (3 ,8) :
2 print ( " n = " ,n )
3 for i in range (10) :
4 print ( alg . det ( tournoi ( n ) ) , end = " " )
5 print ()
Les déterminants semblent nuls lorsque n est impair et un entier (impair) au carré lorsque n est pair.
c) Une matrice de tournoi est antisymétrique, donc det(A) = det(−t A) = (−1)n det(A). Si n est impair, on a donc det(A) = 0.
d)
i) Avec les opérations C 1 ← C 1 −C 2 − · · · − C n puis C j ← C j −C 1 , on trouve que det(J n − I n ) = (−1)n−1 (n − 1).
ii) On travaille dans Z/2Z. Puisque le déterminant est une somme de produit des coefficients et que la congruence modulo 2 est compatible
avec ces deux opérations, on a det M ≡ det N [2].
iii) Les coefficients de A − (J n − I n ) sont tous pairs, donc det A = det(J n − I n ) modulo 2 donc vaut 1. Le déterminant est un entier impair...
visiblement on n’aura pas mieux ainsi. Peut-être est-ce le résultat attentu (ou pas ?)
Exercice 5
( )
cos θ − sin θ
a) On choisit Ω une matrice de rotation : Ω = . On effectue le produit t ΩAΩ. L’égalité des éléments diagonaux donne la relation
sin θ cos θ
c) On note φ : Ω 7→ t ΩAΩ. Cette application est continue sur M n (R) (produit, transposition). Puisque O n (R) est compact, Γ = φ(O n (R)) est com-
pact.
11
Analyse/Algèbre/Probabilités Centrale Python
x + y + |x − y|
d) On commence par montrer que f est continue sur M n (R). Pour deux réels sup(x, y) = 2 si bien que sup est continue sur R2 . Par
récurrence, en utilisant le fait que sup(x 1 , . . . , x n+1 ) = sup(sup(x 1 , . . . , x n ), x n+1 ), on montre que (x 1 , . . . , x n ) 7→ sup(x 1 , . . . , x n ) est continue sur
2
Rn . L’application M 7→ (|M i i − M j j |)i , j ∈J1 ;n K est continue sur M n (R) dans Rn . Finalement par composition f est continue sur M n (R). Puisque
Γ est compact, f admet un minimum sur Γ et celui ci est atteint sur Γ.
e) Soit M une matrice en laquelle le minimum de f est atteint. On suppose que f (M ) > 0. Il existe alors i ̸= j tel que M i i ̸= M j j . On considère
alors Ω la matrice de O n (R) qui correspond à la matrice dans la base canonique (e 1 , . . . , e n ) de Rn ) de la rotation d’angle θ dans le plan (e i , e j )
(et qui laisse les autres vecteurs de la base). Les calculs de t ΩM Ω se font comme dans la question 1. Pour s’en convaincre, on peut effectuer les
calculs dans la base (e i , e j , ...). On a
( ) ( ) ( t tR B )
Rθ (0) A B R θ Aθ θ
Ω′ = , A′ = , et t Ω′ A ′ Ω′ =
(0) I n−2 C D C Rθ D
En revenant à la base de départ, on permute les éléments diagonaux mais sans changer leurs valeurs (en revanche pour les autres coefficients,
c’est autre chose). En choisissant θ comme dans la question 1, on peut trouver θ de sorte que les termes de M ′ = t ΩM Ω soient égaux.
On croit avoir terminé... mais non... on a est parti de M avec une certaine diagonale, on l’a transformé en M ′ qui permet de changer deux
éléments diagonaux (et les égaler) mais on a changé plein d’autres termes |M kk − M i i |. On va légérement changer le départ : on ordonne
les éléments diagonaux de M : α1 É α2 É . . . É αn avec α1 < αn . On effectue alors le travail précédent. On a fait augmenter strictement α1 et
diminuer strictement αn . Il se pourrait qu’il y ait plusieurs fois la valeur α1 et/ou αn mais un nombre fini de fois. On réitère alors cela (moins de
n/2 fois afin d’avoir des termes diagonaux tous strictement entre α1 et αn . On obtient ainsi une nouvelle matrice N de Γ telle que f (N ) < f (M )
et enfin une contradiction.
Exercice 6
a)
1 import numpy as np
2 import matplotlib . pyplot as plt
3 import scipy . optimize as resol
4
5 def R (n , x ) :
6 S = 0
7 for k in range ( n +1) :
8 S += 1/( x - k )
9 return S
10
11 def trace ( n ) :
12 X = np . linspace ( -4 , 8 , num =1001)
13 Y = [ R (n , x ) for x in X ]
14 plt . plot (X , Y )
15 plt . ylim = [ -5 , 5]
16 plt . grid ()
17 plt . show ()
∑
n 1
b) i) Puisque R n′ (x) = − < 0 sur ]k, k + 1[, R n est strictement décroissante et comme lim R n (x) = +∞, et lim R n (x) = −∞, elle
i =0 (x − i )2 x→k + x→(k+1)−
admet un unique zéro a n,k dans cet intervalle.
ii) On procède par dichotomie pour trouver une valeur approchée de a n,k :
1 def A (n , k , eps ) :
2 """ utilisation de dichotomie """
3 g = k
4 d = k + 1
5 m = (g + d) / 2
6 while (d - g ) > eps :
7 if R (n , m ) > 0:
8 g = m
9 else :
10 d = m
11 m = ( g + d ) /2
12 return m
On peut également utiliser la fonction fsolve du module scipy, qui ne marche que pour une fonction d’une variable :
1 def a (n , k ) :
2 def Rn ( x ) :
3 return R (n , x )
4 a = resol . fsolve ( Rn , k + 0.5)
5 return a [0]
iii)
1 , R (a ) − R
c) Puisque R n (x) − R n−1 (x) = x − 1
n−1 (a n,k ) = a < 0, donc R n−1 (a n,k ) > 0 et par conséquent a n,k É a n−1,k . La suite (a n,k )
n n n,k n,k − n
est donc décroissante et minorée par k, elle converge.
12
Analyse/Algèbre/Probabilités Centrale Python
1 ∑
k−1 1 ∑
n 1 ∑ 1
k−1
d) Puisque =− + et que a n,k → k, A n → = C et puisque k É a n,k É k + 1,
a n,k − k − −
a
i =0 n,k i i =k+1 i a n,k i =0 l − i
| {z } | {z }
An Bn
∑
n 1 1 ∑
n 1
É Bn É + .
i =k+1 i − k k + 1 − a n,k i =k+2 i − (k + 1)
13
Analyse/Algèbre/Probabilités Centrale Python
et
>>> [ b ( n ) for n in range (2 ,11) ]
[1.6180339887498949 ,
4.6457513110645881 ,
12.708203932499371 ,
33.71191447805851 ,
88.721359549995782 ,
232.72189169131909 ,
609.72327892872136 ,
1596.7233563631401 ,
41 8 0 . 7 2 3 5 5 8 9 6 2 3 0 3 3 ]
p
On se rend compte que b n à l’air géométrique, de raison ρ 2 où ρ est le nombre d’or ρ = 1 +2 5 (on sait que F n s’exprime avec ρ n et ρ −n ).
• d’après le cours (un peu hors programme), on a βn = max{t X A n X , ∥X ∥ = 1} et αn = min{t X A n X , ∥X ∥ = 1}.
( )
Xn
• lorsque X décrit l’ensemble des vecteurs unitaires de taille n, alors le vecteur de taille n + 1, X n+1 = est un vecteur unitaire de taille
0
n + 1. Un calcul simple donne t X n+1 A n+1 X n+1 = t X A n X et en prenant X qui maximise la quantité de droite βn+1 Ê t X n+1 A n+1 X n+1 =
t X A X = β . La suite β est croissante. De même α est décroissante.
n n n n
• On a αn + βn = tr (A n ) = F 0 + F 2 + . . . + F 2n−2 . Or
Une récurrence simple montre que cette somme vaut F 2n−1 − 1 et finalement αn + βn = F 2n−1 − 1. Ainsi lim αn + βn = +∞.
n→+∞
• Si on montre que αn est minorée et donc convergente, on a aura obtenu en même temps que βn ∼ F 2n−1 .
• Puisque αn < 0, on a βn + αn É βn et on en déduit facilement que βn tend vers +∞.
Exercice 9
a) On utilise la relation a ∧ b = b ∧ r si r est le reste de la division euclidienne de a par b avec b ∧ r = b lorsque r = 0 (dernier reste non nul). On a
le choix entre une version récursive ou non
1 def pgcd (a , b ) :
2 while b >0:
3 a,b = b, a%b
4 return a
5
6 def pgcd (a , b ) :
7 if b ==0:
8 return a
9 else :
10 return pgcd (b , a % b )
b) • Fonction φ : on peut le faire à partir du lemme chinois comme dans le cours (φ(n) est le nombre d’inversibles dans Z/n Z). L’application
{
Z/(mn)Z → Z/n Z × Z/m Z
θ:
x mn 7 → (x n , x m )
où x p désigne la classe de x dans Z/p Z, est un isomorphisme d’anneaux (le second est l’anneau produit avec les lois composante par
composante) : elle est bien définie, on a θ(x + y) = θ(x) + θ(y) et θ(x y) = θ(x)θ(y) ainsi que θ(1) = (1, 1) unité de l’anneau produit. Par le
lemme de Gauss, l’application est injective (si m ∧ n = 1) et donc bijective avec les cardinaux. Si x ∈ J1 ; mn K, alors x est premier avec mn si
et seulement si x est inversible dans Z/(mn)Z. Ces inversibles sont en bijection avec les couples (y, z) où y inversible dans Z/n Z et z dans
Z/m Z. On a bien φ(mn) = φ(m)φ(n) si m ∧ n = 1.
∏k
α ∏k
β
• Fonction τ : on peut le faire avec une décomposition en facteurs premiers : m = p i i , les diviseurs de m sont les nombres p i i avec
i =1 i =1
∏
k ∏
l γj
βi ∈ J1 ; αi K et il y en a (1 + αi ). Idem avec n = q j . Puisque m et n sont premiers entre eux, x divise mn si et seulement si x s’écrit
i =1 j =1
∏
k α′ ∏l γ′j
x= pi i qj ,
i =1 j =1
14
Analyse/Algèbre/Probabilités Centrale Python
∏
k ∏
l
avec les conditions précédentes. On obtient (1 + αi ) (1 + γ j ) diviseurs. Cela donne τ(mn) = τ(m)τ(n) si m ∧ n = 1.
i =1 j =1
On peut également considérer x ∈ J1 ; mn K diviseur de mn et vérifier que x = pq avec p ∧ q = 1 et p et q diviseurs quelconques de m et n
sans passer par une décomposition en facteurs premiers. On suppose que x|(mn) et on note g = m ∧ x. On a alors x = g x ′ et m = g m ′ avec
m ′ ∧ x ′ = 1, ainsi que x ′ |(m ′ n) puisque x ′ et m ′ sont premiers entre eux, x ′ divise n. On a bien x = g x ′ avec g diviseur de m et d ′ diviseur de
n. Puisque m et n sont premiers entre eux, g et x ′ le sont aussi. Réciproquement toutes ces décompositions conviennent. Cela redonne le
résultat.
• Fonction σ. On note D n l’ensemble des diviseurs de n. La question précédente montre que d |(mn) si et seulement si d = d 1 d 2 avec d 1 |m
et d 2 |n, ou, dans l’autre sens,
D mn = {d 1 d 2 , (d 1 , d 2 ) ∈ D m × D n } .
( )( )
∑ ∑ ∑
Cela donne σ(mn) = d1 d2 = d1 d 2 = σ(m)σ(n).
(d 1 ,d 2 )∈D m ×D n d 1 ∈D m d 2 ∈D n
• Fonction µ : m et n n’ont aucun facteur premier commun ainsi mn a un facteur premier multiple si et seulement m ou n en a. Ainsi
µ(mn) = 0 si et seulement si µ(m) = 0 ou µ(n) = 0. Lorsque µ(m) et µ(n) sont non nuls, alors mn est produit de µ(m) + µ(n) facteurs
premiers distincts et µ(mn) = µ(m)µ(n). On obtient bien µ(mn) = µ(m)µ(n) dans toutes les situations.
c) C’est assez simple pour les 3 premières
1 def phi ( n ) :
2 k = 0
3 for x in range (1 , n ) :
4 if pgcd (x , n ) ==1:
5 k +=1
6 return ( k )
7
8 def tau ( n ) :
9 k = 0
10 for x in range (1 , n +1) :
11 if n % x ==0:
12 k +=1
13 return k
14
15 def sigma ( n ) :
16 k = 0
17 for x in range (1 , n +1) :
18 if n % x ==0:
19 k += x
20 return k
et un peu plus subtil si on ne veut pas trop calculer pour la quatrième
1 def mu ( n ) :
2 if n ==1:
3 return 1
4 k = 1
5 for x in range (2 , n +1) :
6 # on parcourt tous les entiers
7 if n % x ==0:
8 # x est un diviseur de n
9 # c ’ est forcément un facteur premier car on a simplifié par les facteurs
10 # premiers simples précédents et retourné 0 si on a rencontré un facteur multiple
11 n = n // x
12 if n % x ==0:
13 # facteur double , on renvoie 0
14 return 0
15 else :
16 # facteur simple , on multiplie k par -1
17 k =-k
18 return k
∑
d) On a f ∗ e(n) = f (d )e(n/d ). Le seule terme restant est pour d = n afin d’avoir e(1) = 1 et ainsi f ∗ e(n) = f (n) pour tout entier n. On a bien
d |n
f ∗ e = f . On a également ∑ ∑
1 ∗ µ(n) = µ ∗ 1(n) = µ(d )1(n/d ) = µ(d ),
d |n d |n
∏
k
α
On a (1 ∗ µ)(1) = 1 (si on prend la convention que µ(1) = 1). Soit n différent de 1 et sa décomposition en facteurs premiers n = p i i . On
i =1
∏
k
ε ∏
k ∏
k−1
considère uniquement les diviseurs de n avec des facteurs simples : d = p i i avec εi = ±1. On note alors d 1 = p i et d 2 = p i avec
i =1 i =1 i =1
d 2 = 1 si k = 1. On a ainsi
∑ ∑ ∑ ∑ ∑ ∑ ∑ ∑
µ(d ) = µ(d ) = µ(d ) + µ(d .p k ) = µ(d ) + µ(d )µ(p k ) = µ(d ) − µ(d ) = 0.
d |n d |d 1 d |d 2 d |d 2 d |d 2 d |d 2 d |d 2 d |d 2
15
Analyse/Algèbre/Probabilités Centrale Python
∏
d
α ∏
d
α
si on connait ces valeurs alors, pour n se décomposant en n = p i i , on a f (n) = f (p i i ). Soit p un nombre premier et k ∈ N∗ . On prend
i =1 i =1
∑
k
j
n = p k . Les diviseurs de n sont les p j avec j ∈ J0 ; k K. On a alors (1∗µ)(p k ) = µ(p ) = µ(1)+µ(p)+0 = 1−1 = 0. Ainsi (1∗µ) est nulle sur tous
j =0
les p k avec k ̸= 0. On en déduit que pour tout n ∈ N∗ , (1 ∗ µ)(n) = 0.
∑
e) On a h(n) = (1∗H )(n) d’où h = 1∗H et ainsi µ∗h = µ∗1∗H = e ∗H = H . Avec H = φ, on obtient h(n) = φ(d ) = φ∗1. Comme précédemment,
d |n
on calcule H en p k . On a (voir cours), φ(p j ) = p j − p j −1 si j Ê 1 et φ(1) = 1. Ainsi
∑
k ∑
k
h(p k ) = φ(p j ) = 1 + (p j − p j −1 ) = p k .
j =0 j =1
On en déduit (par décomposition en facteurs premiers et multiplicativité) que h(n) = n pour tout n ∈ N∗ . Cela donne φ ∗ 1 = Id et ainsi
φ = Id ∗ µ = µ ∗ Id.
f) On calcule brutalement :
∑
n ∑
n
(t AD A)i , j = (t A)i k (D A)k j = A ki F (k)A k j
k=1 k=1
∑ ∑
le terme A ki est non nul si et seulement si k|i et de même pour A k j . Il ne reste donc que F (k) c’est-à-dire F (k). Cette somme est
k|,k| j k|(i ∧ j )
∏
n
Finalement t AD A = M . La matrice A est tringulaire avec des 1 sur la diagonale donc det A = 1 et ainsi det M = det D = F (k).
k=1
∏
n
• lorsque f = Id : on a µ ∗ f = φ et det M = φ(k),
k=1
• lorsque f = σ : on calcule F = µ ∗ σ de nouveau sur les p k avec p premier et k ∈ N∗ . Il reste F (p k ) = µ(1)σ(p k ) + µ(p)σ(p k−1 ) = σ(p k ) −
σ(p k−1 ). De plus
∑ k p k+1 − 1
σ(p k ) = pj = ,
j =0 p −1
p k+1 − 1 p k − 1
cela donne F (p k ) = k
p − 1 − p − 1 = p . Cette fois on a µ ∗ σ = Id. On obtient det M = n!.
• lorsque f = τ : on pose T = µ∗τ. On a T (p k ) = τ(p k )−τ(p k−1 ). On a τ(p k ) = k +1 (les diviseurs sont les p j pour j allant de 0 à k). Finalement
T (p k ) = 1 et par produit T = 1. On en déduit que det M = 1.
Exercice 10
a) L’étude directe des variations ne semblent pas donner grand chose. On peut réécrire la somme. On voit que 1 n’est pas racine de Q n (Q ( 1) =
1 − n < 0) si n Ê 2. On se place dans le cas où n Ê 2. On a
X n − 1 X n+1 − 2X n + 1
Qn = X n − =
X −1 X −1
ainsi Q n s’annule sur R+ \{1} si et seulement si P n = X n+1 − 2X n + 1 s’annule R+ \{1}. On a P n′ = (n + 1)X n − 2nX n−1 = X n−1 ((n + 1)X − 2n).
La fonction x 7→ P n (x) est décroissante sur [0, n2n 2n
+ 1 ] puis croissante - on a n + 1 ∈]1, 2[. On a P n (0) = 1, P n (1) = 0, P n (2) = 1. Ainsi P n s’annule
deux fois sur R+ : en 1 et quelque part en x n entre n2n + 1 et 2 et Q n s’annule uniquement en x n (sur R ).
+
16
Analyse/Algèbre/Probabilités Centrale Python
21 b = c
22 else :
23 a = c
24 return c
>>> [ x ( n ) for n in range (2 ,11) ]
[1.618033988692332 ,
1.839286755246576 ,
1.9275619754916988 ,
1.9659482366987504 ,
1.9835828433861025 ,
1.9919641966116615 ,
1.9960311797331087 ,
1.9980294702691026 ,
1 . 9 99 0 1 8 63 27 4 8 6 3 ]
La question est de connaître le comportement de ln(1 − h n /2). On a 0 < h n < n + 2 et 0 < h n < 1 . On en déduit que 0 < −n ln(1 − h n ) <
1 2 n +1 2
−n ln(1 − n +1 . Le terme de droite admet une limite finie donc −n ln(1 − h /2) est bornée. En reprenant (∗), cela permet d’obtenir h =
n n
( ) 1
1 h n nh n
O n . En réutilisant ce comportement plus précis pour h n , on a alors −n ln(1− 2 ∼ 2 de limite nulle lorsque n tend vers +∞ (car nh n
n→+∞ 2 ( )
tend vers 0 maintenant que h n = O 1 ). En reprenant (∗), on en déduit que h ∼ 1 . On a donc x = 2−h soit 2−x = h ∼ 1
n n n n n n
n→+∞ 2 n→+∞ 2n n→+∞ 2n
ou encore 2n (2 − x n ) de limite 1.
( )
e) On a x n = 2 − 1n + y n avec y n = o 1 . On a x n (2 − x ) = 1 soit n ln(x ) + ln(2 − x ) = 0. On reporte le développement précédent
n n n
2 n→+∞ 2n n
( )
1 1 1 yn
n ln(2 − n + y n ) + ln( n − y n ) = 0 = n ln 2 + n ln 1 − n+1 + − n ln 2 + ln(1 − 2n y n ) = 0,
2 2 2 2
ce qui donne après simplifications ( )
1 yn
n ln 1 − n+1 + = − ln(1 − 2n y n )
2 2
en prenant un équivalent de chaque membre (avec y n négligeable devant 1/2n ), on obtient − n+1 n ∼ 2n y et y ∼ − n . On en déduit
n n
2 22n+1
1 n
x n = 2 − n − 2n+1 + z n avec z n négligeable devant le dernier terme. On pourrait poursuivre ainsi...
2 2
Exercice 12
a) On peut montrer facilement par récurrence que pour tout n ∈ N, on a x n et y n dans [0, 7] (par exemple... c’est pour ne pas avoir une racine d’un
nombre négatif).
b) On peut le faire récursivement :
1 import numpy as np
2 def x ( n ) :
3 if n ==0:
4 return 0
5 else :
6 return np . sqrt (7 - y (n -1) )
7
8 def y ( n ) :
17
Analyse/Algèbre/Probabilités Centrale Python
9 if n ==0:
10 return 0
11 else :
12 return np . sqrt (7+ x (n -1) )
On obtient
n xn yn
0 0 0
1 2.64575131106 2.64575131106
2 2.08668365809 3.10576098743
3 1.97338263207 3.01441265557
4 1.99639358455 2.99556048713
5 2.00110957043 2.99939887053
6 2.00015027672 3.00018492271
7 1.99995376879 3.00002504602
8 1.99999373849 2.99999229479
9 2.0000019263 2.99999895641
Puisque les limites sont positives (et dans [0, 7]), on a ℓ21 = 7 − ℓ2 et ℓ22 = 7 + ℓ1 . La différence donne ℓ22 − ℓ21 = ℓ1 + ℓ2 donc (ℓ2 + ℓ1 )(ℓ2 − ℓ1 ) =
(ℓ2 + ℓ1 ). On ne peut pas avoir ℓ1 + ℓ2 = 0 sinon on aurait ℓ1 = ℓ2 = 0 ce qui ne convient pas avec les deux premières équations. On a donc, en
simplifiant, ℓ2 − ℓ1 = 1. En remplaçant dans la première équation : ℓ21 = 7 − (1 + ℓ1 ) soit ℓ21 + ℓ1 − 6 = 0. On a ℓ1 = 2 ou ℓ1 = −3 et le signe donne
ℓ1 = 2. Enfin ℓ2 = 3.
d) Il est toujours plus simple de prouver que des limites sont nulles. On note u n = x n − 2 et v n = y n − 3. On réécrit les relations de récurrence :
√ √ √ −v n
u n+1 = 7 − y n − 2 = 7 − (3 + v n ) − 2 = 4 − v n − 2 = √ ,
2+ 4 − vn
et de la même manière √ √ un
v n+1 = 7 + xn − 3 = 9 + un − 3 = √ .
3+ 9 + un
Exercice 13
a)
1 import numpy as np
2 import matplotlib . pyplot as plt
3 t = np . linspace ( - np . pi , np . pi ,100)
4 x = 3* np . cos ( t )
5 y = 2* np . sin ( t )
6 plt . axis ( ’ equal ’)
7 plt . plot (x , y )
b) puisque ce n’est pas précisé, on utilise les fonctions toutes prêtes...
1 import numpy as np
2 import scipy . integrate as integr
3 def L (a , b ) :
4 # on suppose que a > b est vérifié
5 c = np . sqrt ( a *a - b * b )
6 mu = c / a
7 def f ( t ) :
8 return np . sqrt (1+ mu * mu *( np . sin ( t ) ) **2)
9 # ou
10 # f = lambda t : np . sqrt (1+ mu * mu *( np . sin ( t ) ) **2)
11 return 4* a * integr . quad (f ,0 , np . pi /2) [0]
18
Analyse/Algèbre/Probabilités Centrale Python
c) on ne demande pas forcément d’aller très loin, donc on peut créer une fonction factorielle puis une fonction de calcul de αk . On peut exprimer
une relation de récurrence sur les coefficients :
1 (2k + 2)! 2k − 1 (2k + 2)(2k + 1) 2k − 1
αk+1 = = αk = α .
(2k + 1)4k+1 (k!)2 4.(2k + 1) (k + 1)2 2(k + 1) k
d) i) Par récurrence sur k... on a g (k+1) (x) = −k!αk (k − 1 −k−1/2 = −(k + 1)! αk (2k − 1) (1 − x)−(k+1)+1/2 = −(k + 1)!α −(k+1)+1/2 .
2 )(1 − x) 2(k + 1) k+1 (1 − x)
g (k) (0)
ii) C’est une formule de Taylor avec reste intégrale : on a = −αk et
k!
∑ g (k) (0) n ∫ ∫ x
1 x
g (x) − x = (x − t )n g (n+1) (t ) d t = −(n + 1)αn+1 (x − t )n (1 − t )−n−1/2 d t ,
k=0 k! n! 0 0
Exercice 14
a)
1 def euler (a ,T , N ) :
2 h = T/N
3 X = [0] ; x = 0
4 Y = [a] ; y = a
5 for i in range ( N ) :
6 y = y + h *( np . cos ( x ) + np . cos ( y ) )
7 x = x + h
8 Y . append ( y )
9 X . append ( x )
10 plt . plot (X , Y )
11 plt . show ()
12
13 for a in [ -3 , -1 ,0 ,0.5 ,1 ,2 ,3 ,3.5 ,4 ,4.2 ,4.3 ,5]:
14 X , Y = euler (a ,5 ,100)
15 plt . plot (X , Y )
16 plt . show ()
∫ t
( )
b) Pour x, y deux fonctions de E , on a, pour tout t ∈ [0, T ], ϕ(x)(t ) − ϕ(y)(t ) = cos(x(s)) − cos(y(s)) d s et
0
∫ t ∫ t
¯ ¯ ¯ ¯ ¯ ¯ ° °
¯ϕ(x)(t ) − ϕ(y)(t )¯ É ¯cos(x(s)) − cos(y(s))¯ d s É ¯x(s) − y(s)¯ d s É t °x − y ° ,
∞
0 0
car | cos(a) − cos(b)| É |a, b| pour tous a, b ∈ R. On montre alors le résultat par récurrence sur n :
¯ ¯ ∫ t¯ ¯
∫ t
¯ n ¯ ° °
∫ t n
t n+1 ° °
¯ n+1 ¯ ¯cos(ϕn (x)(s)) − cos(ϕn (y)(s))¯ d s É ¯ϕ (x)(s) − ϕn (y)(s)¯ d s É °x − y ° s °x − y ° .
¯ϕ (x)(t ) − ϕn+1 (y)(t )¯ É ∞ ds = ∞
0 0 0 n! (n + 1)!
c) On applique la relation avec x et y = ϕ(x). Cela donne, pour tout t ∈ [0, T ] et tout n ∈ N,
¯ ¯ tn ° ° n ° °
¯ n+1 ¯ °x − ϕ(x)° É T °x − ϕ(x)° .
¯ϕ (x)(t ) − ϕn (x)(t )¯ É ∞ ∞
n! n!
° ° n ° ° ∑
On note f n = ϕn (x) et g n = f n+1 − f n . On a alors °g n °∞,[0,T ] É T °x − ϕ(x)°∞ . Ainsi la série de fonctions g n converge normalement sur
n!
∑
n−1
[0, T ] et donc uniformément. On a g k = f n − x. La suite de fonctions ( f n ) converge donc uniformément sur [0, T ] vers une fonction qu’on
k=0
19
Analyse/Algèbre/Probabilités Centrale Python
Exercice 15
20
Analyse/Algèbre/Probabilités Centrale Python
Exercice 16
a) pour la programmation des coefficients binomiaux : au choix en programmant une fonction factorielle, soit avec la relation
( )
n n(n − 1) . . . (n − k + 1)
= .
n k(k − 1) . . . 1
1 def fact ( n ) :
2 p = 1
3 for i in range (2 , n +1) :
4 p = p*i
5 return p
6
7 def binom (n , k ) :
8 return fact ( n ) // fact ( k ) // fact (n - k )
9
10 def binom (n , k ) :
11 Nume = 1
12 Deno = 1
13 for i in range ( k ) :
14 Nume = Nume * (n - i )
15 Deno = Deno * ( i +1)
16 return Nume // Deno
b) Pour la fonction de Bell, on a le choix entre une version récursive (mais avec une très mauvaise complexité puisqu’on passe le temps à recalculer
les mêmes termes), on une version qui stocke les anciennes valeurs (c’est plutôt cela qui est attendu puisqu’on demande à la fin la liste des
premiers termes de la suite) :
1 def Bell ( n ) :
2 if n ==0:
3 return 1
4 S = 0
5 for k in range ( n ) :
6 S += binom (n -1 , k ) * Bell ( k )
7 return S
8
9 def Bell ( n ) :
10 B = [1]
11 for m in range (1 , n +1) :
12 S = 0
13 # ajout de Bell_m
14 for k in range ( m ) :
15 S += binom (m -1 , k ) * B [ k ]
16 B . append ( S )
17 return B
ce qui donne
>>> Bell (6)
[1 , 1 , 2 , 5 , 15 , 52 , 203]
c) Quelques tests semblent confirmer que B n É n!. On le montre par récurrence. C’est vrai pour B 0 = 1, B 1 = 1, B 2 = 2 (si on veut insister). Si la
propriété est vraie jusqu’à un certain rang n, alors
∑
n n! ∑
n
B n+1 É É n! = (n + 1)n! = (n + 1)!
k=0 (n − k)! k=0
¯ ¯
¯B ¯
On en déduit que ¯ n ¯ É 1 et que le rayon de convergence de la série entière donnée est au moins 1.
n!
+∞
∑ Bn n
d) On note S(x) = x . On a la relation de récurrence
n=0 n!
B n+1 ∑n 1 Bk
=
n! k=0 (n − k)! k!
ou encore
∑
n 1 Bk
(n + 1)B n+1 =
k=0 (n − k)! k!
Le second terme fait penser à un produit de Cauchy entre les développements en série entière de S(x) et exp(x). Le premier terme à une dérivée.
Pour tout x ∈] − R, R[ (avec R Ê 1), on a
+∞
∑ +∞
∑
S ′ (x) = nB n x n−1 = (n + 1)B n+1 x n = S(x)e x
n=1 n=0
21
Analyse/Algèbre/Probabilités Centrale Python
Puisque S(0) = B 0 = 1, on en déduit que S(x) = exp(exp(x) − 1). On effectue alors un développement de cette expression pour avoir une expres-
sion de B n : pour tout x ∈ R, ( )
+∞
∑ e nx +∞
∑ 1 +∞ ∑ (nx)k +∞
∑ +∞∑ nk xk
exp(exp x − 1) = e −1 = e −1 = e −1 .
n=0 n! n=0 n! k=0 k! n=0 k=0 k!n!
k k
La famille des n x est donc sommable (immédiat si x > 0 puisque la somme double qu’on vient de faire apparaître existe, idem si x < 0 avec
k!n!
la même somme avec |x|). On peut permuter l’ordre de sommation pour obtenir
( )
+∞
∑ 1 −1 +∞ ∑ nk k
S(x) = e x
k=0 k! n=0 n!
+∞
∑ nk +∞
∑ kn
Par unicité du développement, on en déduit que B k = e −1 (ou si l’on préfère, B n = e −1 , ce qui est, comme tout le monde l’a
n=0 n! k=0 k!
remarqué, le moment d’ordre n d’une loi de Poisson de paramètre 1).
Exercice 17
a) La fonction x 7→ sh x est continue,strictement croissante et réalise une bijection de R sur R. Il existe donc un unique α tel que sh α = 1 (α > 0 et,
puisque sh x Ê x, on a α É 1).
1 import numpy as np
2 import scipy . optimize as resol
3 import scipy . integrate as integ
4
5 f = lambda x : np . sinh ( x ) -1
6 alpha = resol . fsolve (f ,0.5)
on obtient α ≃ 0.88137359. On peut éventuellement s’attendre à ce que le jury demande une version plus manuelle (par dichotomie) :
1 def dicho () :
2 a = 0
3 b = 1
4 while b -a >1 e -5:
5 c = ( a + b ) /2
6 if f ( c ) ==0: # peu de chance
7 return c
8 if f ( c ) >0:
9 b=c
10 else :
11 a=c
12 return c
1 def suite ( n ) :
2 g = lambda x : ( np . sinh ( x ) ) ** n
3 return integ . quad (g ,0 , alpha ) [0]
c) On intègre par partie, pour n Ê 2 :
b)
∫ α [ ]α ∫ α
In = (sh t )n−1 sh t d t = (sh t )n−1 ch t − (n − 1) (sh t )n−2 ch 2 t d t
0 0 0
∫ α √
= ch α − (n − 1) (sh t )n−2 (1 + sh 2 t ) d t = 1 + sh 2 α − (n − 1)(I n−2 + I n )
0
p
= 2 − (n − 1)(I n−2 + I n )
p
On a donc nI n + (n − 1)I n−2 = 2
∫ α
sh n (t )(sh t − 1) d t É 0. La suite est décroissante et minorée
d) Par croissance de sh , on a, pour tout t ∈ [0, 1], 0 É sh t É 1. On a alors I n+1 − I n =
0
p p
par 0 donc converge vers ℓ Ê 0. De plus, la relation de récurrence précédente donne 0 É nI n É 2 et 0 É I n É n2 . Finalement la limite de I n est
nulle.
e) Par encadrement, on a nI n + (n − 1)I n É nI n + (n − 1)I n−2 É nI n−2 + (n − 1)I n−2 ce qui donne
p p
p 2 2
(2n − 1)I n É 2 É (2n − 1)I n−2 ou encore É In É ,
2n + 1 2n − 1
p 1 .
en décalant les indices. Par encadrement 2nI n tend vers 2 et finalement I n ∼ p
n 2
f) On est dans le cadre du théorème sur les séries alternées. La série est convergente. On sait de plus p que le reste est majoré enpvaleur absolue
−2
par son premier terme. On a une valeur approchée de la somme dès que I n+1 É 10 . Or I n+1 É 2n + 2 ainsi il suffit d’avoir 2 −2
p 1 2n + 1 É 10 soit
2n + 1 Ê 100 2, ce qui est vrai pour n Ê 71.
22
Analyse/Algèbre/Probabilités Centrale Python
1 def somme ( n ) :
2 S = 0
3 for i in range ( n +1) :
4 S += ( -1) ** i * suite ( i )
5 return S
et somme(71) donne 0.6183.
∑
g) L’équivalent de I n montre que I n diverge.
Exercice 18
a) en version complète :
1 import numpy as np
2 import matplotlib . pyplot as plt
3
4 def P ( n ) :
5 def P (n , x ) :
6 S = 0
7 for i in range (2* n +1) :
8 S += x ** i
9 return S
10 return lambda x : P (n , x )
on peut bien évidemment faire plus simple et créer simplement une fonction de 2 variables P(n,x). Pour le tracé
1 x = np . linspace ( -2 ,2 ,101)
2 for k in range (6) :
3 plt . plot (x , P ( k ) ( x ) )
2n+1 2n+1
b) On simplifie : P n (x) = 1 −1x− x = x x − 1− 1 si x ̸= 1 (et P n (1) = 2n + 1. Si x > 1 alors x 2n+1 − 1 > 0 et x − 1 > 0 donc P n (x) > 0. De même, si
x < 1, x 2n+1 < 1 et x − 1 < 0 donc P n (x) > 0. On peut remarquer que P n est strictement croissante sur R+ avec une valeur minimale 1 en 0. On a
On note Q n (x) = 2nx 2n+1 − (2n + 1)x 2n + 1. On a Q n′ (x) = 2n(2n + 1)x 2n−1 (x − 1).
x −∞ an 0 1 +∞
Q n′ (x) + 0 − 0 +
1 +∞
Q n (x) 0 % &0%
−∞ %
P n′ (x) − 0 +
+∞ +∞
P n (x)
& bn %
c) Le tableau de variation nous donne bien l’existence d’un unique a n en lequel P n est minimal. On a également Q n (−1) = −4n < 0 donc a n ∈
] − 1, 0[.
d) On peut conjecturer graphiquement le comportement. On peut aussi essayer informatiquement ;
23
Analyse/Algèbre/Probabilités Centrale Python
1 def Pprime ( n ) :
2 def Pprime (n , x ) :
3 S = 0
4 for i in range (1 ,2* n +1) :
5 S += i * x **( i -1)
6 return S
7 return lambda x : Pprime (n , x )
8
9 import scipy . optimize as resol
10
11 def a ( n ) :
12 return resol . fsolve ( Pprime ( n ) , -1) [0]
et
>>> [ a ( n ) for n in range (2 ,10) ]
[ -0.60582958618826799 ,
-0.67033204760309684 ,
-0.71453772716734076 ,
-0.74705407486515596 ,
-0.77214163552346593 ,
-0.79217785460570356 ,
-0.80860489787230283 ,
-0.82235341023852881]
et a(1000) donne −0.99586246866079331. La suite semble être décroissante vers −1. On reprend les calculs : on a P n′ (a n ) = Q n (a n ) = 0 ce qui
donne
2na n2n+1 − (2n + 1)a n2n + 1 = 0
On note αn = −a n pour avoir un nombre entre 0 et 1. On a
−2nα2n+1
n − (2n + 1)α2n 2n+1
n + 1 = 0 ou encore 2nαn + (2n + 1)α2n
n = 1.
On a α2n+1
n É α2n 2n 2n 2n+1 + (2n + 1)α2n = 1. Cela donne
n ce qui donne 1 É (4n + 1)αn . On a également (2n + 1)αn É 2nαn n
1 1 1 1
É α2n
n É et − ln(4n + 1) É ln αn É − ln(2n + 1).
4n + 1 2n + 1 2n 2n
Par croissances comparées, ln αn tend vers 0 et αn vers 1. On a bien lim a n = −1.
n→+∞
Exercice 19
∑
d ∑
d
a) Si P = b k X k alors P (2) = a k 2k avec b k = 0, 1 ou 2. On peut remarquer que si d est le degré de P (avec b d = 1 ou 2), alors P (2) Ê 2d . Cela
k=0 k=0
permet de limiter le degré de P tel que P (2) = n (on a 2d É n)
• pour n = 0 : tous les coefficients doivent être nul, seul le polynôme nul convient et a 0 = 1.
• pour n = 1 : seul P = 1 convient et a 1 = 1,
• pour n = 2 : polynômes de degré 0 ou 1 - P = 2 ou P = X et a 2 = 2,
• pour n = 3 : polynômes de degré 0 ou 1 - P = 1 + X et a 3 = 1,
De façon plus général, on a montré au dessus que si P de degré d vérifie P (2) = n alors 2d É n. Cela limite le degré d’une polynôme vérifiant
P (2) = n. Une fois le degré borné, il y a 3 possibilités au plus pour chacun des d + 1 coefficents donc le nombre de polynôme vérifiant P (2) = n
est inférieur à 3d +1 avec d É log2 (n). Cela garantit l’existence de a n .
b) on discute suivant la parité (avec les mêmes notations) :
∑
d ∑
d −1
d∑
• si P (2) = 2n + 1 : on a P (2) = b 0 + 2 b k 2k−1 . Par parité, b 0 = 1 et b k 2k−1 = b k+1 2k = n. Ainsi P = 1 + XQ où Q est un polynôme
k=1 k=1 k=0
vérifiant Q(2) = n. Il y a a n possibilités pour le polynôme Q qui donnent autant de polynômes P distincts. On a ainsi a 2n+1 = a n .
• si P (2) = 2n. Avec un raisonnement identique, on a b 0 = 0 ou b 0 = 2. Alors P s’écrit soir P = XQ avec Q(2) = n, soit P = 2+XQ avec Q(2) = n−1
(et chaque polynôme obtenu est différent des autres). On a donc a 2n = a n + a n−1 .
c) on le fait de façon récursive :
1 def a ( n ) :
2 if n ==0 or n ==1:
3 return 1
4 if n %2==0:
5 return a ( n //2) + a ( n //2 -1)
6 else :
7 return a (( n -1) //2)
et on teste :
>>> a (3)
1
>>> a (534)
39
>>> [ a ( n ) for n in range (1 ,20) ]
[1 , 2 , 1 , 3 , 2 , 3 , 1 , 4 , 3 , 5 , 2 , 5 , 3 , 4 , 1 , 5 , 4 , 7 , 3]
24
Analyse/Algèbre/Probabilités Centrale Python
d) On ne trouve pas immédiatement a n . On essaie d’encadrer. Visiblement a n n’est pas trop grand. On vérifie que a n É n si n Ê 1, puis a n Ê 1 :
• On a bien a 1 = 1 et a 2 = 2. Si la majoration est vraie jusqu’à un rang k Ê 1. Si k + 1 est pair, k + 1 = 2p et a k+1 = a 2p = a p + a p−1 É p + p − 1 =
2p − 1 É k + 1. Si k + 1 = 2p + 1 alors a k+1 = a p É p É k + 1.
∑d
• Tout entier n Ê 1 se décompose en base 2 : il existe des coefficients 0 ou 1 tels que n = b k 2k et ainsi a n Ê 1.
∑
k=0
Finalement, pour tout n ∈ N∗ , 1 É a n É n. Par encadrement le rayon de convergence R de a n x n est compris entre 1 et 1.
+∞
∑
e) Les séries entières des termes d’indices pairs et impairs ont aussi un rayon de convergence de 1. Pour tout x ∈] − 1, 1[, on note f (x) = an x n .
n=0
On a, pour x ∈] − 1, 1[,
+∞
∑ +∞
∑ +∞
∑ +∞
∑ +∞
∑
f (x) = 1 + a 2p x 2p + a 2p+1 x 2p+1 = 1 + a p x 2p + a p−1 x 2p + a p x 2p+1
p=1 p=0 p=1 p=1 p=0
ce qui donne
f (x) = 1 + ( f (x 2 ) − 1) + x 2 f (x 2 ) + x f (x 2 )
ou encore f (x) = (1 + x + x 2 ) f (x 2 )... et là, pas trop d’idées pour continuer à partir de ça.
Quelques calculs en vrac :
>>> [ a (2** n ) for n in range (10) ]
[1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10]
visiblement a 2n = n + 1. On a a 2n+1 = a 2n + a 2n −1 .
>>> [ a (2** n -1) for n in range (10) ]
[1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1]
On a a 2n+1 −1 = a 2(2n −1)+1 = a 2n −1 . Par récurrence, on en déduit que a 2n −1 = 1 pour tout n ∈ N et ainsi a 2n+1 = a 2n + 1, avec a 1 = a 20 = 1. On
en déduit que a 2n = n + 1. On peut trouver d’autres relations du genre...
Remarque : pour plus d’informations sur cette suite, aller voir dans l’encyclopédie des suites d’entiers : https ://[Link]/ - en décalant les indices
de 1, on trouve la suite de Stern-Brocot et pas mal de petites propriétés (mais pas d’expression générale).
Exercice 21
a) le programme :
1 import numpy as np
2
3 def somme (A , m ) :
4 S = 0
5 P = A . copy ()
6 for k in range (1 , m +1) :
7 S += np . trace ( P ) / k
8 P = np . dot (P , A )
9 return S
et un petit essai :
>>> A = np . array ([[ 0.25 , 0.5 ] , [ 1. , -0.5 ]])
>>> 1/ np . linalg . det ( np . eye (2) -A )
1 . 60 0 0 0 0 0 0 0 0 0 0 0 0 0 1
>>> np . exp ( somme (A ,500) )
1 . 5 9 99 99 99 9 99 99 9 9
b) La matrice A est trigonalisable. Notons λ1 , . . . , λn ses valeurs propres (pas forcément distinctes). Elles sont complexes, de module inférieur à 1
et différentes de 1. On a alors
∏n ∑
n
χA = (X − λi ), tr (A k ) = λki
i =1 i =1
∏
n
On a également P A (t ) = (1 − λi t ). Par un calcul de dérivée d’un produit (on dérive chacun des facteurs en −λi et on a la somme avec tous
i =1
les termes sauf un qui vaut ce −λi ), on obtient
( ) ( )
P ′A (t ) ∑
n λi ∑n +∞
∑ p p ∑n +∞∑ p+1 p
=− =− λi λi t = − λi t .
P A (t ) i =1 1 − λi t i =1 p=0 i =1 p=0
Par linéarité, il suffit de prouver que, pour λ complexe de module inférieur à 1 et différent de 1, on a
∫ 1 +∞
∑ λp
λ
dt = .
0 1 − λt p=1 p
25
Analyse/Algèbre/Probabilités Centrale Python
+∞ +∞
• si |λ| < 1. On a alors, pour tout t ∈ [0, 1], λ = λ ∑ λp t p = ∑ λp+1 t p . On note f (t ) = λp+1 t p , la fonction f est continue sur [0, 1] et
1 − λt p p
p=0 p=0
∑
| f p (t )| É |λ|p+1 . On a donc convergence normale de f p sur [0, 1] et ainsi uniforme. On peut permuter intégrale et somme. Cela donne
∫ 1 ∑∫ 1
+∞ +∞
∑ λp+1 +∞ ∑ λp
λ
dt = f p (t ) d t = = .
0 1 − λt p=0 0 p=0 p + 1 p=1 p
∑
m
• si |λ| = 1 avec λ ̸= 1. On utilise le théorème de convergence dominée sur la suite des sommes partielles. On note S m (t ) = f p (t ) =
p=0
∑
m λ
λp+1 t p . La suite converge simplement sur [0, 1[ et lim S m (t ) d t = = S(t ) si t ∈ [0, 1[ (attention de bien exclure le 1). La fonction
p=0
m→+∞ 1 − λt
m+1 m+1
S est continue sur [0, 1[. On a également, pour t ∈ [0, 1[, S m (t ) = λ 1 − λ t et |S m (t )| É 2 . Or la fonction t 7→ 1 est continue
1 − λt |1 − λt | 1 − λt
sur [0, 1] (1 − λt ne s’annule pas lorsque t décrit [0, 1]). Elle est donc intégrable sur [0, 1] et [0, 1[. Le théorème de convergence dominée
permet d’assurer la permutation et ainsi
∫ 1 ∫ 1 ∫ 1
λ
lim S m (t ) d t = S(t ) d t = dt
m→+∞ 0 0 0 1 − λt
avec
∫ 1 ∑m λp+1 ∑ λp
m+1
S m (t ) d t = = .
0 p=0 p + 1 p=1 p
Exercice 22
26
Analyse/Algèbre/Probabilités Centrale Python
c)
1 x = np . linspace ( -5 ,5 ,100)
2 y0 = np . cos ( x )
3
4 def f1 ( x ) :
5 return T ( np . cos , x )
6 y1 = [ f1 ( t ) for t in x ]
7
8 plt . plot (x , y0 ,x , y1 )
9 plt . show ()
on ne voit qu’une courbe : les deux sont confondues. Aurait-on T (cos) = cos ?
∫ x ∫ x
d) Soit f une telle fonction. Pour tout x ∈ R, on a 1 − x f (t ) d t + t f (t ) d t = f (x). Le premier membre étant de classe C 1 par rapport à x, f
∫ x 0 0
l’est et en dérivant on obtient 1− x f (x)− f (t ) d t + x f (x) = f ′ (x). On obtient l’équivalence en ajoutant une condition d’égalité pour la valeur
0
en 0 de chaque membre de l’égalité de départ (on a f = g si et seulement si f ′ = g ′ et f∫(0) = g (0) pour des fonctions de classe C 1 ). Cela donne
x
f (0) = 1. La fonction f vérifie T ( f ) = f si et seulement si f (0) = 1 et pour tout x ∈ R, − f (t ) d t = f ′ (x). On recommence pour avoir f (0) = 1,
0
f ′ (0) = 0 et − f (x) = f ′′ (x). Toutes ces conditions donnent la fonction cosinus (avec équivalence avec T ( f ) = f ).
∫ x
( )
e) On a, pour x ∈ R, f n+1 (x) − f n (x) = − (x − t ) f n (t ) − f n−1 (t ) d t . Soit A > 0. On travaille sur le segment [−A, A]. On note M un majorant de
0
| f 1 − f 0 | sur ce segment. Pour tout x ∈ [−A, A], on a (car x − t garde un signe constant)
¯∫ ¯ ¯∫ x ¯
¯ ¯ ¯ x ¯ ¯ ¯ 2
¯ f 2 (x) − f 1 (x)¯ É ¯ M |x − t | d t ¯=¯ M (x − t ) d t ¯=M x .
¯ ¯ ¯ ¯ 2
0 0
puis
¯∫ ¯ ¯¯∫ x ¯ ( )
¯ ¯ ¯ x
¯ f 3 (x) − f 2 (x)¯ É ¯
¯ ¯
¯ t 2 ¯¯ x4 x4 x4
¯ |x − t || f 2 (t ) − f 1 (t ) d t =
¯ ¯ ¯ M (x − t ) d t ¯ = M − =M .
0 0 2 ¯ 2.3 2.4 4!
2n
On montre alors par récurrence que, pour tout x ∈ [−A, A], | f n+1 (x) − f n (x)| É M x . C’est le même calcul :
(2n)!
¯∫ ¯ ¯¯∫ x ¯
¯
( )
¯ ¯ ¯ x ¯ ¯ t 2k ¯ x 2k+2 x 2k+2 x 2k+2
¯ f n+2 (x) − f n+1 (x)¯ É ¯ ¯
|x − t || f n+1 (t ) − f n (t ) d t ¯ = ¯ M (x − t ) dt¯ = M − =M .
¯ ¯ 0 (2k)! ¯ (2k)!(2k + 1) (2k)!.(2k + 2) (2k + 2)!
0
° ° 2n ∑ ∑
n−1
On a enfin ° f n+1 − f n °∞ É M A et ( f n+1 − f n ) converge normalement et uniformément sur [−A, A]. Puisque f n − f 0 = ( f k+1 − f k ), la
(2n)!
k=0
suite de fonctions ( f n ) converge uniformément sur [−A, A]. On note f sa limite qui est donc continue sur [−A, A]. On fixe x ∈ [−A, A]. On a
∫ x
f n+1 (x) = 1 − (x − t ) f n (t ) d t (∗)
0
° °
On a |(x − t ) f n (t )−(x − t ) f (t )| = |x − t || f n (t )− f (t )| É A ° f n − f °
∞,[0,x] . La suite de fonctions t 7→ (x − t ) f n (t ) converge donc uniformément vers
la fonction t 7→ (x − t ) f (t ) sur [0, x]. En passant à la limite lorsque n tend vers +∞, on obtient
∫ x
f (x) = 1 − (x − t ) f (t ) d t = T ( f )(x)
0
Exercice 25
a) i)
1 import numpy as np
2
3 def h ( x ) :
4 if x ==0:
5 return 0
6 else :
7 return -x * np . log ( x )
8
9 def entropie ( p ) :
10 n = len ( p )
11 e = 0
12 for x in p :
13 e += h ( x )
14 return e ,e - np . log ( n )
ii)
27
Analyse/Algèbre/Probabilités Centrale Python
1 def comb (n , p ) :
2 N , D = 1 ,1 # numérateur , dénominateur
3 for k in range ( p ) :
4 N = N * (n - k )
5 D = D * ( k +1)
6 return N // D
7
8 def loibin (n , p ) :
9 # strictement aucune optimisation , on n ’a pas le temps
10 L = [0]*( n +1)
11 for k in range ( n +1) :
12 L [ k ] = comb (n , k ) *( p ** k ) *(1 - p ) **( n - k )
13 return L
14
15 def loiuni ( N ) :
16 L = [0]*( N +1)
17 for k in range ( N +1) :
18 L [ k ]=1/( N +1)
19 return L
iii)
>>> entropie ( loibin (15 ,2/5) )
(2.0578509198462398 , -0.71473780239354134)
>>> entropie ( loiuni (15) )
(2.7725887222397811 , 0.0)
∑
n
iv) On doit calculer (−p i ln p i ). On pense rapidement à la concavité du logarithme : pour des poids p i positifs de somme 1,
i =1
( )
∑
n ∑
n
si x 1 , . . . , x n > 0 alors ln p i xi Ê p i ln x i ,
i =1 i =1
∑
n
en appliquant cela à x i = p1 , ce qui donne p i ln(1/p i ) É ln n (si l’un des p i est nul alors h(p i ) est nulle aussi). On a bien h(X ) É n.
i
i =1
Puisque la fonction est strictement convexe, on a égalité si et seulement si tous les x i sont égaux, donc si et seulement si la loi est uniforme.
De plus h(X ) Ê 0 car tous les termes de la somme donnant h(X ) sont positifs.
v) répondu au dessus
( )
b) On note Nk l’événement « boule noire au tirage k » et R k pour une rouge. On a P (X = k) = P N1 ∩ N2 ∩ . . . ∩ Nk−1 ∩ R k . La formule des proba-
bilités totales donne ( ) ( )
P (X = k) = P (N1 ) PN1 (N2 ) PN1 ∩N2 (N2 ) · · · PN1 ∩···∩Nk−2 Nk−1 PN1 ∩···∩Nk−1 R k
le conditionnement nous donne la structure de l’urne à un certain tirage et on obtient
12 k −1 1 1
P (X = k) = ··· = = pk .
23 k k + 1 k(k + 1)
∑ 1 1
Puisque = 1, on en déduit que P (X = 0) = 0. On a k P (X = k) = donc la variable aléatoire n’a pas d’espérance. En revanche,
n∈N∗ k(k + 1) k + 1
on a −p k ln(p k ) = 1 ln(k(k + 1)) ∼ 2 ln2k est le terme général d’une série convergente. La variable aléatoire admet une entropie.
k(k + 1) k→+∞ k
( )
∑ 1
c) Chaque p n = P (X = n) est positif, et par téléscopage, p n = ln 2. − 0 = 1. On définit bien ainsi une loi. On a
nÊ2 ln 2
ln(n + 1) − ln n 1 1 ln 2
np n = n ln 2 = ln 2(n ln(1 + )) ∼ ,
ln n ln(n + 1) n ln n ln(n + 1) n→+∞ ln2 n
ln p n ∼ ln(ln 2) − ln n − 2 ln ln n ∼ − ln n
n→+∞ n→+∞
et finalement −p n ln p n ∼ ln 2 , juste ce qu’il faut pour que la variable aléatoire n’admette pas d’entropie.
n→+∞ n ln n
Exercice 27
a) i)
1 import numpy as np
2 import numpy . random as rd
3
4 def loi ( p ) :
5 x = rd . random ()
6 if x < p :
28
Analyse/Algèbre/Probabilités Centrale Python
7 return 2
8 else :
9 return 1
10 # ou
11 # return 1+( x < p )
12
13 def simulation (k , p ) :
14 position = 0
15 while position < k :
16 # tant qu ’ on n ’a pas atteint ou dépassé k
17 position += loi ( p )
18 return int ( position == k )
19 # ou
20 # if position == k :
21 # return 1
22 # else :
23 # return 0
24 #
ii) 30 essais, c’est un peu court pour faire des moyennes... on fait un peu plus (mais faire comme ils disent ou bien le signaler)
1
2 def moyenne (k , p ) :
3 succes = 0
4 for i in range (3000) :
5 succes += simulation (k , p )
6 return succes /3000
7
8 def test ( k ) :
9 for i in range (10) :
10 p = i /10
11 print (1/(1+ p ) , moyenne (k , p ) )
En testant pour la case 100 (si on est trop proche de 0 c’est plus aléatoire :
>>> test (100)
1.0 1.0
0 . 9 0 90 9 0 90 9 0 90 9 0 9 1 0. 9 18 3 3 3 3 3 3 3 3 3 3 3 3 3
0. 8 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 0 .8 3 3 6 6 6 6 6 6 6 6 6 6 6 6 7
0 . 7 69 2 3 0 7 6 9 2 3 0 7 6 9 2 0.759
0. 7 1 4 2 8 5 7 1 4 2 8 5 7 1 4 3 0 .7 2 2 6 6 6 6 6 6 6 6 6 6 6 6 7
0 . 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 0.679
0.625 0.633
0. 5 8 8 2 3 5 2 94 1 1 7 6 4 7 1 0 . 59 1 33 3 33 3 3 3 3 3 3 3 4
0. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 0.538
0. 5 2 6 3 1 5 7 8 94 7 3 6 8 4 2 0 . 5 3 0 33 3 33 3 3 3 3 3 3 3 3
et puisque Y1 est indépendante de toutes les autres variables Yi , on obtient finalement, lorsque j < k :
( ) ( ( ))
( ) ∪ ( ) ∪ n−1 ∑ ( )
P E k ∩ (Y1 = j ) = P (S n = k) ∩ (Y1 = j ) = P ( Yi +1 = k − j ) P Y1 = j
n∈N∗ nÊ2 i =1
puisque si on arrive en case k, on doit avoir un premier déplacement inférieur à k. Puisque u 0 = 1, on obtient bien la relation demandée.
iv) Toutes les séries entières qui apparaissent ont un rayon de convergence au moins égal à 1. On doit montrer que f (t ) = 1 + f (t )u(t ). Or, par
+∞
∑ ∑
k ∑
k ∑
k
produit de Cauchy, on a (u(t ) n’a pas de terme constant) f (t )u(t ) = c k t k où c k = u k− j f j = u k− j f j = u k− j f j car f 0 = 0. On a
k=1 j =0 j =0 j =1
+∞
∑
bien c k = u k pour tout k ∈ N∗ . On a ainsi f (t )u(t ) = u k t k = f (t ) − u 0 = f (t ) − 1.
k=1
29
Analyse/Algèbre/Probabilités Centrale Python
1 1 1 p 1 1 +∞∑
= + = (1 + p(−p)k )t k .
(1 − t )(1 + pt ) 1 + p 1 − t 1 + p 1 + pt 1 + p k=0
On a alors u k = 1 + 1 (1 + p(−p)k ) et la limite de u est 1 = 1/E (Y ) (c’est donc seulement la limite qui vaut cette valeur...). On peut
p k 1+p 1
1 − p2
vérifier que u 0 = 1 et u 1 = 1 + p = 1 − p (ce qui est normal).
∑
n
vi) On note k 1 , . . . , k n les entiers pour lesquels P (Y1 = k) est non nul. On a u(t ) = p i t ki où p i = f ki pour simplifier... à terminer
i =1
30