Vous êtes sur la page 1sur 30

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

sur mon site web : http://sites.univ-biskra.dz/kenouche/ Chapitre 2 Resolution´ numerique´ des equations´

Chapitre 2 Resolution´

numerique´

des equations´

differentielles´

Master Physique

SAMIR KENOUCHE - D´ EPARTEMENT DES SCIENCES DE LA MATI

`

ERE

- UMKB

ETHODES MATH EMATIQUES ET ALGORITHMES POUR LA PHYSIQUE

´

Resum´

Dans ce chapitre, il sera question de la resolution´ numerique´ des equations´ differentielles.´ Les methodes´ numeriques´ abordees´ sont dites a` un pas, car le calcul de y(x n+1 ) ne reclame´ que la valeur de y(x n ) a` l’instant prec´ edent.´ Une methode´ a` deux pas utilisera a` la fois y(x n ) et y(x n1 ). Nous nous bornerons aux methodes´ numeriques´ d’Euler, de Heun, de Crank-Nicolson et de Runge-Kutta classique d’ordre 4. Dans la derniere` section, on abordera la resolution´ d’une equation´ aux deriv´ ees´ partielles par la methode´ des differences´ finies en deux dimensions. Par ailleurs, la programmation de ces algorithmes sera conduite par le biais de scripts Matlab .

Methode´

Mots cles´

d’Euler, de Heun, Runge Kutta, equation´

aux deriv´

ees´

partielles, script Matlab .

 

Galilee´

disait ”

Le livre de la nature est ecrit´

en langage mathematique´

Table des matieres`

I Introduction

1

I-A

Probleme`

de Cauchy

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

I-B

Methodes´

d’Euler .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

I-C

I-D

. Stabilite´ des schemas´

Erreur theorique´

.

.

.

.

.

.

.

numeriques´

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

5

I-E

I-F

I-G

Methode´

Methode´

Methode´

. de Crank - Nicolson

de Heun .

. de Runge–Kutta, d’ordre 4

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

8

8

´

II Equations differentielles´

d’ordre n

 

12

III Differences´ finies

.

.

.

.

.

.

.

non-lineaire´

.

.

.

.

.

.

.

.

.

.

15

III-A En dimension 1 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

III-A1 Probleme`

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

III-B En dimension 2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

U Ne equation´ telle equation´

differentielle´

s’ecrit´

:

I. INTRODUCTION

est une equation´

dont l’inconnue est une fonction y(x). La forme gen´ erale´

d’une

f(y (n) , y (n1) , y (n2) ,

, y (1) , y, x) = ϕ(x)

(1)

differentielle.´

L’existence d’une solution unique de

Dans

, y (n) (a). Cependant, il faut noter

Avec, y (n) est la nieme`

deriv´

ee´

de la fonction y et ϕ(x) designe´

differentielle´

le second membre de l’equation´

Dans le cas ou` ϕ(x) = 0, on dira que l’equation´

l’equation´ differentielle´

l’equation´

est homogene.`

est tributaire de l’imposition de certaines conditions initiales sur y(x) et ses deriv´

ees.´

(1), les conditions initiales sont les valeurs de y(a), y (1) (a), y (2) (a),

S. Kenouche est docteur en Physique de l’Universite´ de Montpellier et docteur en Chimie de l’Universite´ de Bejaia´ Site web : voir http://www.sites.univ-biskra.dz/kenouche

Version amelior´

ee´

et actualisee´

le 09.11.2018.

.

1

@ SAMIR KENOUCHE

2

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

que tres`

par des methodes´

souvent la solution analytique n’existe pas, et on doit par consequent´

numeriques.´

approcher la solution exacte y(x)

A. Probleme`

de Cauchy

Le probleme`

de Cauchy consiste a` trouver une fonction continumentˆ

derivable´

u : t R + −→ u(t) R verifiant´

:

La premiere`

equation´

ou condition initiale.

est une equation´

y (t) = f (t, y(t)), y(0) = y 0

differentielle´

t > 0

et la deuxieme`

(2)

relation exprime une condition de Cauchy

Definition´

: soit f : I × R

−→ R une fonction donnee,´

s’il existe une constante L > 0 telle que :

|f (t, u) f (t, v)| ≤ L |u v|

(3)

u, v R et t I alors f est dite lipschitzienne de rapport L sur I × R ou simplement L-lipschitzienne.

Theor´

