Mines Informatique Commune MP PC PSI 2018Sujet, corrigé et rapport du jury
Mesure de houle
- Représentation des données en mémoire
- Lecture de fichiers texte en Python
- Boucles, listes et utilisation de range
- Intégration numérique : méthode des trapèzes
- Algorithmes de tri : tri rapide, tri par insertion
- Complexité des algorithmes
- Bases de données : requêtes SQL, jointures, agrégation
- Récursivité : diviser pour régner
Téléchargements
Présentation du sujet
Mesures de houle : traitement en Python des relevés d'une bouée, tris, SQL et transformée de Fourier rapideAfficher ou masquer la section
Présentation du sujet
Le sujet exploite les mesures de niveau de la mer d'une bouée. Il aborde la taille des données et leur lecture dans un fichier texte, l'analyse « vague par vague » (moyenne, méthode des trapèzes, passages par le niveau moyen, hauteurs et périodes), le contrôle des données par tri rapide et tri par insertion, des requêtes SQL, puis l'algorithme récursif de transformée de Fourier rapide. L'épreuve dure 1 h 30.
- 1Partie I : stockage interne des donnéesTaille en octets d'un enregistrement, gain relatif de mémoire et lecture d'un fichier texte en liste de flottants.
- 2Partie II : analyse « vague par vague »Moyenne, intégrale par la méthode des trapèzes, recherche des passages par le niveau moyen en descente et découpage du signal en vagues.
- 3Partie III : contrôle des donnéesHauteur maximale, tri rapide combiné au tri par insertion, calcul de skewness et de kurtosis et complexité.
- 4Partie IV : base de données relationnelleRequêtes SQL sur les tables Bouee, Campagne et Tempete.
- 5Partie V : analyse « spectrale »Complexité et écriture récursive de la transformée de Fourier rapide de Cooley-Tukey.
Ce qu'a observé le jury
6 erreurs relevéesOrdres de grandeur et unités de mémoire · Lecture d'un fichier texte ignorée · Bornes de range et dépassement d'indiceAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLes copies sont en général bien présentées, mais le jury relève une maîtrise insuffisante de range, de la lecture de fichiers texte et de la syntaxe élémentaire. Il déplore les appels répétés à des fonctions coûteuses dans les boucles et les estimations de complexité fantaisistes. Les questions de fin de sujet (Q20, Q21) ont été peu réussies.
Les erreurs les plus sanctionnées
- 1Ordres de grandeur et unités de mémoireQ1, Q2, Q3
Le calcul élémentaire du nombre d'octets est souvent faux, le préfixe giga est confondu avec méga et le gain relatif de 1/8 n'est pas vu.
« beaucoup de candidats ne maîtrisent pas le sens du préfixe giga, le confondant avec méga »
- 2Lecture d'un fichier texte ignoréeQ4
Cette notion explicite du programme est rarement traitée et très rarement réussie, alors que la syntaxe nécessaire est légère.
- 3Bornes de range et dépassement d'indiceQ7, Q8, Q9
Beaucoup parcourent range(len(L)) puis appellent L[i+1], ou se trompent de bornes en parcours décroissant. En Q8, un return -1 mal indenté arrête la fonction dès le premier test.
« avant de faire appel à L[i+1] dans la boucle sans paraître conscients du problème »
- 4Division et moyenne mal calculéesQ6
Diviser par len(L)-1 ou utiliser la division entière // pour une moyenne est faux.
- 5Tris du programme mal maîtrisésQ14, Q16
Le pivot du tri rapide doit porter sur l'élément de la sous-liste utilisé pour le tri ; le rôle de tmp dans le tri par insertion est mal compris.
- 6SQL et complexités fantaisistesQ19, Q20
Écriture attribut.table au lieu de table.attribut, condition de jointure réduite à un nom d'attribut, jointures hors programme ; complexités en O(n!) ou O(ln n) pour la transformée de Fourier rapide.
« la condition de jointure après ON est bien une condition, et non seulement le nom d'un attribut »
Ce qui a été bien réussi
- La question 5 (lecture des hauteurs et périodes sur la figure) est bien traitée en général.
- La fonction moyenne (Q6) est bien traitée.
- La recherche de maximum (Q13) est souvent bien traitée.
- La question 17 sur l'appel inutile dans la boucle est en général bien réussie.
Conseils du jury
- Soigner l'indentation, capitale pour juger un programme, en commençant bien à gauche de la copie.
- Se limiter aux notions du programme plutôt qu'à une syntaxe Python hasardeuse.
- Vérifier les bornes exactes de chaque range.
- Sortir des boucles les appels à des fonctions coûteuses qu'un seul appel suffit à remplacer.
- S'entraîner à lire un fichier texte et à écrire des jointures avec table1 JOIN table2 ON condition.
- Réfléchir avant d'écrire un algorithme non trivial et réutiliser les fonctions déjà écrites.
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
ÉCOLE DES PONTS PARISTECH, ISAE-SUPAERO, ENSTA PARISTECH, TELECOM PARISTECH, MINES PARISTECH, MINES SAINT-ÉTIENNE, MINES NANCY, IMT Atlantique, ENSAE PARISTECH.
CONCOURS 2018
ÉPREUVE D'INFORMATIQUE COMMUNE
Durée de l'épreuve : 1 heure 30 minutes
Les candidats sont priés de mentionner de façon apparente sur la première page de la copie :
INFORMATIQUE COMMUNE
L'énoncé de cette épreuve comporte 10 pages de texte.
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.
Mesures de houle
On s'intéresse à des mesures de niveau de la surface libre de la mer effectuées par une bouée (représentée sur la Figure 1)

