Lycée Chrestien de Troyes DS n°2 d’Informatique pour tous MP1617
Devoir surveillé n°2 d’Informatique pour tous
Jeudi 23 mars (1h30)
L’indentation des codes devra être soignée. On pourra tirer des traits verticaux pour indiquer
que des instructions sont regroupées dans un même bloc.
Les codes seront commentés.
Exercice 1 Coefficients binomiaux [D’après E3A - 1 - MP - 2015]
Écrire une fonction Binome en langage PYTHON d’argument (n,k) où :
net kreprésentent des entiers tels que 0 kn;
qui retourne la valeur du coefficient binomial Ãn
k!. On produira le code le plus efficace possible.
Exercice 2 Méthode des trapèzes
1. Rappeler l’aire d’un trapèze droit, en fonction de la longueur de sa base (b) et des longueurs de
ses deux hauteurs (h1et h2).
2. Écrire fonction Trapeze en langage PYTHON d’argument (a,b,n) où :
aet breprésentent des réels tels que a<b;
nreprésente un entier naturel non nul;
qui retourne une valeur approchée de l’intégrale
Ia,b:=Zb
a
et2dt
calculée à l’aide de la méthode des trapèzes à npas.
3. Soit aet bdes réels tels que a<b. Soit f: [a;b]Rune fonction de classe C2.
(a) Justifier l’existence de M2:=sup
x[a;b]¯¯f00(x)¯¯.
(b) Soient αet βdes réels tels que aα<βb. Démontrer la formule d’Euler-Maclaurin :
Zβ
α
f(x) dx=(βα)f(α)+f(β)
2+1
2Zβ
α
(xα)(xβ)f00(x) dx
et en déduire que :
¯¯¯¯Zβ
α
f(x) dx(βα)f(α)+f(β)
2¯¯¯¯
(βα)3
12 M2
(c) Posons I:=Zb
a
f(x) dxet T(n) la valeur approchée de Icalculée à l’aide de la méthode des
trapèzes à npas, où nN. Démontrer qu’il existe une constante C>0 telle que :
nN,|IT(n)|C
n2
1/2
Lycée Chrestien de Troyes DS n°2 d’Informatique pour tous MP1617
Exercice 3 Nombre d’occurences d’une valeur dans une liste
On se propose d’écrire deux versions, en langage PYTHON, de la fonction Occurence d’argument (L,x)
où :
Lreprésente une liste;
xreprésente une valeur;
qui retourne le nombre d’occurences de xdans la liste L.
1. Écrire une version non récursive de la fonction Occurence.
2. Écrire une version récursive de la fonction Occurence, basée sur le principe de dichotomie :
on appelle Occurence avec deux sous-listes obtenues en coupant la première liste en deux (ou
presque), de sorte que les deux sous-listes aient des longueurs strictement plus petites que la
longueur de la première liste. On pourra faire usage du slicing.
3. Démontrer la terminaison de la fonction construite en 2. Pour cela, on pourra établir, par ré-
currence, que pour tout nN:
P(n) : La fonction s’arrête et renvoie un résultat pour toute liste de longueur n.
Exercice 4 Tri rapide
On s’intéresse à une méthode de tri d’une liste d’entiers (par ordre croissant disons) : le tri rapide.
Le principe de ce tri est basé sur une stratégie de « diviser pour régner ». Il divise une collection
en deux collections de petits et grands éléments : tous les éléments de la première collection sont
inférieurs à ceux de la deuxième collection. Ce principe est ensuite ré-appliqué sur chacune des 2
sous-collections. L’algorithme s’écrit comme suit.
Sélection d’un élément (appelé pivot) choisi arbitrairement (au début, ou à la fin, ou au milieu
ou presque, ou aléatoirement...) dans la liste.
Partitionnement : on modifie la liste pour mettre tous les éléments plus petits que le pivot
devant et les plus grands derrière (le pivot devient rangé à sa position définitive).
Rappel du tri sur les 2 parties (petits et grands) de la liste.
Pour partitionner une sous-liste :
on place le pivot à la fin (arbitrairement), en l’échangeant avec le dernier élément de la sous-
liste;
on place tous les éléments inférieurs au pivot au début de la sous-liste;
on place le pivot à la fin des éléments déplacés.
1. Écrire une fonction Partitionner en langage PYTHON d’argument (L,d,p,f) où :
Lreprésente une liste d’entiers;
d(indide de début), p(indice de pivot), f(indice de fin) représentent des indices de la liste
Lvérifiant dpf;
qui partitionne la sous liste L[d:f+1], avec pcomme indice de pivot, suivant la méthode dé-
crite ci-dessus et qui retourne l’indice de la nouvelle position du pivot après partitionnement.
2. Écrire une fonction TriRapide en langage PYTHON d’argument (L,d,f) où :
Lreprésente une liste d’entiers;
d(indide de début), f(indice de fin) représentent des indices de la liste Lvérifiant df;
et qui trie la sous liste L[d:f+1] suivant la méthode du tri rapide décrite ci-dessus.
3. Estimer le nombre d’affectations et de comparaisons nécessaires pour le tri rapide dans le pire
des cas.
4. Que dire du coût mémoire pour le tri rapide?
5. Présenter une autre méthode de tri rencontrée cette année. On attend non seulement un nom,
mais aussi une esquisse d’algorithme.
2/2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !