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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / equation_nonlineaire / TP4b / iteration_point_fixe.m
1 function [n,X]=iteration_point_fixe(x0,nmax,epsilon,fcn)\r
2 \r
3 \r
4 %       iteration_point_fixe : calcul des itérés de la méthode de point fixe\r
5 %\r
6 % *********************************************************\r
7 %\r
8 %       [n,X]=iteration_point_fixe(x0,nmax,epsilon,fcn) renvoie\r
9 %  les itérés de la méthode de point fixe\r
10 %\r
11 %       variables d'entrées : \r
12 %               * nmax : nombre maximal d'itérations\r
13 %               * x0 : terme initial\r
14 %     * epsilon : précision souhaitée\r
15 %     * fcn est une chaîne de caractère représentant la fonction \r
16 %      (de type inline, builtin ou par fichier M-file);\r
17 %\r
18 %       variables de sortie :\r
19 %     * n est l'indice correspondant à x_n avec f(x_n)=0 ou |x_n-x_{n-1}|<epsilon \r
20 %                                         ou n>=nmax\r
21 %     * X est une vecteur qui contient les valeurs de x_0 à x_n\r
22 %\r
23 % ************ Fonctions auxiliaires utilisées ************\r
24 %\r
25 %       aucune\r
26 %\r
27 % *********************************************************%\r
28 \r
29 \r
30 \r
31 \r
32 \r
33 \r
34 % Contrôles d'entrée\r
35 qs=exist(fcn);\r
36 if (qs~=2) & (qs~=5) & (qs~=1)\r
37    error('fcn doit être le nom d''une fonction (built-in, M-file ou inline)');\r
38 end\r
39 \r
40 % corps d'algorithme\r
41 n=0;\r
42 test=(feval(fcn,x0)-x0~=0);\r
43 x=x0;\r
44 X=x0;\r
45 xm1=x0;\r
46 while(test)\r
47    x=feval(fcn,x);\r
48    X=[X x];\r
49    n=n+1;\r
50    test=~((feval(fcn,x)-x0==0)|(n>=nmax)|(abs(x-xm1)<=epsilon));\r
51    xm1=x;   \r
52 end\r
53 if (n>=nmax)\r
54    disp('attention, n>nmax');\r
55 end\r
56 \r
57 \r