Partie I. Stockage interne des données
- durée de la campagne : 15 jours;
- durée d'enregistrement : 20 min toutes les demi-heures;
- fréquence d'échantillonnage : 2 Hz .
- Cette étude utilise des résultats extraits de la base de données du Centre d'Archivage National des Données de Houle In Situ. Les acquisitions ont été effectuées par le Centre d'Etudes Techniques Maritimes Et Fluviales.
- L'ensemble des paramètres des états de mer présent dans la base CANDHIS est calculé par les logiciels :
- Houle5 (CETMEF) : analyse vague par vague (temporelle);
- PADINES (EDF/LNHE) : analyse spectrale et directionnelle (fréquentielle).
+0.4256
+0.3174
-0.0825
Partie II. Analyse "vague par vague"
On définit
On en déduit que
Les hauteurs de vagues


Ainsi, on cherche à concevoir une fonction proprietes (liste_niveaux) retournant une liste de listes à deux éléments [Hi, Ti] permettant de caractériser chacune des vagues i par ses attributs :
- Hi, sa hauteur en mètres (m) (voir Figure 3),
- Ti, sa période en secondes (
s ).
◻ Q12 - Proposer une fonction proprietes(liste_niveaux) réalisant cet objectif. On pourra utiliser les fonctions de Pythonmax(L) etmin(L) qui retournent le maximum et le minimum d'une liste L , respectivement.
Partie III. Contrôle des données
-
H_(max) : la hauteur de la plus grande vague observée sur l'intervalle d'enregistrement[0, T] ; -
H_(1/3) : la valeur moyenne des hauteurs du tiers supérieur des plus grandes vagues observées sur[0, T] ; -
T_(H1/3) : la valeur moyenne des périodes du tiers supérieur des plus grandes vagues observées sur[0, T] .
◻ Q13 - Proposer une fonction prenant en argument la liste liste_niveaux de la question 12 et retournantH_(max) .

