Les tests qui suivent ont été effectués en Maple V.4. Vous devez écrire à la place du mot PATH qui figure dans l'instruction suivante le chemin correct correspondant au fichier expr_struct.mpl que vous avez créé à partir du code que nous avons fourni.

> read `PATH/expr_struct.mpl`;

> expr[1]:=int(x^3*ln(x),x);

[Maple Math]

> expr[2]:=diff(x^3*ln(x),x);

[Maple Math]

> expr[3]:=array(1..3,1..2,[[1,2],[x,y],[u,v]]);

[Maple Math]

La procédure draw_expr dessine l'arbre associé à l'expression passée en premier paramètre.

> expr[4]:=expr[1]=expr[2];

[Maple Math]

> draw_expr(expr[4],title=`expr[4]`);

Cette procédure draw_expr supporte les options de plot.

> expr[5]:=(342/523)^(35/23);

[Maple Math]

> draw_expr(expr[5],color=red,thickness=2,axes=frame,title=`expr[5]`);

Elle en supporte quelques autres. On peut spécifier la fonte utiliséee pour le texte par font=[family,style,size] comme pour l'option de plot. Par défaut la fonte utiliséee est [HELVETICA,BOLD,15]. On peut distinguer la couleur du texte défini par fontcolor=... et la couleur des arêtes définie par linecolor=... . La valeur donnée a fontcolor peut être toute couleur supportée par plots[textplot] et celle passée à linecolor est quelconque; elle peut même être donnée avec RGB. On peut imposer le rapport entre échelle verticale et échelle horizontale avec scale=[hs,vs] où hs et vs sont deux numeric. Ceci n'est utile qu'en conjonction avec scaling=constrained. On peut imposer les coordonnées de la racine de l'arbre avec l'option origin=[x,y] où x et y sont numeric.

> expr[6]:=plot([[0,0],[1,0],[1,1],[1,2],[0,2]],color=red,title=`expr[6]`);

[Maple Math] [Maple Math]

> draw_expr(expr[6],fontcolor=blue,linecolor=red,title=`expr[6]`);

> width(expr[6]),height(expr[6]);

[Maple Math]

> draw_expr(expr[6],fontcolor=blue,linecolor=red,scale=[1,5],scaling=constrained,font=[HELVETICA,BOLD,12],title=`expr[6]`);

> expr[7]:=series(tan(x),x,10);

[Maple Math]

> width(expr[7]),height(expr[7]);

[Maple Math]

> draw_expr(expr[7],font=[COURIER,BOLD,12],scale=[5,50],scaling=constrained,title=`expr[7]`);

> expr[8]:=evalf([seq([cos(k*Pi/5),sin(k*Pi/5)],k=0..10)],3);

[Maple Math] [Maple Math]

> width(expr[8]),height(expr[8]);

[Maple Math]

> draw_expr(expr[8],scale=[1,30],scaling=constrained,title=`expr[8]`);

> expr[9]:=diff(f(x),x$15);

[Maple Math]

> draw_expr(expr[9],title=`expr[9]`);

> expr[10]:=logic[randbool]({A,B,C});

[Maple Math] [Maple Math]

> draw_expr(expr[10],title=`expr[10]`);

> expr[11]:=x*y*(x^2-y^2)/(x^2+y^2);

[Maple Math]

> draw_expr(expr[11],title=`expr[11]`);

> expr[12]:=add(x[i],i=0..5);

[Maple Math]

> draw_expr(expr[12],title=`expr[12]`,font=[20]);

> expr[13]:=convert(series(tan(x),x,10),confrac);

[Maple Math]

> draw_expr(expr[13],title=`expr[13]`);

> pict[1]:=draw_expr(expr[1],origin=[100,100]):

> pict[2]:=draw_expr(expr[1],origin=[-100,100],scale=[8,20],scaling=constrained,linecolor=blue,fontcolor=red,font=[20]):

> pict[3]:=draw_expr(expr[4],origin=[-20,0],linecolor=blue,fontcolor=red,font=[15],scale=[5,50],scaling=constrained):

> plots[display]({seq(pict[i],i=1..3)},title=`expr[1,1,4]`);

Tout ceci est plutôt une curiosité qui peut aider à comprendre la structure arborescente des objets Maple. Ce serait se tromper d'objectif que de vouloir améliorer la procédure que nous fournissons. Le calcul formel pose des questions bien plus profondes et intéressantes que ce petit exercice de programmation.