You are on page 1of 75

M.

Reggio

1
S’appuie sur la série de Taylor
dy 2
d yh2 df h 2
yi +1 = yi + h+ 2 + ... yi +1 = yi + f i h + + ...
dx d x 2 dx 2

h h
xi-2 xi-1 xi xi+1 xi+2
M. Reggio

1
dy
yi +=
1 yi + h
dx i

dy
= f (t , y ) yi +=
1 yi + f i ( xi , yi )h
dt

M. Reggio

1
y ( x ) = y ( x 0 ) + f (ξ )( x − x 0 )

y’(ξ)=f(ξ)

ξ
M. Reggio

1
y1 = y 0 + f ( x 0 )( x1 − x 0 )

M. Reggio

1
dy
= y ′ = f ( x , y ); y(x 0 ) = y 0
dx

y0

x0 x1 x2 x3
M. Reggio

1
dy
= x y , y(0) = 1, 0≤ x≤1
dx

y = ( 1 + x 2 / 4) 2
y i + 1 = y i + hf i , f = x y

x, y x y
 y(0.5) = y(0) + hf(0,1.0) = 1 + (0.5)(0 1) = 1.0

 y (1.0) = y (0.5) + hf (0.5,1.0) = 1.0 + (0.5)(0.5 1.0 ) = 1.25
M. Reggio

1
yi +=
1 yi + h xi yi y(0)= 1

x, y
y(0.25) = y(0) + hf(0, 1.0)
= 1+ (0.25)(0 1) = 1.0

y(0.5) = y(0.25) + hf(0.25, 1.0)


= 1.0 + (0.25)(0.25 1.0 ) = 1.0625
y(0.75) = y(0.5) + hf(0.5, 1.0625)
= 1.0625 + (0.25)(0.5 1.0625 ) = 1.191347
y(1.0) = y(0.75) + hf(0.75, 1.191347)
= 1.191347 + (0.25)(0.75 1.191347) = 1.39600
M. Reggio

1
dy
= y′ = x y ; y(0 ) = 1
dx

0 0.25 0.5 0.75 1.0


M. Reggio

1
dy
yi +=
1 yi + h
dx i

yi +=
1 yi + f i ( xi , yi )h

M. Reggio

