Page 1 sur 2

Arbre pondéré

Posté : lun. 22 mars 2010, 14:24
par GM
Un exemple d'arbre avec les instructions natives d'Asymptote

Figure asymptote 06eac1a61a3ed76ca3553e2888f1d68b
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. unitsize(1cm);
  2.  
  3. pen p=invisible;
  4. real marge=0.2, EspH=2, EspV=2;
  5.  
  6. object objet_1=draw("$R_n$",box,(EspH,EspV),marge,p),
  7. objet_2=draw("$\overline{R_n}$",box,(EspH,-EspV),marge,p),
  8. objet_11=draw("$R_{n+1}$",box,(2*EspH,EspV*5/3),marge,p),
  9. objet_12=draw("$\overline{R_{n+1}}$",box,(2*EspH,EspV*1/3),marge,p),
  10. objet_21=draw("$R_{n+1}$",box,(2*EspH,-EspV*1/3),marge,p),
  11. objet_22=draw("$\overline{R_{n+1}}$",box,(2*EspH,-EspV*5/3),marge,p);
  12.  
  13. add(new void(picture pic, transform t) {
  14. draw(pic,Label("$p_n$",UnFill(1)),(0,0)--point(objet_1,W,t),Center);
  15. draw(pic,Label("$q_n$",UnFill(1)),(0,0)--point(objet_2,W,t),Center);
  16. draw(pic,Label("$\frac{1}{20}$",UnFill(1)),point(objet_1,E,t)--point(objet_11,W,t),Center);
  17. draw(pic,Label("$\frac{19}{20}$",UnFill(1)),point(objet_1,E,t)--point(objet_12,W,t),Center);
  18. draw(pic,Label("$\frac{1}{5}$",UnFill(1)),point(objet_2,E,t)--point(objet_21,W,t),Center);
  19. draw(pic,Label("$\frac{4}{5}$",UnFill(1)),point(objet_2,E,t)--point(objet_22,W,t),Center);
  20. });


A venir... des exemples avec l'extension probabilitytree.asy

Re: Arbre pondéré

Posté : ven. 26 mars 2010, 18:11
par Zaf
Bonjour,
L'adaptation de ton arbre à une autre situation me paraît lourde, ce serait plus commode de passer en paramètres les différentes valeurs des probabilités :roll:

Re: Arbre pondéré

Posté : ven. 26 mars 2010, 18:21
par GM
Zaf a écrit :Bonjour,
L'adaptation de ton arbre à une autre situation me paraît lourde, ce serait plus commode de passer en paramètres les différentes valeurs des probabilités :roll:

Je pense avoir bien précisé que c'est un exemple avec les fonctions natives d'Asymptote...

... et j'ai parlé de probabilitytree.asy dont tu n'as apparemment pas encore vu des exemples ici : les derniers sur cette page.

Re: Arbre pondéré

Posté : ven. 26 mars 2010, 22:48
par Zaf
En effet, on peut les adapter facilement à la situation voulue, et ça couvre assez bien les besoins, bien qu'une seule procédure avec des paramètres soit mieux appréciée...

Re: Arbre pondéré

Posté : ven. 26 mars 2010, 23:00
par GM
Zaf a écrit :En effet, on peut les adapter facilement à la situation voulue, et ça couvre assez bien les besoins, bien qu'une seule procédure avec des paramètres soit mieux appréciée...

Tu n'as pas encore assez bien regardé alors :

Les procédures Bernouilli et GagnerAToutPrix t'illustre la façon de créer ces procédures que tu espères.

Code : Tout sélectionner

void Bernouilli( Label Succes="$S$", Label probS="$p$",
                 Label Echec="$\overline{S}$", Label probE="$q$",
                 int repet=2, pair pos=(0,0) )
{
  int n = 2^repet-1, j;
  Noeud[] N;
  N[0] = addN( );
  for (int i=1; i<=2*n; i+=2) {
        j=floor((i-1)/2);
        N[i] = addN( N[j], Succes, probS );
        N[i+1] = addN( N[j], Echec, probE );
  }
  TracerArbre( N[0], pos );
}


Code : Tout sélectionner

void GagnerAToutPrix( Label Succes="$G$", Label probS="$\frac{1}{2}$",
                      Label Echec="$P$", Label probE="$\frac{1}{2}$",
                      int repet=4, pair pos=(0,0) )
{
  int n = 2*repet;
  Noeud[] N;
  N[0] = addN( );
  for (int i=0; i<=repet; ++i) {
        N[2*i+1] = addN( N[2*i], Succes, probS );
        N[2*i+2] = addN( N[2*i], Echec, probE );
  }
  TracerArbre( N[0], pos );
}


Tu peux créer d'autres procédures ainsi : il s'agit à chaque fois de décrire l'arbre de racine N[0], avec une série bien pensée de addN ... puis d'exécuter TracerArbre( N[0], pos );

Re: Arbre pondéré

Posté : ven. 26 mars 2010, 23:16
par Zaf
Ok je vais essayer.
Merci beaucoup pour le temps que tu y passes.

Re: Arbre pondéré

Posté : sam. 27 mars 2010, 11:01
par GM
Zaf a écrit :Ok je vais essayer.

Quand j'aurai un peu de temps, je rajouterai des procédures dans probabilitytree.asy.
Peut-être quelque chose du genre : ArbreA, ArbreAB, ArbreABC pour les arbres à 1, 2 ou 3 niveaux.

Je dis cela... mais je me suis déjà dit aussi qu'il faudrait que je reprenne complètement l'ensemble... pour peut-être faire quelque chose dans l'esprit de ce que j'ai fait pour les tableaux, à savoir définir des fonctions qui renvoient une picture que l'on ajoute avec une syntaxe add(pic) chère à l'auteur d'Asymptote.

Re: Arbre pondéré

Posté : sam. 27 mars 2010, 21:16
par Zaf
Ce serait un soulagement pour moi, car Je suis en ce moment en train d'écrire des fonctions dans des cas particuliers, mais je me casse le nez manque de connaissance d'Asymptote

Re: Arbre pondéré

Posté : sam. 27 mars 2010, 21:29
par GM
Zaf a écrit :Ce serait un soulagement pour moi, car Je suis en ce moment en train d'écrire des fonctions dans des cas particuliers, mais je me casse le nez manque de connaissance d'Asymptote

Serais-tu en train de te dire que finalement pour des arbres de 2 ou 3 niveaux cette syntaxe est finalement simple ? :mrgreen:

Plus sérieusement : quels cas particuliers t'intéressent ?

Re: Arbre pondéré

Posté : sam. 27 mars 2010, 21:40
par Zaf
Sous forme d'une fonction ce serait plus simple et plus pratique, où on passerait, en paramètres, les événements et les probabilités sans modifier à chaque fois le programme.