1 function visu2_conv_anim(f1,f2)
\r
2 % Propose une visualisation animée de la convergence comparée de deux suites.
\r
5 % f1 désigne un vecteur de n1 valeurs qui seront représentées en polaire
\r
6 % par pas angulaire de 2*pi/n1;
\r
7 % le rayon est l'écart de chaque valeur à la dernière, considérée comme limite.
\r
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
11 % Fonctions appelées *
\r
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
19 error('Nombre des arguments incorrect');
\r
25 % Calibrage des données: ces constantes modifiables par l'utilisateur
\r
26 % pourraient aussi etre passées comme champs complémentaires.
\r
27 % nul_seuil: un nombre inférieur en valeur absolue à nul_seuil est considéré nul.
\r
28 % rap_seuil: pourcentage de la fenetre en dessous duquel on dilate l'image.
\r
29 % u: unité de pause en secondes; règle la vitesse de production des images.
\r
36 % détermination des rayons vecteurs
\r
37 r1=abs(f1-f1(size(f1,2)));ind1=find(r1>nul_seuil);
\r
39 r2=abs(f2-f2(size(f2,2)));ind2=find(r2>nul_seuil);
\r
42 % calibrage des axes et choix du pas angulaire
\r
43 alph1=2*pi/size(r1,2);
\r
44 alph2=2*pi/size(r2,2);
\r
45 coef=1.1*min(r1(1),r2(1));
\r
46 lim=[-coef coef -coef coef];
\r
48 % création des valeurs qui s'enroulent autour de
\r
49 % la limite avec ajustement d'échelle automatique
\r
51 tailles=[size(r1,2),size(r2,2)];
\r
52 nb_pas1=min(tailles);nb_pas2=max(tailles);
\r
55 % préparation des fenetres
\r
56 subplot(2,1,1);title('Convergence de suite 1');
\r
57 subplot(2,1,2);title('Convergence de suite 2');
\r
58 % on peut faire plus rusé pour le titre!
\r
60 X=[-c,-c,c,c,-c];Y=[-c,c,c,-c,-c];
\r
63 if (1/coef*min(r1(n),r2(n))>rap_seuil)
\r
65 x1=r1(n)*cos((n-1)*alph1);
\r
66 y1=r1(n)*sin((n-1)*alph1);
\r
67 x2=r2(n)*cos((n-1)*alph2);
\r
68 y2=r2(n)*sin((n-1)*alph2);
\r
70 % tracé dans les deux fenetres
\r
71 subplot(2,1,1);axis(lim);
\r
72 line([0,x1],[0,y1]);hold on;
\r
73 subplot(2,1,2);axis(lim);
\r
74 line([0,x2],[0,y2]);hold on;
\r
76 % prise d'une pause (bien méritée!)
\r
82 % annonce d'agrandissement
\r
84 X=[-c,-c,c,c,-c];Y=[-c,c,c,-c,-c];
\r
85 subplot(2,1,1);axis(lim);
\r
88 subplot(2,1,2);axis(lim);
\r
91 % changement d'échelle
\r
92 k=1.1/coef*min(r1(n),r2(n));
\r
93 lim=k*lim;coef=k*coef;
\r
96 % Variante : il est possible d'utiliser
\r
97 % la fonction movie et de créer une animation
\r
99 % indication de fin de convergence
\r
101 if nb_pas1~=nb_pas2
\r
102 ind=find(tailles==nb_pas2);
\r
103 r3=eval(['r' num2str(ind)]);
\r
104 alph3=eval(['alph' num2str(ind)]);
\r
106 subplot(2,1,num);axis(lim);
\r
107 plot([0],[0],'rp-');legend('Limite ''atteinte''',0);
\r
109 % préparation de fin de tracé
\r
112 subplot(2,1,1);axis(lim);
\r
113 plot([0],[0],'rp-');legend('Limite ''atteinte''',0);
\r
114 hold on;subplot(2,1,2);axis(lim);
\r
115 plot([0],[0],'bp-');legend('Limite ''atteinte''',0);
\r
119 % tracé de la courbe restante éventuelle
\r
122 if (1/coef*r3(n)>rap_seuil)
\r
124 x3=r3(n)*cos((n-1)*alph3);
\r
125 y3=r3(n)*sin((n-1)*alph3);
\r
127 % tracé dans la fenetre convenable
\r
128 subplot(2,1,num);axis(lim);
\r
129 line([0,x3],[0,y3]);hold on;
\r
131 % prise d'une pause (bien méritée!)
\r
137 % annonce d'agrandissement
\r
139 X=[-c,-c,c,c,-c];Y=[-c,c,c,-c,-c];
\r
140 subplot(2,1,num);axis(lim);
\r
143 % changement d'échelle
\r
145 lim=k*lim;coef=k*coef;
\r
150 subplot(2,1,num);axis(lim);
\r
151 plot([0],[0],'bp-');legend('Limite ''atteinte''',0);
\r