Probabilités finies, discrètes et dénombrementFonctions (limites, continuité, dérivabilité, intégration)InformatiqueAlgèbre linéaireSuites et séries de fonctionsSéries entières (et Fourier)
Lundi 17 avril 2023 de 8h00 à 12h00
Durée : 4 heures
Candidats bénéficiant de la mesure "Tiers-temps " : 8h00-13h20
L'énoncé comporte 6 pages.
CONSIGNES
Tous les feuillets doivent être identifiables et numérotés par le candidat.
Aucun document n'est permis, aucun instrument de calcul n'est autorisé.
Conformément au règlement du concours, l'usage d'appareils communiquants ou connectés est formellement interdit durant l'épreuve.
Les candidats sont invités à soigner la présentation de leur copie, à mettre en évidence les principaux résultats, à respecter les notations de l'énoncé et à donner des démonstrations complètes - mais brèves - de leurs affirmations.
Si, au cours de l'épreuve, un candidat repère ce qui lui semble être une erreur d'énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu'il est amené à prendre.
Ce document est la propriété d'ECRICOME, le candidat est autorisé à le conserver à l'issue de l'épreuve.
Le candidat dispose d'une annexe Python en page 7.
Dans les questions faisant intervenir des instructions en langage Python, on prendra soin d'importer les bibliothèques nécessaires lors de leur première utilisation.
Pour traiter les questions d'informatique, les candidats sont invités à se référer à l'annexe fournie en fin de sujet. Its ne sont pas limités à l'utilisation des seules fonctions mentionnées dans cette annexe.
Exercice 1
Soit un entier naturel non nul.
Une urne contient boules indiscernables au toucher et numérotées de 1 à . On tire une boule au hasard dans l'urne. Si cette boule tirée porte le numéro , on place alors dans une seconde urne toutes les boules suivantes : une boule numérotée 1 , deux boules numérotées 2 , et plus généralement pour tout boules numérotées , jusqu'à boules numérotées . Les boules de cette deuxième urne sont aussi indiscernables au toucher. On effectue alors un tirage au hasard d'une boule dans cette seconde urne.
Et on note la variable aléatoire égale au numéro de la première boule tirée et on note la variable aléatoire égale au numéro de la deuxième boule tirée.
Reconnaitre la loi de et donner son espérance et sa variance.
Déterminer .
Soit .
(a) On suppose que l'événement est réalisé.
Déterminer, en fonction de , le nombre total de boules présentes dans la seconde urne.
(b) Pour tout entier de , exprimer en fonction de et .
On distinguera les cas ou .
4. (a) Déterminer deux réels et tels que, pour tout entier naturel non nul,
(b) En déduire que, pour tout élément de ,
Justifier que admet une espérance et montrer que .
Les variables aléatoires et sont-elles indépendantes?
(a) Montrer que .
(b) En déduire que .
(a) Écrire une fonction en langage Python, nommée seconde_urne, prenant en entrée un entier naturel k non nul, et renvoyant une liste contenant 1 élément valant 1,2 éléments valant éléments valant , jusqu'à éléments valant .
Par exemple, l'appel de seconde_urne (4) renverra .
(b) Recopier et compléter la fonction en langage Python suivante pour qu'elle prenne en entrée un entier naturel n non nul, et qu'elle renvoie une réalisation du couple de variables aléatoires ( ).
import numpy.random as rd
def simul_XY(n):
X =
urne2 = seconde_urne(__.__)
nb = len(urne2)
i = rd.randint(0, nb)
Y = __----
return X, Y
(c) On considère la fonction en langage Python suivante, prenant en entrée un entier naturel n non nul.
def fonction(n):
liste = [0]*n
for i in range(10000):
j = simul_XY(n)[1]
liste[j-1] = liste[j-1] + 1/10000
return liste
Quelles valeurs les éléments de la liste renvoyée permettent-ils d'estimer?
9. Dans toute cette question, on suppose . On simule 50 réalisations du couple de variables aléatoires à l'aide de la fonction simul_XY définie à la question 8b). On représente alors les valeurs obtenues sous forme d'un nuage de points, où les valeurs des réalisations de sont représentées en abscisse et les valeurs des réalisations de en ordonnée. On trace également, sur la même figure, la droite de régression linéaire associée à ce nuage de points.
(a) Déterminer par un calcul une valeur approchée des coordonnées du point moyen du nuage de points. Quel théorème de probabilités permet de justifier cette approximation?
(b) Parmi les figures représentées ci-dessous, en justifiant soigneusement votre réponse, indiquer celle qui correspond au nuage de points et à la droite de régression linéaire étudiés.
Figure 4
Exercice 2
On considère la fonction définie sur par :
On rappelle que .
(a) Montrer que est dérivable sur et que, pour tout réel de :
(b) Dresser le tableau de variations de et déterminer les limites suivantes et .
(c) Tracer l'allure de la courbe représentative de .
(d) Montrer que, pour tout entier supérieur ou égal à 2 , l'équation , d'inconnue dans , possède exactement deux solutions et , avec:
(a) Montrer que la suite est croissante.
(b) Montrer par l'absurde que la suite tend vers quand tend vers .
(a) Montrer que la suite est décroissante.
(b) En déduire que la suite converge.
Dans les questions qui suivent, on note la limite de la suite .
(c) Montrer par l'absurde que .
(d) En déduire que puis un équivalent simple de lorsque tend vers .
4. (a) Soient un entier supérieur ou égal à 2 et un réel strictement positif.
On cherche à déterminer une valeur approchée de avec une marge d'erreur inférieure ou égale à .
On rappelle pour cela le principe de l'algorithme de dichotomie.
On initialise deux variables et en leur affectant respectivement les valeurs 0 et 1 .
Tant que , on répète les opérations suivantes.
On considère le milieu du segment . Par monotonie de sur ], en distinguant les cas et , on peut déterminer si appartient à l'intervalle ou à l'intervalle .
Selon le cas, on met alors à jour la valeur de ou de pour se restreindre au sous-intervalle approprié.
On renvoie finalement la valeur , qui constitue une valeur approchée de à près.
Recopier et compléter la fonction en langage Python suivante, prenant en entrée un entier n supérieur ou égal à 2 et un réel strictement positif eps, et renvoyant une valeur approchée de à eps près en appliquant l'algorithme décrit ci-dessus.
import numpy as np
def approx_u(n, eps):
a = 0
b = 1
while _-_-------:
c = (a+b)/2
if np.exp(c/2)/np.sqrt(c) < n:
else
else:
return (a+b)/2
(b) Écrire une fonction en langage Python, nommée sp , prenant en entrée un entier N supérieur ou égal à 2 et un réel strictement positif eps et renvoyant une valeur approchée de la somme à eps près.
On pourra faire appel à la fonction approx_u définie à la question précédente.
Exercice 3
Partie 1
On considère la matrice . On note l'endomorphisme de représenté par la matrice dans la base canonique de .
On considère les vecteurs suivants de :
On note .
(a) Montrer que est une base de .
(b) Déterminer la matrice représentative de dans la base .
(c) En déduire une matrice de inversible et une matrice de triangulaire telles que .
2. (a) Calculer et , puis vérifier que .
(b) Montrer par récurrence que, pour tout entier naturel non nul, il existe deux réels et tels que
vérifiant, pour tout entier naturel non nul, et .
3. (a) Montrer que, pour tout entier naturel non nul,
(b) Déterminer, pour tout entier naturel non nul, une expression de en fonction de .
(c) En déduire, pour tout entier naturel non nul, une expression de en fonction de .
4. Montrer que, pour tout entier naturel non nul,
Partie 2
Soient un entier naturel non nul et un graphe non pondéré orienté à sommets. On note les sommets de .
5. (a) Rappeler la définition de la matrice d'adjacence du graphe .
(b) Soient un entier naturel non nul, un entier de et un entier de .
Rappeler sans justification l'interprétation du coefficient situé à la ligne et à la colonne dans la matrice , où est la matrice d'adjacence du graphe .
6. Dans cette question uniquement, on suppose que et que la matrice d'adjacence du graphe est la matrice étudiée dans la partie 1.
(a) Représenter les sommets et les arêtes du graphe sous forme d'un diagramme.
(b) Le graphe est-il connexe? Justifier votre réponse.
(c) Soit un entier naturel non nul.
Déterminer le nombre de chemins de longueur menant du au sommet .
7. Dans cette question et les suivantes, on revient au cas général décrit au début de la partie 2.
Soit un sommet de . On dit que le sommet est un voisin de quand et ( ) est une arrête du graphe. Comme le graphe est orienté, si est un voisin de , alors n'est pas forcément un voisin de .
On appelle liste d'adjacence du graphe , une liste de sous-listes telle que, pour tout entier de , la sous-liste située à la position contient tous les numéros des sommets voisins de .
Par exemple, la liste d'adjacence du graphe étudié à la question 6 est :
Écrire une fonction en langage Python, nommée matrice_vers_liste, prenant en entrée la matrice d'adjacence A d'un graphe (définie sous forme de liste de listes) et renvoyant la liste d'adjacence de .
8. On cherche à écrire une fonction en langage Python permettant d'obtenir la longueur du plus court chemin menant d'un sommet de départ à chaque sommet du graphe .
On souhaite pour cela appliquer un algorithme faisant intervenir les variables suivantes:
Une liste distances à éléments, où l'élément situé à la position sera égal, à la fin de l'algorithme, à la longueur du plus court chemin menant du sommet de départ au sommet .
Une liste a_explorer contenant tous les sommets restant à traiter.
Une liste marques contenant tous les sommets déjà traités.
Nous donnons ci-dessous la description de l'algorithme :
Initialisation des trois listes décrites ci-dessus :
Initialement, chaque élément de la liste distances est égal à , à l'exception du sommet auquel on affecte la distance 0 .
La liste marques ne contient initialement que le numéro du sommet de départ ,
la liste a_explorer ne contient initialement que le numéro du sommet de départ .
Tant que la liste a_explorer n'est pas vide, on répète les opérations suivantes :
Nommer s le premier sommet de la liste a_explorer, et le retirer de cette liste.
Pour chaque voisin v du sommet si v n'est pas dans la liste marques, on l'ajoute à la liste marques, on l'ajoute à la fin de la liste a_explorer, et on lui affecte une distance égale à distances[s]+1.
(a) On considère le graphe orienté étudié à la question 6 .
Donner la valeur de la liste distances à l'issue de l'exécution de l'algorithme décrit ci-dessus, lorsqu'on l'applique au graphe en choisissant comme sommet de départ.
(b) Recopier et compléter la fonction suivante, prenant en entrée la liste d'adjacence L du graphe et le numéro i0 du sommet de départ , et renvoyant la liste distances après exécution de l'algorithme décrit ci-dessus.
def parcours(L, i0):
p = len(L)
distances =
distances[i0] = 0
a_explorer =
marques =
-----------
while
s =
for v in __---------:
if v not in marques:
marques.append(v)
----------
----------
return distances
(c) Modifier la fonction précédente pour qu'elle renvoie la liste de tous les sommets pour lesquels il existe un chemin menant du sommet de départ au sommet .
Annexe - Fonctions Python utiles
Manipulation de listes
On suppose que L désigne une liste à n éléments.
L'opérateur de concaténation +, appliqué entre deux listes, renvoie la liste obtenue en plaçant les éléments de la seconde liste à la suite de ceux de la première liste.
Par exemple, renvoie la liste .
L'opérateur *, appliqué entre une liste L et un entier n , renvoie la liste obtenue en concaténant n fois la liste L avec elle-même.
Par exemple, [1, 4, 2] *3 renvoie la liste [1, 4, 2, 1, 4, 2, 1, 4, 2].
La fonction len prend en argument d'entrée une liste et renvoie le nombre d'éléments dans cette liste.
La commande L.append(x) permet d'inclure l'élément à la fin de la liste .
Pour tout entier i entre 0 et désigne l'élément d'indice i de la liste L (les indices commencent à 0 ).
Pour tout entier i entre 0 et , la commande del L[i] retire de la liste L l'élément situé à la position i. Par exemple, à l'issue des instructions
del L[1]
la liste L vaut .
La librairie numpy
Exemple d'importation : import numpy as np.
Les opérations , lorsqu'elles sont possibles, peuvent être réalisées entre deux tableaux Numpy de dimensions compatibles et agissent alors coefficient par coefficient.
Les fonctions np.sqrt (racine carrée), np.abs (valeur absolue), np.log (logarithme népérien) et np.exp (fonction exponentielle) s'appliquent à une quantité numérique ou à un tableau Numpy de nombres. Dans ce dernier cas, les fonctions sont appliquées à chaque élément du tableau donné en argument d'entrée.
La bibliothèque numpy.random
Exemple d'importation : import numpy.random as rd.
La fonction rd.random, appelée sans argument d'entrée, renvoie une réalisation aléatoire de la loi uniforme sur l'intervalle . Il est également possible de spécifier les dimensions d'un tableau Numpy en argument d'entrée pour obtenir un tableau dont les coefficients sont des réalisations indépendantes de la loi uniforme sur .
La fonction rd.randint prend en entrée deux entiers et (avec ) et renvoie une réalisation aléatoire de la loi uniforme discrète sur .