eme`

: si f est continue sur I × R et L-lipschitzienne par rapport a` sa deuxieme`

probleme`

de Cauchy admet une solution unique sur I, u(0) R.

variable y(t) alors le

Remarque : Dans ce qui suit, la variable t sera systematiquement´

mathematique´

demeure inchange.´

remplacee´

par la variable x. Le formalisme

B. Methodes´

, x n ,

avec x 0 = a et x n = b et le pas de discretisation´ est defini´ par h = (b a)/n. La resolution´ numerique´ consiste a`

discretiser´ l’axe des abscisses suivant x n = x 0 + h n (n N). Ensuite on cherchera u n comme approximation de y

, u n }, ou` tout simplement

{u n } nN , constitue la solution numerique.´ Ces methodes´ sont iteratives´ donc la suite {u n } nN doit etreˆ initialisee´

afin de calculer ses successeurs. Soit l’equation´

au point x n , soit y(x n ). Ainsi l’ensemble des approximations successives {u 0 , u 1 , u 2 ,

d’Euler

Afin d’atteindre la solution y(x), sur l’intervalle x [a, b], on choisit n+1 points dissemblables x 0 , x 1 , x 2 ,

differentielle´

:

Trouver la solution de cette equation´ soit :

y = f (x, y(x))

revient a` calculer l’integrale´

(4)

de f (x, y(x)) entre les bornes x n et x n+1 ,

Cette integrale´

s’ecrit´

x

x

n

n+1

f

(x, y(x)) = y(x n+1 ) y(x n )

en fonction des approximations u n+1 et u n :

(5)

x

x n+1

n

f (x, y(x)) = u n+1 u n

(6)

Par consequent,´

en fonction de la methode´

numerique´

d’integration´

utilisee´

afin de resoudre´

(terme de gauche),

des rectangles a` gauche, on obtient

l’integrale´

on obtient un schema´

le schema´

donne.´ En utilisant par exemple la methode´

numerique´

d’Euler progressif :

En utilisant la methode´

u 0 = y(x 0 ) = y = h

u n+1 u n

0

f(x n , u n )

avec

des rectangles a` droite, on obtient le schema´

u 0 = y(x 0 ) = y

0

u n+1 u n

= h f(x n+1 , u n+1 )

avec

n N

numerique´

n N

 

(7)

d’Euler retrograde´

:

 

(8)

@ SAMIR KENOUCHE

3

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

Avec la methode´

du point milieu, on aura le schema´

numerique´

u 0 = y(x 0 ) = y 0

u n+1/2 u n + h

2

f(x n , u n )

u n+1 u n = h f(x n + h

2

, u n+

2 )

1

d’Euler modifie´ :

avec

n N

(9)

Exemple numerique´

Soit a` resoudre´

numeriquement´

l’equation´

schema´

numerique´

d’Euler retrograde´

:

differentielle´

: 2 y = x y avec y(0) = 1. On utilisera a` cet effet le

u n+1 =u n + h x n+1 u n+1

2

2 u n+1 =2 u n + h x n+1 h u n+1

u n+1 = 2 u n + h x n+1 2 + h

(10)

Avec x n = x 0 +n h et x n+1 = x 0 +(n+1) h. On discretise´ l’axe des abscisses suivant 10 nœuds sur un intervalle [0 1]. Le pas de discretisation´ est h = (1 0)/10 h = 0.1 et la condition initiale est y(x 0 = 0) = 1 = u 0 .

Nous avons applique´ le schema´

numerique´

ci-dessus pour dix approximations :

u

u

u

u

1

2

3

4

.

= 2 u 0 + h x 1

2

+ h x 2

= 2 u 1

+ h

2 + h + h x 3

= 2 u 2

2

+ h + h x 4

= 2 u 3

2

+ h

.

. =

.

,

avec

h = 0.1

,

avec

h = 0.1

,

avec

h = 0.1

,

avec

h = 0.1

.

u 10 = 2 u 9 + h x 10 2 + h

,

avec

h = 0.1

TABLE I: Methode´

d’Euler

n

x

n

u

n

0.0000

0.0000

1.0000

1.0000

0.1000

0.9524

2.0000

0.2000

0.9118

3.0000

0.3000

0.8779

4.0000

0.4000

0.8504

5.0000

0.5000

0.8289

6.0000

0.6000

0.8133

7.0000

0.7000

0.8031

8.0000

0.8000

0.7982

9.0000

0.9000

0.7983

10.0000

1.0000

0.8031

@ SAMIR KENOUCHE

4

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

Ci-dessous le script Matlab :

clc ; clear all ; close all ; % Kenouche Samir - Le 15/11/2018 %
clc
;
clear
all
;
close
all
;
% Kenouche
Samir
-
Le
15/11/2018
% IMPLICITE
EULER
:
y’
=
(x
y)/2
-
% SCHEMA
NUMERIQUE
: Un+1
=
Un
+ F(Xn+1,
Un+1)
dy
= @(x,y)
(x
-
y)./2
;
un(1)
= 1
;
% CONDITION
INITIALE
a
= 0
;
b
= 1
;
n
=
10
;
h
=
(b-a)/n
; xn
=
a:h:b
;
for
it
= 1:n
- 1
end
sol_exacte
=
3. * exp(-xn/2)
+ xn
- 2
; figure(’color’,[1
1 1])
;
plot(xn(1:end-1),un,’o-b’)
;
hold
on
;
plot(xn,
sol_exacte,’-ro’)
;

un(it+1) (1/(2+h)) * (2 * un(it) = + h * xn(it)) ;

(1/(2+h)) * (2 * un(it) (1/(2+h)) * (2 * (1/(2+h)) * (2 *

=

+ un(it+1) (1/(2+h)) * (2 * un(it) = h * xn(it)) ;

h * xn(it)) h *

un(it+1) (1/(2+h)) * (2 * un(it) = + h * xn(it)) ;

;

xlabel(’x’)

;

ylabel(’y’)

; xlabel ( ’x’ ) ; ylabel ( ’y’ )

il sera difficile de

retrouver analytiquement le schema´ numerique.´ Dans ce cas il serait judicieux d’appliquer explicitement la formule d’Euler. Ci-dessous, le script Matlab correspondant.

Tres` souvent pour des equations´

differentielles´

ayant des formules mathematiques´

compliquees,´

clc ; clear all ; close all ; % Samir Kenouche - Le 15/11/2018 %
clc
;
clear
all
;
close
all
;
% Samir
Kenouche
- Le
15/11/2018
% FORMULE
D’EULER
-
Eq
:
y’
(x
=
y)/2
-
%
SCHEMA
NUMERIQUE
:
Un+1
=
Un
+ F(Xn,
Un)
dy
=
@(x,y)
(x
-
y)./2
; un(1)
= 1
;
%
INITIALE
CONDITION
a
=
0
;
b
=
1
;
n
=
10
; h
=
(b-a)/n
;
xn
=
a:h:b;
for
it
=
1:n
1
-
un(it+1)
+
=
un(it)
h * dy(xn(it),
un(it))
;

end

= 3. * exp(-xn/2)
= 3. * exp (-xn/2)

plot(xn(1:end-1),un,’o-b’)

sol_exacte

exp (-xn/2) plot (xn(1: end -1),un, ’o-b’ ) sol_exacte + xn - 2 ; hold ;
+ xn - 2 ; hold
+ xn
- 2
;
hold
(xn(1: end -1),un, ’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’

; figure(’color’,[1

1 1])

’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’ ,[1 1 1])

; ’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’ ,[1 1 1])

