9.7 Chapitre 7
341
p=log(abs(e(1:end-1)./e(2:end)))/log(2); p(1:2:end)
ans =
2.7306
2.9330
2.9833
2.9958
2.9990
Programme 9.3. rk3 : schéma de Runge-Kutta explicite d’ordre 3
function [tt , u ]= rk3( odefun , tspan , y0 ,Nh , varargin );
tt= linspace ( tspan (1) ,tspan (2) , Nh +1);
h =( tspan (2) - tspan (1))/ Nh ; hh =h *0.5; h2 =2* h;
u = y0; h6= h /6;
for t = tt (1: end -1)
y = u ( end ,:);
k1= feval ( odefun ,t ,y , varargin {:});
t1 = t + hh; y1 = y + hh* k1;
k2= feval ( odefun , t1 ,y1 , varargin {:});
t1 = t + h; y1 = y + h*(2* k2 - k1 );
k3= feval ( odefun , t1 ,y1 , varargin {:});
u = [ u; u ( end ,:) + h6 *( k1 +4* k2+ k3 )];
end
Solution 7.13 En procédant comme pour la Solution 7.8, on a la relation
un+1 = un[1 + hλ +
1
2
(hλ)
2 +
1
6
(hλ)
3 ] = unp3(hλ).
En examinant le graphe de p3, obtenu avec l’instruction :
c =[1/6 1/2 1 1]; z =[ -3:0.01:1];
p = polyval (c ,z ); plot (z , abs (p ))
on déduit que |p3(hλ)| < 1 pour −2.5 < hλ < 0.
Solution 7.14 La méthode (7.82) appliquée au problème modèle (7.28) avec
λ ∈ R
− donne l’équation un+1 = un(1 + hλ + (hλ)
2 ). En résolvant l’inéquation
|1 + hλ + (hλ)
2 | < 1, on trouve −1 < hλ < 0.
Solution 7.15 Pour résoudre le Problème 7.1 avec les valeurs données, on
répète les instructions suivantes avec N=10 et N=20 :
f = inline ( ’ -1.68e -9*y ^ 4 + 2 .6880’ ,’t ’ ,’y ’ );
[ tc , uc ]= cranknic (f ,[0 ,200] ,180 ,N );
[ tp , up ]= rk2 (f ,[0 ,200] ,180 ,N );
Les graphes de la solution calculée sont représentés sur la Figure 9.8.
Solution 7.16 La méthode de Heun appliquée au problème modèle (7.28)
s’écrit
un+1 = un
1 + hλ +
1
2
h
2 λ
2
.
Dans le plan complexe, la frontière de sa région de stabilité absolue vérifie
|1 + hλ + h
2 λ
2 /2|
2 = 1, où hλ = x + iy. Cette équation est satisfaite par les
(x, y) tels que f (x, y) = x
4 + y
4 + 2x
2 y
2 + 4x
3 + 4xy
2 + 8x
2 + 8x = 0. On peut
tracer sa courbe représentative comme la ligne de niveau z = 0 de la fonction
f (x, y) = z. C’est ce que font les instructions suivantes :
341
p=log(abs(e(1:end-1)./e(2:end)))/log(2); p(1:2:end)
ans =
2.7306
2.9330
2.9833
2.9958
2.9990
Programme 9.3. rk3 : schéma de Runge-Kutta explicite d’ordre 3
function [tt , u ]= rk3( odefun , tspan , y0 ,Nh , varargin );
tt= linspace ( tspan (1) ,tspan (2) , Nh +1);
h =( tspan (2) - tspan (1))/ Nh ; hh =h *0.5; h2 =2* h;
u = y0; h6= h /6;
for t = tt (1: end -1)
y = u ( end ,:);
k1= feval ( odefun ,t ,y , varargin {:});
t1 = t + hh; y1 = y + hh* k1;
k2= feval ( odefun , t1 ,y1 , varargin {:});
t1 = t + h; y1 = y + h*(2* k2 - k1 );
k3= feval ( odefun , t1 ,y1 , varargin {:});
u = [ u; u ( end ,:) + h6 *( k1 +4* k2+ k3 )];
end
Solution 7.13 En procédant comme pour la Solution 7.8, on a la relation
un+1 = un[1 + hλ +
1
2
(hλ)
2 +
1
6
(hλ)
3 ] = unp3(hλ).
En examinant le graphe de p3, obtenu avec l’instruction :
c =[1/6 1/2 1 1]; z =[ -3:0.01:1];
p = polyval (c ,z ); plot (z , abs (p ))
on déduit que |p3(hλ)| < 1 pour −2.5 < hλ < 0.
Solution 7.14 La méthode (7.82) appliquée au problème modèle (7.28) avec
λ ∈ R
− donne l’équation un+1 = un(1 + hλ + (hλ)
2 ). En résolvant l’inéquation
|1 + hλ + (hλ)
2 | < 1, on trouve −1 < hλ < 0.
Solution 7.15 Pour résoudre le Problème 7.1 avec les valeurs données, on
répète les instructions suivantes avec N=10 et N=20 :
f = inline ( ’ -1.68e -9*y ^ 4 + 2 .6880’ ,’t ’ ,’y ’ );
[ tc , uc ]= cranknic (f ,[0 ,200] ,180 ,N );
[ tp , up ]= rk2 (f ,[0 ,200] ,180 ,N );
Les graphes de la solution calculée sont représentés sur la Figure 9.8.
Solution 7.16 La méthode de Heun appliquée au problème modèle (7.28)
s’écrit
un+1 = un
1 + hλ +
1
2
h
2 λ
2
.
Dans le plan complexe, la frontière de sa région de stabilité absolue vérifie
|1 + hλ + h
2 λ
2 /2|
2 = 1, où hλ = x + iy. Cette équation est satisfaite par les
(x, y) tels que f (x, y) = x
4 + y
4 + 2x
2 y
2 + 4x
3 + 4xy
2 + 8x
2 + 8x = 0. On peut
tracer sa courbe représentative comme la ligne de niveau z = 0 de la fonction
f (x, y) = z. C’est ce que font les instructions suivantes :
