Le concours des crapauds et un exemple d’une suite fractale nommée "suite des batracions"

Renée De Graeve

2020

Avant-propos

Le point de départ de ce document est de résoudre le "Problème 40" intitulé : Cartes grenouilles et suites fractales du livre "Oh, encore des nombres !" de Clifford A. Pickover chez Dunod.
Les batracions sont des suites qui font penser au parcours de crapauds qui vont d’un nénuphar à l’autre...
La première partie est constituée d’exercices de programmation déstinés à des élèves.
Elle est destinée aussi à faciliter la compréhension de la deuxième partie.
La deuxième partie est indépendante et elle consiste à édutier la suite récursive définie par :
b(1)=b(2)=1 et pour n>2 par b(n)=b(b(n-1))+b(n-b(n-1)).
La troisième partie consiste à rappeler différentes propriétés des combinaisons utilisées dans la deuxième partie.
Notations utilisées en deuxième partie
On notera :

Partie I

On suppose ici que :

1  Les consignes du concours de sauts

Un concours d’endurance de sauts est organisé. Pour cela, les crapauds doivent observer les consignes suivantes :

1.1  Les explications données par les 4 candidats sélectionnés

Le jury vérifie facilement que les consignes des 3 premiers candidats sont respectées. Pour le candidat 4, le jury, ne comptant aucun mathématicien, est perplexe aussi, il se contente de tester le début du parcours en calculant les premiers termes de la suite b(n), puis il sélectionne le candidat 4.
On invite le jury à lire la 2ième partie pour comprendre l’évolution du parcours du candidat 4 ; cette 2ième partie est l’étude de la suite définie par :
b(0)=0, b(1)=b(2)=1, b(n)=b(b(n−1))+b(nb(n−1)) pour n>2
Remarque
La valeur b(0)=0 n’est pas utile pour la définition de la suite b(n).
On pourra se référer à la partie II pour avoir la démonstration qui montre que la suite b(n) est bien définie.

1.2  Les parcours de ces 4 candidats pour n=0..16

L’entier n désigne le temps écoulé depuis le départ et
U1(n) (resp U2(n),U3(n),U4(n)=b(n)) désigne la position du candidat 1 (resp 2,3,4) en fonction du temps n.
Exercice
Donner le début du parcours des quatre candidats durant le lapps de temps 0,16 (ou 0..32 pour les courageux)
Correction
Voici le début du parcours durant le lapps de temps 0,16 des quatre premiers candidats

n012345678910111213141516
U101122334455667788
U201122344456788888
U301122334456777888
U401122344456778888

On remarquera que pour n entre 0 et 5 le parcours est imposé par les consignes mais ensuite il n’est pas le même pour tout le monde.

2  Exercices

2.1  Exercice 1

Écrire les programmes qui donne la liste des positions U1(n) (resp U2(n),U3(n),U4(n)) du candidat 1 (resp 2,3,4) en fonction du temps n. Il faudra se référer à la Partie II pour vérifier que le candidat 4 respecte bien toutes les consignes.

2.2  Correction de l’exercice 1

2.3  Exercice 2

2.4  Exercice 3

2.5  Exercice 4

)

2.6  Exercice 5