on

; ’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’ ,[1 1 1])

plot(xn, plot

’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’ ,[1 1 1])

sol_exacte,’-ro’)

; ’o-b’ ) sol_exacte + xn - 2 ; hold ; figure ( ’color’ ,[1 1 1])

xlabel(’x’)

;

ylabel(’y’)

xlabel ( ’x’ ) ; ylabel ( ’y’ ) ;

;

C. Erreur theorique´

La convergence des deux schemas´

d’Euler est d’ordre un par rapport a` h :

e n = |u(x n ) u n | = O(h)

Cela signifie que si je divise par deux le pas h, l’erreur sera divisee´ le temps de calcul est multiplie´ par deux.

par deux egalement.´

Dans cette configuration

@ SAMIR KENOUCHE

5

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

Theor´

eme`

: si f est continue sur I × R, L-lipschitzienne par rapport a` sa deuxieme`

alors l’erreur e n = u(x n ) u n commise au point (x n , u n ) est majoree´

par :

variable et y(x) ∈ C 2 sur I

|e n | ≤ (e L (ba) 1) ×

h

L max |y(x) (2) |

2

xI

Avec a et b sont respectivement les bornes inferieure´

soit le probleme`

de Cauchy suivant :

et superieure´

d’integration.´

(11)

Afin de calculer cette erreur,

y (x) = y(x) + 1 y(0) = 1

x R

1) Montrer que f est L-lipschitzienne.

2) Calculer l’erreur theorique´

Tenant compte de (3), il vient :

de la methode´

d’Euler pour un pas h = 0.1.

(12)

|f (x, u) f (x, v)| = |x + u x v|

´

Evaluons l’erreur theorique´

donnee´

x = 1 y (1) = 2 e 1 = 5.4366 :

= |u v| ⇒ L = 1

par (11), nous avons y (x) = 2 e x . Cette seconde deriv´

|e n | ≤ (e 1 (10) 1) ×

0.4665

h

1 × 5.4366 2 × 1

2 ×

× 0.1

D. Stabilite´ des schemas´

numeriques´

ee´

est maximale pour

Avant d’entamer la discussion sur la notion de stabilite,´ il a et´ e´ juge´ judicieux d’introduire un bref rappel sur

les suites. Soit u n une suite geom´

etrique´

de terme u 0 et de raison r. Nous avons n N : u n = u 0 r :

Si r > 0 lim n+ u n = +lim n+ u n = −∞

si

si

u 0 > r u 0 < r

• |r| < 1

Si

lim

n+u n = 0

Si

r = 1

lim

n+u n = u 0

Si

r ≤ −1

lim

n+u n

Dans ce qui suit on se propose d’etudier´

differentielle´

:

la stabilite´ des schemas´

d’Euler, progressif et retrograde´

y (x) = βy(x) y(0) = y 0

β > 0

sur l’equation´

(13)

La solution de ce probleme`

