Documente Academic
Documente Profesional
Documente Cultură
L1SM Gr 2
Sous la direction de :
M.Durieu
2/31
Introduction :
Nous avons tous commis des erreurs, peut tre plus en particulier, lorsque l'on a appris additionner deux fractions. Sous cette ''erreur'' se cache une opration rvlant biens des proprits. Cette opration se nomme la mdiante de deux fractions, ou bien addition du cancre car, les cancres l'utilisaient, l'utilisent et l'utiliseront encore pour additionner deux rationnels positifs. Il est important de noter que cette addition du cancre est diffrente de l'addition usuelle. Dans un premier temps, nous dfinirons l'opration de mdiante. Puis, nous nous intresserons aux suites de Stern-Brocot afin d'en dgager quelques proprits. Ensuite nous fournirons la dmonstration de la proposition suivante :''Tout rationnel positif apparat, partir d'un certains rang, dans les suites de Stern-Brocot''. Enfin, en annexe nous donnerons un algorithme capable de trouver la premire position d'un rationnel dans les suites de Stern-Brocot, tout en ayant auparavant expos les proprits utilises par l'algorithme.
3/31
2 3 2 +3 5 4 1 3 = = = . 4 5 4 +5 9 7 2 5 Avant de raliser l'addition du cancre entre deux fractions, il faut s'assurer que l'on ait des fractions sous formes rduites i.e. irrductibles.
Conventions :
On note l'lment neutre de l'addition usuelle 0 par 0 . L'addition du cancre ne 1 possde pas d'lment neutre. 1 On note + par . 0 On note + {+ } par + . a c On dit que et simple si et seulement si pgcd ( a + c ;b + d )=1 i.e. la b d fraction est obtenue directement sous forme irrductible.
4/31
Proprits :
Dans ce qui suit a c x = et y = sont deux fractions positives irrductibles prises b d
dans + . i) L'addition du cancre est commutative. Dmonstration : a c a + c c+ a c a = = = b d b +d d +b d b ii) L'addition du cancre n'est pas associative. Contre-exemple : 1 2 5 1 5 3 1 2 5 1 7 4 3 4 . = = et = = . Or 2 1 3 1 3 2 2 1 3 2 4 3 2 3
( )
( )
iii) L'addition du cancre n'est pas distributive par rapport la multiplication usuelle. Contre-exemple : 1 3 2x4 8 2x1 2x3 1 6 7 8 7 2 ( )= = et = = . Or . 2 5 7 7 2 5 1 5 6 1 6 a c a c iv) n ;n +( )=( n + )( n + ) b d b d Dmonstration : a c b.n + a d.n + c ( n + )( n + )= . Or bn + a a [ b ] et dn+ c c [ d ] d'o b d b d pgcd ( bn + a ;b )= pgcd ( dn + c ; d )=1 . b.n + a d.n + c b.n + a + d.n + c n ( b + d )+ a + c a c = = = n +( ) . b d b+d b +d b d a c a c Remarque : on peut de mme dmontrer n ;n ( )=( n )( n ) b d b d
5/31
v)
a a c c b b d d
Dmonstration : a c b ( )+ d ( ) a c a +b b d . = = b d c+d b+ d a c et . D'aprs la rgle des nombres de b d Nicolas Chuquet , une moyenne est comprise entre les deux extremums quelle a a c c contient. D'o : . b b d d Remarque : x y = x = y x = y
a c est une moyenne pondre de b d
vi)
1 1 1 = x y xy
Dmonstration : a c x = et y = b d 1 1 b d b+ d 1 1 = = = = . x y a c a + c a+ c x y b +d vii) x , y 1 x y =1 x =
1 y
[1]
Dmonstration : a c a +c x y =1 = 1 =1 a + c =b + d or on a : x , y 1 a b et c d . b d b+ d 1 D'o a =d et b = c x = y
[1] Ici on prend x , y 1 car si on en prend un valant l'unit cela n'a pas dintrt car l'inverse de un c'est un. Cela est prouv par la proprit V.
6/31
si et seulement si le dterminant ( y ; x ) .
Construction :
La premire suite de Stern-Brocot est la suite B 0 telle que : 0 1 B 0=( ; ) . 1 0 On obtient la suite B n +1 partir de la suite B n en insrant entre deux lments conscutifs de B n leurs mdiantes. Ainsi on a : 0 1 B 0=( ; ) 1 0 0 0 1 1 0 1 1 B 1=( ; ; )=( ; ; ) . 1 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 1 2 1 B 2=( ; ; ; ; )=( ; ; ; ; ) 1 1 1 1 1 0 0 1 2 1 1 0 Et ainsi de suite.
Proposition 2.1 :
Une suite B n comporte 2 n + 1 lments. Dmonstration : Pour n=0 on a : 0 Card ( B 0 )=2 et 2 +1 =1 +1 = 2 . La proprit est vraie au rang n=0. Soit p un entier naturel non nul tel que hypothse que Card ( B p +1 )=2 p +1 + 1 .
Card ( B p )= 2 p+ 1 . Montrons sous cette
7/31
Par construction des suites de Stern-Brocot, on obtient chaque rationnel de Bp B p leur mdian. On a intercal pour obtenir B p +1 .
B p +1 en intercalant entre
2 p lments entre ceux de
On a donc : Card ( B p +1 )=Card ( B p )+ Card ( B p )1 Card ( B p + 1)= 2 ( 2 p+ 1 ) 1= 2 p+ 1+ 1 On a montrer que la proprit est vraie au rang p+1 et donc de proche en proche, la proprit est vraie pour tout entier naturel n. Soit : n ;Card ( B n)= 2 n+ 1 On notera la (k+1)-ime coordonne de B n : b k pour k variant de 0 2 n . n
Proposition 2.2 :
Soit n et n' deux entiers naturels non nul tel que n < n'. Llment de coordonne
2 bk dans la suite B n , aura comme coordonne b( n n'
n' n
)k
Pour n' = n , on a :
2 b( n'
n' n
)k
2 = b( n
n n
)k
k =b n .
pn
)k
. Montrons
)k
Pour construire
)k
et
) k + 2 p n
2 b(p
p n
aura
)k
2 =b(p +1
p +1 n
En supposant que la proprit est vraie au rang p, on a montr qu'elle est vraie au rang p+1. Soit de proche en proche, la proprit est vraie por tout entier naturel n'. Ceci implique que pour tout lment b k , si k est pair alors l'lment est dj n apparu dans une suite antrieure la suite B n .
8/31
Proprits :
Par construction de la suite de Stern-Brocot on a : +1 +1 b k = b 2k 2.a) b k n n n+ 1 La proprit 2.a est immdiate par construction de la suite de suites de Stern-Brocot. Cette proprit implique que pour tout lment b k , si k est impair alors c'est la n premire fois que l'lment apparat dans a suite de suite de Stern-Brocot. Pour tout entier n et k n et 0 k 2 n on a : 2.b) 0 b0 = n 1
n
2.c) = 1 bk n
b2 n
1 = 0
2 n 1 1 2.d) b = n 1
2.e) b 2 n
Pour tout entier n et k n et 2n 1k 2n : 2.g) b 2 n . = 1+ bk n n 0 1 2 = b = dcoulent de la construction des suites de SternLes proprits b 0 et n 1 n 0 Brocot : se sont les deux termes extrmes des suites. 2 n 1 1 Dmonstration de la proprit 2.d : n b = n 1 Pour n= 1 (1 n'est pas prsent dans la suite B 0 ). 1 = On a bien b 1 . La proprit est vraie au rang n=1. 1 1 p 1 1 Soit p un entier naturel non nul tel que b 2 = . Montrons sous cette hypothse p 1 p 1 = . que b 2 p +1 1 1 2 p p + 1 .2 p 1 2.2 p1 2 p = b p+ 1 =b p + 1 = b p + 1 . Selon la proposition 2.2, on a : 1 En supposant que la proprit est vraie au rang p, on a montr qu'elle est vraie au rang p+1. Soit de proche en proche, la proprit est vraie pour tout entier naturel n.
n 1
. = 1 b k n
+k
9/31
Dmonstration de la proprit 2.e : n , k ; 0 k 2 n b 2 n Pour n=0, on a ; 0 1 . B0= ; 1 0 La proprit est vraie au rang n=0. Si k 0 [ 2 ] (k pair) : D'aprs la proposition 2.2 on obtient : n n +1 1 k 2 2k b2 = b = . n n +1 b 2k n+ 1
1 bk n
( )
Si k 1 [ 2 ] (k impair) : En appliquant la proprit a des suites de Stern-Brocot puis la proprit vi) de l'addition du cancre on obtient : n n n 1 1 1 1 k 2 k 1 2 k +1 b2 = b b = = = . n n n k +1 k 1 k1 k +1 k bn bn bn bn bn Dmonstration de la proprit 2.f : Pour n=1 on a : 0 1 1 k = 1 b k . b1 . B1= ; ; 1 1 1 1 0 Or k { 0 ; 1 } . Si k=0 on a : 1 b1 = et 1 b 0 =1 0 =1 . 1 1 1 Si k=1 on a : 0 = 1 1= 0 . b0 = et 1 b 1 1 1 1 La proprit est vraie pour n=1. Si k 0 [ 2 ] (k pair) : D'aprs la proposition 2.2 on obtient : n , k {0...2n 1 } b2 n
n 1
=1 b k n
k 2 2k 2k . b2 = 1 b k n n b n +1 =1 b n + 1 Si k 1 [ 2 ] (k impair) : En appliquant la proprit 2.a des suites de Stern-Brocot puis la proposition 2.2 on a : k k1 k +1 k 1 k +1 b2 = b2 b2 b2 =( 1 b k n n n n n )( 1 b n ) . D'aprs la proprit iv) de l'addition du cancre :
n 1 n 1 n 1 n 1
n 1
10/31
n 1
n 1
b2 n
n 1
k 1 k+1 = 1( b n b n ) b 2 n
n 1
k . = 1 b n
n 1
Dmonstration de la proprit 2.g : n , k {0...2n 1 1 }b 2 n Pour n=1 on a : 0 1 1 +k = 1+ bk . b1 . B1= ; ; 1 1 1 1 0 Or k =0 . Si k=0 on a : 1 0 1 + b =1 + 0 = 1 . b1 = et 1 1 1 Si k=1 on a : 1 b2 = et 1 + b 1 =11 =0 . 1 0 La proprit est vraie pour n=1. Si k 0 [ 2 ] (k pair) : D'aprs la proposition 2.2 on obtient :
+k
=1 + b k n
+k 2 + 2k 2k b2 = 1+ bk n n b n + 1 =1 + b n + 1 . Si k 1 [ 2 ] (k impair) : Grce la construction des suites de Stern-Brocot puis par application de la proposition 2.2 on a :
n 1
2 n 1 k est impair donc la somme des cancres de ses deux voisins) D'aprs la proprit iv) de l'addition du cancre :
k 1 k+1 2 k 1 k +1 b2 =( 1 + b k =1 +( b k n n )( 1 + b n ) b n n b n ) . Enfin, d'aprs la proprit a) des suites de Stern-Brocot on a :
n 1 n 1
b2 n
n 1
= b2 n
n 1
k1
b2 n
n 1
k +1
b2 n
n 1
1 k +1 =( 1 + bk n )( 1 + b n ) (car
b2 n
n 1
1 k+1 2 = 1 +( b k n b n ) b n
n 1
=1 + b k n .
Proposition 2.3 :
Deux lments conscutifs d'une suite B n sont adjacents. Pour n=0 on a : 0 1 . B0= ; 1 0
( )
11/31
;b 0)= 1 . Avec ( b 1 0 0 La proprit est vrai au rang n=0. Soit p un entier naturel non nul tel que
+1 2k ;b p +1)=1 . hypothse que ( b 2k p +1 +1 k (bk ; b p)= 1 . Montrons sous cette p
Par application d'une des proprit du dterminant on obtient : +1 k +1 ( b k ; b p)= 1 ( b k b k ;b k )=1 . p p p p Par application de la proprit b) et de la proposition 2.2 on a : +1 +1 k + 1 2k ( b k bk ;b k )=1 ( b 2k ; b p)=1 ( b 2k ; b p+ 1 )=1 p p p p +1 p+ 1 Par construction des suites de Stern-Brocot, une fois qu'un lment apparat un certain rang n, on va le retrouver dans les rang suprieur n. Pour viter la redondance d'information, on peut reprsenter les suites de Stern-Brocot sous la forme d'un arbre binaire :
12/31
Proposition 3.1 :
Soit deux fractions irrductibles adjacentes x = de ces deux fractions est simple. Dmonstration : a c Soit x = et y = deux fractions adjacentes avec b d a c < . On a alors : b d a et b y= c . L'addition du cancre d
13/31
c a =1 . Leur mdiante est : z = a + c . Les proprits du dterminant nous b+ d db permettent d'crire : ( y ; x )=( y ; z )=( z ; x )= 1 . ( z ; x )=1 a + c a =1 b ( a + c )a ( b + d )= 1 . Or d'aprs le thorme de b+ d b
Bzout : pgcd ( a; b )=1 ( u : v ) ; au+ bv = 1 . Ici il suffit de prendre : u = b et v = -a. On obtient que a+c et b+d sont premiers entre a+ c eux, et donc que est irrductible. D'o x y est simple. b+ d
Lemme d'encadrement :
a c et deux fractions irrductibles adjacentes et une fraction irrductible b d p telle que a < p < c . On a : a < p < c p > a + c et q > b + d . b q d b q d q Dmonstration : a c Soit et deux fractions irrductibles adjacentes. b d ces deux fractions on associe le points de coordonnes : ( b ; a ) et ( d ; c ) que i ; j ) . On peut construire une nouvelle base l'on place dans le repre ( O ; vectorielle en utilisant les vecteurs dfinis par ces points et l'origine du repre. Ces vecteurs forment ce que l'on appel une -base[1] car les fractions sont adjacentes. Soit p un rationnel positif tel que : q a p c < < b q d Le point qui lui est associ et ( q ; p ) Soit
[1] Ici, on a muni le plan d'une base orthonorme. On a form une autre base en prenant deux fractions adjacentes, auxquelles on a associ des points puis des vecteurs. Cependant, chaque rationnel on a associ un couple d'entiers relatifs. ( ; + ;) est un anneau commutatif i.e. ( ; + ) est un groupe abliens ( la loi + est commutative) et la loi module de
( ; + ;) . Ce module est libre et de type fini car tous les lments de peuvent tre engendrs b ; d par la base B = (voir rsolution du systme matriciel : quel que soit p et q on trouve toujours x a c q est engendr par les vecteurs de la base B ). Cette base est appele -base et y appartenant Z tels que p car c'est une base d'un -module libre (comme ce module est dfinit sur un anneau commutatif, on ne fait pas la
un
{( ) ( ) }
()
diffrence entre module gauche et module droite). Dans ce cas on ne considre plus la base comme une base du
-espace vectoriel 2
-module libre 2 .
14/31
Regardons l'expression de ce vecteur dans notre -base. On rsout le systme : b d x = q ac y p Comme b d est de dterminant 1, selon Cramer on a : x = q d et y = b q . ac pc ap D'aprs l'hypothse on a : qc > pd qc pd > 0 et bp > aq bp aq > 0 . D'o q est combinaison coefficients entiers x , y 1 et donc que le vecteur p b et d . strictement positifs de a c soit : q = x b + y d p > a + c et q > b+ d . p a c
( )( ) ( )
( )
()
() ()
() () ()
chaque intervalle I, dont les bornes sont deux rationnels positifs adjacents, on dfini une application : + comme tant la somme des numrateurs et dnominateurs des fractions composant les bornes de I. a c I =] ; [ Soit : b d ( I )=a + b + c + d
Proposition 3.2 :
Soit I un intervalle, dont les bornes sont deux fractions irrductibles positives adjacentes. Si on coupe cet intervalle en deux grce la mdiation des bornes, on a a c a a c a c c a a c I ] ; [=] ; ]] ; [ . I g =] ; [ et En notant b d b b d b d d b b d
15/31
a c c I d =] ; [ on a : ( I g ) , ( I d )> ( I ) . b d d Dmonstration : Si on coupe l'intervalle I en deux grce la mdiation des bornes de l'intervalle tel que l'on est : I = I g I d on a par le lemme d'encadrement et par la proprit iv : a c ( I d ) et ( I g )> ( I ) . En effet I =] ; [ entrane que b d a a +c a +c c I g =] ; ] et I d =[ ; [ , donc que : b b+ d b +d d ( I g )= 2a + 2b + c + d > a + c + b + d = ( I ) et a c est simple car I ( I d )=2c + 2d + a + b > a + c + b + d = ( I ) (rappelons que b d est un intervalle bornes adjacentes).
ce qui est absurde : une suite strictement croissante et divergeant l'infinie ne peut pas tre majore par un entier. D'o : ''Tous rationnel positif apparat dans l'arbre de Stern-Brocot''.
16/31
I-Proprits
k ) den ( b ) dsignent respectivement le numrateur et Dans ce qui suit, num ( b k et n n
le dnominateur de b k . n
[1]
Dmonstration : Il est vident que pour k=0, la proprit est vraie. Par construction des suites de Stern-Brocot 0 est le premier lment de la suite B 0 et donc de toute les suite 1 Bn .
)=1 pour tout n entier naturel. Dmontrons d'abord que num ( b 1 n
Pour n = 0 : 1 1 0 1 0 1 1 b = b b = = = num ( b 1 )= num ( b 1 )=1 on a b 1 et 1 0 0 1 0 1 d'o 0 1 0 0 La proprit est vraie au rang n=0. Si k 0 [ 2 ] (k pair) p p )= num ( b n ) . Selon la proprit Soit p un entier naturel non nul tel que num ( b n +1
p p 2p 2p 2p = b 2p b = b num ( b )= num ( b ) . 2.a on a b n et . D'o n+ 1 n +1 n+2 n +1 n +2
[1] En effet,
Bn
comporte
2n + 1
bk n
pour
2n < k
n'existent pas.
17/31
Si k 1 [ 2 ] (k impair). 1 +1 b k = bk Par construction des suites de Stern-Brocot, on a : n ;b k . k-1 n n n et k+1 sont pairs puisque k est impair. On a donc
+1 +1 num ( bk )= num ( b k ) . n n+ 1
1 bk et n +1 bk sont conscutifs dans n
1 k 1 num ( b k )= num ( b ) n n+ 1
et
Proposition 4.2 : n , k { 0 ; ... ; 2 n } den ( b k )= den ( b k )+ num ( b k ) . n+ 1 n n Dmonstration : Pour n=0 : On a : 0 1 B0= ; . 1 0 0 1 1 B1= ; ; . 1 1 0 0 )= den ( b 0 )+ num ( b 0 ) et den ( b1 )=den ( b1 )+ num ( b 1 ) On a bien : den ( b1 0 0 1 0 0
( ) ( )
La proprit est varie au rang n=0. Si k 0 [ 2 ] (k pair) )= den ( b1 )+ num ( b 1 ) . D'aprs la Soit p un entier naturel non nul tel que den ( b 1 n +1 n n
p p = b 2p =b 2p proprit 2.a on a b n et b n . n+ 1 +1 n+2
18/31
Si k 1 [ 2 ] (k impair) 1 +1 b k = bk Par construction des suites de Stern-Brocot, on a : n ;b k . kn +1 n +1 n+ 1 1 et k+1 sont pairs puisque k est impair. On a : 1 1 1 1 +1 +1 den ( b k )= den ( b k )+ num ( b k ) et den ( b k )= den ( b k )+ num ( b k ) . n +1 n n n +1 n n
1 1 +1 +1 )= den ( b k )+ num ( b k )+ den ( b k )+ num ( b k ) , car : Donc : den ( b k n +1 n n n n k 1 1 bk =b n 2 n +1 k+1 +1 et b k = b n 2 sont conscutifs dans B n , donc adjacents. n +1 1 +1 1 +1 bk b k = bk den ( b k )= den ( b k )+ den ( b k ) Or on a : . D'o n n n n n n 1 +1 num ( bk )= num ( b k )+ num ( b k ) . n n n )= den ( b k )+ num ( b k ) . On obtient : den ( b k n +1 n n )= den ( b k )+ num ( b k ) est aussi vrai pour On vient de montrer que den ( b k n +1 n n
et
impair. )=den ( b k )+ num ( b k ) . Donc : ( n , k )2 ; 0 k 2 n1 ; den ( b k n +1 n n Gnralisation de la proposition 4.2 : ( n' , n , k )3 ; n ' > n ; 0 k 2 n ;den ( bk )=den ( b k )+( n ' n ) num ( b k ) . n' n n Dmonstration : Si n'= n+1, on retombe sur la proprit 4.2. Soit p un entier naturel strictement suprieur n+1 tel que : den ( b k )=den ( b k )+( p n ) num ( b k ) . Montrons sous cette hypothse que p n n den ( b k )= den ( b k )+( p + 1 n ) num ( b k ) . p +1 n n Par application de la proprit 4.2 on a : k k den ( b k )= den ( b k )+ num ( b k )= den ( b n )+( p n ) num ( b n )+ num ( b k ) . p +1 p p p
k )= num ( b n ) . Or selon la proprit 4.1 on a num ( b k p k k )= den ( b )+( p + 1 n ) num ( b ) . D'o : den ( b k p +1 n n
On obtient : ( n' , n , k )3 ; n ' > n ; 0 k 2 n ;den ( bk )=den ( b k )+( n ' n ) num ( b k ) n' n n
19/31
Proposition 4.3 : Corollaire des propositions 4.1 et 4.2 La combinaison de la proprit 4.1 et 4.2 nous donne : k num ( b ) n k avec la restriction suivante sur k : ( R ): bn = +1 k k den ( b n )+ num ( b n ) Cela veut dire qu'il existe un lment formule donn ci-dessus ne fonctionne pas . Pour chaque suite
0 k 2n .
B n il y a
2 n + 1 2 n 1 1 = 2 n 1 lments qui ne vrifient pas (R), ce sont les lments bk avec 2 n1 + 1 k 2 n . On note l'lment qui pour un cas donn ne vrifie n
( R ' ) : b k = n
num ( blk )
f : + + tel que
Proposition 4.4 : On peut retrouver b k , si l'on connat un lment b k grce la relation : l n bk = l num ( b k ) n r . o r est le reste de la division euclidienne de
den ( b k ) par n
num ( b k ) n
Dmonstration : D'aprs la proposition 4.3, on a : ( n , l , k )3 ; n l ; 0 k 2l ( R ' ) : b k = n num ( blk ) den ( b k )+( n l ) num ( b k ) l l
)= num ( b k ) . Or selon la proposition 4.1 il vient : num ( b k n l )= den ( blk )+( n l ) num ( b k ) . D'o : den ( b k n n > 1 den ( b k )< num ( b k )= num ( b k ) . Comme (n-l)>0 et que b k l l l n
D'aprs la proprit 4.4 on obtient f : f (bk ) := n den ( b k ) E n entire de den ( b k ) n num ( bk ) n num ( b k ) n
( )
k den ( b n ) num ( b k ) n
o . num ( b k ) n
( )
k den ( b n )
num ( bk ) n
dsigne la partie
Remarque : )=b 0 1) n f ( b 0 n n 2)
surjective et que l'application rciproque f est une application multivalue.[2] 1 2 n 1 = ;b n = n Proposition 4.5 et 4.5' : n b 1 n n Dmonstration : 1 On a b 1= . 0 Et d'aprs le corollaire des proprits 4.1 et 4.2 on a : = Or den ( b 1 )=0 et num ( b1 )= 1 . Il vient : b 1 n on a : b 2 n
n
b1 n=
num ( b 1)
1 b1 n
=n .
II-Algorithme
Pour raliser l'algorithme capable de trouver les plus petits entiers naturels n et k tels qu'un rationnel q apparaisse pour la premire fois dans une des suites B n , nous utiliserons les proprits 2.e, 4.4, 4.5 4.5' et la fonction f dfinie plus haut
[2] Une application multivalue est une application multivoque i.e qui un lment de son ensemble de dfinition fait correspondre plusieurs lments de l'ensemble d'arriv.
21/31
Algorithme de base :
On appel collecteur une liste de donnes. Ici se sera une suite de rationnels positifs Soit C un collecteur, on a:
. On note C i le (i+1)-ime lment de C car on commence i=0. On appel q le rationnel dont on veut obtenir la premire position dans la suite de suites de Stern-Brocot. On suppose qu'il est dj sous forme irrductible. = B ( k , n ) avec Dans ce qui suit, U,V et B sont des collecteurs et b k n B 0= k et B 1= n . Lire q Si q =
1 0 alors on retourne b 1 0
Tant que q on met q dans U Si q f ( q ) alors q := f ( q ) 1 Sinon q := q Fin de Tant que On inverse l'ordre des lments de U #Les coordonnes seront mises dans le collecteur B V 0 := U 0 V 1 : =U 1 on applique 4.5 U 0 :
B 0= 2
U0
B 1 =U 0
22/31
V 0 := U 0 V 1 : =U 1 on supprime U 0 et U 1 Tant que la taille de U ne vaut pas 0 1 Si V 1 = V0 alors on applique 2.e B 0 := 2 1 B 0 Sinon f ( V 1 )=V 0 on applique la proposition 4.3 : den ( V 1 ) B1 := B1 + E ( ) num ( V 1 )
B
Exemple :
Danse cette exemple, on essais de trouver la premire position de 5 . 7 5 5 On remonte en appliquant la la fonction f . Comme on ne peut pas 2 7 5 5 trouver directement la premire position de 5 et que f ( )= , on prend son 2 2 2 inverse 2 . Or on ne peut toujours pas trouver directement la position de 2 , on 5 5
23/31
2 . 1
2 tant un entier, on peut trouver sa premire position grce la proprit 4.5'. 1 2 = D'aprs 4.5' on a : b 3 . 2 1 En appliquant la proprit 4.3 il vient : 2 2 den ( )= den ( b 3 )+( n2 ) num ( b 3 )=5 1 + 2n 4 =5 n = 4 et donc b 3 = 2 2 4 5 5 4 5 1 3 = = b2 = b13 Par application de 2.e on trouve . 4 4 2 b3
4
5 tant le primitif de 5 il vient : 2 7 en appliquant la proprit 4.3 on a : 5 den ( )= den ( b 13 )+( n 4 ) num ( b 13 )=7 2 + 5n 20 =7 n =5 . 4 4 7 5 13 =b , ce qui se confirme grce la figure 4-1. D'o 7 5
24/31
en utilisant l'algorithme d'euclide my (@nb) = @_;#rcupration des deux entiers dans @nb my ($a,$b,$r)=(0,0,1); if ($nb[0]<=$nb[1])#pour raliser l'algorithme, il faut que le premier lment de @nb soit plus grand que le premier (cela vite une boucle de moins). Si ce n'est pas le cas, on intervertit les deux lment de @nb { @nb = reverse(@nb); } $a = $nb[0]; $b = $nb[1]; while($r != 0) { $r = $a % $b; $a = $b; $b = $r; } return $a; } sub inv{#cette fonction sert a savoir si le premier rationnel est l'inverse du second rationnel, fournis en paramtre my ($arr1, $arr2) = @_; my @ar1 = @{$arr1}; my @ar2 = @{$arr2}; if ($ar1[0] == $ar2[1] && $ar1[1] == $ar2[0])#si le numrateur du premier ratinnel vaut le dnominateur du second rationnel et si lednominateur du premier rationnel vaut le numrateur du second rationnel { return 1;#alors on retourne 1 (considrer comme la valeur vraie) } else { return 0;#sinon on retourne 0 (considr comme la valeur fausse) } } system"clear";#appel system permettant de nettoyer la console sous un systme de type UNIX. Sous Windows NT cette ligne doit tre remplace par system"cls"; print "Bonjour, entrer un rationel positif.\nLes coordonnes retournes seront de la forme B(k;n) pour 0<= k <= 2^n\n"; my $chaine = <>;#on demande l'utilisateur de saisir un rationnel chomp($chaine);#on retire le retour chariot du a la validation de l'entre de
26/31
l'utilisateur if ($chaine eq '')#si $chaine ne contient rien on lui affecte la valeur 0 { $chaine= 0; } my @B = (0,0);#dclaration et initialisation de @B my @q = @{part($chaine)};#dfrence le rsultat retourner par la mthode parts, @q contient le numrateur et le dnominateur du rationnel entr par l'utilisateur my $g; unless($q[0] == 0 || $q[1] == 0)#si le dnominateur ou (inclusif) le numrateur ne vaut pas 0 { $g = pgcd(@q);#alors $g contient le pgcd des deux entiers contenu dans @q } else { goto LAB0;#sinon on va LAB0 } if ($g != 1)#si le pgcd des entiers de @q ne vaut pas 1 { print $chaine." => "; $q[0] /= $g; #alors on peut simplifie la fraction entre au dbut du programme $q[1] /= $g; $chaine = join('/',@q); print $chaine."\n"; } LAB0: $chaine = join('/',@q); if ($q[0] !=1 && $q[1] ==1)#si le rationnel est un entier (dnominateur valant 1) { @B = ((2**$q[0])-1,$q[0]);#on utilise une des proprit de la suite de sternbrocot pour donner la position du rationnel saisi. goto FIN;#on se rend au label FIN : le programme est termin } elsif($q[0] ==1 && $q[1] !=1)#si le rationnel est l'inverse d'un entier (numerateur valant 1) { @B = (1,$q[1]);#on utilise une des proprit de la suite de stern-brocot pour donner la position du rationnel saisi. goto FIN;#on se rend au label FIN : le programme est termin }
27/31
my ($a,$b,$r)=($q[0],$q[1],0);#initialisation et affectation. $a contient un numrateur et $b un dnominateur my (@col,$tmp);#dclaration while($b > 1)#tant que l'on n'arrive pas un entier { $col[scalar(@col)] = $a;#on met le rationnel $a/$b dans @col $col[scalar(@col)] = $b;# if ($a>= $b)#si le rationnel $a/$b est plus grand que 1 { ($a,$b) = ($b,$a);#alors on inverse les valeurs $a et $b, mais pas les variables } else { goto LAB1;#sinon on se rend au LAB1 } $col[scalar(@col)] = $a;#on met le rationnel $a/$b dans @col $col[scalar(@col)] = $b;# LAB1: $r = $b % $a;#$r contient le reste de la divion euclidienne de $b par $a $b = $r; } $col[scalar(@col)] = $a;#on met le rationnel $a/$b dans @col $col[scalar(@col)] = $b;# my @tab;#dclaration foreach my $g (1..(($#col+1)/2))#deux entier conscutif (en partant du premier lment) forme un rationnel dans @col. on veut inverser l'order de ces rationnels, il faut donc traiter les lment par groupes de deux { $tab[scalar(@tab)] = $col[$#col- 1];#on stocke l'avant dernier et le dernier lment de @col dans @tab $tab[scalar(@tab)] = $col[$#col];#### @col = reverse(@col);#on inverse l'ordre des lments de @col shift(@col);#on supprime les deux premiers lments de @col shift(@col);# @col = reverse(@col);#on inverse l'ordre des lments de @col } @col = @tab;#on affecte a @col le tableau @tab my $count = 0;#dclaration et initialisation de $count my (@temp, @temp2);#dclaration de @temp et de @temp2.ces deux tableau seront utiliss pour tablir un lien entre ls deux rationnel qu'ils reprsenteront my $res; while(scalar(@col)!=0)#tant que @col n'est pas un tableau vide
28/31
{ if ($count == 0)#si $count vaut 0, cette variable nous permet de savoir que c'est la premire fois que la boucle while est xcute { @temp = @col[0..1];#on affecte @temp la tranche @col[0..1] i.e. le premier rationnel que contient @col : celui dont on peut donner la position facilement foreach my $i (0..1)#on supprime les deux premier lments de @col, i.e. le premier rationnel de @col { shift(@col); } if ($temp[0] == 0 && $temp[1] == 1)#si le rationnel dcrit par @temp vaut 0/1 { @B= (0,0);#alors on affecte la position (0,0) @B } elsif($temp[0] == 1 && $temp[1] == 0)#si le rationnel dcrit par @temp vaut 1/0 { @B = (1,0)#alors on affecte la position (1,0) @B } elsif($temp[0] == 1 && $temp[1] ==1)#si le rationnel dcrit par @temp vaut 1/1 { @B=(1,1);#alors on affecte la position (1,1) @B } elsif ($temp[0]==1 && $temp[1] != 0 && $temp[0]<$temp[1])#si le rationnel dcrit par @temp est l'inverse d'un entier { @B = (1,$temp[1]);#alors on affecte la position (1,$temp[1]) @B } elsif ($temp[1]==1 && $temp[0]>$temp[1])#si le rationnel dcrit par @temp est un entier { @B = (2**$temp[0]-1,$temp[0]);#alors on affecte la position (2**$temp[0]-1,$temp[0]) @B } $count++;#incrmentation de $count @temp2 = @temp;#on affecte @temp @temp2 goto LAB2;#on se rend au label LAB2 } else {#il est important de savoir que le tableau @B contient toujours la
29/31
position de @temp2 @temp = @col[0..1];#sinon ($count !=0) on affecte @temp la tranche @col[0..1] i.e. le premier rationnel que contient @col : celui dont on peut donner la position facilement foreach my $i (0..1) { shift(@col);#on supprime les deux premier lments de @col, i.e. le premier rationnel de @col } my $bool = inv(\@temp,\@temp2);#on fournis deux rationnels la mthode inv et cette dernire nous dis si @temp et l'inverse de @temp2et rciproquement if($bool == 1)#si oui { @B = ((2**$B[1])-$B[0],$B[1]);#on utilise la proprit de symtrie de la suite de stern-brocot @temp2 = @temp;#on affecte @temp @temp2 goto LAB2;#on se rend au label LAB2 } elsif ($temp[0]==$temp2[0] && $temp[1] != $temp2[1])#sinon, si les rationnels reprsents par @temp et @temp2 ont le mme numrateur alors ils se trouve ils possdent le mme indice k mais pas le mme indice n (c'est la deuxime proprit nonc au dbut du script) { $res = ($temp[1] - ($temp[1]%$temp[0]))/$temp[0];#$res contient le quotient de la division euclidienne de $temp[1] par $temp[0] if ( $res>0) { @B= ($B[0], $B[1]+$res); @temp2 = @temp;#on affecte @temp @temp2 goto LAB2;#on se rend au label LAB2 } } } LAB2: } FIN: print $chaine." = B(".$B[0].";".$B[1].")\n";#on affiche la position du rationnelentr par l'utilisateur <STDIN>;
30/31
Sources
Confrence vido de Claude Quitt et Marie-Eve Modolo, chercheurs en mathmatiques : http://www.irem.univ-paris-diderot.fr/videos/autour_de_larbre_de_stern_brocot/ Article de Robert Ferrol : Addition des cancres, Suites de Brocot et friandises associes. Site Anglais sur l'arithmtique : http://www.cut-the-knot.org/blue/Stern.shtml PDF sur les outils mathmatiques pour la gomtrie discrte : http://hal.archives-ouvertes.fr/docs/00/34/64/41/PDF/chapitre.pdf
31/31