Les graphes
On tape :
L:=LU1(12):;AG(L,12),affichage(plotlist([milieuL(L,10)]),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU2(12):;AG(L,12),affichage(plotlist([milieuL(L,10)]),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU3(12):;AG(L,12),affichage(plotlist([milieuL(L,10)]),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU4(12):;AG(L,12),affichage(plotlist([milieuL(L,10)]),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

Ou bien on tape :
L:=LU1(12):;AG(L,12),affichage(Gmil(L,12),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU2(12):;AG(L,12),affichage(Gmil(L,12),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU3(12):;AG(L,12),affichage(Gmil(L,12),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

L:=LU4(12):;AG(L,12),affichage(Gmil(L,12),1),
affichage(plotlist([Max(L,j)$(j=2..12)]),2)

2.7  Exercice 6

Remarque
Pour le candidat 4, trouver la suite des milieux et la suite du maximum est plus difficile. C’est ce que l’on se propose de faire dans ce qui suit.

3  Autre reprśentation des parcours

Sur chaque intervalle [2p+1,2p+1], on décide de représenter les différents parcours L1(p) (resp L2(p),L3(p),L4(p)) par la suite :
T1(p) (resp T2(p),T3(p),T4(p))
Pour T1(p) on commence par T1(p)[0] qui est la valeur de U1(2^p), puis on note successivement le nombre de sauts et le nombre de pauses du candidat 1 (resp 2,3,4).
Par exemple :

Il faut bien voir que :

Voici les différentes suites Lp et Tp selon les candidats pour n=24...25 (p=4):

3.1  Comment savoir où se trouve le crapaud au temps n ?

À l’instant n (n∈ ℕ), pour chacune des représentations, on veut savoir à quelle distance d du départ se trouve le crapaud.
Par exemple on sait que selon les consignes on doit avoir pour:
n=2m−1, d=2m−1,
n=2m, d=2m−1
n=2m+1, d=2m−1+1
Pour la représentation L(p) si 0≤ n ≤ 2p+1, la distance d est égale à L(p)[n]
Pour n=12, on a puisque 23<12<16=24 :
Pour le candidat 1, on tape :
:
L1:=[0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,
13,13,14,14,15,15,16,16]:;L1[12],L1[24]

On obtient (6,12)
Pour le candidat 2, on tape :
L2:=[0,1,1,2,2,3,4,4,4,5,6,7,8,8,8,8,8,9,10,11,12,
13,14,15,16,16,16,16,16,16,16,16,16):;L2[12],L2[24]

On obtient (8,16)
Pour le candidat 3, on tape :
L3:=[0,1,1,2,2,3,3,4,4,5,6,7,7,7,8,8,8,9,10,11,12,
13,14,15,15,15,15,15,16,16,16,16,16):;L3[12];L3[24]

On obtient (7,15)
Pour le candidat 4, on tape :
L4:=[0,1,1,2,2,3,4,4,4,5,6,7,7,8,8,8,8,9,10,11,12,12,
13,14,14,15,15,15,16,16,16,16,16):;L4[12],L4[24]

On obtient (7,14)
Pour la représentation T :
Si le temps écoulé est égal à l’indice n d’un élément de L alors n est égal à la somme des termes jusqu’à n, i.e. sum([T[k]],k=0..n) et la distance se mesure par la somme des termes impairs jusqu’à n, i.e.sum1([L[k]],k=0..n)
d=L(n).
On définit deux sommes :

sum0(L):={
local S,k,s;
s:=size(L)-1;
S:=0;
pour k de 0 jusque s pas 2 faire 
S:=S+L[k];
fpour;
return S;
}:;
sum1(L):={
local S,k,s;
s:=size(L)-1;
S:=0;
pour k de 1 jusque s pas 2 faire 
S:=S+L[k];
fpour;
return S;
}:;
S(L,s):=sum(L[k],k,0,s);S1(L,s):=sum(L[k],k,1,s,2)

On tape :
T1:=[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
[sum(T1[k],k=1..s),sum(T1[12])],[sum1(T1[24]),sum(T1[24])]
On obtient (6,12)
On tape :
T2:=[0,1,1,1,1,2,2,4,4,8,8];
[sum1(T2[12]),sum(T2[12])],[sum1(T2[24]),sum(T2[24])]
On obtient (8,16)
On tape :
T3:=[0,1,1,1,1,1,1,1,1,3,2,1,2,7,1,4,1,4]; [sum1(T3[12]),sum(T3[12])],[sum1(T3[24]),sum(T3[24])]
On obtient (7,15)
On tape :
T4:=[0,1,1,1,1,2,2,3,1,4,5,1,2,1,4];
[sum1(T4[12]),sum(T4[2]12)],[sum(T4[24]),sum(T4[24])]
On obtient (7,14)
On vérifie, pour n=12 ou n=24, on tape :
L1u(12),L1u(24) renvoie 6,12
L2u(12),L2u(24) renvoie 8,16
L3u(12),L3u(24) renvoie 7,15
L4u(12),L4u(24) renvoie 7,14

Partie II

4  Définition

Les batracions sont des suites fractales ayant une structure auto-similaire quand on les examine à différentes échelles.
Voici un exemple de batracion, c’est la suite b(n) définie par :
b(1)=1
b(2)=1
b(n)=b(b(n-1))+b(n-b(n-1)) pour n>2

5  Pourquoi la suite b(n) est-elle définie ?

Pour que b(n) soit définie il faut et il suffit que la définition de b(n-1) entraine la définition de b(n). Donc, il faut et il suffit de montrer que 1<=b(n-1)<=n-1 puisque 1<=n-b(n-1)<=n-1 est équivalent à 1<=b(n-1)<=n-1.
Donc si b(n-1) est définie et si 1<=b(n-1)<=n-1 alors b(n) est définie.
Montrons par récurrence que pour tout n>=1 on a 1<=b(n)<=n.
Soit P(n) la propri’eté 1<=b(n)<=n.
On a :
1<=b(1)=1<=1
1<=b(2)=1<=2
1<=b(3)=2<=3
Donc les propri’etés P(1),P(2),P(3) sont vraies.
Supposons que pour tout k<=n la propri’eté P(k) est vraie i.e. que l’on a :
1<=b(k)<=k pour tout 1<=k<=n
Est ce que cela entraine que P(n+1) est vraie ?
On a b(n+1)=b(b(n))+b(n+1-b(n))
Puisque P(n) est vraie on a 1<=b(n)<=n
Soit k=b(n) on a 1<=b(k)<=k=b(n)<=n puisque P(k) est vraie.
Puisque 1<=b(b(n))=b(k)<=n, la propri’eté P(b(k))=P(b(b(n))) est vraie donc :

1<=b(k)=b(b(n))<=k=b(n)

. Posons j=n+1-b(n)
P(n) est vraie i.e. 1<=b(n)<=n donc :
1<=j=n+1-b(n)<=n donc
P(j) est vraie i.e. 1<=b(j)=b(n+1-b(n))<=j=n+1-b(n) donc :

1<=b(n+1-b(n))<=n+1-b(n)

. On a donc montrer que si pour tout 1<=k<=n la propri’eté P(k) est vraie alors on a :
1<=b(b(n))<=b(n) et 1<=b(n+1-b(n))<=n+1-b(n)
ce qui est équivalent à :
1+1<=b(n+1)=b(b(n))+b(n+1-b(n))<=b(n)+n+1-b(n)=n+1

6  Exercice

Énoncé
Montrer par récurrence que pour tout n>=2 on a :
b(n)=b(n-1) ou b(n)=b(n-1)+1.
Correction
Soit Q(n) la propriété :
pour tout n>=2 on a b(n)=b(n-1) ou b(n)=b(n-1)+1.
Ce qui signifie que lorsque n augmente de 1, soit le "crapaud" se repose soit il effectue un saut.
Supposons que pour tout k<=n, la propriété Q(k) est vraie et montrons qu’alors Q(n+1) est vraie.
Par définition on a :
b(n+1)=b(b(n))+b(n+1-b(n))
Q(n) est vraie (hypothèse de récurrence) donc on a :
b(n)=b(n-1) ou bien b(n)=b(n-1)+1
Étudions chacune de ces 2 possibilités :

  1. Supposons que b(n)=b(n-1) on a alors :
    b(n+1)=b(b(n))+b(n+1-b(n)) et
    b(n)=b(b(n))+b(n-b(n)) (puisque on a supposé que b(n)=b(n-1)) Comparons b(n-b(n)) et b(n+1-b(n)).
    Soit j=n+1-b(n) On a vu précédemment que pour tout n>=1 on a 1<=b(n)<=n et 1<=j=n+1-b(n)<=n donc Q(j) est vraie c’est à dire b(j-1)=b(j) ou b(j-1)+1=b(j) donc
    b(n-b(n))=b(n+1-b(n)) ou bien b(n-b(n))+1=b(n+1-b(n))
    ce qui signifie que Q(n+1) est vraie.
  2. Supposons que b(n)=b(n-1)+1 et montrons qu’alors Q(n+1) est vraie.
    On a alors b(n-1)=b(n)-1 donc :
    b(n+1)=b(b(n))+b(n+1-b(n)) et
    b(n)=b(b(n)-1)+b(n+1-b(n)) (puisque on a supposé que b(n)=b(n-1)+1) Comparons b(b(n)) et b(b(n)-1).
    Soit j=b(n). On a vu précédemment que pour tout n>=1 on a 1<=j=b(n)<=n donc Q(j) est vraie donc b(j)=b(j-1) ou b(j)=b(j-1)+1
    b(b(n))=b(b(n)-1) ou b(b(n))=b(b(n)-1)+1
    donc on a :
    b(b(n))=b(b(n)-1) ou b(b(n))= b(b(n)-1)+1
    ce qui signifie que b(n+1)=b(n) ou bien b(n+1)=b(n)+1
    donc dans ce cas aussi Q(n+1) est vraie.
    Donc on a montré que :
    pour tout n>=2 on a b(n)=b(n-1) ou b(n)=b(n-1)+1

7  Exercice

  1. Calculer les valeurs de b(k) pour k=0..8.
  2. Écrire un programme batracion(n) qui calcule b(n)
  3. Écrire un programme batrarc(n) qui affiche le graphe de b(n)/n en fonction de n pour 2<=n<=1000
  4. Modifier le programme précédent pour tracer le graphe de b(n)/n en fonction de n pour 1000<=n<=5000

8  Solution

1. Les 9 premières valeurs de b sont :
b(0)=0;b(1)=1; b(2)=1,
b(3)=b(b(2))+b(3-b(2))=b(1)+b(2)=2
b(4)=b(b(3))+b(4-b(3))=b(2)+b(2)=2
b(5)=b(b(4))+b(5-b(4))=b(2)+b(3)=3
b(6)=b(b(5))+b(6-b(5))=b(3)+b(3)=4
b(7)=b(b(6))+b(7-b(6))=b(4)+b(3)=4
b(8)=b(b(7))+b(8-b(7))=b(4)+b(4)=4
Ou bien on tape pour avoir les valeurs de b(k) pour k=0..16 :
b:=0,1,1:;pour k de 3 jusque 16 faire b:=b,b[b[k-1]]+b[k-b[k-1]]; fpour; ou encore en évitant des recopies de b, on modifie b en place :
b:=0,1,1:;pour k de 3 jusque 16 faire b.append(b[b[k-1]]+b[k-b[k-1]]);fpour;
2. On écrit les programmes :
Lb(n) qui renvoie la suite (b(1),...b(n)) et
batracion(n1,n2) qui renvoie la suite (b(n1),...b(n2)) et
b(n) qui calcule la valeur de b(n)
On tape :

Lb(n):={
  local k,bk,B,b1;
  B:=0,1,1;
  pour k de 3 jusque n faire 
    b1:=B[k-1];
    bk:=B[b1]+B[k-b1];
    B.append(bk);
  fpour;
retourne B;
  }:;
batracion(n1,n2):={
  local k,b,B1,b1,B2;
  B1:=0,1,1;
  pour k de 3 jusque n1-1 faire 
    b1:=B1[k-1];
    b:=B1[b1]+B1[k-b1];
    B1.append(b);
  fpour;
  B2:=NULL;
  pour k de n1 jusque n2 faire 
    b1:=B1[k-1];
    b:=B1[b1]+B1[k-b1];
    B1.append(b);
    B2.append(b);
  fpour;
retourne B2;
  }:;
b(n):={
  local k,b,B,b1;
 B:=0,1,1;
  pour k de 3 jusque n faire 
    b1:=B[k-1];
    b:=B[b1]+B[k-b1];
    B.append(b);
  fpour;
retourne B[n];
  }:; 

On écrit le programme batrarc(p) qui renvoie 2 listes :
B qui est la liste b(k) pour k=1..2^p)
et
A qui est la liste b(k)/k pour k=1..2^p :

batrarc(p):={
 local k,b,b1,a,A,B;
  B:=0,1,1;
  A:=0,1,1/2;
  pour k de 3 jusque 2^p faire 
    b1:=B[k-1];
    b:=B[b1]+B[k-b1];
    a:=b/k;
    B.append(b);
    A.append(a);
  fpour;
  retourne [B],[A];
}:;

On écrit le programme batramax(p) qui renvoie la liste :
DM qui est la liste du maximum des arches 2n−1..2n à savoir :
[n-1,b(jm)/(jm pour n=2..p-1)

batramax(p):={
  local DM,k,j,A,a,m,jm;
  DM:=NULL;
  A:=batrarc(p)[1];
  pour k de 1 jusque p-1 faire
    m:=1/2; jm:=1;
    pour j de 2^k+1 jusque 3*2^(k-1) faire
      a:=A[j];
      si a>m alors jm:=j;m:=a; fsi;
    fpour;
  DM.append([jm-2^k,m]);
  fpour;
retourne [DM];
}:;

On tape :
batramax(14)
On obtient les maximum des arches 2p..2p+1 pour p=1..13 :

[[1,2/3],[2,2/3],[3,7/11],[7,14/23],[12,13/22],[28,53/92],[50,101/178],
[114,207/370],[207,399/719],[463,818/1487],[849,1586/2897],[1873,3248/5969],
[3459,6320/11651]]

On tape :
batramax(24)
On obtient (temps 89.73) le maximum des arches 2p..2p+1 pour p=1..23:

[[1,2/3],[2,2/3],[3,7/11],[7,14/23],[12,13/22],[28,53/92],[50,101/178],[114,207/370],
[207,399/719],[463,818/1487],[849,1586/2897],[1873,3248/5969],[3459,6320/11651],
[5839,12002/22223],[12315,24290/45083],[23980,24037/44758],[50313,97226/181385],
[91539,189095/353683],[198301,385703/722589],[374502,758041/1423078],
[806412,1544473/2903564],[1502272,3024959/5696576],[3246708,6170687/11635316]]

batramax(23)

[[1,2/3],[2,2/3],[3,7/11],[7,14/23],[12,13/22],[28,53/92],[50,101/178],[114,207/370],
[207,399/719],[463,818/1487],[849,1586/2897],[1873,3248/5969],[3459,6320/11651],
[5839,12002/22223],[12315,24290/45083],[23980,24037/44758],[50313,97226/181385],
[91539,189095/353683],[198301,385703/722589],[374502,758041/1423078],
[806412,1544473/2903564],[1502272,3024959/5696576],[3246708,6170687/11635316]]

On a par exemple pour p=21 les égalités :
3*2^20-e13,3*2^20-242164,2^21+806412,2903564

8.1  Des remarques

On remarque que m11<M13<m10 en tapant :
1662/3072<6320/11651<838/1536
On obtient :
vrai
On remarque que m13<M14<m12 en tapant :
6606/12288<12002/22223<1662/3072 On obtient :
vrai
On remarque que m14<M15<m11 en tapant :
6606/12288<24290/45083<1662/3072
On obtient :
vrai
On remarque que m17<M16<m13 en tapant :
104739/196608<48074/89516<6606/12288
On obtient :
vrai On remarque que m16<M17<m14 en tapant :
52584/98304<97226/181385<13212/24576
On obtient :
vrai
On remarque que m18<M18<m16 en tapant :
209478/393216<189095/353683<52584/983044
On obtient :
vrai
On remarque que m19<M19<m16 en tapant :
417526/786432<385703/722589<52584/98304
On obtient :
vrai
On remarque que m20<M20<m15 en tapant :
835052/1572864<758041/1423078<209478/393216
On obtient :
vrai
On remarque que m19<M21<m18 en tapant :
835052/1572864<1544473/2903564<835052/1572864
On obtient :
vrai On remarque que m19<M22<m18 en tapant :
835052/1572864<3024959/5696576<209478/393216
On obtient :
vrai On remarque que m21<M23<m20 en tapant :
1665242/3145728<6170687/11635316<835052/1572864 On obtient :
vrai

9  Comment transformer la liste L en la liste T ?

Pour comprendre l’évolution de b(n) en fonction de n i.e. le parcours du candidat 4 (cf partie I), on va écrire le programme LtoT(L) qui tranforme liste L des valeurs des distances au temps n=2^p..2^(p+1) en la liste T constituée successivement par le nombre de sauts et le nombre de pauses.
La fonction LtoT(L) renvoie une liste de premier terme L[0] suivie de T qui est la suite constituée successivement par le nombre de sauts et le nombre de pauses.

9.1  Le programme effectuant cette transformation

LtoT(L):={
//L est la liste b(2^p)....b(2^(p+1)+1) et LtoT(L) renvoie
//la liste (L[0],transf de b(2^p+1)....b(2^(p+1))
//n0 est le nbre de sauts et n1 le nbre de pauses
  local k,u0,u1,v0,v1,Rep,n0,n1,s;
  s:=size(L);
  Rep:=NULL;
  k:=1;
  tantque k<s-2 faire
  u0:=L[k];u1:=L[k+1];
  n0:=1;n1:=0;
  //afficher(k,u0,u1,n0,n1);
  tantque u0!=u1 and k<s-2 faire
    n0:=n0+1;
    k:=k+1;
    u0:=u1;
    u1:=L[k+1];
    //afficher(u0,u1,n0,n1);
 ftantque; 
  Rep:=Rep,n0;
 tantque u0==u1 and k<s-2 faire
    n1:=n1+1;
    k:=k+1;
    u0:=u1;u1:=L[k+1];
 // afficher(u0,u1,n0,n1);
ftantque; 
Rep:=Rep,n1;
k:=k+1;
ftantque;
return [L[0],Rep];
}:;

Vérification du programme LtoT(L)
On vérifie le résultat sur le parcours du candidat 4 et on tape pour n=23..24 :
L(4):=[4,5,6,7,7,8,8,8,8]:;) T:=LtoT(L(4)
On obtient : [3,1,1,3] En effet pour passer de 4 à 5, puis de 5 à 6, puis de 5 à 7, le crapaud fait 3 sauts, puis il se repose 1 fois, ensuite il saute 1 fois et passe de 7 à 8 puis il fait 3 pauses. Bien voir qu’il y a 1 saut si 2 nombres consécutifs sont différents et il y a 1 pause si 2 nombres consécutifs sont égaux.

9.2  On transforme le parcours du candidat 4

On cherche maintenant à comprendre l’évolution du parcours du candidat 4.
On appelle B(p) la liste L(p) i.e la suite du candidat 4.
B(5) est donc la suite des valeurs de b(n) lorsque n=0..25 :
On tape :
B5:=B(5)
On obtient :
(0,1,1,2,2,3,4,4,4,5,6,7,7,8,8,8,8,
9,10,11,12,12,13,14,14,15,15,15,16,16,16,16,16,17)

On tape :
TB5:=LtoT(B5)
On obtient :
[0,1,1,1,1,2,2,3,1,1,3,4,1,2,1,1,2,1,4]
On a donc :
entre 20+1 et 21] on a TB1=(1,1)
entre 21+1 et 22] on a TB2= (1,1)
entre 22+1 et 23] on a TB3=(2,2)
entre 23+1 et 24] on a TB4=(3,1,1,3)
entre 24+1 et 25] on a TB5=(4,1,2,1,1,2,1,4)
On remarquera que ces listes sont :

On tape :
L(5)
On obtient :
16,17,18,19,20,21,21,22,23,24,24,25,26,26,27,27,27,28,
29,29,30,30,30,31,31,31,31,32,32,32,32,32,32,33

On tape :
T5:=LtoT(L(5))
On obtient une liste commençant par 16=24 qui est la valeur de b(25) suivi par une suite symétrique de longueur 24 commençant par 5,1,3,1... i.e. :
[16,5,1,3,1,2,1,1,2,2,1,1,2,1,3,1,5]
On tape :
B6:=L(6)
On obtient :
32,33,34,35,36,37,38,38,39,40,41,42,42,43,44,45,45,46,47,47,48,48,48,
49,50,51,51,52,53,53,54,54,54,55,56,56,57,57,57,58,58,58,58,59,60,60,
61,61,61,62,62,62,62,63,63,63,63,63,64,64,64,64,64,64,64,65

On tape :
T6:=LtoT(B6)
On obtient une liste de longueur 32=25 commençant par L6(2^6)=2^5=32, puis par la suite commençant par 6,1,4,1,3,1,3,1,2,1,1,2, puis par sa suite symétrique.

[32,6,1,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,1,6]

On tape :
T7:=LtoT(L(7))
On obtient une liste commençant par 26=64 puis par la suite :
7,1,5,1,4,1,3,1,3,1,2,1,1,2,,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3
puis par sa suite symétrique :
3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,2,1,1,2,1,3,1,4,1,5,1,7
c’est à dire :

[64,7,1,5,1,4,1,3,1,3,1,2,1,1,2,,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,
1,3, 3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,2,1,1,2,1,3,1,4,1,5,1,7

On tape :
T8:=LtoT(L(8))
On obtient ne liste commençant par 27=128 puis par la liste :

[128,8,1,6,1,5,1,4,1,3,1,2,1,1,2,
             5,1,4,1,3,1,2,1,1,2,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2,
                         2,1,1,2,1,3,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2,
                         2,1,1,2,1,3,

puis par sa liste symétrique :

3,1,2,1,1,2,
    2,1,1,2,1,3,
    2,1,1,2,1,3,1,4,
3,1,2,1,1,2,
    2,1,1,2,1,3,
    2,1,1,2,1,3,1,4,
    2,1,1,2,1,3,1,4,1,5,
    2,1,1,2,1,3,1,4,1,5,1,6,1,8]

Attention
Pour éviter, d’avoir une première ligne et une dernière ligne différentes des autres lignes (le 6,1 suit le 8,1), on remplace 8,1 par (1,0,7,1) et 1,8 par (1,7,0,1).
On obtient :

[1,0,
   7,1,
     6,1,5,1,4,1,3,1,2,1,1,2,
         5,1,4,1,3,1,2,1,1,2,
           4,1,3,1,2,1,1,2,
             3,1,2,1,1,2,
               2,1,1,2,1,3,
           4,1,3,1,2,1,1,2,
             3,1,2,1,1,2,
               2,1,1,2,1,3,

suivi par sa liste symétrique :

  3,1,2,1,1,2,
    2,1,1,2,1,3,
  2,1,1,2,1,3,1,4,
  3,1,2,1,1,2,
    2,1,1,2,1,3,
  2,1,1,2,1,3,1,4,
2,1,1,2,1,3,1,4,1,5,
2,1,1,2,1,3,1,4,1,5,1,6,
                      1,7
                        0,1]

On changera donc pour la suite des batracions la procédure LtoT(L) en BtoT(L) en rajoutant à la fin les instructions adéquates :

BtoT(L):={
//L est la liste b(2^p)....b(2^(p+1)+1) et LtoT(L) renvoie
//la liste (L[0],transf de b(2^p+1)....b(2^(p+1))
  local k,u0,u1,v0,v1,Rep,n0,n1,s,sRep;
  s:=size(L);
  Rep:=NULL;
  k:=1;
  tantque k<s-2 faire
     u0:=L[k];u1:=L[k+1];
     n0:=1;n1:=0;
     tantque u0!=u1 and k<s-2 faire
       n0:=n0+1;
       k:=k+1;
       u0:=u1;
       u1:=L[k+1];
     ftantque; 
     Rep:=Rep,n0;
     tantque u0==u1 and k<s-2 faire
       n1:=n1+1;
       k:=k+1;
       u0:=u1;u1:=L[k+1];
     ftantque; 
     Rep:=Rep,n1;
     k:=k+1;
  ftantque;
  sRep:=size(Rep)-1;
  Rep[0]:=Rep[0]-1;
  Rep[sRep-1]:=Rep[sRep-1]-1;
  Rep:=1,0,Rep,0,1;
return [L[0],Rep];
}:;

On appelle B(p) la liste L4(p) i.e la suite du candidat 4 :

B(p):={
 local k,uk,L,u1;
  L:=0,1,1;
  pour k de 3 jusque 2^(p+1)+1 faire 
    u1:=L[k-1];
    uk:=L[u1]+L[k-u1];
    L.append(uk);
  fpour;
retourne  eval(L[k]$(k=2^p..2^(p+1))),2^p+1;
  }:;

Pour obtenir le parcours du candidat 4 de n=29 à 210, on tape :
B(9)
On obtient le parcours du candidat 4 de n=29 à 210 un résultat qui est difficile à analyser :

256,257,258,259,260,261,262,263,264,265,265,266,267,268,269,270,271,272,272,273,
274,275,276,277,278,278,279,280,281,282,283,283,284,285,286,287,287,288,289,290,
290,291,292,292,293,293,293,294,295,296,297,298,299,299,300,301,302,303,304,304,
305,306,307,308,308,309,310,311,311,312,313,313,314,314,314,315,316,317,318,319,
319,320,321,322,323,323,324,325,326,326,327,328,328,329,329,329,330,331,332,333,
333,334,335,336,336,337,338,338,339,339,339,340,341,342,342,343,344,344,345,345,
345,346,347,347,348,348,348,349,349,349,349,350,351,352,353,354,354,355,356,357,
358,358,359,360,361,361,362,363,363,364,364,364,365,366,367,368,368,369,370,371,
371,372,373,373,374,374,374,375,376,377,377,378,379,379,380,380,380,381,382,382,
383,383,383,384,384,384,384,385,386,387,388,388,389,390,391,391,392,393,393,394,
394,394,395,396,397,397,398,399,399,400,400,400,401,402,402,403,403,403,404,404,
404,404,405,406,407,407,408,409,409,410,410,410,411,412,412,413,413,413,414,414,
414,414,415,416,416,417,417,417,418,418,418,418,419,419,419,419,419,420,421,422,
423,423,424,425,426,426,427,428,428,429,429,429,430,431,432,432,433,434,434,435,
435,435,436,437,437,438,438,438,439,439,439,439,440,441,442,442,443,444,444,445,
445,445,446,447,447,448,448,448,449,449,449,449,450,451,451,452,452,452,453,453,
453,453,454,454,454,454,454,455,456,457,457,458,459,459,460,460,460,461,462,462,
463,463,463,464,464,464,464,465,466,466,467,467,467,468,468,468,468,469,469,469,
469,469,470,471,471,472,472,472,473,473,473,473,474,474,474,474,474,475,475,475,
475,475,475,476,477,478,478,479,480,480,481,481,481,482,483,483,484,484,484,485,
485,485,485,486,487,487,488,488,488,489,489,489,489,490,490,490,490,490,491,492,
492,493,493,493,494,494,494,494,495,495,495,495,495,496,496,496,496,496,496,497,
498,498,499,499,499,500,500,500,500,501,501,501,501,501,502,502,502,502,502,502,
503,503,503,503,503,503,503,504,505,505,506,506,506,507,507,507,507,508,508,508,
508,508,509,509,509,509,509,509,510,510,510,510,510,510,510,511,511,511,511,511,
511,511,511,512,512,512,512,512,512,512,512,512,512,513,8}

On tape :
T9:=BtoT(B(9))
On obtient en ne tenant pas compte du terme 256=28 d’indice 0 :

 1,0,
   8,1, 
     7,1,6,1,5,1,4,1,3,1,2,1,1,2,
         6,1,5,1,4,1,3,1,2,1,1,2,
             5,1,4,1,3,1,2,1,1,2,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2, 
                         2,1,1,2,1,3,
             5,1,4,1,3,1,2,1,1,2,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2,
                         2,1,1,2,1,3,
             4,1,3,1,2,1,1,2,
                 3,1,2,1,1,2,
                     2,1,1,2,1,3,
                 3,1,2,1,1,2,
                     2,1,1,2,1,3,
                     2,1,1,2,1,3,1,4,

suivi par sa suite symétrique :

4,1,3,1,2,1,1,2,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
        2,1,1,2,1,3,1,4,1,5, 
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
        2,1,1,2,1,3,1,4,1,5,
        2,1,1,2,1,3,1,4,1,5,1,6,
        2,1,1,2,1,3,1,4,1,5,1,6,1,7,
                                  1,8,
                                    0,1

On peut voir des blocs se former, pour les décrire on va définir la suite Lc(n,k) pour n>=k et on définit Lc(n,k) pour n<k par Lc(n,k)=revlist(Lc(k,kn)):

On a ainsi :
Lc(n,0) la séquence (1,0) ,
Lc(n,1) la séquence (n,1)=(Lc(n,0),Lc(n-1,1)),
Lc(n,2) la séquence (n,1,(n-1),1,....3,1,2,1,1,2) i.e.
Lc(n,2)=(Lc(n,1),Lc(n-1,1)...Lc(3,1),Lc(2,1),1,2)
Lc(n,3) par (Lc(n,2),Lc(n-1,2),....Lc(3,2),Lc(2,2),1,3)
Lc(n,4) par Lc(n,3),Lc(n-1,3),....Lc(3,3),Lc(2,3),1,4
......
Lc(n,k) par Lc(n,k-1),Lc(n-1,k-1),....Lc(3,k-1),Lc(2,k-1),Lc(1,k)
On a alors :
Lc(2,0)=(1,0), Lc(2,1)=(2,1)
Lc(2,2)=(2,1,1,2)
Lc(2,3)=2,1,1,2,1,3
Lc(2,4)=2,1,1,2,1,3,1,4=revlist(Lc(4,2))
Lc(3,3)=3,1,2,1,1,2,2,1,1,2,1,3
Lc(3,4)=3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4=revlist(Lc(4,3))
Lc(4,2)=4,1,3,1,2,1,1,2
Lc(4,3)=4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3 et
Lc(4,4)=Lc(4,3),Lc(3,4)
On voit alors que B(9) est égal à :
(Lc(9,0),Lc(8,1),Lc(7,2),Lc(6,3),Lc(5,4),
Lc(4,5),Lc(3,6),Lc(2,7),Lc(1,8),Lc(0,9))
=(Lc(9-k,k)$(k=0..9))
On a alors :
le première ligne :
1,0,8,1, i.e.Lc(9,0),Lc(8,1),
le deuxième bloc par :
7,1,6,1,5,1,4,1,3,1,2,1,1,2, i.e.Lc(7,2)
le troisième bloc par :
6,1,5,1,4,1,3,1,2,1,1,2,
5,1,4,1,3,1,2,1,1,2,
4,1,3,1,2,1,1,2,
3,1,2,1,1,2,
2,1,1,2,1,3,
i.e.Lc(6,3)=Lc(6,2),Lc(5,2),Lc(4,2),Lc(3,2),Lc(2,2),1,3
le quatrième bloc par :
5,1,4,1,3,1,2,1,1,2,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3,
4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3,
3,1,2,1,1,2,2,1,1,2,1,3,
2,1,1,2,1,3,1,4,
i.e. Lc(5,4)=Lc(5,3),Lc(4,3),Lc(2,3),1,4
Ainsi, on peut décrire B9 par :
(Lc(9,0),Lc(8,1),Lc(7,2),Lc(6,3),Lc(5,4),Lc(4,5),Lc(3,6),Lc(2,7),Lc(1,8),Lc(0,9))

9.3  Définition de Lc(n,k)

On a vu précédemment que la suite des batracions entre 29 et 210 pouvait se traduire par :

 1,0,8,1, (i.e. 9,1)
     7,1,6,1,5,1,4,1,3,1,2,1,1,2,
         6,1,5,1,4,1,3,1,2,1,1,2,
             5,1,4,1,3,1,2,1,1,2,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2, 
                         2,1,1,2,1,3,
             5,1,4,1,3,1,2,1,1,2,
                 4,1,3,1,2,1,1,2,
                     3,1,2,1,1,2,
                         2,1,1,2,1,3,
             4,1,3,1,2,1,1,2,
                 3,1,2,1,1,2,
                     2,1,1,2,1,3,
                 3,1,2,1,1,2,
                     2,1,1,2,1,3,
                     2,1,1,2,1,3,1,4,

suivi par sa suite symétrique :

4,1,3,1,2,1,1,2,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
        2,1,1,2,1,3,1,4,1,5, 
    3,1,2,1,1,2,
        2,1,1,2,1,3,
        2,1,1,2,1,3,1,4,
        2,1,1,2,1,3,1,4,1,5,
        2,1,1,2,1,3,1,4,1,5,1,6,
        2,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,0,1

que l’on va traduire avec les définitions qui vont suivre par :
Lc(9,0),Lc(8,1),Lc(7,2),Lc(6,3),Lc(5,4),Lc(4,5),Lc(3,6),Lc(2,4),Lc(1,8),Lc(0,9)
On remarquera que lorsque p=9, la somme des paramètres vaut :
p=9+0=8+2=7+3=...=9.
Les définitions des suites Lc(n,k) :

9.4  Le programme des suites Lc(n,k)

Lc(p,m):={
  local k,L,Lf;
  L:=NULL; Lf:=NULL;
  si m>p alors return revlist(Lc(m,p)); fsi;
  si m==0 alors return (1,0) fsi;
  si m==1 alors return (p,1) fsi;
  pour k de p jusque 2 pas -1 faire 
    L:=L,Lc(k,m-1);
  fpour;
  L:=L,1,m;
  return L;
  }:;

10  Comment transformer la liste T en la liste L ?

Écrire un programme qui tranforme une liste T qui a comme premier terme la valeur de la distance de départ en la liste L.
Par exemple si T1 est la liste de longueur s constituée successivement par le nombre de sauts et le nombre de pauses à partir du temps t=T[0]=2p jusqu’au temps t=T[s−1]=2p+1, T=2p,T1:
T[0]=2^p et T[1]..T[s-1] est la liste constituée successivement par le nombre de sauts et le nombre de pauses à partir du temps t=T[0]=2p jusqu’au temps t=T[s−1]=2p+1.
On tape :

TtoL(T):={
local u0,uj,S,S1,j,k,L,s;
u0:=T[0];
j:=1;
L:=u0;j:=0;
s:=size(T)-2;
tantque j<=s faire
k:=1;
uj:=T[j]
tantque k<=uj faire
L:=L,u0+k;
k:=k+1;
ftantque;
u0:=u0+uj;
j:=j+1;
uj:=T[j];
k:=1;
tantque k<=uj faire
L:=L,u0;
k:=k+1;
ftantque;
j:=j+1;
ftantque;
return L;
}:;

On tape :
L4(4)
On obtient :
8,9,10,11,12,12,13,14,14,15,15,15,16,16,16,16,16,17
On tape :
T4:= LtoT(L4(4))
On obtient :
[8,4,1,2,1,1,2,1,4]
On tape :
TtoL(T4)
On obtient :
8,9,10,11,12,12,13,14,14,15,15,15,16,16,16,16,16

11  Étude fe la suite des pentemilieu

11.1  Coordonnèes des milieux de l’intervalle [2p,2p+1]

Traitons tout d’abord 2 exemples : p=13 puis p=14.

Remarque: Pour p=13 et pour p=14 on a égalité des pentes au milieu en effet :
puisque comb(12,6)=2*comb(11,5), on a :
3*2^12+comb(12,6)=2*(3*2^11+comb(11,5))
Cela se généralise puisque on a toujours :
comb(2n,n)=2*comb(2n-1,n-1)
On tape (sans tenir compte de la remarque) :

vmilieu(p):={
  local v,m;
  v:=3*2^(p-2);
  m:=3*2^(p-1);
  si est_pair(p) alors 
    v:=v+comb(p-2,(p-2)/2);
  sinon
    v:=v+comb(p-2,(p-3)/2); 
     fsi;
  retourne [v,m,v/m];
  }:;
pentevn0(p):={
  local v,n,j,vd,nd,p0,p1,p2;
  vd:=2^(p-1);
  nd:=2*vd;
  p0:=1/2;p1:=1/2;
  p2:=(vd+p-1)/(nd+p);
  j:=1;
  tantque p2>p1 faire 
    j:=j+1;
    p0:=p1;p1:=p2;
    p2:=(vd+comb(p,j))/(nd+comb(p+1,j));
  ftantque;
  return [j-1,p1,p0,p2];
 }:;
pentevn(p):={
  local v,n,j,vd,nd,d0,d1,d2,f0,f1,f2,p0,p1,p2;
  vd:=2^(p-1);
  nd:=2*vd;
  p0:=1/2;p1:=1/2;
  p2:=(vd+p-1)/(nd+p);
  j:=1;
  tantque p2>p1 faire 
    j:=j+1;
    p0:=p1;p1:=p2;
    p2:=(vd+comb(p,j))/(nd+comb(p+1,j));
  ftantque;
  f0:=p-d0;f1:=p-d1;f2:=p-d2;
  return [j-1,d1,f1,d0,f0,d2,f2];
 }:;
Lcmax0(v0,n0,d,f):={
  local v1,n1,j,vd,nd,p0,p1,p2;
  vd:=v0;v1:=v0+comb(d+f-2,f-1);
  nd:=n0;n1:=n0+comb(d+f-1,f-1);
  p0:=v0/n0;p1:=v1/n1;
  j:=1;f:=f-1;
  tantque d>3 et p1>p0 faire 
    j:=j+1;d:=d-1;
    p0:=p1;v0:=v1;n0:=n1;
    v1:=v0+comb(d+f-2,f);
    n1:=n0+comb(d+f-1,f);
    p1:=v1/n1;
  ftantque;
  si d==2 alors f:=f+1;fsi;
  return [d,f,j-1,p1,p0];
 }:;

11.2  Limite de la suite des pentemilieu

On tape :

pmil(p):={
return (3*2^(p-2)+comb(p-2,iquo(p-2,2)))/(3*2^(p-1));
}:;
ou bien
pmilieu(p):={
si est_pair(p) alors 
  return (3*2^(p-2)+comb(p-2,(p-2)/2))/(3*2^(p-1));
sinon 
  return (3*2^(p-2)+comb(p-2,(p-3)/2))/(3*2^(p-1));
 fsi;
}:;

On tape :
pmil(17),pmil(18),pmil(19),pmil(20),pmil(21),pmil1(22)
On obtient :
34913/65536,34913/65536,208763/393216,208763/393216,832621/1572864,832621/1572864 On remarque que pmil(2*p-1)=pmil(2*p) ce qu’on démontre facilement puisque :
lorsque p=2*n-1 les coordonnèes du milieu sont :
3*2^(2*n-2),3*2^(2n-3)+comb(2n-3,n-2) et lorsque p=2*n les coordonnèes du milieu sont :
3*2^(2*n-1),3*2^(2n-2)+comb(2n-2,n-1).
On a :
3*2^(2*n-1)=2*(3*2^(2*n-2)) et
puisque comb(2n-2,n-1)=comb(2n-3,n-1)+comb(2n-3,n-2)=2*comb(2n-3,n-1), on a : 3*2^(2n-2)+comb(2n-2,n-1)=2*(3*2^(2n-3)+comb(2n-3,n-2))
On tape pour p=2*n :
limit((3*2^(2*n-2)+comb(2*n-2,n-1))/(3*2^(2*n-1)),n=+infinity)
On obtient :
1/2
On tape pour p=2*n+1 :
limit((3*2^(2*n-1)+comb(2*n-1,n-1))/(3*2^(2*n)),n=+infinity)
On obtient :
1/2
Donc la suite des milieux tend vers 1/2.
Pour le montrer on se sert de l’équivalent de n! au voisinage de l’infini, équivalent obtenu grâce à la fonction Gamma (cf la démonstration dans la partie III.

12  Coordonnées du maximum de b(n)/n pour n∈[2p...2p+1]

12.1  Prenons comme exemple p=13 puis p=14

Si p=13 B13=(Lc(13,0),Lc(12,1),Lc(11,2),Lc(10,3),Lc(9,4),Lc(8,5),Lc(7,6),
Lc(6,17),Lc(5,8),Lc(4,9),Lc(3,10),Lc(2,11),Lc(1,12),Lc(0,1))

l’indice du milieu de B13 est égal à :
2^13+sum(comb(13,k),k=0..6)
c’est aussi le milieu de l’intervalle [213,214] i.e. 3*212
la valeur du milieu de B13 est égal à :
2^12+sum(comb(12,k),k=0..6)
c’est aussi 3*2^11+comb(11,5)

Lcmax(p):={
  local v0,n0,mp,v1,n1,vd,nd,p0,p1,p2,d,f;
  si est_impair(p) alors v0:=3*2^(p-2)+comb(p-2,(p-3)/2);n0:=3*2^(p-1);
  d:=(p+1)/2;f:=(p-1)/2;
   v1:=v0-comb(p-1,f);n1:=n0-comb(p,f)
   p0:=v0/n0;p1:=v1/n1;
   tantque f>3 et p1>p0 faire 
    f:=f-1;
    p0:=p1;v0:=v1;n0:=n1;
    v1:=v1-comb(p,f);
    n1:=n1-comb(p-1,f);
    p1:=v1/n1;
  ftantque;
 return [p-f,f,p0];
 fsi;
 v0:=3*2^(p-2)+comb(p-2,(p-3)/2);n0:=3*2^(p-1);
  d:=p/2;f:=p/2-1; 
  v1:=v0-comb(p-2,f);n1:=n0-comb(p,f)
   p0:=v0/n0;p1:=v1/n1;
   tantque f>3 et p1>p0 faire 
    f:=f-1;
    p0:=p1;v0:=v1;n0:=n1;
    v1:=v0-comb(p,f);
    n1:=n0-comb(p-1,f);
    p1:=v1/n1;
  ftantque;
return [p-f,f,p0];
}:;

On a :

nM(p):=nm(p)-comb(,);
bM(p):=bm(p)-comb(,);

On tape :
nM(14),bM(14)
On obtient :
24576,13212
On tape :
nM(15),bm(15)
On obtient :
49152,26292
On vérifie, on tape :
b(89516),b(48074)
On obtient :
13212,26292
On tape :
nm(14),bm(14)
On obtient :

//Lc(a,b) est la liste Lc avant le milieu et vd,nd sont la valeur et l'indlce 
//avant Lc((a,b)
vn(a,b,vd,nd):={
  local L,v,n,j,s,k;
  L:=Lc(a,b);
  s:=size(L)-1;
  return [vd+sum(L[j],j,0,k,2),nd+sum(L[j],j,0,k)];
  }:;
Max(a,b,vd,nd):={
   local L,s,VN,k,j;
   L:=Lc(a,b);
   s:=size(L)-1;
   VN:=NULL;
   pour k de 0 jusque s faire 
   VN:=VN,[vd+sum(L[j],j,0,k,2),nd+sum(L[j],j,0,k)]
   fpour;
   //return VN;
   return max([(VN[k,0]/VN[k,1])$(k=0..s)]);
   }:;

On tape :
Max(4,3,3*2^5-comb(5,3),3*2^6-comb(7,3))
On obtient :
101/178
On tape :
Max(5,4,3*2^7-comb(7,3),3*2^8-comb(9,4))
On obtient :
399/719
On tape :
Max(6,5,3*2^9-comb(9,4),3*2^10-comb(11,5))
On obtient :
1586/2897
On tape :
Max(7,6,3*2^11-comb(11,5),3*2^12-comb(13,6))
On obtient :
6320/11651
On tape :
Max(8,7,3*2^13-comb(13,6),3*2^14-comb(15,7))
On obtient :
24290/45083
On tape :

On obtient :

12.2  Une tentative pour trouver le maximum de l’arche

On écrit le progpamme qui renvoie la liste Lc(a,b).
On tape :

Lc(a,b):={
  local k,L,Lf;
  L:=NULL; Lf:=NULL;
  si a<0 ou b<0 alors return NULL; fsi;
  si b>a alors return revlist(Lc(b,a)); fsi;
  si b==0 alors return (1,0) fsi;
  si b==1 alors return (a,1) fsi;
  pour k de a jusque 2 pas -1 faire 
    L:=L,Lc(k,b-1);
  fpour;
  L:=L,1,b;
  return L;
  }:;

Puis on cherche le maximum de Lc(a,b) lorsque l’indice de départ vaut xd et la valeur de départ vaut yd On suppose dans un premier temps que a est impair.
On tape

TrajetLc(a,b,xd,yd):={
  //a+b=2n+1
  local k,L,s,Rep,xn,yn,pn;
    L:=Lc(a,b);
    //afficher(L);
    Rep:=NULL;
    s:=(size(L)-1);
    xn:=xd;yn:=yd;pn:=yn/xn;
        pour k de 0 jusque s pas 2 faire 
    yn:=yn+L[k];xn:=xn+L[k];pn:=yn/xn; 
        Rep:=Rep,pn;
    xn:=xn+L[k+1];
      fpour;
   return max([Rep]);
    }:;  
      

On tape pour p=3 :
TrajetLc(2,1,9,5)
On obtient :
7/11
On tape pour p=5 :
TrajetLc(3,2,38,21)
On obtient :
13/22
On tape pour p=7 :
TrajetLc(4,3,3*2^6-comb(7,3),3*2^5+comb(5,2)-comb(6,3))
On obtient :
101/178
On tape p=9 :
TrajetLc(5,4,3*2^8-comb(9,4),3*2^7+comb(7,3)-comb(8,4))
On obtient :
399/719
On tape pour p=11 :
TrajetLc(6,5,3*2^10-comb(11,5),3*2^9+comb(9,4)-comb(10,5))
On obtient :
1586/2897
On tape pour p=13 :
TrajetLc(7,6,3*2^12-comb(13,6),3*2^11+comb(11,5)-comb(12,6))
On obtient :
6320/11651
On tape p=15 :
TrajetLc(8,7,3*2^14-comb(15,7),3*2^13+comb(13,6)-comb(14,7))
On obtient :
24290/45083
On tape pour p=17 :
TrajetLc(9,8,3*2^16-comb(17,8),3*2^15+comb(15,7)-comb(16,8))
On obtient :
97226/181385
On tape pour p=19 :
TrajetLc(10,8,3*2^18-comb(19,9),3*2^17+comb(17,8)-comb(18,9))
On obtient :
385703/722589
On tape pour p=21 :
TrajetLc(11,9,3*2^20-comb(21,10),3*2^19+comb(19,9)-comb(20,10))T
On obtient temps de l’évaluation 78.04:
1544473/2903564
Le temps étant trop long il faut améliorer le programme !

12.3  Combien de Lc(6,6) dans Lc(n,q) pour n>q?

Remarque Si q<n) on en déduit par symétrie que le nombre de Lc(6,6) dans Lc(q,n) et le même que dans Lc(n,q) i.e. comb(n+q-12, q-6).
Si n==q) on en déduit que le nombre de Lc(6,6) dans Lc(n,n) est 2* fois celui de Lc(n,n-1) i.e. 2*comb(n+n-13,n-7) On tape :

nb66(n,q):={
si n>q alors return comb(n+q-12,q-6);fsi;
si n==q alors 
  si q==6 alors return 1; sinon 
     return 2*comb(2*n-13,n-7);
  fsi;
fsi;
si n<q alors return comb(n+q-12,q-6);fsi;
}:;

12.4  Où se trouve le maximum de l’arche 2p..2p+1 ?

On sait que la suite du nombre de sauts s(n) et du nombre de pauses r(n) sont symétriques par rapport à n=xm=3*2p−1 qui est le milieu de l’intervalle 2p..2p+1 et on sait que pour tout n s(n)>p(n). Donc le maximum de l’arche se trouve losque n se trouve dans la première moitié de l’arche. En effet, cherchons où trouve le maximum pour différentes valeurs de p.

13  La suite des pentemaximum

On peut trouver cette suite en utilisant les programmes précédents rappelés ici) et les programmes batramax1(p) (resp batramax2(p), batramax3(p), batramaxn(p,n)) qui donne la pentemaximum de l’arche [2p,2p+1] (resp la pentemaximum des arches [2p,2p+1] et [2p,2p+2] la pentemaximum des arches 2p..2p+1, 2p..2p+2 et 2p..2p+3,la pentemaximum des arches [2p..2p+1],... [2p+n−1..2p+n]).
On tape :

Lc(p,m):={
  local k,L,Lf;
  L:=NULL; Lf:=NULL;
  si m>p alors return revlist(Lc(m,p)); fsi;
  si m==0 alors return (1,0) fsi;
  si m==1 alors return (p,1) fsi;
  pour k de p jusque 2 pas -1 faire 
    L:=L,Lc(k,m-1);
  fpour;
  L:=L,1,m;
  return L;
  }:;
batracion(n1,n2):={
  local k,b,B1,b1,B2;
  B1:=0,1,1;
  pour k de 3 jusque n1-1 faire 
    b1:=B1[k-1];
    b:=B1[b1]+B1[k-b1];
    B1.append(b);
  fpour;
  B2:=NULL;
  pour k de n1 jusque n2 faire 
    b1:=B1[k-1];
    b:=B1[b1]+B1[k-b1];
    B1.append(b);
    B2.append(b);
  fpour;
retourne B2;
  }:;
b(n):={
  local k,b,B,b1;
 B:=0,1,1;
  pour k de 3 jusque n faire 
    b1:=B[k-1];
    b:=B[b1]+B[k-b1];
    B.append(b);
  fpour;
retourne B[n];
  }:; 
batrarc(p):={
 local k,b,b1,a,A,B;
  B:=0,1,1;
  A:=0,1,1/2;
  pour k de 3 jusque 2^p faire 
    b1:=B[k-1];
    b:=B[b1]+B[k-b1];
    a:=b/k;
    B.append(b);
    A.append(a);
  fpour;
  retourne [B],[A];
}:;
batramax(p):={
  local DM,k,j,A,a,m,jm;
  DM:=NULL;
  A:=batrarc(p)[1];
  pour k de 1 jusque p-1 faire
    m:=1/2; jm:=1;
    pour j de 2^k+1 jusque 3*2^(k-1) faire
      a:=A[j];
      si a>m alors jm:=j;m:=a; fsi;
    fpour;
  DM.append([jm-2^k,m]);
  fpour;
retourne [DM];
}:;
batramax1(p):={
 local k,a,A,B;
  B:=batracion(2^p,2^(p+1));
  A:=[1/2];
  pour k de 1 jusque 2^p faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
  retourne max([A]);
}:;
batramax2(p):={
 local j,k,a,A,B,Max;
 Max:=NULL;
  B:=batracion(2^p,2^(p+2));
  A:=[1/2];
  pour k de 1 jusque 2^(p) faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
 Max:=Max,max([A]);
 A:=[1/2];
 pour k de 2^p+1 jusque 2^(p+1) faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
Max:=Max,max([A]);
retourne Max;
}:;
batramax3(p):={
 local j,k,a,A,B,Max;
 Max:=NULL;
  B:=batracion(2^p,2^(p+3));
  A:=[1/2];
  pour k de 1 jusque 2^p faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
 Max:=Max,max([A]);
 A:=[1/2];
 pour k de 2^p+1 jusque 2^(p+2)-2^p faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
Max:=Max,max([A]);
A:=[1/2];
 pour k de 2^(p+2)-2^p+1 jusque 2^(p+3)-2^p faire 
      a:=B[k]/(2^(p)+k);
    A.append(a);
  fpour;
Max:=Max,max([A]);
retourne Max;
}:;
batramaxn(p,n):={
 local j,k,a,A,B,Max;
 Max:=NULL;
  B:=batracion(2^p,2^(p+n));
  pour j de 0 jusque n-1 faire 
    A:=[1/2];
   pour k de 2^(p+j)-2^p+1 jusque 2^(p+1+j)-2^p faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
  Max:=Max,max([A]);
 fpour;
retourne Max;
}:;
batramaxpn(p,n):={
 local j,k,a,A,B,Max;
 Max:=NULL;
  B:=batracion(2^p,2^(p+n));
  pour j de 0 jusque n-1 faire 
    A:=[1/2];
   pour k de 2^(p+j)-2^p+1 jusque 2^p*(3*2^(j-1)-1) faire 
    a:=B[k]/(2^p+k);
    A.append(a);
  fpour;
  Max:=Max,max([A]);
 fpour;
retourne Max;
}:;

On tape pour avoir la pentemaximum des arches [23,24],[24,25],..[23+20..23+21]:
batramaxn(3,21)
On obtient (Temps mis pour l’évaluation: 115.5) :
7/11,14/23,13/22,53/92,101/178,207/370,399/719,818/1487,1586/2897,3248/5969,6320/11651,12002/22223,24290/45083,24037/44758,97226/181385,189095/353683,385703/722589,758041/1423078,1544473/2903564,3024959/5696576,6170687/11635316,
On tape :
batramax1(24)
On obtient (Temps mis pour l’évaluation: 162.44) :
12109427/22866150

13.1  Un exercice et sa correction

Énoncé
À l’aide des fonctions Lc(n,k) décrire les trajets :
T5,T6,T7,T8
Correction
On a :
T5=(1,0,4,1,3,1,2,1,1,2,2,1,1,2,1,3,1,4,0,1)
Donc :
T5=(Lc(5,0),Lc(4,1),Lc(3,2),Lc(2,3),Lc(1,4),Lc(0,1))
ou bien :
T5=(Lc(5,0),Lc(4,1),Lc(3,3),Lc(1,4),Lc(0,1))
On a :
T6=(1,0,5,1,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,1,5,0,1)
Donc :
T6=(Lc(6,0),Lc(5,1),Lc(4,2),Lc(3,2),Lc(2,3),Lc(2,4),Lc(1,5),Lc(0,6))
ou bien :
T6=(Lc(6,0),Lc(5,1),Lc(4,4),Lc(1,5),Lc(0,6))
On a T7= :
1,0,6,1,5,1,4,1,3,1,2,1,1,2,4,1,3,1,2,1,1,2,3,1,2,1,1,2,2,1,1,2,1,3,
3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,2,1,1,2,1,3,1,4,1,5,1,7)