de Cauchy est triviale, soit : y(x) = y 0 e β x ainsi :

x+ y(x) = 0

lim

(P 1 )

Les schemas´

numeriques´

d’Euler permettent de calculer les approximations {u n } N . Nous souhaitons verifier´

propriet´ e´ P 1 pour les approximations {u 1 , u 2 , u 3 ,

, u n }. Autrement dit on cherche :

lim

n+u n = 0

la

@ SAMIR KENOUCHE

6

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

Commenc¸ons par le schema´

d’Euler progressif u n+1 = u n + h f(x n , u n ), ce qui donne :

u n+1 = (1 β h) u n

u 1 = (1 β h) u 0

u 2 = (1 β h) u 1 = (1 β h) 2 u 0

En gen´ eralisant´

on obtient la suite geom´

etrique´

u 0 . Cherchons la propriet´ e´ P 1 :

: u n+1 = (1 β h) n u 0 de raison (1 β h) et de premier terme

n+ u n = 0 ⇔ |1 β h| < 1 β h < 2 h <

lim

2

β

Ainsi, la convergence de cette suite est conditionnee´

par h <

2

β . Si nous prenons par exemple h >

divergera, ce qui contredit la solution exacte y(x). Examinons desormais´

analogue que prec´ edemment´

on aura :

le schema´

d’Euler retrograde.´

2

β

la suite

De fac¸on

Cherchons la propriet´ e´ P 1 :

u n+1 = u n

1 + β h = u 0 1 +

1

1

β h n+1

lim

n+u n+1 = 0

1

1 + β h < 1

Ce qui est toujours verifi´

h. Par consequent´

il n’existe aucune condition sur la pas de discretisation,´

rement au schema´

progressif. Ainsi, le schema´

retrograde´

est inconditionnellement stable.

contrai-

E. Methode´

de Heun

La Methode´

de Heun est une version amelior´

ee´

de celle d’Euler. L’erreur sur le resultat´

gen´ er´ e´ par cette methode´

est proportionnelle a` h 3 , meilleur que celle de la methode´

evaluation´

de la fonction f .

d’Euler. Neanmoins,´

u 0 = y(x 0 ) = y 0

u n+1 = u n + h

2

{f(x n , u n ) + f(x n , u n + h f(x n , u n ))}

cette methode´

avec

n N

reclame´

une double

(14)

Le schema´ numerique´ de cette methode´ resulte´ de l’application de la formule de quadrature du trapeze.` Notons egalement´ que la methode´ de Heun fait partie des methodes´ de Runge-Kutta explicites d’ordre deux. Afin d’illus-

et

trer le fonctionnement de cette methode,´

cherchons la formule analytique correspondante :

reprenant l’equation´

differentielle´

de l’exemple numerique´

prec´ edent´

Finalement :

