]> AND Private Git Repository - cours-mesi.git/blob - tel/TPmatlab/equation_nonlineaire/TP4i/partie_2/traitement_dem.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / equation_nonlineaire / TP4i / partie_2 / traitement_dem.m
1 function traitement_dem(choix)\r
2 % visualise les solutions en [a,b] vérifiant diverses hypothèses\r
3 % du théorème de condition suffisante de convergence en Newton.\r
4 %\r
5 % variables d'entrée\r
6 % choix est un entier désignant le numéro des hypothèses à visualiser.\r
7 %\r
8 % variables de sortie\r
9 % aucune: on peut capter l'image produite.\r
10 %\r
11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
12 %                       Fonctions connexes appelées\r
13 %\r
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
15 \r
16 % pour la portabilité graphique\r
17 global f1_pos f2_pos f3_pos\r
18 \r
19 % autres globales\r
20 global A B ens_H H2 H3 H4 H5\r
21 global h_f2 h_f3 CONT att3\r
22 global unite_att rep coul leg\r
23 \r
24 % effacement de fenetre de demande 2\r
25 close(h_f2);\r
26 \r
27 % préparation des tracés:affectation des variables nécessaires\r
28 \r
29 switch choix\r
30 case 0,\r
31     return\r
32 case 1,\r
33     Z=ens_H;\r
34 case 6,\r
35     % on ne fait rien pour l'instant;\r
36 otherwise,\r
37     eval(['Z=H' num2str(choix) ';']);\r
38     \r
39 end\r
40 \r
41 \r
42 % tracé proprement dit dans la fenetre appropriée\r
43 \r
44 switch choix\r
45     \r
46 case 6,\r
47     % préparation de la fenetre 1\r
48     h_f1=figure('Position',f1_pos);\r
49     for k=2:5\r
50         eval(['K=logical(1-H' num2str(k) ');']);\r
51         h_p=plot(A(K),B(K),coul{k});\r
52         lim=[min(min(A)) max(max(A)) min(min(B)) max(max(B))];\r
53         xlabel('Valeurs de a');ylabel('Valeurs de b');\r
54         title(leg{6});\r
55         h_leg=legend(['ajout de l''hypothèse ' num2str(k)],0); \r
56         \r
57         % travail de détail sur la légende!\r
58         enf=get(h_leg(1),'Children');\r
59         set(enf(1),'Color',get(h_p,'color'),'Marker','*');\r
60         delete(enf(2));\r
61         pause(2);    \r
62         delete(h_leg);\r
63         hold on;\r
64     end\r
65     \r
66 otherwise,\r
67     % préparation de la fenetre 1\r
68     h_f1=figure('Position',f1_pos);\r
69     plot(A(logical(1-Z)),B(logical(1-Z)),coul{choix});\r
70     lim=[min(min(A)) max(max(A)) min(min(B)) max(max(B))];\r
71     xlabel('Valeurs de a');ylabel('Valeurs de b');\r
72     title(leg{choix});\r
73     \r
74     % traitement un peu spécial pour l'ensemble des hypothèses.\r
75     if choix==1 \r
76     % On sort une solution optimale au sens d'un critère à définir.\r
77     \r
78     % On peut optimiser au sens de la taille de |b-a|.\r
79     % Ceci se discute! On peut chercher surtout à avoir un a minimal;\r
80     % dans d'autres cas on cherchera un b maximal.\r
81     \r
82     % critère 1\r
83     %[temp,ind]=max(abs(B(H)-A(H)));\r
84     % à prolonger mais de peu de sens ici.\r
85     \r
86     % critère 2\r
87     % on minimise a et on cherche pour cette valeur le b maximal\r
88     % possible, ou l'inverse dans d'autres cas.\r
89     % sortie des a et b solutions.\r
90         hold on;\r
91         tempA=A(Z);\r
92         tempB=B(Z);\r
93         if (sum(size(tempA))>0)  % donc idem en B!\r
94             a_opt=min(tempA);\r
95             ind_a=(tempA==a_opt);\r
96             b_opt=max(tempB(ind_a));\r
97             plot(a_opt,b_opt,'r*');\r
98             h_leg=legend(['Solution optimale: a= ' ...\r
99                     num2str(a_opt) '; b= ' num2str(b_opt)],0);\r
100             % détails\r
101             enf=get(h_leg(1),'Children');\r
102             set(enf(1),'Color','r','Marker','*');\r
103             delete(enf(2));\r
104 \r
105         end\r
106     end\r
107     \r
108 end\r
109 \r
110 % complément dans le cas de l'ensemble des hypothèses\r
111 \r
112 \r
113 \r
114 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
115 % possibilité de lecture de coordonnées: supprimer le commentaire.\r
116 % on clique gauche pour lire;\r
117 % on sort en cliquant droit!\r
118 \r
119 %lect_courb(1);\r
120 \r
121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
122 \r
123 % ouverture de fenetre de choix 3\r
124 creat_fen3_dem;\r
125 \r
126 % attente jusqu'a 120 unités de temps: unite_att\r
127 compt=0;att3=1;\r
128 \r
129 while (att3==1)&(compt<120)\r
130     pause(unite_att);\r
131     compt=compt+1;\r
132 end\r
133 \r
134 % fermeture de fenetre 3, non visibilité et nettoyage de fenetre 1\r
135 close(h_f3);close(h_f1);\r
136 \r
137 \r
138 % gestion de réponse ou de son absence\r
139 if compt>=120\r
140     rep=0;\r
141     disp('Trop tard. Assez attendu.');\r
142     disp('Vous pouvez modifier le temps sous traitement_dem ligne 123');\r
143 end\r
144 \r
145 \r
146 % fin de fonction\r
147 \r