Donc T7= :
(Lc(7,0),Lc(6,1),Lc(5,2),Lc(4,3),Lc(3,4),Lc(2,5),Lc(1,6),Lc(0,7))
ou bien :
T7=(Lc(7,0),Lc(6,1),Lc(5,3),Lc(3,5),Lc(1,6),Lc(0,7))
On a :

T8=(1,0,7,1,
        6,1,5,1,4,1,3,1,2,1,1,2,
            5,1,4,1,3,1,2,1,1,2,
                4,1,3,1,2,1,1,2,
                    3,1,2,1,1,2,
                        2,1,1,2,1,3,
            4,1,3,1,2,1,1,2,
                3,1,2,1,1,2,
                    2,1,1,2,1,3,
            3,1,2,1,1,2,
                2,1,1,2,1,3,
                2,1,1,2,1,3,1,4,
             3,1,2,1,1,2,2,1,1,2,1,3,2,1,1,2,1,3,1,4,
                 2,1,1,2,1,3,1,4,1,5,2,1,1,2,1,3,1,4,1,5,1,6,1,8)

Donc T8= :
(Lc(8,0),Lc(7,1),Lc(6,2),Lc(5,3),Lc(4,4),Lc(3,5),Lc(2,6),Lc(1,7),Lc(0,1))
ou bien :
T8=(Lc(8,0),Lc(7,1),Lc(6,3),Lc(4,3),Lc(3,4),Lc(3,6),Lc(1,7),Lc(0,1))
et on a :
T9=(Lc(9,0),Lc(8,1),Lc(7,3),Lc(5,4),Lc(4,5),Lc(3,7),Lc(1,8),Lc(0,1))

Partie III

La partie III consiste à rappeler certaines propriétés des combinaisons.

14  Définition

On a pour pour 1≤ n et pn:
comb(n,p)= n!/p!(np)!=n(n−1)...(np+1)/p!.
On tape :
comb(7,0)
On obtient :
1
On tape :
comb(7,1)
On obtient :
7
On tape :
comb(7,2)
On obtient :
21
On tape :
comb(7,3)
On obtient :
35
en effet (7*6*5)/3!=7*5=35
On tape :
comb(7,0)
On obtient :
1
en effet (7*6*5)/3!=7*5=35

15  Propriétés de base

On a pour 1≤ n et pn :
comb(n,p)=n!/p!*(np)!=n*(n−1)*...*(np+1)/p!.
On a :
comb(n,p)=comb(n,n-p)
comb(n,p)=n/p*comb(n-1,p-1)
comb(n,p)=(n-p+1)/p*comb(n,p-1)
Pour n>0 on a comb(n,p)=comb(n-1,p-1)+comb(n-1,p)
n étant fixé l’application m-> comb(n,m) est croissante.

16  Propriétés utilisant la formule du binôme


This document was translated from LATEX by HEVEA.