Vous êtes sur la page 1sur 4

Alexis Herault

CSC001

R
esolution num
eriques des
equations
diff
erentielles - II
Objectifs :
etudier experimentalement la stabilite de la methode dEuler
pour une equation raide
programmer la methodes dEuler implicite

Stabilit
e du sch
ema dEuler

On consid`ere lequation differentielle suivante :


0
y = 150y + 30
y(0) = 1
5

(1)

1
La solution exacte de cette equation est y(x) = . Si au lieu de prendre
5
1
comme condition initiale y(0) = on perturbe la condition initiale en pre5
1
1
nant y(0) = + alors la solution exacte devient y(x) = + e150x . Pour
5
5
petit cette nouvelle solution est tr`es proche de celle trouvee avec la condition
initiale non perturbee. Une methode numerique est dite stable si lon retrouve
cette propriete au niveau de la solution numerique : la solution numerique
1
+ doit etre proche de celle
trouvee pour la condition initiale y(0) =
5
1
trouvee pour la condition initiale y(0) = .
5
Nous allons tester la stabilite du schema dEuler explicite sur cette equation.
1. Appliquer le schema dEuler explicite (dej`a programme) `a lequation
(1) sur lintervalle [0, 1]. Tracer le graphe de la solution obtenue.
2. Appliquer le schema dEuler explicite a` lequation precedente en utili1
sant la condition initiale y(0) = + avec = 1010 pour plusieurs
5
valeurs de n (nombre pas de discretisation). Tracer les graphes des
resultats obtenus. Quobserve-t-on ?
3. Que peut-on deduire de la stabilite du schema dEuler dans ce cas ?

Alexis Herault

CSC001

Sch
ema dEuler implicite

Au lieu dutiliser le schema dEuler explicite nous allons utiliser le schema


dEuler implicite defini par :
yn+1 = yn + hf (xn+1 , yn+1 )

(2)

Pour lequation etudiee nous avons :


f (x, y) = 150y + 30
La seule difference avec le schema dEuler est, qu`a chaque iteration, nous
devons resoudre lequation implicite 2 pour obtenir yn+1 . Pour ce faire nous
utiliserons la methode de Newton.
1. La methode de Newton permet de resoudre une equation du type
g(x) = 0, ce qui nest pas le cas de lequation 2. Mettre lequation
2 sous la forme g(x) = 0 et rappeler lalgorithme de Newton.
2. Programmer le schema dEuler implicite. Pour ce faire vous devrez
rajouter trois fonctions matlab (ou scilab) au programme precedent :
une fonction dfdy(x,y) admettant x et y comme param`etres et renf
voyant la valeur de
y
une fonction newton(f,dfdy,xn,yn,h,eps) dont les param`etres sont ;
la fonction f, f, sa derivee par rapport a` y, dfdy, le point de depart de
lalgorithme de Newton (xn, yn), le pas dintegration h et la precision
demandee eps et qui renvoie la valeur approchee de la solution de 2.
une fonction euler_implicite(f,dfdy,x0,y0,x1,n) semblable a` la
fonction euler_explicite(f,x0,y0,x1,n) dej`a programmee.
3. Etudier la stabilite du schema dEuler implicite. Que remarque-t-on ?
Indications 1. Vous compl`eterez les fonctions Scilab suivantes :
// C a l c u l de d f /dy pour l EDO y= f ( x , y )
// Param`e tres d e n t r e e :
//
x v a l e u r de l a v a r i a b l e
//
y v a l e u r de y ( x )
// Valeur r e n v o ye e :
//
d f /dy ( x , y )
f u n c t i o n [ v a l ]= dfdy ( x , y )
val = . . . ;
endfunction
// Re s o l u t i o n par l a me thode de Newton de
2

Alexis Herault

CSC001

// l e q u a t i o n i m p l i c i t e a s s o c i e e au sche ma d E u l e r :
// Param`e tres d e n t r e e :
//
f fonction f (x , y)
//
dfdy f o n c t i o n d f /dy ( x , y )
//
xn , yn p o i n t de de p a r t
//
h pas
//
eps p r e c i s i o n
// Valeur r e n v o ye e :
//
y v a l e u r approche e de . . .
f u n c t i o n [ y]= newton ( f , dfdy , xn , yn , h , eps )
y = yn ;
fn = . . . ;
w h i l e ( abs ( f n )> eps ) do
fn = . . . ;
dfn = . . . ;
y = y ...;
end
endfunction
// Schema d E u l e r i m p l i c i t e pour l EDO y= f ( x , y ) avec
// y ( x0 ) = y0 s u r l i n t e r v a l l e [ x0 , x1 ]
// e t pas de temps f i x e h=(x1x0 ) / n
// y ( xn+1) = y ( xn ) + h f ( xn+1, y ( xn +1))
// Param`e tres d e n t r e e :
//
f fonction f (x , y)
//
x0 p o i n t de de p a r t
//
y0 c o n d i t i o n i n i t i a l e y0=y ( x0 )
//
x1 p o i n t d a r r i v e e
//
n nombre de p o i n t s de d i s c r e t i s a t i o n
// V a l e u r s r e n v o ye e s :
//
x v e c t e u r c o n t e n a n t l e s p o i n t s de d i s c r e t i s a t i o n x i
//
y v e c t e u r c o n t e n a n t l e s v a l e u r s de l a s o l u t i o n
//
approch ? e y i=y ( x i )
f u n c t i o n [ x , y]= e u l e r i m p l i c i t e ( f , dfdy , x0 , y0 , x1 , n )
// I n i t i a l i s a t i o n des v e c t e u r s x e t y
x=[ x0 z e r o s ( 1 , n ) ] ;
y=[ y0 z e r o s ( 1 , n ) ] ;
// Pas de temps
h=(x1x0 ) / n ;
// P r e c i s i o n
eps=1e 8;
3

Alexis Herault

CSC001

// C a l c u l de y ( x i )
f o r i =1:n
x ( i +1)=x ( i )+h ;
y( i +1)=...;
end
endfunction