Corrigé de l’exercice « spé » du bac S Centres Étrangers 2017

dimanche 18 juin 2017
par  Alain BUSSER

Le sujet est lisible ici. Il se situe dans le prolongement de cet article. Dans le présent article, on va montrer comment refaire les manips avec Sofus, et notamment ses nouvelles fonctionnalités de calcul matriciel.

C’est Sofus en ligne qui a été utilisé pour les scripts de l’article. En particulier, la tortue de Sofus a été utilisée (hors sujet) pour tracer l’arbre de Stern-Brocot puis le parcourir.

L’arbre de Stern-Brocot a été découvert séparément par le mathématicien allemand Moritz Abraham Stern (1858) et par Achille Brocot (1861), horloger français qui l’a utilisé pour concevoir des systèmes d’engrenages avec un rapport entre rouages proche d’une valeur souhaitée.
Cet exercice aborde la méthode avec des matrices carrées.
On considère les deux matrices G et D (ci-dessous).
On construit un arbre descendant à partir d’une matrice initiale, de la façon suivante : de chaque matrice carrée M de l’arbre partent deux nouvelles branches vers les deux autres matrices M ×G (à gauche) et M × D (à droite). Ces deux nouvelles matrices sont appelées les matrices filles de M.
Dans la méthode considérée, on prend comme matrice initiale la matrice I.

Corrigé Sofus

Voici un « script » permettant d’enregistrer dans la mémoire de Sofus, les trois matrices G, D et I :

Note : Ces trois matrices n’auront pas le même statut dans la suite : G et D seront considérées comme des matrices constantes comme dans l’expression « multiplier par G », alors que la matrice I est variable : C’est elle qui sera multipliée par G ou D à chaque étape. La matrice I ne restera donc pas la matrice identité tout au long du script (elle ne restera même pas une matrice carrée tout au long de certains scripts).

1. Déterminer les deux matrices manquantes A et B (en rouge), dans la troisième ligne de l’arbre de Stern-Brocot ci-dessous.

image/svg+xml [1, 0] [0, 1] [1, 0] [1, 1] [1, 0] [2, 1] [1, 1] [1, 2] [1, 1] [0, 1] [2, 1] [1, 1] [1, 2] [0, 1]

On remarque que la matrice A s’obtient en multipliant la matrice I par G puis par D (parcours de l’arbre),

Corrigé

Voici un script permettant de la calculer (ce qui a été fait en rouge ci-dessus) :

Et la matrice B s’obtient en multipliant I d’abord par D et ensuite par G.

Dans la suite de l’exercice, on admet que pour toute matrice M de l’arbre de Stern-Brocot, la somme des coefficients de la seconde ligne est non nulle.
2. On associe à une matrice une fraction...

Passage par un vecteur

Comme le numérateur de la fraction est la somme des éléments de la première ligne de M et le dénominateur est la somme des éléments de la seconde ligne de M, ce sont les éléments du produit de M par le vecteur (1 ;1). Si on dessine l’arbre de Stern-Brocot avec les fractions :

puis on ajoute la multiplication par le vecteur :

et enfin la division de l’abscisse de ce vecteur par son ordonnée :

on obtient l’arbre de Stern-Brocot en version fractions. Ce n’est pas le choix de l’énoncé mais il lui est équivalent.

Montrer que, dans cette association, le trajet « gauche-droite-gauche » à partir de la matrice initiale dans l’arbre, aboutit à une matrice correspondant à la fraction 3/5.

Corrigé

Le trajet « gauche-droite-gauche » revient à multiplier I successivement par G, par D puis par G, et ensuite on le multiplie par le vecteur (1 ;1) pour avoir le numérateur et le dénominateur de la fraction obtenue :

Celle-ci est donc bien égale à 3/5.

3. Soit M une matrice de l’arbre ... On note ∆M = ad −bc, la différence des produits diagonaux de cette matrice.

Déterminant

La différence est notée Δ parce que c’est un déterminant (mathématiques). Sofus permet de vérifier expérimentalement que ce déterminant est toujours égal à 1 :

a. Montrer que si ad −bc = 1, alors d(a +c)−c(b +d) = 1.

Corrigé

En développant d(a +c)−c(b +d) on constate qu’il est égal à ad-bc :

Par conséquent si le premier est égal à 1, le second aussi, puisqu’ils sont égaux entre eux. Comme le déterminant de la matrice identité est égal à 1, on peut montrer par récurrence sur le parcours de l’arbre, qu’il en est de même pour toutes les matrices de l’arbre.

b.En déduire que si M est une matrice de l’arbre de Stern-Brocot telle que ∆M = 1, alors ∆M×G = 1, c’est-à-dire que la différence des produits diagonaux de la matrice M ×G est aussi égale à 1.

Corrigé

L’expression développée au (a) est justement le déterminant de M×G.

Ce résultat se généralise à un résultat hors programme : Le déterminant du produit de deux matrices, est égal au produit des deux déterminants. Or ici on multiplie M par G dont le déterminant est 1×1-0×1=1 et cette multiplication par G ne change donc pas le déterminant. Idem pour la multiplication par D, dont le déterminant est aussi égal à 1. Ce sont les résultats admis dans la suite de l’exercice.

On admet de même que ∆M×D = 1, et que toutes les autres matrices N de l’arbre de Stern-Brocot vérifient l’égalité ∆N = 1.
4. Déduire de la question précédente que toute fraction associée à une matrice de l’arbre de Stern-Brocot est irréductible.

