Previous Up Next

Chapitre 7  Des programmes tres simples pour les Statistiques

7.1  Simulation du lancer d’une pièce

On veut tirer au hasard 0 ou 1 (par exemple 0=pile et 1=face).
On utilise la fonction rand(n) qui renvoie un entier aléatoire uniformément distribué dans 0.. n-1.
On tape :

tirage_piece():=rand(2);

7.2  Simulation d’un dé

On veut tirer au hasard un nombre entier dans [1.. 6].
On utilise la fonction rand(n) qui renvoie un entier aléatoire uniformément distribué dans 0.. n-1.
On tape :

tirage_de():=1+rand(6);

7.3  Simulation d’une variable aléatoire

On tire au hasard un nombre entier n de [0,1,2,3].
On tire au hasard un nombre réel m de [0,1[.
On veut simuler une variable aléatoire X qui vaut la partie entière de m*n.
On utilise la fonction rand(p,n) qui renvoie un réel aléatoire uniformément distribué dans [p.. n[.
On tape :

X():={
local n;
n:=rand(4);
return floor(n*rand(0,1));
}

Quelle est la fonction de répartition de X ? X vaut :
0 si ((n=0 ou n=1) et m ∈ [0,1[) ou (n=2 et m ∈ [0,0.5[) ou (n=3 et m ∈ [0,1/3[)
1 si (n=2 et m ∈ [0.5,1[) ou (n=3 et m ∈ [1/3,2/3[)
2 si n=3 et m ∈ [2/3,1[
On a donc :
Proba(X=0)=1/4+1/4+1/4*1/2+1/4*1/3=17/24
Proba(X=1)=1/4*1/2+1/4*1/3=5/24
Proba(X=2)=1/4*1/3=1/12
On vérifie que l’on a : 17/24+5/24+1/12=1

7.4  Simulation d’une variable aléatoire

On tire au hasard un nombre entier n de [1,2,3].
On veut simuler une variable aléatoire Y qui vaut ∑j=1nj.
On tape :

Y():={
local n,j,x;
n:=1+rand(3);
x:=0;
pour j de 1 jusque n faire
x:=x+j;
fpour;
return x;
}:;

Quelle est la fonction de répartition de Y ? Y vaut :
1 si n=1
3 si n=2
6 si n=3
On a donc :
Proba(X=1))=1/3
Proba(X=3))=1/3
Proba(X=6))=1/3
On aurait pu aussi simuler cette loi en tapant :

Z():={
local n;
n:=rand(3);
si n==0 alors return 1 fsi;
return 3*n;
}:;

7.5  Comment simplifier √a+√b lorsque (a,b)∈ ℕ2

On veut écrire √a+√b sous la forme √x/2+√y/2 bien sur quand cela est possible.
Si √x/2+√y/2=√a+√b on a :
(√x/2+√y/2)2=a+√b=(x+y)/2+√xy
d’où x+y=2a et xy=b
donc x et y sont solutions de l’équation X2aX+b=0
donc si a2b est un carré parfait i.e. a2b=c2 avec c entier on a :
x=a+c et y=ac
Donc si a2b est un carré parfait on a si a2b=c2 :

a+
b
=
a+c
2
+
ac
2
=
2(a+c)
+
2(ac)
2

On tape la fonction simply qui doit avoir r=sqrt(a+sqrt(b)) comme paramètre où b est sans facteur carré :

simply(r):={
local f,a,b,c,d;
si sommet(r)=='^' alors
  f:=feuille(r);
  a,d:=feuille(f[0]);
  si type(a)==integer alors
  b:=feuille(d)[0];
  c:=sqrt(a^2-b);
  si (round(c))^2==a^2-b alors 
    retourne sqrt((a+c)/2)+sqrt((a-c)/2) 
  fsi;
  sinon 
  d,a:=feuille(f[0]);
  b:=feuille(d)[0];
  c:=sqrt(a^2-b);
  si (round(c))^2==a^2-b alors 
    retourne sqrt((a+c)/2)+sqrt((a-c)/2) 
  fsi;
  fsi;
fsi;
retourne r;
}:;

On tape :
simply(sqrt(9+sqrt(17)))
ou
simply(sqrt(sqrt(17)+9))
On obtient :
(sqrt(34))/2+(sqrt(2))/2 on tape la fonction simplyf qui doit avoir comme paramètre r de la forme sqrt(a+s*sqrt(b)) ou sqrt(a+sqrt(b)):

simplyf(r):={
local f,a,b,c,d,s,sb;
si sommet(r)=='^' alors
  f:=feuille(r);
  a,d:=feuille(f[0]);
  si type(a)==integer alors
     f:=feuille(d);
    si f[1]==1/2 alors 
      s:=1;
      b:=f[0];
    sinon
      s,sb:=f;
      si type(s)==integer alors
        b:=feuille(sb)[0];
      sinon
       sb,s:=f;
       b:=feuille(sb)[0];
      fsi;
    fsi;
    c:=sqrt(a^2-s^2*b);
    si (round(c))^2==a^2-s^2*b alors 
      retourne sqrt((a+c)/2)+sqrt((a-c)/2); 
    fsi;
  sinon
    d,a:=feuille(f[0]);
    f:=feuille(d);
    si f[1]==1/2 alors 
      b:=f[0];
      s:=1;
    sinon
      s,sb:=f;
      si type(s)==integer alors
        b:=feuille(sb)[0];
      sinon
       sb,s:=f;
       b:=feuille(sb)[0];
      fsi;
    fsi;
    c:=sqrt(a^2-s^2*b);
    si (round(c))^2==a^2-s^2*b alors 
      retourne sqrt((a+c)/2)+sqrt((a-c)/2); 
    fsi;
  fsi;
fsi;
retourne r;
}:;

On tape (car Xcas remplace sqrt(128) par 8*sqrt(2) :
simplyf(sqrt(18+sqrt(128)))
ou
simplyf(sqrt(sqrt(128)+18))
ou
simplyf(sqrt(8*sqrt(2)+18))
ou
simplyf(sqrt(18+8*sqrt(2)))
ou
simplyf(sqrt(sqrt(2)*8+18))
ou
simplyf(sqrt(18+sqrt(2)*8))
On obtient :
4+sqrt(2) On tape :
simplyf(sqrt(194320499737857776523212040+19713979797994*sqrt(97160249868928888261606031)))
On obtient :
sqrt(97160249868928888261606031)+9856989898997


Previous Up Next