next up previous contents index
suivant: Les suites récurrentes définies monter: Les suites précédent: La représentation des suites   Table des matières   Index

L'escargot des suites récurrentes u(0) = a, u(n) = f (u(n - 1) si n > 0

Cette session se trouve dans plottoile.xws.
On rappelle que la commande plotseq(f(x),a,p) permet de visualiser les p premiers termes de la suite récurrente u0 = a, un = f (un-1) si n > 0 en visualisant "l'escargot". On se propose de réécrire cette commande de façon a bien mettre en evidence la construction des différents termes de la suite.
À la différence de plotseq la fonction plottoile a comme premier argument la fonction f et non l'expression f (x). On représente le premier terme u0 par une croix noire sur l'axe des x d'abscisse le deuxième argument. Pour avoir u1, on trace le segment vertical allant de la croix au graphe de f (x), puis le segment horizontal allant, du point du graphe de f (x) au graphe de la première bissectrice (pour reporter la valeur de f (u0) sur l'axe des x), puis, un segment vertical en pointillés allant, du graphe de la première bissectrice à l'axe des x pour tracer une croix rouge.
Pour avoir les termes suivants, on trace ensuite un segment vertical allant du point du graphe de la première bissectrice, au graphe de f (x), puis le segment horizontal allant, du point du graphe de f (x) au graphe de la première bissectrice, puis, un segment vertical jusqu'à l'axe des x pour tracer une croix rouge etc... On s'arrête lorsque l'on a dessiné p croix rouges, p etant le troisième argument.
On tape :
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 :
u0 = 2, si n $ \geq$ 1, un = cos(un-1), on tape : plottoile(cos,2,5)

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 :
u0 = 2, si n $ \geq$ 1, un = cos(un-1), on tape : plottoilegende(cos,2,5)

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 :
u0 = 2, si n $ \geq$ 1, un = cos(un-1), on tape : animtoile(cos,2,5)
On peut régler la vitesse d'animation avec Menu ->Animation (situé dans le pavé de boutons à droite de la fenêtre graphique).
On peut arrêter l'animation avec le bouton $ \blacktriangleright$| (à gauche de Menu) : il suffit alors, de cliquer dans la fenêtre graphique, pour que l'animation se déroule au pas à pas.


next up previous contents index
suivant: Les suites récurrentes définies monter: Les suites précédent: La représentation des suites   Table des matières   Index
Documentation de giac écrite par Renée De Graeve