u n+1 =u n + h

2

x n u n

2

u n+1 =u n + h

2

x n u n

2

u n+1 =u n + h

2

x n u n

2

+ h

2

+ h

2

+ h

2

x n u n + h x n u n

2

2

x n 2 u n + h x n h u n

2

2

2 x n 2 u n h x n + h u n

4

u n+1 = 4 h h 2

8

x n + 8 4 h + h 2

8

u n

(15)

@ SAMIR KENOUCHE

7

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

Ci-dessous le script Matlab :

clc ; clear all ; close all ; % Samir Kenouche 15/11/2018 - Le %
clc
;
clear
all
;
close
all
;
% Samir
Kenouche
15/11/2018
-
Le
% Heun
-
Eq
:
y’
y)/2
=
(x
-
% SCHEMA
NUMERIQUE
:
Un+1
=
Un
+ h/2[F(Xn+1,
Un+1)
+
F(Xn,
Un
+ h
F(Xn,Un))]
dy
=
@(x,y)
(x
-
y)./2
;
un(1)
= 1
;
% CONDITION
INITIALE
a
= 0
;
b
=
1
;
n
=
10
;
h
=
(b-a)/n
; xn
a:h:b;
=
for
it =
1:n
1
-
un(it+1)
((4 * h
=
-
h.ˆ2)/8) *
xn(it)
+
((8
-
4 * h
+
h.ˆ2)/8) * un(it)
;
end
sol_exacte
=
3. * exp(-xn/2)
+ xn
-
2
;
figure(’color’,[1
1
1])
;
plot(xn(1:end-1),un,’o-b’)
;
hold
on
;
plot(xn,
sol_exacte,’-ro’)
;

xlabel(’x’)

;

ylabel(’y’)

; xlabel ( ’x’ ) ; ylabel ( ’y’ )

decoulant´ du

schema´ numerique,´ est relativement simple. Il est ainsi plus pertinent d’appliquer explicitement la formule de

Heun. Ci-dessous, le script Matlab correspondant.

Comme prec´ edemment,´

cette fac¸on de proceder´

n’est faisable que si la formule mathematique,´

clc ; clear all ; close all ; % Samir Kenouche - Le 15/11/2018 %
clc
;
clear
all
;
close
all
;
% Samir
Kenouche
- Le
15/11/2018
% Heun
-
Eq
:
y’
= (x
y)/2
-
% SCHEMA
NUMERIQUE
:
dy
= @(x,y)
(x
-
y)./2
un(1)
;
= 1
;
% CONDITION
INITIALE
a
=
0
;
b
=
1
;
n
=
10
;
h
=
(b-a)/n
; xn
=
a:h:b;
for
1:n
i
=
-
1
=
un(i)
+
un(i)
h * dy(xn(i),un(i))));
+
end
sol_exacte
3. * exp(-xn/2)
=
+
xn
-
2
; figure(’color’,[1
1 1])
;
plot(xn(1:end-1),un,’o-b’)
;
hold
on
;
plot(xn,
sol_exacte,’-ro’)
;

Un+1

= Un

