1 function [n,X]=iteration_ordre3_gen(x0,nmax,epsilon,fcn)
\r
4 % iteration_ordre3_gen : calcul d'une racine la méthode d'ordre 3 générale
\r
6 % *********************************************************
\r
8 % [n,X]=iteration_ordre3_gen(x0,nmax,epsilon,fcn) renvoie
\r
9 % l'approximation de la racine d'une fonction par la méthode d'ordre trois
\r
10 % générale (les dérivées f' et f'' sont calculées symboliquement)
\r
12 % variables d'entrées :
\r
13 % * nmax : nombre maximal d'itérations
\r
14 % * x0 : le premier terme
\r
15 % * epsilon : précision souhaitée
\r
16 % * fcn est une chaîne de caractère représentant la fonction
\r
17 % (de type inline, builtin ou par fichier M-file);
\r
19 % variables de sortie :
\r
20 % * X est une vecteur qui contient les valeurs x_0, x_1, ...,x_n
\r
21 % * n est l'indice correspondant à x_n avec f(x_n)=0 ou |x_n-x_{n-1}|<epsilon
\r
25 % ************ Fonctions auxiliaires utilisées ************
\r
29 % *********************************************************
\r
33 % Contrôles d'entrée
\r
35 if (qs~=2) & (qs~=5) & (qs~=1)
\r
36 error('fcn doit être le nom d''une fonction (built-in, M-file ou inline)');
\r
39 % corps d'algorithme
\r
42 fcnpsymb=diff(g,vx);
\r
43 fcnppsymb=diff(fcnpsymb,vx);
\r
45 test=(feval(fcn,x0)~=0);
\r
49 fxp=subs(fcnpsymb,vx,x);
\r
50 if ~(isnumeric(fxp));
\r
53 fxpp=subs(fcnppsymb,vx,x);
\r
54 if ~(isnumeric(fxpp));
\r
76 fxnp1=feval(fcn,xnp1);
\r
77 test=~((fxnp1==0)|(n>=nmax)|(abs(x-xnp1)<=epsilon));
\r
80 fxp=subs(fcnpsymb,vx,x);
\r
81 if ~(isnumeric(fxp));
\r
84 fxpp=subs(fcnppsymb,vx,x);
\r
85 if ~(isnumeric(fxpp));
\r
92 disp('attention, n>nmax');
\r