- si la valeur absolue de
S est supérieure à 0,3 alors l'horodate est déclaré non valide; - si la valeur de
K est supérieure à 5 alors l'horodate est déclaré non valide.
Q18 - Doit-on s'attendre à une différence de type de la complexité entre une fonction évaluant
Partie IV. Base de données relationnelle
La première table est Bouee. On se limite aux attributs suivants : le numéro d'identification idBouee, le nom du site nomSite, le nom de la mer ou de l'océan localisation, le type du capteur typeCapteur et la fréquence d'échantillonnage frequence.
| idBouee | nomSite | localisation | typeCapteur | frequence | |
| Bouee | 831 | Porquerolles | Mediterranee | Datawell non directionnelle | 2.00 |
| 291 | Les pierres noires | Mer d'iroise | Datawell directionnelle | 1.28 | |
|
|
|
|
|
|
On se limite aux attributs suivants : le numéro d'identification idCampagne, le numéro d'identification de la bouée idBouee, la date de début debutCampagne et la date de fin finCampagne.
| idCampagne | idBouee | debutCampagne | finCampagne | |
| Campagne | 08301 | 831 |
|
|
| 02911 | 291 |
|
|
|
|
|
|
|
|
- date de début et fin de tempête,
- évolution des paramètres
H_(1/3) etH_(max) en fonction du temps, - le détail de certains paramètres non définis ici, obtenus au pic de tempête.
| idTempete | idBouee | debutTempete | finTempete | Hmax | |
| Tempete | 083010 | 831 |
|
|
5.3 |
| 029012 | 291 |
|
|
8.5 | |
|
|
|
|
|
|
- "Quels sont le numéro d'identification et le nom de site des bouées localisées en Méditerranée?"
- "Quel est le numéro d'identification des bouées où il n'y a pas eu de tempêtes?"
- "Pour chaque site, quelle est la hauteur maximale enregistrée lors d'une tempête?"
Partie V. Analyse "spectrale"

Sa définition pour un signal numérique
On note
On pose
L'algorithme est de type "diviser pour régner" : le calcul d'une TFD pour
Annexe
Algorithme 1
def construction__successeurs(liste__niveaux):
n=len(liste__niveaux)
successeurs=[]
m=moyenne(liste__niveaux)
for i in range(n-1):
if # A completer
# A completer
return successeurs
def triRapide(liste,g,d):
pivot= # A completer
i=g
j=d
while True:
while i <=d and liste [i][0]<pivot:
i=i+1
while j>=g and liste[j][0]>pivot:
j=j -1
if i>j:
break
if i<j:
liste[i],liste[j]=liste[j],liste[i]
i=i+1
j=j -1
if g<j:
triRapide(liste,g,j)
if i<d:
triRapide(liste,i,d)
def triInsertion (liste,g,d):
for i in range(g+1,d+1):
j=i-1
tmp = liste[i]
while # A completer
liste[j+1]=tmp
Algorithme 4
def skewness(liste_hauteurs):
n=len(liste__hauteurs)
et 3=(ecartType(liste__hauteurs))**3
S=0
for i in range(n):
S+=(liste_hauteurs[i]_moyenne(liste_hauteurs))**3
S=n/(n-1)/(n-2)*S/et3
return S
Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique commune Mines 2018 MP PC PSI ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique commune Mines 2018 MP PC PSI ?
Sur l'analyse de mesures de houle d'une bouée : lecture d'un fichier, analyse vague par vague, tri rapide et tri par insertion, requêtes SQL et transformée de Fourier rapide.
Quelles erreurs le jury a-t-il relevées en informatique Mines-Ponts 2018 ?
Des bornes de range fausses et des accès L[i+1] hors de la liste, la confusion entre giga et méga, la lecture de fichier texte non maîtrisée, des erreurs de jointure SQL et des complexités fantaisistes.
Le sujet d'informatique Mines 2018 contenait-il une erreur ?
Oui, en Q9 : le calcul de la moyenne étant forcément linéaire, il fallait comprendre que seule la recherche du dernier passage par le niveau moyen devait être en O(1) dans le meilleur des cas.
Quelle syntaxe SQL de jointure utiliser au concours Mines informatique commune 2018 ?
Le jury rappelle que la seule syntaxe exigible est table1 JOIN table2 ON condition, et déconseille NATURAL JOIN ou FULL JOIN mal maîtrisés.
Pas de description pour le moment
