Vincent Neiger et Henri Lastakowski 2010–2011
Devoir d’informatique
Suite de Syracuse — Carrés magiques
1 Suite de Syracuse
“Take any natural number n. If nis even, divide it by 2to get n/2, if nis odd multiply
it by 3and add 1to obtain 3n+ 1. Repeat the process indefinitely.” 1
La suite de Syracuse (sn)est définie par récurrence :
s0Net nN, sn+1 =sn
2si snest pair
3·sn+1 + 1 sinon
Q 1.a) Calculez quelques valeurs de la suite pour différentes valeurs de s0: 8, 9, 10,
11 et 12.
Est-il utile de continuer les calculs lorsqu’un des termes de la suite vaut 1?
Q 1.b) Écrivez un algorithme syracuse qui calcule les termes successifs de la suite
(sn)et les stocke dans un tableau. Cette fonction ne s’arrêtera de calculer que si elle trouve un
terme de la suite valant 1.
Implantez cet algorithme en matlab.
Parmi toutes les fonctions matlab que vous avez déjà écrites, celle-ci semble la plus « dan-
gereuse » : devinez pourquoi.
Q 1.c) À l’aide de cette fonction, calculez les valeurs de la suite pour de nombreuses
valeurs initiales.
Quelle conjecture peut-on faire sur la suite de Syracuse ?
Q 1.d) Temps de vol de la suite :
Modifiez la fonction syracuse pour obtenir syracuse_nb, qui au lieu de renvoyer le
tableau de valeurs de la suite renvoie le plus petit nombre d’itérations nécessaires à l’obtention
d’un terme valant 1.
Q 1.e) Altitude maximale de la suite :
Modifiez la fonction syracuse pour obtenir syracuse_alt, qui au lieu de renvoyer le
tableau de valeurs de la suite renvoie le maximum de la suite (ie. le plus grand entier atteint
par les termes de la suite).
Q 1.f) Tracé graphique des résultats :
Écrivez une fonction syracuse_tr qui lance une fenêtre graphique affichant les temps de
vol et les altitudes maximale de la suite de Syracuse pour toutes les valeurs initiales comprises
entre deux entiers iet jtels que i<j.
Que remarquez-vous sur le graphique de syracuse_tr(1,100) ?
1. D’après wikipedia anglophone
Matlab – DM
Devoir d’informatique
Suite de Syracuse — Carrés magiques 2/3
2 Carré magique
2.1 Définition et premières propriétés
Définition. Pour un entier n>1, un carré magique d’ordre nest une matrice carrée d’ordre ndont
les coefficients sont tous les entiers de 1 à n2de sorte que les sommes des nombres sur chaque ligne, sur
chaque colonne ainsi que sur les deux diagonales principales soient égales à un même nombre sn. Cette
somme snest appelée constante magique d’un carré magique d’ordre n.
Q 2.a) Combien existe-t-il de carrés magiques d’ordre 1 ? Et d’ordre 2 ?
Dans la suite, on admettra 2qu’il existe un carré magique d’ordre npour tout n>3. Ceci
implique en particulier que la constante snexiste pour n>3.
Q 2.b) Soit nN− {2}. Calculez la constante magique snen fonction de n.
2.2 Carrés magiques de taille impaire : méthode siamoise
Cette méthode de construction a été introduite en France par Simon de La Loubère à la fin
du XVIIesiècle alors qu’il revenait de son ambassade au Siam (ancien nom de la Thaïlande).
Soit nun entier impair supérieur à 3 : n= 2p+ 1 avec p>1.
Notre but est de construire les coefficients d’une matrice Ad’ordre nde sorte qu’une fois
tous les coefficients construits, cette matrice forme un carré magique.
Dans cette partie, les indices dans la matrice sont considérés modulo n : le coefficient (n+1,1)
est en fait le coefficient (1,1), le coefficient (3, n + 1) est en fait le coefficient (3,1), etc. Ceci
revient à imaginer que la première et la dernière ligne sont adjacentes, ainsi que la première et
la dernière colonne : la matrice est vue comme enroulée sur un tore 3.
Voici un algorithme informel décrivant la méthode siamoise :
Initialisation : placer 1au milieu de la première ligne
Étape itérée : si kest placé en (i, j),
si (i+ 1, j + 1) est vide, placer k+ 1 dans cette case
sinon, placer k+ 1 en (i, j 1)
Q 2.c) Déroulez l’algorithme à la main (sur du papier) pour construire un carré mag-
ique d’ordre 3, puis un carré magique d’ordre 5.
Q 2.d) Modifiez (toujours sur du papier) l’algorithme ci-dessus pour qu’il soit plus
formel. Entre autres :
précisez les entrées et les sorties de l’algorithme,
utilisez une boucle (for ou while) pour décrire plus précisément l’itération,
utilisez des affectations A(i,j) = k pour formaliser l’opération « placer ken (i, j)».
Q 2.e) Transcrivez cet algorithme en une fonction Matlab methode_siamoise, puis
vérifiez sur des petites valeurs de nque vous obtenez bien un carré magique.
Ainsi, vous savez construire facilement un carré magique d’ordre npour tout nimpair. Les
méthodes de construction des carrés magiques d’ordre pair sont plus difficiles. Une méthode
générale pour construire des carrés magiques d’ordre n>3, aussi bien pair que impair, a été
2. Des méthodes de construction existent pour obtenir des carrés magiques pour tout n>3. Par ailleurs, le
nombre de carrés magique d’ordre naugmente très vite avec n: on estime qu’il y a environ 1019 carrés magiques
d’ordre 6, sans compter ceux que l’on obtient à partir d’un autre grâce à des rotations et des réflexions.
3. Un tore est une figure géométrique que vous pourrez observer sur sa page wikipedia.
Matlab – DM
Devoir d’informatique
Suite de Syracuse — Carrés magiques 3/3
publiée en 1976 par William H. Benson et Oswald Jacoby, dans New Recreations With Magic
Squares.
2.3 Est-ce bien un carré magique ?
Q 2.f) Écrire une fonction Matlab coefficients_magiques qui prend en argu-
ment une matrice Aet qui renvoie true si Aest carrée et si ses coefficients sont exactement
l’ensemble des entiers de 1 à n2, où nest l’ordre de A; elle renverra false dans le cas con-
traire.
Q 2.g) Écrire une fonction Matlab est_magique qui prend en argument une matrice
Aet renvoie true si Aest un carré magique, false sinon.
Q 2.h) Vérifiez sur quelques exemples que votre algorithme methode_siamoise
construit bien des carrés magiques.
2.4 Carrés magiques de taille impaire : méthode de Bachet (dite du damier crénelé)
Cette méthode est apparue en 1612 dans une publication de Claude-Gaspard Bachet de
Méziriac (Problèmes plaisants et délectables qui se font par les nombres). Elle a donc été connue en
France avant la méthode siamoise.
Cette partie est moins guidée que les précédentes, et par conséquent beaucoup plus diffi-
cile.
Lisez le paragraphe correspondant à cette méthode sur wikipedia :
http://fr.wikipedia.org/wiki/Carré_magique_(mathématiques)
Q 2.i) Formalisez cette méthode en un algorithme pour construire des carrés mag-
iques de taille impaire.
Conseils : faites bien attention aux indices dans la matrice. Si vous construisez un carré
magique d’ordre n, utilisez pendant tout l’algorithme une matrice carrée d’ordre 2n1, puis
seulement à la fin, recopiez la bonne sous-matrice (le « carré magique qui est au milieu ») dans
une matrice n×n.
Q 2.j) Implémentez cet algorithme en Matlab et vérifiez le résultat obtenu avec quelques
entrées (n’hésitez pas à utiliser est_magique...).
1 / 3 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 !