+ h/2[F(Xn+1,

Un+1) Un+1 = Un + h/2[F(Xn+1, + F(Xn, Un + h F(Xn,Un))]

+ Un+1 = Un + h/2[F(Xn+1, Un+1) F(Xn, Un + h F(Xn,Un))]

F(Xn, Un+1 = Un + h/2[F(Xn+1, Un+1) + Un + h F(Xn,Un))]

Un Un+1 = Un + h/2[F(Xn+1, Un+1) + F(Xn, + h F(Xn,Un))]

Un+1 = Un + h/2[F(Xn+1, Un+1) + F(Xn, Un + h F(Xn,Un))]

+

h Un+1 = Un + h/2[F(Xn+1, Un+1) + F(Xn, Un + F(Xn,Un))]

F(Xn,Un))] Un+1 = Un + h/2[F(Xn+1, Un+1) + F(Xn, Un + h

un(i+1) h/2 * (dy(xn(i),un(i)) + dy(xn(i + 1),

h/2 * (dy(xn(i),un(i))

+

un(i+1) h/2 * (dy(xn(i),un(i)) + dy(xn(i + 1),

dy(xn(i

un(i+1) h/2 * (dy(xn(i),un(i)) + dy(xn(i + 1),

+

un(i+1) h/2 * (dy(xn(i),un(i)) + dy(xn(i + 1),

1),

xlabel(’x’)

;

ylabel(’y’)

; xlabel ( ’x’ ) ; ylabel ( ’y’ )

Ci-dessous, les resultats´

numeriques´

pour dix approximations :

@ SAMIR KENOUCHE

8

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

TABLE II: Methode´

de Heun

n

x

n

u

n

0.0000

0.0000

1.0000

1.0000

0.1000

0.9537

2.0000

0.2000

0.9146

3.0000

0.3000

0.8823

4.0000

0.4000

0.8564

5.0000

0.5000

0.8367

6.0000

0.6000

0.8227

7.0000

0.7000

0.8144

8.0000

0.8000

0.8113

9.0000

0.9000

0.8133

F. Methode´

de Crank - Nicolson

Cette methode´

permet d’obtenir une plus grande precision´ prec´ edentes.´

(elles gen´ erent` Le schema´

des solutions numeriques´

est donne´ par :

des solutions analytiques) que les deux methodes´

numerique´

plus proches

y 0 = y(x 0 ) = u 0

u n+1 = u n + h

2

{f(x n , u n ) + f(x n+1 , u n+1 )}

avec

n N

(16)

Cette methode´

et celle d’Euler retrograde´

regularit´

e´ sur les equations´

a` resoudre.´

sont inconditionnellement stables, moyennant certaines conditions de

G. Methode´

de Runge–Kutta, d’ordre 4

La methode´

de Runge-Kutta (classique) d’ordre 4, est une methode´

de la fonction en quatre points intermediaires´

selon :

explicite tres` populaire. Elle calcule la valeur

y 0 = y(x 0 ) = u 0

  u n+1 = u n + h

6

f(x n , u 1n ) + 2 f(x n + h

2

,

u 2n ) + 2 f(x n + h , u 3n ) + f(x n+1 , u 4n )

2

n

+ h f(x n , u 1n )

2

2

+

+ h , u 3n )

h , u 2n )

2

2

n

N

(17)

 

(18)

de Runge-Kutta.

avec

 

u 1n = u n u

u 2n = u 3n = u n + h f(x n

u 4n = u n + h f(u n

Notons que le nombre de termes retenus dans la serie´

de Taylor definit´

l’ordre de la methode´

Il vient que la methode´

Runge-Kutta d’ordre 4, s’arreteˆ

au terme O(h 4 ) de la serie´

de Taylor.

Exercice ❶ ☞

1) Resoudre´

numeriquement,´

par le biais des methodes´

differentielle´

du premier ordre suivante :

d’Euler, de Heun et de Runge-Kutta d’ordre 4, l’equation´

2) Afficher sur la memeˆ

  y = y x 2 y 2 +

1 x 3

y(0) = 1

2 x

figure, la solution des trois methodes.´

(19)

@ SAMIR KENOUCHE

9

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

4) Connaissant la solution exacte de l’equation´

differentielle´

ci-dessous. Proposer une demarche´

determination´

de l’ordre de convergence de la methode´

de Runge-Kutta. On donne :

y = x y

2

y(0) = 1

permettant la

(20)

La solution exacte est : 3 exp(x/2) + x 2 5) Tracer le graphique donnant l’erreur relative, pour chaque pas de discretisation,´ en fonction du nombre d’iterations.´ 6) Tracer le graphique donnant le maximum de l’erreur relative en fonction du pas de discretisation.´ Voici le script Matlab :

clear all ; close all ; clc ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 17/11/2018
clear
all
;
close
all
;
clc
;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 17/11/2018
Samir
KENOUCHE
: ALGORITHME
PERMETTANT
% L’IMPLEMENTATION,
SOUS
MATLAB,
DE
METHODES
NUMERIQUES
(Euler,
Heun,
% Runge-Kutta)
POUR
LA
RESOLUTION
D’EQUATIONS
DIFFERENTIELLES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dy
= @(xn,
u) (-u. * xn.ˆ2
- u.ˆ2
+ 2. * xn)./(1
-
xn.ˆ3)
;
a
= 0
;
b
= 1
;
n
= 50
;
(b-a)/n
h
=
;
xn
=
a
:h:
b
;
u(1)
=
1
;
%%%%%%%%%%%%%%%%%%%
METHODE
DE
Runge-Kutta
d’ordre
4 %%%%%%%%%%%%%%%%
for
i =
1:n-1
=u(i)
u(i+1)
h/6 * (dy(xn(i),u1(i))
+
+
2 * dy(xn(i)
+
h/2,
u2(i))
+
2 * dy(xn(i)
+
h/2,u3(i))
+
dy(xn(i+1),u4(i)))
;
end
figure(’color’,[1
1 1])
; plot(xn(1:end-1),u,’o-g’)
;
%%%%%%%%%%%%%%%%%%%%%%%%%%
METHODE
DE
Heun
%%%%%%%%%%%%%%%%%%%%%%%%%%
dy
= @(xn,
u)
(-u. * xn.ˆ2
-
u.ˆ2
+ 2. * xn)./(1
- xn.ˆ3)
;
a
= 0
;
1
b
=
;
n
=
50
;
(b-a)/n
h
=
;
xn
=
a:h:b;
epsilon
0.0001
=
;
u(1)
=
1
+
epsilon;
for
i
=
1:n
-
1
u(i+1)
u(i)
+
h * dy(xn(i),u(i))));
end
xn
= xn(1:end-1)
;
hold
on
; plot(xn,u,’o-r’)
;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
METHODE
D’Euler
%%%%%%%%%%%%%%%%%%%%%%%%%

u1(i) u(i) = ;

u(i)

= ;
= ; = ; = ;

u2(i) = h/2 * dy(xn(i),u1(i)) u(i) +

= h/2 * dy(xn(i),u1(i))
= h/2 * dy(xn(i),u1(i)) = h/2 * dy(xn(i),u1(i)) = h/2 * dy(xn(i),u1(i)) = h/2 * dy(xn(i),u1(i))

u(i)

+

u2(i) = h/2 * dy(xn(i),u1(i)) u(i) + ;
u2(i) = h/2 * dy(xn(i),u1(i)) u(i) + ;

;

u3(i) = h/2 * dy(xn(i) u(i) +

= h/2 * dy(xn(i)
= h/2 * dy(xn(i) = h/2 * dy(xn(i) = h/2 * dy(xn(i) = h/2 * dy(xn(i)

u(i)

+

u3(i) = h/2 * dy(xn(i) u(i) + + h/2, u2(i)) ;
u3(i) = h/2 * dy(xn(i) u(i) + + h/2, u2(i)) ;

+ u3(i) = h/2 * dy(xn(i) u(i) + h/2, u2(i)) ;

h/2, u3(i) = h/2 * dy(xn(i) u(i) + + u2(i)) ;

u2(i)) u3(i) = h/2 * dy(xn(i) u(i) + + h/2, ;

; u3(i) = h/2 * dy(xn(i) u(i) + + h/2, u2(i))

u4(i) = h * dy(xn(i) u(i) +

= h * dy(xn(i)
= h * dy(xn(i) = h * dy(xn(i) = h * dy(xn(i) = h * dy(xn(i)

u(i)

+

u4(i) = h * dy(xn(i) u(i) + + h/2, u3(i)) ;
u4(i) = h * dy(xn(i) u(i) + + h/2, u3(i)) ;

+ u4(i) = h * dy(xn(i) u(i) + h/2, u3(i)) ;

h/2, u4(i) = h * dy(xn(i) u(i) + + u3(i)) ;

u3(i)) u4(i) = h * dy(xn(i) u(i) + + h/2, ;

; u4(i) = h * dy(xn(i) u(i) + + h/2, u3(i))

= u(i)
= u(i)

+ = u(i) h/2 * (dy(xn(i),u(i)) + dy(xn(i + 1),

h/2 * (dy(xn(i),u(i)) h/2 *

+

dy(xn(i

+ = u(i) + h/2 * (dy(xn(i),u(i)) + dy(xn(i 1),

1), = u(i) + h/2 * (dy(xn(i),u(i)) + dy(xn(i +

@ SAMIR KENOUCHE

10

Cours complet est disponible sur mon site web : http://sites.univ-biskra.dz/kenouche/

clear dy = a = 0 u(1) for i
clear
dy
=
a
= 0
u(1)
for
i
all ; clc ; @(xn, u) (-u. * xn.ˆ2 ; b = 1 ; 50
all
;
clc
;
@(xn,
u)
(-u. * xn.ˆ2
;
b
=
1
;
50
n
=
;
=
1
;
=
1:n
1
-

-

u.ˆ2 xn.ˆ2 ; b = 1 ; 50 n = ; = 1 ; = 1:n 1

; b = 1 ; 50 n = ; = 1 ; = 1:n 1 -

+