1 function Y=resout_theta_methode_bis(theta,N,T,y0,fcn,fcnp,nmax,epsilon)
\r
5 % resout_theta_methode_bis : résolution d'une équation différentielle par la theta-méthode.
\r
7 % *********************************************************
\r
9 % Y=resout_theta_methode_bis(theta,N,T,y0,fcn,nmax,epsilon) calcule les valeurs aux instants 0,h,2h,...,Nh=T par
\r
11 % pour l'équation différentielle y't)=f(t,y(t)) sur [0,T] et y(0)=y0.
\r
12 % A chaque itération, l'équation y_{n+1}=y_n+theta hf(t_{n+1},y_{n+1})+(1-theta)hf(t_{n},y_{n})
\r
13 % est résolue par la méthode de Newton
\r
14 % où la valeur initiale est choisie égale à y_n.
\r
16 % La dérivée partielle df/dy est entrée comme paramètre.
\r
18 % * variables d'entrées :
\r
19 % theta est un réel dans [0,1] ;
\r
20 % N : nombre de valeurs calculées ;
\r
21 % T : borne supérieure de l'intervalle ;
\r
22 % y0 : valeur de y à t=0 ;
\r
23 % fcn : chaine de caractères (de type 'f(t,y)') représentant la fonction f
\r
24 % fcnp : chaine de caractères (de type 'f(t,y)') représentant la fonction df/dy
\r
25 % epsilon : précision souhaitée (pour la méthode de Newton)
\r
26 % nmax : nombre maximal d'itérations (pour la méthode de Newton)
\r
28 % * variables de sortie :
\r
29 % Y : valeurs calculée aux instants 0,h,2h,...,Nh=T.
\r
33 % ************ Fonctions auxiliaires utilisées ************
\r
37 % *********************************************************
\r
40 % Contrôles d'entrée
\r
42 % nombre d'arguments
\r
44 error('nombre d''arguments de la fonction incorrect');
\r
47 % Corps d'algorithme
\r
56 auxidud=h*(1-theta)*eval(fcn);
\r
58 fx=-h*theta*eval(fcn)-auxidud;
\r
59 fxp=1-h*theta*eval(fcnp);
\r
68 fx=v-yapp-h*theta*eval(fcn)-auxidud;
\r
69 fxp=1-h*theta*eval(fcnp);
\r
71 test=~((fx==0)|(n>=nmax)|(abs(v-oldv)<=epsilon));
\r
75 error('attention, n>nmax pour la méthode de Newton : arrêt du programme');
\r