Corrigé

Du fait que ad-bc=1, il résulte d’après le théorème de Bachet-Bézout que a et c sont premiers entre eux. Or a et c sont les numérateur et dénominateur d’une fraction de l’arbre de Stern-Brocot. Cette fraction est donc irréductible.

5. Soit m et n deux entiers naturels non nuls premiers entre eux. Ainsi la fraction m/n est irréductible. On considère l’algorithme suivant.

a. Recopier et compléter le tableau suivant, indiquer ce qu’affiche l’algorithme lorsqu’on le fait fonctionner avec les valeurs m=4 et n=7.

Corrigé

En modifiant le script précédent pour qu’au lieu d’afficher « gauche », on aille à gauche, on obtient l’affichage suivant :

Gauche
4/3
Droite
1/3
Gauche
1/2
Gauche
1

Ce qui correspond au tableau suivant :

Affichage Gauche Droite Gauche Gauche
m 4 4 1 1 1
n 7 3 3 2 1

b. Conjecturer le rôle de cet algorithme. Vérifier par un calcul matriciel le résultat fourni avec les valeurs m = 4 et n = 7.

Cet algorithme calcule le parcours de l’arbre de Stern-Brocot menant à une fraction donnée. On peut vérifier le résultat pour 4/7 avec le programme du début :

Mais aussi, avec la tortue :

De l’arbre aux cercles

On peut gonfler les branches de l’arbre comme celles d’un baobab, jusqu’à ce que les branches aient la forme de cercles. On obtient alors les cercles de Ford, qui sont tangents entre eux mais aussi à l’axe des abscisses :

Voici le script en CoffeeScript ayant fait ce dessin :

  1. fs = nouvel Ensemble []
  2. pour p dans [0..840]
  3.     f = nouvelle Fraction p, 840
  4.     fs.ajoute f
  5. pour x dans fs.support
  6.     dessineCercle 10+x.n/x.d*400,400-200/x.d/x.d,200/x.d/x.d,'red'

Télécharger

Il est à utiliser avec alcoffeethmique.

On voit, pour l’exemple de 4/7, que le trajet

  • commence par le disque 1 en haut à droite (départ commun à toutes les fractions, puisque c’est la racine de l’arbre) ;
  • part vers la gauche pour le disque 1/2 en bleu (c’est le seul « grand » disque tangent à 1 que l’on voit sur cette partie de la figure) ;
  • part ensuite vers la droite pour la fraction 2/3 (en bleu) ;
  • puis vers la gauche à nouveau pour la fraction 3/5 (en vert) ;
  • et enfin à nouveau vers la gauche pour aboutir à la fraction 4/7 (également en vert).

On peut donc dessiner les parcours de l’arbre par des ensembles de cercles tangents entre eux :

Les cercles de Ford pourraient s’inscrire dans les nouveaux programmes de Seconde, où il est question de programmation mais aussi de tangente à un cercle : Ces cercles sont en effet non seulement tangents entre eux, mais aussi tous tangents à l’axe des abscisses, comme le montre cet autre graphique où on en a représenté plus, qui suggèrent l’axe des abscisses :

Du point de vue de la géométrie hyperbolique dans le demi-plan de Poincaré, ce sont donc des horicycles tangents entre eux. Voir comment Jos Leys fait de l’art avec les cercles de Ford. Mais voici une variante où les cercles de Ford, vus ci-dessus, sont transformés en sphères de Ford :

Script pour les sphères de Ford

Voici le script ayant construit l’image ci-dessus, écrit en Povray :

  1. #version 3.7;
  2. #include "colors.inc"
  3. camera {
  4.  location  <0.0, 2.0, -1.0>
  5.  direction 1.5*z
  6.  right     x*image_width/image_height
  7.  look_at   <0.5, 0.0,  0.0>
  8. }
  9. light_source {
  10.  <0, 0, 0>
  11.  color rgb <1, 1, 1>
  12.  translate <-30, 10, -30>
  13. }
  14. sky_sphere {
  15.  pigment {
  16.  color <1,1,1>  }
  17. }
  18.  
  19. #declare N = 66*2520;
  20.  
  21. #declare n = 0;
  22. #while(n<=N)
  23.  
  24. #declare a = n;
  25. #declare b = N;
  26. #while(b>0)
  27.         #declare c = b;
  28.         #declare b = mod(a,b);
  29.         #declare a = c;
  30. #end
  31.  
  32. sphere {
  33.  <2*n/N,0,a/N*a/N>, a/N*a/N
  34.  texture {
  35.    pigment {
  36.      color Blue
  37.    }
  38.      finish {
  39.         ambient .002
  40.         diffuse .6
  41.         specular .75
  42.         roughness .001
  43.         reflection .02
  44.      }
  45.  }
  46. }
  47.  
  48. #declare n=n+1;
  49. #end

Télécharger

Mais on peut aller encore plus loin : En rapetissant les cercles de telle manière qu’ils restent tangents à l’axe des abscisses mais ne soient plus tangents entre eux, on obtient ce genre de dessin :

Dans cet article on montre comment, en enroulant le segment tangent à tous les cercles, autour d’une cardioïde, on obtient le squelette de l’ensemble de Mandelbrot...


Post-scriptum : Les scripts de l’article :


Commentaires