1
2
h
y (t 0 + h) = y (t 0 ) + h( y ' (t 0 )) + y '' (t 0 ) + ..
2
y( t0 + h =
) y( t0 ) + y' ( t0 )h + O( h 2 ).
La précision est proportionnelle à h
Pour obtenir une solution 100 fois plus précise on
doit avoir 100 fois plus de pas

h → h / 2 ⇒ erreur → ( erreur / 4 )x( 2 fois le nombre de pas )


→ erreur / 2

M. Reggio

1
h h
xi-2 xi-1 xi xi+1 xi+2

S’appuie sur la série de Taylor :

dy 2
d yh 2 df h 2
yi +1 = yi + h+ 2 + ... yi +1 = yi + f i h + + ...
dx d x 2 dx 2

yi +1 = yi + f i ( xi , yi ) h

M. Reggio

1
dy d 2 y h 2 d 3 y h3
yi +1 =
yi + h + 2
+ 3
+...
dx d x 2 d x 3!

M. Reggio

1
dy d 2 y h 2 d 3 y h3
yi +1 =
yi + h + 2
+ 3
+...
dx d x 2 d x 3!

 y′ = x 2 + xy, 0 ≤ x ≤ 1
Exemple : 
 y (0) = 1
d 2 dy
y′′ = ( x + xy ) = 2 x + y + x = 2 x + y + x( x 2 + xy )
dx dx
2
h
yi +1 = yi + h( xi2 + xi yi ) + (2 xi + yi + xi3 + xi2 yi )
2 M. Reggio

1
h2
y ( x + h)= y ( x) + hy′( x) + y′′( x) + O(h3 )
2
y′( x) = f ( x, y )
∂f ∂f dy ∂f ∂f
y′′( x) = + = + f =f x + ff y
∂x ∂y dx ∂x ∂y

M. Reggio

1
y′( x ) = f
y′′( x=
) f x + ff y
y'''( x ) =f xx + 2 ff xy + f x f y + f y f x + f yy f + f y f
2 2

2 2 n n
dy d y h d y h
yi +1 =
yi + h+ 2
+ ... n
+
dx ï dx i 2 d x ï n!
M. Reggio

1
dy
= 2 x + y ; y (0) = 1
dx

y ' = 2x + y = 1
y'' = 2 + y' = 3
y'' ' = y'' = 3

y ' = y = ... y = 3
v v n

2 3 n
3x 3x 3x
y ( x) = 1 + x + + + ... + = 3e − 2 − 2x
x
M. Reggio
2 3! n!
1
y ' = sin x + cos y
y (0) = 0
y ' = sin x + cos y
y ' ' = cos x − y ' sin y = cos x − (sin x + cos y ) sin y
y ' ' = cos x − sin x sin y − sin y cos y
y ' ' ' = − sin x − y ' ' sin y − ( y ') cos y
2

y 'v = − cos x − y ' ' ' sin y − y ' ' y ' cos y − 2 y ' y ' ' cos y + ( y ') sin y
3

y v = sin x − y 'v sin y − y ' ' ' y ' cos y − y ' ' ' y ' cos y − ( y ' ') cos y + y ' ' ( y ') sin y
2 2

− 2( y ' ') cos y − 2 y ' y ' ' ' cos y + 2( y ') y ' ' sin y + 3( y ') y ' ' sin y +M.(Reggio
y ') cos y
2 2 2 4

1
y v = sin x − y 'v sin y − 4 y ' ' ' y ' cos y − 3( y ' ') cos y + 6 y ' ' ( y ') sin y + ( y ') cos y
2 2 4

y v ' = cos x − y v sin y − y 'v y ' cos y − 4 y 'v y ' cos y − 4 y ' ' ' y ' ' cos y +
+ 4 y ' ' ' ( y ') sin y − 6 y ' ' y ' ' ' cos y + 3( y ' ') y ' sin y + 12 y ' ( y ' ') sin y +
2 2 2

+ 6( y ') y ' ' ' sin y + 6( y ') y ' ' cos y + 4( y ') y ' ' cos y − ( y ') sin y
2 3 3 5

y v ' = cos x − y v sin y − 5 y 'v y ' cos y − 10 y ' ' ' y ' ' cos y +
+ 10 y ' ' ' ( y ') sin y + 15( y ' ') y ' sin y + 6( y ') y ' ' cos y +
2 2 3

+ 10( y ') y ' ' cos y − ( y ') sin y


3 5

M. Reggio

1
 UNE MÉTHODE DITE À UN PAS EST DE LA
FORME:
yi +1 = yi + hΦ (t i , yi )
 OUΦ EST UNE FONCTION QUELCONQUE.
 POUR LA MÉTHODE D’ EULER Φ = f

dy
= f (t , y )
dt M. Reggio

1
M. Reggio

1
df fi +1 − fi

dx h

2
 f df+ h
f 
=yiy+
yyi +i1+=
1
f h+
i + ih 
i i +1 + ...
 d x2 2 

M. Reggio

1
fi fi+1
f(x)
fi-1

aire = hfi

yi+1 = yi + hfi

ih (i+1)h
x
M. Reggio

1
fi fi+1
f(x)
fi-1

aire = hfi+1

yi+1 = yi + hfi+1

ih (i+1)h
x
M. Reggio

1
fi fi+1
f(x)
fi-1

aire = h(fi + fi+1)/2

yi+1 = yi + h(fi + fi+1)/2

ih (i+1)h
x
M. Reggio

1
Méthode implicite yn +1 = yn +
h
( f (tn , yn ) + f (tn+1 , yn+1 ))
2

• On ne connaît pas yn+1


• Pour éviter le problème, on peut remplacer yn+1 par
une valeur estimée :
yn +1 = yn + hf (t n , yn )
~

yn +1 = yn +
h
( f (tn , yn ) + f (tn+1 ~yn+1 ))
2
M. Reggio

1
y0 = y( x0 )
Prediction: y = yi + h f ( xi , yi )
0
i +1

yi + ( f ( xi , yi ) + f ( xi +1 , yik+1 ))
k +1 h
Correction: y i +1 =
2

Erreur locale de troncature O(h3 )


Erreur globale de troncature O(h 2 )
M. Reggio

1
Avec la pente f(xi,yi) évaluée en xi et on prédit
yp(xi+1)

y yp(xi+1 )

xi xi+1 M. Reggio

1
On utilise yp(xi+1) pour calculer la pente f(xi+1,yi+1)

y yp(xi+1 )

xi xi+1 M. Reggio

1
On calcule alors la moyenne entre le pentes
f(xi ,yi) et f(xi+1 ,yi+1 )

y y(xi+1 )

xi xi+1 M. Reggio

1
On utilise alors la pente moyenne pour
recalculer yi+1

y y(xi+1 )

yi + ( f ( xi , yi ) + f ( xi +1 , yi +1 ) )
h
yi +1 =
2
h

xi xi+1 M. Reggio

1
yi + ( f ( xi , yi ) + f ( xi +1 , yi +1 ) )
h
yi +1 = y i +1 = y i + φh
2

y y(xi+1 )

xi xi+1 M. Reggio

1
On utilise la méthode d’ Euler pour prédire une valeur
de y au point milieu de l’intervalle
h
yi +1/ 2 = yi + f i
2
Cette quantité est utilisée pour estimer la pente en
ce point milieu

y 'i +1/ 2 = f ( xi +1/ 2 , yi +1/ 2 ) = f


i + 1/ 2
M. Reggio

1
• On utilise cette pente et on applique la méthode
d’Euler dans l’intervalle [xi ,xi+1]

 f i + f i +1 
1i +=
yi +y= yih+ fi +1/ 2 h 
1 yi +
 2 

M. Reggio

1
• Avec la pente f(xi,yi) évaluée en xi et on
prédit y(xi+1/2)
y y(xi+1/2 )

h/2

xi xi+1/2
M. Reggio

1
y
y(xi+1/2 )
y(xi+1 ) yi +=1 yi + h f ( xi +1 / 2 , yi +1 / 2 )

h/2
h

xi xi+1/2 xi+1
M. Reggio

1
Carl Runge Martin Kutta
M. Reggio

1
Obtenir des méthodes faciles, plus
précises sans l’ utilisation des série de
Taylor:
d y d 2 y h2 d 3 y h3
yi +1 = yi + h+ 2 2 + 3 3! + ...
d x d x d x

Comment?
M. Reggio

1
yi+1 __
__
=f w1 f1 + w2 f 2
f __
dy ∆y =h f
= f (t , y )
dt
f ( xi , ti )
yi
h
ti ti+1

M. Reggio

1
yi +1 =
yi + ∆y yi +1 =
yi + hf
__
=f w1 f1 + w2 f 2
The image part with relationship ID rId11 was not found in the file.

k1 =∆y1 =hf (ti , yi ) f1 = f (ti , yi )


k2 =∆y2 =hf (ti + c2 h, yi + a21k1 ) f 2 = f (ti + c2 h, yi + a21k1 )

∆y21 = a21k1
M. Reggio

1
w1∆y1 + w2 ∆y2 = ∆y
yi +1 =yi + w1k1 + w2 k2
k1 = hf (ti , yi )
k2 = hf (ti + c2 h, yi + a21k1 )
w1 et w2 sont des poids
f (ti , yi ) et f (ti + c2 h, yi + a21k1 ) sont des pentes
Il faut déterminer w1, w2, c2 et a21
M. Reggio

1
f(x1+c2h,y1+a21k1) k2=h f(x1+c2h,y1+a21k1)

kl=h f(x1,y1)
a21k1
f ( x1 , y1 )
y1
c2h

x1 h x2

M. Reggio

1
Séries de Taylor
2
dy d y h2
yi + 1 = yi + h+ 2 + ..
dx dx 2 3 équations,
un paramètre est libre

h 2
 w1
yi + 1 = yi + fh + f ' + .. w
2  2

yi +1 = yi + w1 k1 + w2 k 2 c2
a21 M. Reggio

1
=c2 1/=
2, a21 1/ 2, k1 = =
∆y1 , w1 0 w2 = 1 k 1 = hf ( x i , y i ) = hf 1
 h 1
k 2 = hf ( x i + , y i + k 1 )
f2  2 2
 = hf 2

 y i +1 = y i + k 2

f1 k1 = hf ( xi , yi ) 1/ 2 1/ 2
k2 =hf ( xi + c2 h, yi + a21k1 )
h
yi +1 =yi + w1k1 + w2 k2
0 1
xi xi+1/2 xi+1 M. Reggio

1
=k1 hf= ( xi , yi ) hf1
k =hf ( x + c h, y + a k )
f2  2 i 2 i 21 1

 = hf 2
 y =y + w k + w k
 i +1 i 1 1 2 2

 = yi + h( w1 f1 + w2 f 2 )
f1
c2 a21

h w1 w2

xi xi+c2h xi+1 = xi+h


M. Reggio

1
k1 = hf ( xi , yi )
k2 =hf ( xi + c2 h, yi + a21k1 )
yi + ( f ( xi , yi ) + f ( xi +1 , yi +1 ) )
h
yi +1 =
yi +1 =yi + w1k1 + w2 k2 2

k1 = hf ( xi , yi ) = hf1
k 2 = hf ( xi + h, yi + k1 ) = hf 2
1 1
yi +1 = yi + k 2 + k 2 1 1
2 2
1/2 1/2
M. Reggio

1
k1 = hf ( xi , yi )
k2 =hf ( xi + c2 h, yi + a21k1 )
yi +1 =yi + w1k1 + w2 k2

k1 hf=
( xi , yi ) hf1
2 2
k2 = hf ( xi + h, yi + k1 ) = hf 2
3 3
1 3
yi +1 =yi + k1 + k2 2/3 2/3
4 4
1/4 3/4
M. Reggio

1
k1 = hf ( xi , yi )
k2 =hf ( xi + c2 h, yi + a21k1 )
yi +1 =yi + w1k1 + w2 k2

=k1 hf= ( xi , yi ) hf1



k2 = hf ( xi + h , yi + 1 k1 )
 2 2
 = hf 2
 1/2
 yi +=
1 yi + k2 1/2
0 1 M. Reggio

1
1
f = ( f1 + 2 f 2 + 2 f 3 + f 4 )
6 f2
f4

f3

f1 f

xi xi + h/2 xi + hM. Reggio

1
h
yi + 1 = yi + ( k 1 + 2 k 2 + 2 k 3 + k 4 )
6
k1 = f (t n , yn )
 h h 
k 2 = f  t n + , yn + k1 
 2 2 
 h h 
k3 = f  t n + , yn + k 2 
 2 2 
k 4 = f (t n + h, yn + hk3 ) M. Reggio

1
dy t − y
=
dt 2
y (0) = 1

Avec ∆t=h=0.25, on a

M. Reggio

1
dy t − y
=
dt 2
y (0) = 1

0 −1 h=0.25
f (0,1) = =
−0.5 k1 =
hf1 =
0.25(−0.5)
2
Δy1
0.25
tn + h / 2 =
0+ =
0.125 yn + k1 / 2 =
1 + 1/ 2(0.25(−0.5)) =
0.9375
2

0.125 − 0.9375
f2 = = −0.40625 k2 =
hf 2 =
0.25(−0.40625)
2
Δy2
0.25
tn + h / 2 =
0+ =
0.125 yn + k 2 / 2 =
1 + 1/ 2(0.25(−0.40625) =
0.94921875
2
M. Reggio

1
dy t − y
=
dt 2
y ( 0) = 1

0.25
tn + h / 2 =
0+ =
0.125 yn + k 2 / 2 =
1 + 1/ 2(0.25(−0.4625) =
0.94921875
2

0.125 − 0.94921875
f3 = =
−0.4121094 k3 =
hf3 =
0.25(−0.4121094)
2
Δy3
tn + h =0 + 0.25 =0.25 yn + k3 =1 + 0.25(−0.4121094) =0.89697265

0.25 − 0.89697265
f4 = =
−0.3234863 k4 =
hf 4 =
0.25(−0.3234863)
2
Δy4
1
y1 = y0 + (k1 + 2k2 + 2k3 + k4 ) =0.8984375
6 M. Reggio

1
dy
= x y , y(0) = 1, 0≤ x≤1
dx

= k1 hf= =
( x0 , y0 ) (0.5)(0 1.0) 0

k2 = hf ( x0 + 0.5h, y0 + 0.5k1 ) = hf (0.25, 1.0) =(0.50)(0.25 1) = 0.125

 k3 =hf ( x0 + 0.5h, y0 + 0.5k2 ) = hf (0.25, 1.0625) = (0.5)(0.25 1.0625) =0.128847

k4 = hf ( x0 + h, y0 + k3 ) = hf (0.5, 1.128847) = (0.5)(0.5 1.128847) = 0.265618
1 1
y1 = y0 + (k1 + 2k2 + 2k3 + k4 ) = 1 + [ 0 + 2(0.125) + 2(0.128847) + 0.265618]
6 6
=
1.128885 (ε t 0.0018%)
M. Reggio

1
= −2 x − y, y (0 ) = −1
dy
dx

Erreur en x=0.4 Rapport d'erreur


Euler Euler Runge-Kutta
h Euler Modifiée Runge-Kutta 4 Euler Modifiée 4
0.4000 2.11E-02 2.90E-02 2.40E-04
0.2000 9.10E-01 6.42E-03 1.27E-05 3.3 4.5 18.9
0.1000 4.27E-01 1.44E-03 7.29E-07 2.1 4.5 17.4
0.0500 2.07E-01 3.48E-04 4.37E-08 2.1 4.1 16.7
0.0250 1.02E-01 8.54E-05 2.76E-09 2.0 4.1 15.8
0.0125 5.06E-01 2.11E-05 1.65E-10 2.0 4.0 16.7

M. Reggio

1
h
yi + 1 = yi + ( k 1 + 2 k 2 + 2 k 3 + k 4 )
6
k1 = f (t n , yn )
 h h 
k 2 = f  t n + , yn + k1 
 2 2 
 h h 
k3 = f  t n + , yn + k 2 
 2 2 
k 4 = f (t n + h, yn + hk3 ) M. Reggio

1
aij

1/2 1/2
cj 1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6
wi

M. Reggio

1
k1 = hf ( xi , yi ) = hf 1
k 2 = hf ( xi + c2 h , yi + a21k1 ) = hf 2
k3 = hf ( xi + c3 h , yi + a31k1 + a32 k 2 ) = hf 3
k4 = hf ( xi + c4 h , yi + a41k1 + a42 k 2 + a43 k3 ) = hf 4
=
∆xm cm h, ∆
=ymn amn kn

yi +1 = yi + w1k1 + w2 k 2 + w3 k3 + w4 k4

M. Reggio

1
k1
k2 c2 a21 0< cm <1

k3 c3 a31 a32
k4 c4 a41 a42 a43

w1 w2 w3 w4

M. Reggio

1
Quelques coefficients aij sont nuls
k1 = hf ( xi , yi ) 1/2 1/2 = hf 1
k 2 = hf ( xi + c2 h , yi + a21k1 ) 1/2 = hf 2
1/2
k3 = hf ( xi + c3 h , yi + a31k1 + a32 k 2 ) 1 = hf 3
1
k4 = hf ( xi + c4 h , yi0+ a41k1 + a42 k 2 + a43 k3 ) = hf 4
0 0
yi +1 = yi + w1k1 + w2 k 2 + w3 k3 + w4 k4
1/6 2/6 2/6 1/6

M. Reggio

1
k1 = hf ( xi , yi ) = hf 1
k 2 = hf ( xi + c2 h , yi + a21k1 ) = hf 2
k3 = hf ( xi + c3 h , yi + a31k1 + a32 k 2 ) = hf 3
k4 = hf ( xi + c4 h , yi + a41k1 + a42 k 2 + a43 k3 ) = hf 4
Δyinterne

k m = hf ( xi + cm h , yi + am1k1 +  + am ,m −1k m −1 ) = hf m
yi +1 = yi + w1k1 + w2 k 2 +  + wm k m
= yi + h( w1 f 1 + w2 f 2 +  + wm f m )
Δyfinale M. Reggio

1
c2 a21
0< cm <1
c3 a31 a32
c4 a41 a42 a43
    
cm am1 am 2 am 3  am ,m −1

w1 w2 w3  wm −1 wm
M. Reggio

1
1/2 1/2

1/4 3/16 1/16

1/2 0 0 1/2
Lawson d’ordre 5
3/4 0 -3/16 6/16 9/16

1 1/7 4/7 6/7 -12/7 8/7

7/90 0 32/90 12/90 32/90 7/90

M. Reggio

1
1/3 1/3
2/3 0 2/3
1/3 1/12 1/3 -1/12

Butcher d’ordre 6 1/2 -1/16 9/8 -3/16 -3/8


1/2 0 9/8 -3/8 -3/4 1/2

1 9/44 -9/11 63/44 18/11 0 -16/11

11/120 0 27/40 27/40 -4/15 -4/15 11/120

M. Reggio

1
M. Reggio

1
On voudrait estimer l’erreur au fur et à mesure que
les calculs progressent et ainsi modifier la grandeur
du pas h
Une possibilité est d’effectuer les calculs deux fois.
Une première fois avec un pas h et une seconde fois
avec un pas 2h
Une autre possibilité est d’effectuer les calculs deux
fois avec deux méthodes d’ordre successif (4 et 5 par
exemple).
M. Reggio

1
Valeur exacte

y( x + h ) = y RK 4 + O( h 5 )
Valeur exacte

y( x + h ) = y RK 5 + O( h )6

0 = yRK 4 − yRK 5 + O(h ) − O(h )


5 6
M. Reggio

1
y RK 5 − y RK 4 ≈= O( h ) − O( h )
5 6

O( h ) << O( h )
6 5

M. Reggio

1
1 1
Ordre 4
4 4
3 3 9
8 32 32
12 1932 −7200 7296
13 2197 2197 2197
439 3680 −845
1 −8
216 513 4104
25 1408 2197 1
0 −
126 2565 41047 5
M. Reggio

1
1 1
4 4 Ordre 5
3 3 9
8 32 32
12 1932 − 7200 7296
13 2197 2197 2197
439 3680 − 845
1 −8
216 513 4104
1 −8 − 3544 1859 − 11
2
2 27 2565 4104 40
16 6656 28561 −9 2
0
135 12825 56430 50 55
M. Reggio

1
Mêmes coefficients (k1, k2, k3, k4, k5) pour l’ordre 4 et 5
Plus économique
Estimation d’erreur – solution à pas de temps adaptatif (variable)

 16 25   6656 1408 
Erreur=  −  k1 + ( 0 − 0 ) k2 +  −  k3
 135 216   12825 2565 
 28561 2197   −9  2
+ −  k 4 +  − 5  k5 + k 6
 56430 4104   50  55
M. Reggio

1
Calcul de yi+1 avec une méthode R-K-F de 4ièmeordre ⇒
(y1)4ieme
Calcul de yi+1 avec une méthode R-K-F de 5ièmeordre ⇒
(y2)5ieme
Calcul de l’erreur estimée Ee ~ (y2)5ieme - (y1)4ieme
Ajustement du pas en fonction de l’ Ee

M. Reggio

1
cj aij
1/2 1/2
3/4 0 3/4
wi 2/9 1/3 4/9 0
w*i 7/24 1/4 1/3 1/8

= h∑ ( wi − wi* ) ki
s
Erreur
i =1
M. Reggio

1
cj aij
1/5 1/5
3/10 3/40 9/40
4/5 44/45 −56/15 32/9

8/9 19372/6561 −25360/2187 64448/6561 −212/729

1 9017/3168 −355/33 46732/5247 49/176 −5103/18656

1 35/384 0 500/1113 125/192 −2187/6784 11/84

w 5179/57600 0 7571/16695 393/640 −92097/339200 187/2100 1/40

W* 35/384 0 500/1113 125/192 −2187/6784 11/84 0

= h∑ ( wi − wi* ) ki
s
Erreur M. Reggio
i =1

1
Méthodes Runge-Kutta d’ordre 2 et 3
[ x, y ] = ode23 (‘F’, tspan, y0)

Méthodes Runge-Kutta d’ordre 4 et 5


[ x, y ] = ode45 (‘F’, tspan, y0)

Contrôle du pas
M. Reggio

You might also like