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

Private GIT Repository
ajout de partiels
[cours-mesi.git] / tel / TPmatlab / equation_nonlineaire / TP4g / point_fixe.m
1 function val=point_fixe(x0,nom_g,n_max)\r
2 % produit un vecteur d'itérés d'une valeur initiale par une fonction g\r
3 %\r
4 % variable d'entrée\r
5 % x0 est la valeur initiale choisie;\r
6 % nom_g l'expression de la fonction donnée\r
7 % sous la forme d'une chaine 'g(x)';\r
8 % n_max est un entier naturel donnant la longueur du vecteur des itérés.\r
9 %\r
10 % variables de sortie\r
11 % val est le vecteur des itérés de x0 par g de longueur n_max.\r
12 \r
13 % On pourra tester cette fonction en tapant en fenetre de commande\r
14 % point_fixe(2,'(60*x-36-6*x^2)^(1/4)',20).\r
15 \r
16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
17 %              Fonctions appelées                                                                    *\r
18 %                                                  \r
19 %                                           \r
20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
21 \r
22 % spécifications\r
23 format long e;\r
24 \r
25 \r
26 x=x0;val(1)=x;\r
27 for i=1:n_max-1\r
28     x=eval(nom_g);\r
29     val(i+1)=x;val;\r
30 end\r
31 \r
32 ch=input('Voulez-vous afficher les résultats? (Si oui, taper 1)','s');\r
33 if str2num(ch)==1\r
34     % à modifier selon l'impression souhaitée\r
35     nb_lig=3;\r
36     \r
37     s=[];\r
38     for i=1:size(val,2)\r
39         s=[s sprintf('ptf%2.0f = %12.10f   ',i,val(i))];\r
40         % pourrait etre remplacé par un calibrage en fonction\r
41         % de nul_seuil du type cal=-log10(2*nul_seuil)\r
42         % à passer après transformation chaine à la place de 12.10f.\r
43         if (rem(i,nb_lig)==0)|(i==size(val,2))\r
44             disp(s);sprintf('\n');\r
45             s=[];\r
46         end\r
47     end\r
48 end\r
49 \r
50 % fin de point_fixe\r
51     \r