plottoile(f,u,n):={ local j,v,L,P; u:=evalf(u); P:=point(u,couleur=point_width_4+noir); if (n<=0 ) {return P;} v:=f(u); L:=segment(u,u+i*v,couleur=rouge),P; L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P; for (j:=2;j<=n;j++) { L:=L,segment(u+i*u,u+i*v,couleur=rouge); L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P;} return plotfunc(f(x),x,couleur=vert),plotfunc(x,x,couleur=bleu),L; };Par exemple pour voir les premiers termes de :
On peut aussi noter les indices des termes de la suite pour la croix représentant uj en rajoutant legende(u,j,quadrant4).
plottoilegende(f,u,n):={ local j,v,L,P; u:=evalf(u); P:=point(u,couleur=point_width_4+noir),legende(u,0,quadrant4); if (n<=0 ) {return P;} v:=f(u); L:=segment(u,u+i*v,couleur=rouge),P; L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge),legende(u,1,quadrant4); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P; for (j:=2;j<=n;j++) { L:=L,segment(u+i*u,u+i*v,couleur=rouge); L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge),legende(u,j,quadrant4); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P;} return plotfunc(f(x),x,couleur=vert),plotfunc(x,x,couleur=bleu),L; };Par exemple pour voir les premiers termes avec leur indice de :
On peut aussi faire une animation qui montrera la progression de la
construction. Pour cela on modifie la fonction plottoile en toile
pour avoir dans LT, la progression du tracé. On remarquera que l'on met
entre crochet les objets graphiques qui seront affichés simultanément lors
de l'animation.
On tape :
toile(f,u,n):={ local j,v,L,P,LT; u:=evalf(u); P:=point(u,couleur=point_width_4+noir); v:=f(u); LT:=P; L:=segment(u,u+i*v,couleur=rouge); L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P; LT:=LT,[LT,L]; for (j:=2;j<=n;j++) { L:=L,segment(u+i*u,u+i*v,couleur=rouge); L:=L,segment(u+i*v,v+i*v,couleur=rouge); u:=v; v:=f(u); P:=point(u,couleur=point_width_4+rouge); L:=L,segment(u,u+i*u,couleur=ligne_tiret+rouge),P; LT:=LT,[LT,L]; } return LT; };Puis on anime la liste LT renvoyée par toile.
animtoile(f,u,n):={ local LT; LT:=toile(f,u,n); return plotfunc(f(x),x,couleur=vert),plotfunc(x,x,couleur=bleu),animation(LT); };Par exemple pour voir en animation les premiers termes de :