Informatique 2011-2012 : TP Maple 3 (21/11 et 28/11) MPSI B Hoche
Exercice 1.
Tri bulle. Dans cet exercice A et n sont des variables globales pour les diverses procédures demandées et A est le nom d’un tableau indexé de 0 à n-1.
1. On considère la proposition
∃i ∈ {0, · · · n − 2} tel que A
i> A
i+1Dans quel cas la proposition précédente est-elle fausse ?
2. Écrire une procédure pascroiss() qui renvoie un i ∈ {0, · · · n − 2} tel que A
i> A
i+1lorsqu’il en existe un et qui renvoie n − 1 lorsqu’il n’existe pas de tel i.
3. Pour ranger les valeurs du tableau A par ordre croissant, on le parcourt autant de fois que nécessaire en permutant A
iet A
i+1lorsque A
i> A
i+1.
Écrire une procédure récursive tribulle() qui implémente ce tri en utilisant pascroiss().
Exercice 2.
On considère une suite récurrente (dite suite de Syracuse
1) définie par u
0∈ N
∗et, pour tout n ∈ N ,
u
n+1=
u
n2 si u
npair
3u
n+ 1 si u
nimpair
1. Que peut-on dire de la suite des u
kpour k ≥ n lorsque u
n= 1.
2. Écrire une procédure syr prenant comme paramètre une variable à valeurs dans N et dont l’appel syr(n) renvoie n/2 si n est pair et 3*n+1 si n est impair.
3. Écrire une procédure dont l’appel syracuse(n,u) renvoie u
npour u
0= u.
Ici n et u sont les entiers respectivement désignés par n et u. Cette procédure utilisera syr.
1cette suite remonte aux années 20, introduite aux USA à l’université de Syracuse dans les années 50. La conjecture (facile à deviner) qui y est attachée mobilisa tant les mathématiciens du- rant les années 1960, en pleine guerre froide, qu’une plaisanterie courut selon laquelle ce problème faisait partie d’un complot soviétique visant à ralentir la recherche américaine. (wikipedia)
4. Former une procédure dont l’appel syreq1(u) renvoie (s’il existe) le premier entier k ≤ 200) tel que u
k= 1 pour la suite définie par u
0= u et renvoie 201 lorsqu’un tel entier n’existe pas. Montrer avec Maple que pour toute valeur initiale u
0comprise entre 1 et 1000, il existe un entier k tel que u
k= 1.
Quelle est la plus petite valeur de u
0pour laquelle la suite ne prend pas la valeur 1 avant le 201 eme terme ?
5. Soit u un entier tel que la suite définie par u
0= u prenne la valeur 1. On appelle orbite de u la suite finie des valeurs de la suite jusqu’au premier 1.
Écrire une procédure dont l’appel orb(u) renvoie une liste formée par l’orbite de u.
6. Préciser l’orbite de 27, la dessiner (c’est à dire les points de coordonnées (k, u
k)).
7. Rechercher l’orbite la plus longue pour les valeurs initiales entre 1 et 1000.
La dessiner.
8. Écrire une procedure dont l’appel maxorb(u) renvoie la plus grande valeur dans l’orbite de u. Pour u entre 1 et 30, rechercher la plus grande valeur atteinte et dessiner l’orbite sur laquelle elle se trouve.
Cette création est mise à disposition selon le Contrat
Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/