1 function Y=resout_euler_implicite(N,T,y0,fcn,nmax,epsilon)
\r
5 % resoud_euler_implicite : résolution d'une équation différentielle par la méthode d'Euler implicite.
\r
7 % *********************************************************
\r
9 % X=resout_euler_implicite(N,T,y0,fcn,nmax,epsilon) calcule les valeurs aux instants 0,h,2h,...,Nh=T par la méthode
\r
10 % d'Euler implicite pour l'équation différentielle y't)=f(t,y(t)) sur [0,T] et y(0)=y0.
\r
11 % A chaque itération, l'équation y_{n+1}=y_n+hf(t_{n+1},y_{n+1}) est résolue par la méthode de Newton
\r
12 % où la valeur initiale est choisie égale à y_n.
\r
14 % La dérivée partielle df/dy est calculée en symbolique.
\r
16 % * variables d'entrées :
\r
17 % N : nombre de valeurs calculées ;
\r
18 % T : borne supérieure de l'intervalle ;
\r
19 % y0 : valeur de y à t=0 ;
\r
20 % fcn : chaine de caractères (de type 'f(t,y)') représentant la fonction f
\r
21 % epsilon : précision souhaitée (pour la méthode de Newton)
\r
22 % nmax : nombre maximal d'itérations (pour la méthode de Newton)
\r
24 % * variables de sortie :
\r
25 % Y : valeurs calculée aux instants 0,h,2h,...,Nh=T.
\r
29 % ************ Fonctions auxiliaires utilisées ************
\r
33 % *********************************************************
\r
36 % Contrôles d'entrée
\r
38 % nombre d'arguments
\r
40 error('nombre d''arguments de la fonction incorrect');
\r
43 % Corps d'algorithme
\r
51 fcnp=char(fcnpsymb);
\r
65 fx=v-yapp-h*eval(fcn);
\r
68 test=~((fx==0)|(n>=nmax)|(abs(v-oldv)<=epsilon));
\r
72 error('attention, n>nmax pour la méthode de Newton : arrêt du programme');
\r