Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Polycopies AN

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 69

Université de Kasdi Merbah Ouargla

Faculté des mathématiques et sciences de la matière

Département des sciences physiques

Méthodes Numérques Via Fortran


Travaux Pratiques Corrigés

Auteur :
Dr : Saı̈d Douis

13 avril 2018
2
Table des matières

1 Introduction au Fortran 77 7

2 Interpolation Polynomiale 9
2.1 Interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Polynôme d’interpolation de Lagrange : . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Polynôme d’interpolation de Newton : . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1 Différences divisées : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2 Calcul des différences divisées : . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.3 Polynôme d’interpolation de Newton : . . . . . . . . . . . . . . . . . . . . . 11
2.4 Erreur d’interpolation polynomiale : . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Interpolation de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6 Approximation au sens des Moindres Carrés . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Exemple (Lissage de données aléatoires ) . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Dérivation Numérique 19
3.1 Différences finies progressives : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Forme de polynôme de Newton pour les différences finies : . . . . . . . . . . . . . . 19
3.3 L’erreur de la dérivation : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Règle pratique pour la dérivation : . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4 Intégration Numérique 23
4.1 Les méthodes d’intégration numérique (Trapèzes, Simpson, Newton et Gauss-Legendre) : 23
4.2 L’intégrale de gauss Legendre corrigée : . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 L’intégration par la méthode de gauss Laguerre : . . . . . . . . . . . . . . . . . . . 26
4.4 Intégrale triple : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.1 L’intégrale triple en coordonnées cartésiennes : . . . . . . . . . . . . . . . . 27
4.4.2 L’intégrale triple avec la méthode de Gauss : . . . . . . . . . . . . . . . . . 28

5 Résolution de l’équation f (x) = 0 33


5.1 La séparation des racines de l’équation f(x)=0 : . . . . . . . . . . . . . . . . . . . 33
5.2 Résolution de l’équation f(x)=0 par la méthode de dichotomie : . . . . . . . . . . . 34

3
4 TABLE DES MATIÈRES

5.3 Résolution de l’équation f(x)=0 par la méthode de newton Raphson et sécante : . . 35

6 Résolution du système des équations linéaires ax = b 37


6.1 Résolution du système des équations linéaires ax = b par la méthode de Gauss et
Gauss-Jordon : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

7 Résolution de l’équation différentielle y 0 (x) = f (x, y(x)) 39


7.1 Résolution de l’équation différentielle y 0 (x) = f (x, y(x)) par la méthode d’Euler : . 39
0
7.2 Résolution de l’équation différentielle y (x) = f (x, y(x)) par la méthode de Runge
Kutta : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
0
7.2.1 Résolution de l’équation différentielle y (x) = f (x, y(x)) par la méthode de
Runge Kutta d’ordre 2 (RK2) : . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2.2 Résolution de l’équation différentielle y 0 (x) = f (x, y(x)) par la méthode de
Runge Kutta d’ordre 4 (RK4) : . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.3 Résolution de l’équation différentielle y 00 (x) = f (x, y(x), y 0 (x)) par la méthode de
Runge Kutta d’ordre 3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

8 Les Méthodes de Monte-Carlo 43


8.1 Calcul de la valeur de π : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.2 Estimation d’intégrales par la méthode Monte-Carlo type tirage par noir ou blanc 45
8.3 Estimation d’intégrales par la méthode Monte-Carlo élémentaire . . . . . . . . . . 45
8.4 Estimation d’intégrales par la méthode Monte-Carlo échantillonnage suivant l’im-
portance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.5 Estimation d’intégrales par les méthodes Monte-Carlo (Tirage par noir ou blanc,
MC élémentaire et Échantillonnage suivant l’importance) : . . . . . . . . . . . . . . 48

9 Les Méthodes de Monte Carlo Metropolis 51


9.1 Oscillateur Harmonique Unidimensionnel : . . . . . . . . . . . . . . . . . . . . . . . 51
9.1.1 Algorithm de Metropolis : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

10 Dynamique Moléculaire 55
10.1 Comparaison entre l’algorithme d’Euler et de Verlet : . . . . . . . . . . . . . . . . . 55
10.1.1 Pour un pondule simple : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
10.1.2 Pour un pondule simple : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
10.1.3 Pour un ressort avec une masse m : . . . . . . . . . . . . . . . . . . . . . . . 56
10.1.4 Pour les trajectoire d’un électron autour d’un ion central : . . . . . . . . . . 57
10.1.5 Le mouvement de la terre autour du soleil : . . . . . . . . . . . . . . . . . . 64
Table des figures

2.1 Polynôme d’interpolation de Lagrange (Newton) pour les points (0, 1), (1, 0)et(2, 2) 14
2.2 Comparaison entre l’interpolation de Lagrange et l’approximation au sens des moindres
carrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8.1 Estimation de la valeur de π . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44


8.2 Estimation d’intégrales par la méthode Monte-Carlo type tirage par noir ou blanc 45

10.1 Mouvement d’un ressort avec la méthode de Verlet à un pas et RK3 . . . . . . . . 57


10.2 Les trajectoires d’un électron autour d’un ion central avec la méthode de Verlet à
un pas et RK3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.3 Les trajectoires d’un électron autour d’un ion central avec la méthode de Verlet à
un pas et RK3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.4 Mouvement d’un électron dans un gaz des électrons avec la méthode de Verlet à un
pas et RK3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.5 Trajectoire de la Terre mT = 0.1 autour de soleil mS = 1 pour x(0) = 3, V y(0) = 4,
avec la méthode de Verlet à un pas, Euler et RK3. . . . . . . . . . . . . . . . . . . 69

5
6 TABLE DES FIGURES
Chapitre 1

Introduction au Fortran 77

7
8 CHAPITRE 1. INTRODUCTION AU FORTRAN 77
Chapitre 2

Interpolation Polynomiale

2.1 Interpolation polynomiale

L’idée de l’interpolation : Etant donné (n + 1) points distincts (xi , yi )i=0,1,....n , Trouver une
fonction ϕ telle que : ϕ (xi ) = yi pour tout i = 0, 1, .....n
Interpolation polynomiale : Soit f une fonction continue dont on connait ses valeurs en
(n + 1) points distincts (xi , yi = f (xi ))i=0.....n .
On cherche à reconstituer f sur l’intervalle [x0 , xn ].
Le problème de l’interpolation polynomiale consiste à construire un polynôme Pn de degré
minimal tel que :

Pn (xi ) = f (xi ) = yi , ∀i ∈ {0, ......n} (2.1)

Théorème : Il existe un unique polynôme Pn de degré inferieur ou égal n vérifiant :

Pn (xi ) = f (xi ) = yi , ∀i ∈ {0, ......n}

On peut trouver ce polynôme par plusieurs méthodes :

2.2 Polynôme d’interpolation de Lagrange :

On considère les polynômes de Lagrange suivants :


n
Y (x − xj ) (x − x0 ) (x − x1 ) ............. (x − xi−1 ) (x − xi+1 ) ..... (x − xn )
Li (x) = =
(xi − xj ) (xi − x0 ) (xi − x1 ) ............. (xi − xi−1 ) (xi − xi+1 ) ..... (xi − xn )
j=0
j 6= i
(2.2)
Où : 
 1 si x = xi , Li (xi ) = 1
Li (x) = (2.3)
 0 si x = xj , Li (xj ) = 0

9
10 CHAPITRE 2. INTERPOLATION POLYNOMIALE

Le polynôme d’interpolation de Lagrange Pn vérifiant Pn (xi ) = f (xi ) = yi , ∀i ∈ {0, ......n} est


écrit sous la forme :

n n n
X X Y (x − xj )
Pn (x) = Li (x)f (xi ) = f (xi ) (2.4)
i=0 i=0
(xi − xj )
j=0
j 6= i

Exemple : Le polynôme d’interpolation de Lagrange vérifiant Pn (xi ) = f (xi ) = yi , pour i = 0,1


est :
1
X
P1 (x) = Li (x)f (xi ) = L0 (x)f (x0 ) + L1 (x)f (x1 )
i=0

(x−x1 ) (x−x0 )
P1 (x) = (x0 −x1 ) f (x0 ) + (x1 −x0 ) f (x1 ) Qu’est sous la forme d’une ligne droiteP1 (x) = ax + b.

2.3 Polynôme d’interpolation de Newton :

2.3.1 Différences divisées :

Soit f une fonction numérique définie sur l’intervalle [x0 , xn ] contenant (n + 1) points distincts
x0 , x1 , ...........xn . On définit les différences divisées de la fonction f aux points x0 , x1 , ...........xn
par les relations de récurrence suivantes :



 δ (xi ) = f (xi )


δ (xi , xi+1 ) = δ(xxi i)−δ(x i+1 )
= f (xxi i)−f (xi+1 )


−xi+1 −xi+1




 δ (x , x , x ) = δ(xi ,xi+1 )−δ(xi+1 ,xi+2 )

i i+1 i+2 xi −xi+2
(2.5)
 .
 .




 . .




 δ (x , x .....x ) = δ(xi ,xi+1 .....xi+p−1 )−δ(xi+1 ,xi+2 .....xi+p )

i i+1 i+p xi −xi+p

2.3.2 Calcul des différences divisées :

xi f (xi ) δ(xi , x+1 ) δ(xi , xi+1 , xi+2 ) ........ δ(x0 , x1 , x2 , ......xn )


x0 f (x0 )
−→ δ(x0 , x1 )
x1 f (x1 ) −→ δ(x0 , x1 , x2 )
−→ δ(x1 , x2 ) −→
x2 f (x2 ) −→ δ(x1 , x2 , x3 )
−→ δ(x2 , x3 )
x3 f (x3 )
. . . . −→ δ(x0 , x1 , x2 , ......xn )
. . . .
xn f (xn ) . .
2.4. ERREUR D’INTERPOLATION POLYNOMIALE : 11

2.3.3 Polynôme d’interpolation de Newton :

Le polynôme Pn d’interpolation de Newton peut s’écrire sous la forme :

Pn (x) = δ (x0 ) + δ (x0 , x1 ) (x − x0 ) + δ (x0 , x1 , x2 ) (x − x0 )(x − x1 ) + δ (x0 , x1 , x2 , x3 ) (x − x0 )(x − x1 )(x − x2 )+


...... + δ (x0 , x1 , x2 , ........xn ) (x − x0 )(x − x1 ).........(x − xn−1 )
(2.6)

2.4 Erreur d’interpolation polynomiale :


Théorème : Soit Pn le polynome interpolant la fonction f aux points distincts (xi )i=0,n .
Si f ∈ C n+1 [x0 , xn ] , ∃ξ = ξ(x) ∈ [x0 , xn ] telque :

n
f (n+1) (ξ) Y
E(x) = f (x) − Pn (x) = (x − xi ) (2.7)
(n + 1)! i=0
n
Y
où : f (n+1) est la dérivée d’ordre (n + 1) de la fonction f , et (x − xi ) = (x − x0 ) (x − x1 ) ×
i=0
....... (x − xn ) ET nous pouvons majorons l’erreur d’interpolation comme suit :
n
Mn+1 Y
|E| = |f (x) − Pn (x)| ≤ (x − xi ) (2.8)

(n + 1)!
i=0

Où : Mn+1 = M ax f (n+1) (x)
x∈[x0 ,xn ]
1 program interpolation LAGRANGE
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME CALCUL LE POLYNOME D’ INTERPOLATION DE LAGRANGE
4 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
5 integer q
6 parameter ( q =1000)
7 r e a l xx , P , L( q ) , f x ( q ) , x ( q ) , d e l
8 open ( unit =34 , f i l e= ’LAGRANGE. dat ’ , status= ’ unknown ’ )
9 print ∗ , ’ Donnez l e nombre d e s p o i n t s d i n t e r p o l a t i o n n= ’
10 read ∗ , n ! ( Le nombre de p o i n t s d ’ i n t e r p o l a t i o n )
11 ! Les v a l e u r s d e s p o i n t s d ’ i n t e r p o l a t i o n )
12 print ∗ , ’ Donnez l e s v a l e u r s d e s p o i n t s d i n t e r p o l a t i o n ( x , f ( x ) ) ’
13 READ( ∗ , ∗ ) ( x ( i ) , f x ( i ) , I =1 ,n )
14 d e l =0.1 ! ( Le pas de v a r i a t i o n de x )
15 m=n i n t ( ( x ( n)−x ( 1 ) ) / d e l )
16 do 11 k=1 ,m+1
17 xx=x (1)+( k −1)∗ d e l
18 p=0.
19 do 22 i =1 ,n
20 L( i )=1.
21 do 33 j =1 ,n
22 i f ( i .NE. j ) then
23 L( i )=L( i ) ∗ ( xx−x ( j ) ) / ( x ( i )−x ( j ) )
24 end i f
25 33 continue
12 CHAPITRE 2. INTERPOLATION POLYNOMIALE

26 P=P+Fx ( i ) ∗L( i )
27 22 continue
28 print ∗ , xx , P
29 write ( 3 4 , ∗ ) xx , P
30 11 continue
31 end

Exemple

Exécuter le programme d’interpolation de Lagrange précédent pour calculer le polynôme d’in-


terpolation de la fonction connue aux points (0, 1), (1, 0)et(2, 2).

2.5 Interpolation de Newton

1 PROGRAM NEWTON
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME CALCUL LE POLYNOME D’ INTERPOLATION DE NEWTON ∗
4 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
5 integer q ! q= nombre de p o i n t s p o s s i b l e pour i n t e r p o l e r
6 parameter ( q =1000)
7 r e a l F( q ) , x ( q ) , d e l t a ( q ) ,NEW, LG, xx , d e l , d e l t a z e r o
8 open ( unit =35 , f i l e= ’NEWTON. dat ’ , status= ’ unknown ’ )
9

10 d e l =0.1 ! ( Le pas de v a r i a t i o n de x )
11 print ∗ , ’ Donnez l e nombre d e s p o i n t s d i n t e r p o l a t i o n n= ’
12 read ∗ , n ! ( n=Le nombre de p o i n t s d ’ i n t e r p o l a t i o n )
2.5. INTERPOLATION DE NEWTON 13

13 ! Les p o i n t s d ’ i n t e r p o l a t i o n
14 print ∗ , ’ Donnez l e s v a l e u r s d e s p o i n t s d i n t e r p o l a t i o n ( x , f ( x ) ) ’
15 READ( ∗ , ∗ ) ( x ( i ) , f ( i ) , I =1 ,n )
16 d e l t a z e r o= f ( 1 )
17 !BOUCLE POUR CALCULER LES DIFFERNCES DIVISEES
18 do 11 j =1 , n−1
19 do 22 i =1 , n−j
20 F( i )=(F( i +1)−F( i ) ) / ( x ( i+j )−x ( i ) )
21 d e l t a ( j )=F ( 1 )
22 22 continue
23 11 continue
24

25 !BOUCLE POUR CALCULER LE POLYNOME DE NEWTON


26 m=n i n t ( ( x ( n)−x ( 1 ) ) / d e l )
27 do 33 k=1 ,m+1
28 xx=x (1)+( k −1)∗ d e l
29 NEW=0.
30 LG=1.
31 do 44 j =1 , n−1
32 LG=(xx−x ( j ) ) ∗LG
33 NEW= d e l t a ( j ) ∗LG+NEW
34 44 continue
35 NEW=d e l t a z e r o+NEW
36 print ∗ , xx ,NEW
37 write ( 3 5 , ∗ ) xx ,NEW
38 33 continue
39 end

Exemple

Exécuter le programme d’interpolation de Newton pour calculer le polynôme d’interpolation


de la fonction connue aux points (0, 1), (1, 0)et(2, 2).
14 CHAPITRE 2. INTERPOLATION POLYNOMIALE

2,0
Les points d'interpolation
Polynôme d'interpolation de Lagrange ou Newton

1,5

1,0
Y

0,5

0,0

0,0 0,5 1,0 1,5 2,0


X

Figure 2.1 – Polynôme d’interpolation de Lagrange (Newton) pour les points (0, 1), (1, 0)et(2, 2)
2.6. APPROXIMATION AU SENS DES MOINDRES CARRÉS 15

2.6 Approximation au sens des Moindres Carrés

1 program A p p r o x i m a t i o n M o i n d r e s C a r r e s
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME DETERMINER LA MEILLEURE APPROXIMATION AU SENS DES MOINDRES
4 ! CARRES D’UNE FONCTION F CONNUE AUX COUPLES ( x ( i ) , F( x ( i ) ) ) i de 1 A n .
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 integer q , s ! q= d e g r e p o s s i b l e de polynome d e s m o i n d r e s c a r r e s
7

8 parameter ( q=100)
9 Real A( q , q ) , b ( q ) , x ( q ) , y ( q ) , somx , somy ,AA( q , q , q ) , ax ( q )
10 Real X0 , Xn , d e l t a , xx
11 open ( unit =33 , f i l e= ’ M o i n d r e s C a r r e s . dat ’ , status= ’ unknown ’ )
12 print ∗ , ’ Donnez m= l e d e g r e de polynome d e s m o i n d r e s c a r r e s ’
13 read ∗ ,m ! (m=d e g r e de polynome d e s m o i n d r e s c a r r e s )
14 print ∗ , ’ n=nombre de p o i n t s connus ’
15 read ∗ , n ! ( n=nombre de p o i n t s connus )
16 print ∗ , ’ Donnez l e s v a l e u r s d e s c o u p l e s connus ( x , y=f ( x ) ) ’
17 READ( ∗ , ∗ ) ( x ( i ) , Y( i ) , I =1 ,n )
18 ! D e t e r m i n a t i o n d e s c o e f f i c i e n t s a ( i ) de polynome d e s m o i n d r e s c a r r e s
19 ! 1 DETERMINATION DE LA MATRICE A
20 do 11 k=1 ,m+1
21 somy=0
22 do i =1 ,n ! b o u c l e pour c a l c u l e r b de l a m a t r i c e A
23 somy=somy + y ( i ) ∗ x ( i ) ∗ ∗ ( k−1)
24 enddo
25 b ( k)=somy
26

27 do 22 j =1 ,m+1 ! b o u c l e pour l e s e l e m e n t s de l a m a t r i c e A
28 somx=0.
29 do i =1 , n
30 somx=somx + x ( i ) ∗ ∗ ( k+j −2)
31 enddo
32 A( k , j )=somx
33 22 continue
34 11 continue
35

36 print ∗ , ’ La m a t r i c e de Moindres C a r r e s e s t : ’
37 DO k=1 , m+1
38 write ( ∗ , ∗ ) (A( k , j ) , j =1 ,m+1) ,B( k )
39 ENDDO
40 !HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
41 ! RESOLUTION DE LA MATRICE A PAR LA METHODE DE GAUSSE JORDON
42 ! S u b r o u t i n e GausseJordon
43 ! Forme de GAUSSE
44 N = m+1
45 DO 1 k=1 , N−1
46 DO 2 i=K+1 , N
47 AA( i , K,K)=A( i ,K)
16 CHAPITRE 2. INTERPOLATION POLYNOMIALE

48 DO 3 j =1 , N
49 A( i , j )=A( i , j ) −(AA( i , K,K) ∗A(K, j ) /A(K,K) )
50 3 CONTINUE
51 B( i )=b ( i ) −(AA( i , k ,K) ∗ b ( k ) /A( k , k ) )
52 2 CONTINUE
53 1 CONTINUE
54 ! Forme de GAUSSE JORDON
55 DO 111 k=2 , N
56 DO 222 i =1 , K−1
57 AA( i , K,K)= A( i ,K)
58 DO 333 j =1 , N
59 A( i , j )= A( i , j ) −(AA( i , K,K) ∗A(K, j ) /A(K,K) )
60 333 CONTINUE
61 B( i )= b ( i ) −(AA( i , k ,K) ∗ b ( k ) /A( k , k ) )
62 222 CONTINUE
63 111 CONTINUE
64 PRINT∗ , ’LES COEFFICIENTS DE POLYNOME DE MOINDRES CARRES SONT: ’
65 DO 66 I =1 ,N
66 ax ( i )= b ( i ) /A( i , i )
67 write ( ∗ , 7 7 ) i −1 , ax ( i ) !
68 77 FORMAT( 5X, ’ a ’ , I1 , ’= ’ , F8 . 4 )
69 66 CONTINUE
70 !HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
71 ! CALCUL LE POLYNOME DE MOINDRES CARRES SUR L ’ INTERVALLE [ X0 , Xn ]
72 print ∗ , ’DONNEZ L INTERVALLE [ x0 , xn ] OU TU VAUX TRACER LE POLYNOME’
73 print ∗ , ’DE MOINDRES CARRES ’
74 read ∗ , X0 , Xn
75 d e l t a =0.01 ! ( Le pas de v a r i a t i o n de x de l ’ i n t e r v a l l e [ X0 , Xn ] )
76 s=n i n t ( ( Xn−X0) / d e l t a )
77 xx= X0
78 do 88 j =1 , s+1
79 xx=X0+( j −1)∗ d e l t a
80 Px=0.
81 do 99 i =1 , m+1
82 Px=Px+ax ( i ) ∗ xx ∗ ∗ ( i −1)
83 99 continue
84 write ( 3 3 , ∗ ) xx , Px ! Px l a v a l e u r du polynome de m o i n d r e s a x
85 88 continue
86 end

2.7 Exemple (Lissage de données aléatoires )

Nous allons exécuter les programmes précédents pour montrer comment on peut lisser ou
synthétiser des données générées aléatoirement . Nous avons généré par exemple un ensemble de
10 points représentant des perturbations d’une loi quadratique de la fonction de base f (x) = 10x2 .
Nous avons utilisé la méthode des moindres carrés pour approximer ces points avec un polynôme du
2.7. EXEMPLE (LISSAGE DE DONNÉES ALÉATOIRES ) 17

12
2
points connus de la fonction f(x)=10x
10 Moindres carrés ordre 2
Polynome d'interpolation d'ordre 9
8

6
Y

0,0 0,2 0,4 0,6 0,8 1,0


X

Figure 2.2 – Comparaison entre l’interpolation de Lagrange et l’approximation au sens des


moindres carrés

deuxième degré, le choix le plus judicieux, et nous avons effectué une interpolation de Lagrange de
degré 9. On remarque sur la Figure 2.2 que l’approximation au sens des moindres carrés ne change
que très peu. C’est en fait une méthode stable numériquement, ce qui n’est pas (pas toujours) le
cas de l’interpolation de Lagrange. L’approximation par les moindres carrés donne ainsi une bonne
représentation des données, même aux points où l’on ne connaı̂t pas la fonction, et l’utilisation de
l’interpolation de Lagrange n’est pas judicieuse pour ce genre de problème.
18 CHAPITRE 2. INTERPOLATION POLYNOMIALE
Chapitre 3

Dérivation Numérique

L’idée de la dérivation numérique de la fonction f est le remplacement de cette dernière par


son polynôme d’interpolation polynomiale ensuite le problème devient simple, une dérivation d’un
polynôme.

3.1 Différences finies progressives :


Soit f une fonction dont en connait ses valeurs aux points équidistants xi , i = 0...n avec
xi+1 = xi + h où h est le pas. Les différences finies sont :



 ∆0 f (xi ) = f (xi ) i = 0....n


 ∆f (x ) = f (x ) − f (x )

i = 0....n − 1

 i i+1 i


2
 ∆ f (xi ) = ∆f (xi+1 ) − ∆f (xi ) i = 0....n − 2




∆3 f (xi ) = ∆2 f (xi+1 ) − ∆2 f (xi ) i = 0....n − 3 (3.1)





 :





 :


 ∆k f (x ) = ∆k−1 f (x ) − ∆k−1 f (x )

i = 0....n − k
i i+1 i

La relation entre les différences divisées et les différences finies est :

∆k f (xi )
δ (xi , xi+1 ..........xi+k ) = 0≤i≤i+k ≤n (3.2)
hk k!

3.2 Forme de polynôme de Newton pour les différences fi-


nies :
La forme du polynôme d’interpolation de newton pour les différences finies progressives est
donnée par :

∆f (x0 ) ∆2 f (x0 )
Pn (x) = f (x0 ) + 1!h (x − x0 ) + 2!h2 (x − x0 )(x − x1 )
3 n (3.3)
+ ∆ 3!h
f (x0 )
3 (x − x0 )(x − x1 )(x − x2 )........ + ∆ n!h
f (x0 )
n (x − x0 )(x − x1 )......(x − xn−1 )

19
20 CHAPITRE 3. DÉRIVATION NUMÉRIQUE

(x−x0 )
On pose t = h , alors l’équation précédente devient :
2
∆f (x0 )
Pn (x) = P
fn (x) = f (x0 ) +
1! t + ∆ f2!(x0 ) t (t − 1)
3 n (3.4)
+∆ f (x0 )
3! t (t − 1) (t − 2) ......... + ∆ fn!(x0 ) t (t − 1) ......(t − (n − 1))

d d dt 1 d
Puisque on a : dx = dt dx = h dt , la dérivée de la fonction est :

3t2 − 6t + 2 2t3 − 9t2 + 11t − 3


 
d e 1 2t − 1
f 0 (x) ' Pn0 (x) = Pn (t) = ∆f (x0 ) + ∆2 f (x0 ) + ∆3 f (x0 ) + ∆4 f (x0 ) + ......
dt h 2 6 12
(3.5)

3.3 L’erreur de la dérivation :

E(x) = Pn (x) − f (x) ⇒ E 0 (x) = Pn0 (x) − f 0 (x)

L’erreur de la dérivation égale la dérivée de l’erreur d’interpolation polynomiale et est donnée sous
la forme :
∆n+1 f (x0 ) d
E 0 (x) = [t(t − 1)(t − 2).......(t − n)] (3.6)
(n + 1)!h dt
x−x0
où : t = h , h = xi+1 − xi

3.4 Règle pratique pour la dérivation :


Puisque toute valeur tabulée pouvant être considérée comme point initial. Donc on peur poser
x0 −x0
t= h =0
alors la dérivée de la fonction f 0 (x0 ) devient :

(−1)n+1 n
 
0 1 1 2 1 3 1 4
f (x0 ) = ∆f (x0 ) − ∆ f (x0 ) + ∆ f (x0 ) − ∆ f (x0 ) + ...... + ∆ f (x0 ) (3.7)
h 2 3 4 n

1 PROGRAM D e r v a t i o n
2 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ∗ CE PROGRAMME CALCUL LA DERIVEE D ’UNE FONCTION EN UN POINT
4 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
5 integer q ! q= nombre de p o i n t s p o s s i b l e
6 p a r a m e t e r ( q =1000)
7 r e a l F( q ) , x ( q ) , d e l t a ( q ) ,NEW, h , D e r i v e e
8 x0 =4.
9 h=0.5 ! ( Le pas de v a r i a t i o n de x )
10 n=6 ! ( n=Le nombre de p o i n t s d ’ i n t e r p o l a t i o n )
11

12 ! Les p o i n t s d ’ i n t e r p o l a t i o n
13 ! p r i n t ∗ , ’ Donnez l e s v a l e u r s d e s p o i n t s d i n t e r p o l a t i o n ( x , f ( x ) ) ’
14 !READ( ∗ , ∗ ) ( x ( i ) , f ( i ) , I =1 ,n )
15 do i =1 ,n
3.4. RÈGLE PRATIQUE POUR LA DÉRIVATION : 21

16 x ( i )=x0+( i −1)∗h
17 F( i )= f f ( x ( i ) )
18 enddo
19 !BOUCLE POUR CALCULER LES DIFFERNCES FINIES
20 do 11 j =1 , n−1
21 do 22 i =1 , n−j
22 F( i )=F( i +1)−F( i )
23 d e l t a ( j )=F ( 1 )
24 22 continue
25 11 continue
26

27 !BOUCLE POUR CALCULER LA DERIVEE


28 NEW=0.
29 !LG=1.
30 Do j =1 , n−1
31 NEW = NEW + ( ( − 1 ) ∗ ∗ ( j + 1 ) / ( 1 . ∗ j ) ) ∗ d e l t a ( j )
32 Enddo
33 D e r i v e e=NEW/h
34 print ∗ , x ( 1 ) , ’ D e r i v e e= ’ , D e r i v e e , ’ ’ , ’ V a l e u r e x a c t e= ’ ,− exp(−x ( 1 ) )
35 End
36 !
37 Real function f f ( x )
38 f f = exp(−x )
39 Return
40 end
22 CHAPITRE 3. DÉRIVATION NUMÉRIQUE
Chapitre 4

Intégration Numérique

4.1 Les méthodes d’intégration numérique (Trapèzes, Simp-


son, Newton et Gauss-Legendre) :

1 program M e t h o d e s I n t e g r a t i o n
2

3 ! CE PROGRAMME CALCULE L ’INTEGRALE DES FONCTIONS PAR LA METHODE DE:


4 ! TRAPEZES, SIMPSON, NEWTON ET GAUSS−LEGENDRE.
5 !
6 parameter (m=60)
7 r e a l AA(m) , xx (m) , r (m) , x0 , x1 , x2 , x3 ,SMT, SMS,SMN,SMGL, h , t , a , b
8 ! LA FONCTION INTEGREE :
9 f ( t )=exp(− t )
10 !
11 print ∗ , ’ Donner l a v a l e u r de l a borne i n t i a l e ( a)= ’
12 read ∗ , a
13 print ∗ , ’ Donner l a v a l e u r de l a borne f i n a l e ( b)= ’
14 read ∗ , b
15 print ∗ , ’ Donner l a v a l e u r d e s s u b d i v i t i o n s ( n)= ’
16 read ∗ , n
17 ! Remarque : on prend n=3∗2∗k pour s o i t c o m b a t i b l e a v e c l e methode de
18 ! simpson e t de newton ( 3 p o i n t s e t 4 p o i n t s )
19 print ∗ , ’ ’
20 print ∗ , ’LES RESULTATS: ’
21 !
22 ! −1)− METHODE DE TRAPEZES:
23 h=(b−a ) / n
24 SMT=0.
25 do 11 i =0 ,n−1
26 x0=a+i ∗h
27 x1=x0+h
28 SMT=SMT+0.5∗ h ∗ ( f ( x0)+ f ( x1 ) )
29 11 continue

23
24 CHAPITRE 4. INTÉGRATION NUMÉRIQUE

30

31 print ∗ , ’ R e s u l t a t de T r a p e z e s . I= ’ ,SMT
32 ∗
33 ∗−2)− METHODE DE SIMPSON :
34 x2=a
35 SMS=0.
36 do 22 i =0 , ( n/2) −1
37 x0=x2
38 x1=x0+h
39 x2=x1+h
40 SMS=SMS+(h / 3 . ) ∗ ( f ( x0 )+4.∗ f ( x1)+ f ( x2 ) )
41 22 continue
42 print ∗ , ’ R e s u l t a t de Simpson . I= ’ , SMS
43 !
44 ! −3)− METHODE DE NEWTON:
45 x3=a
46 SMN=0.
47 do 33 i =0 , ( n/3) −1
48 x0=x3
49 X1=X0+h
50 X2=X1+h
51 X3=X2+h
52 SMN=SMN+(3.∗ h / 8 . ) ∗ ( f ( x0 )+3.∗ f ( x1 )+3.∗ f ( x2)+ f ( x3 ) )
53

54 33 continue
55 print ∗ , ’ R e s u l t a t de Newton . I= ’ ,SMN
56 !
57 ! −4)− METHODE DE GAUSS−LEGENDRE:
58 ! Les r a c i n e s de plynome de L ege ndr e
59 r (1)=0.90617984 ! 6
60 r (2)=0.53846931 ! 0
61 r (3)=0.
62 r (4)=− r ( 2 )
63 r (5)=− r ( 1 )
64 ! Les c o e f f i c i e n t s Ai
65 AA( 1 ) = 0 . 2 3 6 9 2 6 8 8 ! 5
66 AA( 2 ) = 0 . 4 7 8 6 2 8 6 7 ! 0
67 AA( 3 ) = 0 . 5 6 8 8 8 8 8 8 ! 9
68 AA(4)=AA( 2 )
69 AA(5)=AA( 1 )
70 ! Les v a l e u r s de l a f o n c t i o n
71 SMGL=0.
72 do i =1 ,5
73 xx ( i ) = 0 . 5 ∗ ( b+a ) + 0 . 5 ∗ ( b−a ) ∗ r ( i )
74 SMGL=SMGL+((b−a ) / 2 . ) ∗AA( i ) ∗ f ( xx ( i ) )
75 enddo
76 print ∗ , ’ R e s u l t a t de Gauss−Le gen dre . I= ’ ,SMGL
77 end
4.2. L’INTÉGRALE DE GAUSS LEGENDRE CORRIGÉE : 25

4.2 L’intégrale de gauss Legendre corrigée :

1 PROGRAM GAUSS LEGENDRE CORRIGIE


2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! INTEGRATION DE LA FONCTION F(X) PAR LA METHODE DE GAUSS−LEGENDRE ∗
4 ! MAIS AVEC UNE CORRECTION POUR LES INTERVALLES GRANDES ∗
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 parameter (m=60)
7 r e a l a , b , Co (m) , xx (m) , Rc (m) ,SMGL,SMGLC, t
8 ! LA FONCTION INTEGREE f ( x)=
9 f ( t )=exp (1− t ∗ ∗ 2 )
10 !
11 print ∗ , ’ Donner l a v a l e u r de l a borne i n t i a l e ( a)= ’
12 read ∗ , a
13 print ∗ , ’ Donner l a v a l e u r de l a borne f i n a l e ( b)= ’
14 read ∗ , b
15 print ∗ , ’ ’
16 print ∗ , ’LES RESULTATS: ’
17 DIV=ABS( b−a )
18 NN=INT (DIV)
19 PRINT∗ , ’DIV= ’ ,DIV , ’NN= ’ , nn
20 ! LES RACINES DE POLYNOME DE LEGENDRE
21 Rc ( 1 ) =0.93246951
22 Rc ( 2 ) =0.66120939
23 Rc ( 3 ) =0.23861919
24 Rc ( 4 ) = −Rc ( 3 )
25 Rc ( 5 ) = −Rc ( 2 )
26 Rc ( 6 ) = −Rc ( 1 )
27 CO( 1 ) =0.17132450
28 CO( 2 ) =0.36076158
29 CO( 3 ) =0.46791394
30 CO( 4 ) = CO( 3 )
31 CO( 5 ) = CO( 2 )
32 CO( 6 ) = CO( 1 )
33

34 ∗ LES VALEURS DE LA FONCTION


35 IF (DIV . LE . 1 . )THEN
36 SMGL=0.
37 do i =1 ,6
38 xx ( i ) = 0 . 5 ∗ ( b+a ) + 0 . 5 ∗ ( b−a ) ∗ Rc ( i )
39 SMGL=SMGL+((b−a ) / 2 . ) ∗CO( i ) ∗ f ( xx ( i ) )
40 enddo
41 print ∗ , ’ R e s u l t a t de Gauss L ege ndr e . I TOTALE= ’ ,SMGL
42 ELSE
43 SMGLC=0.
44 a1=a
45 do 2 J=0 ,NN−1
46 SMGL=0.
47 a=a1+J
26 CHAPITRE 4. INTÉGRATION NUMÉRIQUE

48 b=a+1
49 do i =1 ,6
50 xx ( i ) = 0 . 5 ∗ ( b+a ) + 0 . 5 ∗ ( b−a ) ∗RC( i )
51 SMGL=SMGL+((b−a ) / 2 . ) ∗CO( i ) ∗ f ( xx ( i ) )
52 enddo
53 PRINT∗ , a , b ,SMGL
54 SMGLC=SMGLC+SMGL
55 2 CONTINUE
56 print ∗ , ’ R e s u l t a t de Gauss−Le gen dre . I CORREG= ’ ,SMGLC
57 ENDIF
58 end

4.3 L’intégration par la méthode de gauss Laguerre :

1 PROGRAM GAUSS LAGUERRE


2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! INTEGRATION DE LA FONCTION F(X) PAR LA METHODE DE GAUSS−LAGUERRE ∗
4 ! D’ORDRE 4 OU 6 ∗
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 REAL SUM , x
7 DIMENSION RC( 3 2 ) ,CO( 3 2 )
8 ! La f o n c t i o n f ( x ) :
9 f ( x)=(1−EXP(−X) ) /X
10 print ∗ , ’ Donner l e nombre d e s p o i n t s de L a g a r r e 4 ou 6 ’
11 read ∗ , n
12 i f ( n .EQ. 4 ) then
13 ! pour n=4; polynome de L a g u r r e d ’ o r d r e 4
14 ! Les r a c i n e s du polynome de L a g u r r e
15 Rc(1)= 0 . 3 2 2 5 4 7 6 8 9 6 1 9
16 Rc(2)= 1 . 7 4 5 7 6 1 1 0 1 1 6
17 Rc(3)= 4.53662029692
18 Rc(4)= 9 . 3 9 5 0 7 0 9 1 2 3
19 ! Les p o i d s
20 Co(1)= 0.832739123838
21 Co(2)= 2 . 0 4 8 1 0 2 4 3 8 4 5
22 Co(3)= 3.63114630582
23 Co(4)= 6 . 4 8 7 1 4 5 0 8 4 4 1
24 else
25 ! pour n=6; polynome de L a g u r r e d ’ o r d r e 6
26 ! Les r a c i n e s du polynome de L a g u r r e
27 Rc ( 1 ) = 0 . 2 2 2 8 4 6 6 0 4 1 7 9
28 Rc ( 2 ) = 1 . 1 8 8 9 3 2 1 0 1 6 7
29 Rc ( 3 ) = 2 . 9 9 2 7 3 6 3 2 6 0 6
30 Rc ( 4 ) = 5 . 7 7 5 1 4 3 5 6 9 1
31 Rc ( 5 ) = 9 . 8 3 7 4 6 7 4 1 8 3 8
32 Rc ( 6 ) = 1 5 . 9 8 2 8 7 3 9 8 0 6
33 ! Les p o i d s
4.4. INTÉGRALE TRIPLE : 27

34 Co ( 1 ) = 0 . 5 7 3 5 3 5 5 0 7 4 2 3
35 Co ( 2 ) = 1 . 3 6 9 2 5 2 5 9 0 7 1
36 Co(3)= 2 . 2 6 0 6 8 4 5 9 3 3 8
37 Co ( 4 ) = 3 . 3 5 0 5 2 4 5 8 2 3 6
38 Co ( 5 ) = 4 . 8 8 6 8 2 6 8 0 0 2 1
39 Co ( 6 ) = 7 . 8 4 9 0 1 5 9 4 5 6
40 endif
41 sum=0.
42 DO i =1 ,n
43 x=Rc ( i )
44 sum=sum+Co ( i ) ∗ f ( x )
45 Enddo
46 print ∗ , ’ L i n t e g r a l e e g a l e= ’ , sum
47 end

4.4 Intégrale triple :

4.4.1 L’intégrale triple en coordonnées cartésiennes :

1 program I n t e g r a l e t r i p l e c a r t i s i e n
2 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ∗ CE PROGRAMME CALCUL L ’INTEGRALE TRIPLE D ’UNE FONCTION F(X, Y, Z ) ∗
4 ∗ EN COORDONNEES CARTISIENNES X, Y, Z . ∗
5 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 REAL ax , bx , ay , by , az , bz , hy , hz , SMY1, SMZ1 , SMZ2
7 DATA n , ax , bx , ay , by , az , bz / 2 0 0 , 0 . , 1 . , 0 . , 2 . , 0 . 5 , 1 . /
8 ! ax , bx l a borne i n i t i a l e e t f i n a l e pour x
9 ! ay , by l a borne i n i t i a l e e t f i n a l e pour y
10 ! az , bz l a borne i n i t i a l e e t f i n a l e pour z
11 ! n l e nombre de s u b d i v i s i o n
12

13 hx=(bx−ax ) / n
14 SMX=0.
15 do 1 i =0 ,n−1
16 x1=i ∗hx+ax
17 x2=x1+hx
18 hy=(by−ay ) / n
19 SMY1=0.
20 SMY2=0.
21 do 2 j =0 , n−1
22 y1=j ∗hy+ay
23 y2=y1+hy
24 hz=(bz−az ) / n
25 SMZ1=0.
26 SMZ2=0.
27 do 3 k=0 , n−1
28 z1=k∗ hz+az
28 CHAPITRE 4. INTÉGRATION NUMÉRIQUE

29 z2=z1+hz
30 SMZ1=SMZ1+0.5∗ hz ∗ ( f ( x1 , y1 , z1 )+ f ( x1 , y1 , z2 ) )
31 SMZ2=SMZ2+0.5∗ hz ∗ ( f ( x1 , y2 , z1 )+ f ( x1 , y2 , z2 ) )
32

33 SMZ3=SMZ1+0.5∗ hz ∗ ( f ( x2 , y1 , z1 )+ f ( x2 , y1 , z2 ) )
34 SMZ4=SMZ2+0.5∗ hz ∗ ( f ( x2 , y2 , z1 )+ f ( x2 , y2 , z2 ) )
35 3 continue
36 SMY1=SMY1+0.5∗ hy ∗ (SMZ1+SMZ2)
37 SMY2=SMY2+0.5∗ hy ∗ (SMZ3+SMZ4)
38 2 continue
39 SMX=SMX+0.5∗ hx ∗ (SMY1+SMY2)
40 1 continue
41 print ∗ , ’ R e s u l t a t de l i n t e g r a l e t r i p l e= ’ ,SMX
42 END
43 !
44 ∗La f o n c t i o n f ( x , y , z )
45 r e a l function f ( x , y , z )
46 real x , y , z
47 f=s q r t ( x+y+z )
48 return
49 end

4.4.2 L’intégrale triple avec la méthode de Gauss :

1 PROGRAM T r i p l e G a u s s
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME CALCUL L ’INTEGRALE TRIPLE D’UNE FONCTION F(X, Y, Z ) , ∗
4 ! PAR LA METHODE DE GAUSS . ∗
5 !PAR EXEMPLE ON CALCULE LE VOLUME D’UNE SPHERE DE RAYON R=2 ∗
6 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
7 external quad3d , qtrapx , qtrapy , q t r a p z , y1 , y2 , z1 , z2 , f u n c
8 double precision qtrapx , qtrapy , q t r a p z , y1 , y2 , z1 , z2 , f u n c
9 DATA R/ 1 . /
10 print ∗ , ’INTEGRALE DE SPHERE= ’ , ( 4 . ∗ 3 . 1 4 1 6 ∗ ( 2 . ) ∗ ∗ 3 ) / 3
11 x1=−2. ! borne i n f de x
12 x2 =2. ! borne sup de x
13 c a l l quad3d ( x1 , x2 , s s )
14 pk=s s
15 write ( 6 , ∗ ) ’ L INTEGRALE TRIPLE DE GAUSS= ’ , pk
16 end
17 ! s u b r o u t i n e q u i c a l c u l une i n t e g r a l e triple
18 !
19 subroutine quad3d ( x1 , x2 , s s )
20 r e a l s s , x1 , x2 , h
21 external h
22 c a l l qgausx ( h , x1 , x2 , s s )
23 return
24 end
4.4. INTÉGRALE TRIPLE : 29

25 function f ( z z )
26 r e a l f , zz , func , x , y , z
27 common / xyz / x , y , z
28 z=z z
29 f=f u n c ( x , y , z )
30 return
31 end
32

33 function g ( yy )
34 r e a l g , yy , x , y , z , f , z1 , z2
35 external f
36 common / xyz / x , y , z
37 y=yy
38 c a l l q g a u s z ( f , z1 ( x , y ) , z2 ( x , y ) , s s )
39 g=s s
40 return
41 end
42

43 function h ( xx )
44 r e a l h , xx , g , y1 , y2 , x , y , z
45 external g
46 common / xyz / x , y , z
47 real s s
48 x=xx
49 c a l l qgausy ( g , y1 ( x ) , y2 ( x ) , s s )
50 h=s s
51 return
52 end
53

54 !
55 ! LA FORME DE LA FONCTION INTEGREE
56 FUNCTION f u n c ( x , y , z )
57 ! f u n c= x ∗ ( x+3∗y )
58 f u n c =1.0
59 RETURN
60 END
61

62 !
63 ! LA FONCTION z1 ( x )
64 FUNCTION z1 ( x , y )
65 z1= −s q r t ( 4 . − ( x∗x+y∗y ) ) ! borne i n f de z
66 RETURN
67 END
68

69 !
70 ! LA FONCTION z2 ( x )
71 FUNCTION z2 ( x , y )
72 z2=s q r t ( 4 . − ( x∗x+y∗y ) ) ! borne sup de z
73 RETURN
30 CHAPITRE 4. INTÉGRATION NUMÉRIQUE

74 END
75 !
76 ! LA FONCTION y1 ( x )
77 FUNCTION y1 ( x )
78 y1= −s q r t (4. − x∗x ) ! borne i n f de y
79 RETURN
80 END
81

82 !
83 ! LA FONCTION y2 ( x )
84 FUNCTION y2 ( x )
85 y2= s q r t (4. − x∗x ) ! borne sup de y
86 RETURN
87 END
88 !
89 ! INTEGRATION PAR LA METHODE DE GAUSS POUR x
90 SUBROUTINE qgausx ( func , a , b , s s )
91 REAL a , b , s s , f u n c
92 EXTERNAL f u n c
93 INTEGER j
94 REAL dx , xm, xr , w( 5 ) , x ( 5 )
95 SAVE W, x
96 DATA w/ . 2 9 5 5 2 4 2 2 4 7 , . 2 6 9 2 6 6 7 1 9 3 , . 2 1 9 0 8 6 3 6 2 5 , . 1 4 9 4 5 1 3 4 9 , . 0 6 6 6 7 1 3 4 4 9 /
97 DATA x / . 1 4 8 8 7 4 3 3 8 9 , . 4 3 3 3 9 5 3 9 4 , . 6 7 9 4 0 9 5 6 8 2 , . 8 6 5 0 6 3 3 6 6 6 , . 9 7 3 9 0 6 5 2 8 5 /
98 xm= 0. 5∗( b+a )
99 x r =0 .5∗( b−a )
100 s s =0
101 do 11 j =1 ,5
102 dx=x r ∗x ( j )
103 s s=s s+w( j ) ∗ ( f u n c (xm+dx)+ f u n c (xm−dx ) )
104 11 continue
105 s s=x r ∗ s s
106 return
107 END
108

109 !
110 ! INTEGRATION PAR LA METHODE DE GAUSS POUR y
111 SUBROUTINE qgausy ( func , a , b , s s )
112 REAL a , b , s s , f u n c
113 EXTERNAL f u n c
114 INTEGER j
115 REAL dx , xm, xr , w( 5 ) , x ( 5 )
116 SAVE W, x
117 DATA w/ . 2 9 5 5 2 4 2 2 4 7 , . 2 6 9 2 6 6 7 1 9 3 , . 2 1 9 0 8 6 3 6 2 5 , . 1 4 9 4 5 1 3 4 9 , . 0 6 6 6 7 1 3 4 4 9 /
118 DATA x / . 1 4 8 8 7 4 3 3 8 9 , . 4 3 3 3 9 5 3 9 4 , . 6 7 9 4 0 9 5 6 8 2 , . 8 6 5 0 6 3 3 6 6 6 , . 9 7 3 9 0 6 5 2 8 5 /
119 xm= 0. 5∗( b+a )
120 x r =0 .5∗( b−a )
121 s s =0
122 do 11 j =1 ,5
4.4. INTÉGRALE TRIPLE : 31

123 dx=x r ∗x ( j )
124 s s=s s+w( j ) ∗ ( f u n c (xm+dx)+ f u n c (xm−dx ) )
125 11 continue
126 s s=x r ∗ s s
127 return
128 END
129

130 !
131 ! INTEGRATION PAR LA METHODE DE GAUSS POUR Z
132 SUBROUTINE q g a u s z ( func , a , b , s s )
133 REAL a , b , s s , f u n c
134 EXTERNAL f u n c
135 INTEGER j
136 REAL dx , xm, xr , w( 5 ) , x ( 5 )
137 SAVE W, x
138 DATA w/ . 2 9 5 5 2 4 2 2 4 7 , . 2 6 9 2 6 6 7 1 9 3 , . 2 1 9 0 8 6 3 6 2 5 , . 1 4 9 4 5 1 3 4 9 , . 0 6 6 6 7 1 3 4 4 9 /
139 DATA x / . 1 4 8 8 7 4 3 3 8 9 , . 4 3 3 3 9 5 3 9 4 , . 6 7 9 4 0 9 5 6 8 2 , . 8 6 5 0 6 3 3 6 6 6 , . 9 7 3 9 0 6 5 2 8 5 /
140 xm= 0. 5∗( b+a )
141 x r =0 .5∗( b−a )
142 s s =0
143 do 11 j =1 ,5
144 dx=x r ∗x ( j )
145 s s=s s+w( j ) ∗ ( f u n c (xm+dx)+ f u n c (xm−dx ) )
146 11 continue
147 s s=x r ∗ s s
148 return
149 END
32 CHAPITRE 4. INTÉGRATION NUMÉRIQUE
Chapitre 5

Résolution de l’équation f (x) = 0

5.1 La séparation des racines de l’équation f(x)=0 :

1 PROGRAM SEPARATION
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME PEUT ETRE SEPARE OU TROUVER LES RACINES REELLES EXACTES
4 ! DE L ’EQUATION F( x)=0
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 REAL x , a , b , c , d , d e l
7 DATA d e l / 0 . 5 / ,N/1000/
8

9 ! Exemple de l a f o n c t i o n F( x ) :
10 f ( x)=x ∗∗3 −2.∗ x ∗∗2+1.
11

12 a =0.
13 c =0.
14 DO I =0 , N
15 a=i ∗ d e l
16 b=a+d e l
17 c=−i ∗ d e l
18 d=c−d e l
19 i f ( f ( a ) .EQ . 0 . ) then
20 print ∗ , ’RACINE= ’ , a
21 e l s e i f ( f ( c ) .EQ . 0 . ) then
22 print ∗ , ’RACINE= ’ , c
23 endif
24

25 IF (F( a ) ∗F( b ) . LT . 0 . ) then


26 PRINT∗ , ’LA RACINE APPARTIENT A: ’ , ’ [ ’ , a , ’ , ’ , b , ’ ] ’
27 ENDIF
28

29 IF (F( c ) ∗F( d ) . LT . 0 . ) then


30 PRINT∗ , ’LA RACINE APPARTIENT A: ’ , ’ [ ’ , d , ’ , ’ , c , ’ ] ’
31 ENDIF

33
34 CHAPITRE 5. RÉSOLUTION DE L’ÉQUATION F (X) = 0

32 ENDDO
33 END

5.2 Résolution de l’équation f(x)=0 par la méthode de di-


chotomie :

1 PROGRAM DICHOTOMIE
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! RESOLUTION DE L ’EQUATION F( x)=0 PAR L ’ALGORITHME DE DICHOTOMIE ∗
4 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
5 REAL X,AA,BB
6

7 ! La f o n c t i o n F( x)=0
8 F( x)=x∗ exp ( x ) −1.
9 print ∗ , ’DONNER ( a ) LE DEBUT DE L INTERVALLE [ a , b]= ’
10 read ∗ , a
11 print ∗ , ’DONNER ( b ) LA FIN DE L INTERVALLE [ a , b]= ’
12 read ∗ , b
13 PRINT∗ , ’DONNER LE NOMBRE DE SUBDIVITIONS N= ’
14 READ∗ , N
15 PRINT∗ , ’ ’
16

17 IF (F( a ) ∗F( b ) .GE . 0 . ) then


18 print ∗ , ’LA RACINE N APPARTIENT PAS A CET INTERVALEE ’
19 ELSE
20 AA=a
21 BB=b
22 write ( ∗ , 4 )
23 4 FORMAT( 5X, ’K ’ , 1 0X, ’ ak ’ , 1 5X, ’ bk ’ , 1 5X, ’Xk ’ , 1 5X, ’F(Xk) ’ )
24

25 DO 11 I =1 , N
26 X=(BB+AA) / 2 .
27 IF (F(AA) ∗F(X ) . LT . 0 . ) THEN
28 BB=X
29 X=(BB+AA) / 2 .
30 write ( ∗ , 2 ) I ,AA, BB, X, F(X)
31 2 FORMAT( 1X, I5 , 2X, E15 . 9 , 2X, E15 . 9 , 2X, E15 . 9 , 2X, E15 . 9 )
32 ELSE
33 AA=X
34 X=(BB+AA) / 2 .
35 write ( ∗ , 3 ) I ,AA, BB, X, F(X)
36 3 FORMAT( 1X, I5 , 2X, E15 . 9 , 2X, E15 . 9 , 2X, E15 . 9 , 2X, E15 . 9 )
37 ENDIF
38

39 11 CONTINUE
40 END IF
5.3. RÉSOLUTION DE L’ÉQUATION F(X)=0 PAR LA MÉTHODE DE NEWTON RAPHSON ET SÉCANTE :35

41 END

5.3 Résolution de l’équation f(x)=0 par la méthode de new-


ton Raphson et sécante :

1 PROGRAM NEWTON SECANTE


2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! RESOLUTION DE L ’EQUATION F( x)=0 PAR:
4 ! 1− L ’ALGORITHME DE NEWTON−RAPHSON.
5 ! 2− L ’ALGORITHME DE LA SECANTE.
6 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
7 REAL x ( 1 0 0 0 0 ) , t , x0
8 ! LA FONCTION F( x ) :
9 F( t )=COS( t )− t
10 ! LA DERIVEE F ’ ( x ) :
11 FP( t )= −SIN ( t ) −1.
12

13 print ∗ , ’DONNER a e t b LE DEBUT ET LA FIN DE L INTERVALLE [ a , b ] ’


14 read ∗ , a , b
15 IF (F( a ) ∗F( b ) .GE . 0 . ) then
16 print ∗ , ’LA RACINE N APPARTIENT PAS A CET INTERVALLE ’
17 ELSE
18 print ∗ , ’DONNER ( x0 ) L APPROXIMATION INTIALE ’
19 read ∗ , x0
20 print ∗ , ’DONNER ( n ) LE NOMBRE D ITERATION ’
21 print ∗ , ’ n : IL FAUT EGALE A UN NOMBRE ENTIER POSITIF ’
22 read ∗ , n
23 print ∗ , ’ ’
24 print ∗ , ’METHODE DE NEWTON RAPHSON: ’
25 print ∗ , ’k ’ , ’ ’ , ’x(k) ’
26 x (1)= x0
27 DO 10 k=1 , n
28 x ( k+1)=x ( k)−F( x ( k ) ) /FP( x ( k ) )
29 print ∗ , k , x(k)
30 IF ( x ( k +1).EQ. x ( k ) ) THEN
31 PRINT∗ , ’LA SOLUTION DE NEWTON RAPHSON = ’
32 PRINT∗ , ’ i t e r a t i o n k= ’ , k , ’ ’ , ’ e t a= ’ , x ( k+1)
33 exit
34 END IF
35 10 continue
36

37 !
38 ∗METHODE DE LA SECANTE:
39 print ∗ , ’ ’
40 print ∗ , ’LA METHODE DE LA SECANTE: ’
41 print ∗ , ’k ’ , ’ ’ , ’x(k) ’
36 CHAPITRE 5. RÉSOLUTION DE L’ÉQUATION F (X) = 0

42 x (1)= x0
43 DO 20 k=1 , n
44 x ( k+1)=x ( k) −(b−x ( k ) ) ∗ f ( x ( k ) ) / ( f ( b)− f ( x ( k ) ) )
45 print ∗ , k , x(k)
46 IF ( x ( k +1).EQ. x ( k ) ) THEN
47 PRINT∗ , ’LA SOLUTION DE LA SECANTE =’
48 PRINT∗ , ’ i t e r a t i o n k= ’ , k , ’ ’ , ’ e t a= ’ , x ( k+1)
49 exit
50 END IF
51 20 continue
52 END IF
53 END
Chapitre 6

Résolution du système des


équations linéaires ax = b

6.1 Résolution du système des équations linéaires ax = b par


la méthode de Gauss et Gauss-Jordon :

1 PROGRAM GAUSS GAUSSJORDONE


2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! RESOLUTION D’UN SYSTEME DE ( n ) EQUATIONS LINEAIRES PAR L ’ALGORITHME DE:
4 ! GAUSS ET GAUSS−JORDONE ∗
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 PARAMETER(m=100)
7 REAL A(m,m) , b (m) ,AA(m,m,m)
8 PRINT∗ , ’ DONNER LA DIMENSION n DE LA MATRICE= ’
9 READ∗ , N
10 PRINT∗ , ’ DONNER LES ELEMENTS DE LA MATRICE ’
11 PRINT∗ , ’A( I , J ) e t b ( i ) i l f a u t l e s s e p a r e r par un b l a n c ’
12 READ( ∗ , ∗ ) ( (A( I , J ) , J=1 ,N) , b ( i ) , I =1 ,N)
13 print ∗ , ’ ! ’
14 DO 1 k=1 , n−1
15 DO 2 i=K+1 , n
16 AA( i , K,K)=A( i ,K)
17 DO 3 j =1 , N
18 A( i , j )=A( i , j ) −(AA( i , K,K) ∗A(K, j ) /A(K,K) )
19 3 CONTINUE
20 B( i )=b ( i ) −(AA( i , k ,K) ∗ b ( k ) /A( k , k ) )
21 2 CONTINUE
22 1 CONTINUE
23 !
24 PRINT∗ , ’LA FORME DE GAUSS : ’
25 DO I =1 , n
26 PRINT∗ , ’ ’

37
38 CHAPITRE 6. RÉSOLUTION DU SYSTÈME DES ÉQUATIONS LINÉAIRES AX = B

27 write ( ∗ , 7 ) (A( i , j ) , j =1 ,n ) ,B( i )


28 ! ( s i N e s t d i f f e r e n t de 4 i l faut changer 4
29 ! par l a v a l e u r de N (NF6 . 1 ) )
30 7 format ( ( 5X, 1 0 F8 . 1 ) , 1 0 X, F8 . 1 )
31 ENDDO
32 !
33 DO 11 k=2 , n
34 DO 22 i =1 , K−1
35 AA( i , K,K)=A( i ,K)
36 DO 33 j =1 , N
37 A( i , j )=A( i , j ) −(AA( i , K,K) ∗A(K, j ) /A(K,K) )
38 33 CONTINUE
39 B( i )=b ( i ) −(AA( i , k ,K) ∗ b ( k ) /A( k , k ) )
40 22 CONTINUE
41 11 CONTINUE
42 !
43 print ∗ , ’ ’
44 PRINT∗ , ’LA FORME DE GAUSS JORDONE: ’
45 DO I =1 , n
46 PRINT∗ , ’ ’
47 write ( ∗ , 5 5 ) (A( i , j ) , j =1 ,n ) ,B( i )
48 55 format ( ( 5X, 1 0 F8 . 1 ) , 1 0 X, F8 . 1 )
49 ENDDO
50 print ∗ , ’ ’
51 PRINT∗ , ’LES SOLUTIONS SONT: ’
52 DO 66 I =1 ,N
53 write ( ∗ , 7 7 ) i , b ( i ) /A( i , i ) !
54 77 FORMAT( 2 0X, ’ x ’ , I1 , ’= ’ , F8 . 4 )
55 66 CONTINUE
56 END
Chapitre 7

Résolution de l’équation
différentielle y 0(x) = f (x, y(x))

7.1 Résolution de l’équation différentielle y 0 (x) = f (x, y(x))


par la méthode d’Euler :

1 Program E u l e r
2 ! CE PROGRAMME RESOUDRE L ’EQUATION DIFFERENTIELLE y ’=F( t , y ( t ) )
3 ! (PROBLEME DE CAUCHY) ) PAR LA METHODE DE EULER DANS L ’ INTERVALLE [ t0 , tn ]
4

5 Real t , Y, h
6 open ( unit =34 , f i l e= ’ E u l e r . dat ’ , status= ’ unknown ’ )
7

8 Y=1. ! La c o n d i t i o n i n i t i a l e
9 t =0. ! L’ abscisse initiale
10 n=10 ! Le nombre de s u b d i v i s o n s
11 h=0.1 ! Le pas
12

13 write ( 3 4 , ∗ ) t , y
14

15 DO i =0 , n
16 Y=Y+h∗F( t ,Y)
17 t=t+h
18 print ∗ , t ,Y
19 write ( 3 4 , ∗ ) t , y
20 End do
21 End
22

23 ! exemple de l a f o n c t i o n F( t , y ( t ) )
24 Real function F( t ,Y)
25 Real t , y
26 F=y∗y+t /y

39
40 CHAPITRE 7. RÉSOLUTION DE L’ÉQUATION DIFFÉRENTIELLE Y 0 (X) = F (X, Y (X))

27 Return
28 End

7.2 Résolution de l’équation différentielle y 0 (x) = f (x, y(x))


par la méthode de Runge Kutta :

7.2.1 Résolution de l’équation différentielle y 0 (x) = f (x, y(x)) par la méthode


de Runge Kutta d’ordre 2 (RK2) :

1 Program RK2
2 r e a l t , y , h , P1 , P2
3 open ( unit =34 , f i l e= ’RK2 . dat ’ , status= ’ unknown ’ )
4 h =0.01
5 n=6
6 t=0
7 y =1.
8 write ( 3 4 , ∗ ) t , y
9

10 do i =1 ,n
11 P1=f ( t , y )
12 t=t+h
13 P2=f ( t , y+h∗P1 )
14 y=y+(h / 2 . ) ∗ ( P1+P2 )
15 print ∗ , t , y
16 write ( 3 4 , ∗ ) t , y
17 enddo
18 end
19 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
20 r e a l function F( t , y )
21 real t , y
22 F=−2.∗y ! y∗y+t /y
23 return
24 end

7.2.2 Résolution de l’équation différentielle y 0 (x) = f (x, y(x)) par la méthode


de Runge Kutta d’ordre 4 (RK4) :

1 PROGRAM RK4
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME RESOUDRE LE PROBLEME DE CAUCHY (EQUATION DIFFERENTIELLE DE
4 ! DEUXIEME ORDRE PAR) y ’= f ( x , y ) PAR LA METHODE DE RUNGE−KUTTA D’ORDRE 4 . ∗
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 REAL P1 , P2 , P3 , P4 , x ,Y
7 OPEN( unit =42 , f i l e= ’RK4 . dat ’ ,STATUS= ’UNKNOWN’ )
7.3. RÉSOLUTION DE L’ÉQUATION DIFFÉRENTIELLE Y 00 (X) = F (X, Y (X), Y 0 (X)) PAR LA MÉTHODE DE R

8 n=4 !
9 h=0.1 ! l e pas de v a r i a t i o n de x
10 ! les conditions initiales
11 PRINT∗ , ’DONNEZ L ABSCISSE INITIALE x (0)= ’
12 READ∗ , x
13 PRINT∗ , ’DONNEZ LA CONDITION INITIALE y (0)= ’
14 READ∗ , y
15

16 DO I =1 ,n
17

18 P1=h∗ f ( x , y )
19 P2=h∗ f ( x+h / 2 . , y+P1 / 2 . )
20 P3=h∗ f ( x+h / 2 . , y+P2 / 2 . )
21 x=x+h
22 P4=h∗ f ( x , y+P3 )
23 y=y+(P1 +2.∗( P2+P3)+P4 ) / 6 .
24

25 PRINT∗ , x,y
26 WRITE( 4 2 , ∗ ) x , y
27 END DO
28 END
29 !
30 ! LA FORME DE L EQUATION DIFFERENTIELLE Y’= f ( x , y )
31 r e a l function f ( x , y )
32 real x , y
33 f=y∗y+x/y
34 return
35 end

7.3 Résolution de l’équation différentielle y 00 (x) = f (x, y(x), y 0 (x))


par la méthode de Runge Kutta d’ordre 3 :

1 PROGRAM d i f 2 o r d r e R K 3
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME RESOUDRE L ’EQUATION DIFFERENTIELLE DE DEUXIEME ORDRE DE
4 ! LA FORME y”= f ( x , y , y ’ ) PAR LA METHODE DE RUNGE−KUTTA D’ORDRE 3 .
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 REAL L1 , L2 , L3 , LP1 , LP2 , LP3 , x2 , x3 , y2 , y3 , h
7 OPEN( unit =42 , f i l e= ’RK3 . dat ’ ,STATUS= ’UNKNOWN’ )
8 n=20
9 h=0.1 ! l e pas de v a r i a t i o n de x
10 ! l e s conditionS i n i t i a l e s
11 PRINT∗ , ’DONNEZ L ABSCISSE INITIALE x (0)= ’
12 READ∗ , x
13 PRINT∗ , ’DONNEZ LA CONDITION INITIALE y (0)= ’
14 READ∗ , y
42 CHAPITRE 7. RÉSOLUTION DE L’ÉQUATION DIFFÉRENTIELLE Y 0 (X) = F (X, Y (X))

15 PRINT∗ , ’DONNEZ LA CONDITION INITIALE yp (0)= ’ ! y ’ ( 0 )


16 READ∗ , yp
17

18 DO I =1 ,n
19 L1=h∗yp
20 LP1=h∗ f ( x , y , yp )
21

22 L2=h ∗ ( yp+LP1 / 2 . )
23 x2=x+h / 2 .
24 y2=y+L1 / 2 .
25 yp2=yp+LP1 / 2 .
26 LP2=h∗ f ( x2 , y2 , yp2 )
27

28 L3=h ∗ ( yp +2.∗LP2−LP1 )
29 x3=x+h
30 y3=y +2.∗L2−L1
31 yp3=yp +2.∗LP2−LP1
32 LP3=h∗ f ( x3 , y3 , yp3 )
33

34 y=y+(L1 +4.∗L2+L3 ) / 6 .
35 yp=yp+(LP1+4.∗LP2+LP3 ) / 6 .
36 x=x+h
37 PRINT∗ , x,y
38 WRITE( 4 2 , ∗ ) x , y
39 END DO
40 END
41 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
42 ! LA FORME DE L ’EQUATION DIFFERENTIELLE y”= f ( x , y , y ’ )
43 r e a l function f ( x , y , yp )
44 r e a l x , y , yp
45 f =( −2.∗yp∗EXP(−x ) ) + 3 . ∗ ( exp(−y ) − 1 . )
46 return
47 end
Chapitre 8

Les Méthodes de Monte-Carlo

La méthode Monte-Carlo (MC), désigne une famille de méthodes algorithmiques visant à calcu-
ler une valeur numérique approchée en utilisant des procédés aléatoires, c’est-à-dire des techniques
probabilistes.

8.1 Calcul de la valeur de π :


On peut introduire le principe de la méthode à l’aide d’une estimation de la valeur du nombre
π par la technique de Monte-Carlo de type tirage par noir ou blanc. Cette estimation peut être
réalisée en déterminant l’aire A d’un cercle. Le cercle de rayon R = 1/2 centré à l’origine du repère
des coordonnées est inscrit dans un carré de surface unité.
Pour mesurer ce rapport des aires, on génère à l’ordinateur deux nombres aléatoires (xi , yi )i=1,...N
compris entre −1/2 et +1/2 . On les utilise pour obtenir les coordonnées d’un point (x, y) situé
dans le carré.
p
Soit la distance d = x2 + y 2
— Si d ≤ R = 1/2 ⇒ un cas de succès et soit Ns est le nombre de succès.
— Si d  R = 1/2 ⇒ un cas d’échec et soit Ne est le nombre d’échecs.
Donc l’aire A(cercle) ∼ Ns et A(carré) ∼ N = Ne + Ns
Alors la valeur de π est donnée par la relation : π = limN → ∞ 4 NNs

43
44 CHAPITRE 8. LES MÉTHODES DE MONTE-CARLO

y Succès
1/2

1/2 x
1/2

Echec

Figure 8.1 – Estimation de la valeur de π

1 Program C a l c u l P i
2 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
3 ! CE PROGRAMME ESTIME LA VALEUR DE PI PAR LA METHODE DE MONTE−CARLO ∗
4 ! TIRAGE PAR NOIR OU BLANC. ∗
5 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
6 integer se ed , n
7 Real Pi , x , y , R, Som , S , a , b
8 DATA a / −0.5/ , b/0.5/ , s e e d /765432100/
9

10 Read∗ , n
11 Som=0.
12 DO i =1 ,n
13 x=a+(b−a ) ∗ Ran ( s e e d )
14 y=a+(b−a ) ∗ Ran ( s e e d )
15

16 R=s q r t ( x∗∗2+y ∗ ∗ 2 )
17 IF (R . LE . 0 . 5 ) then
18 S=1.
19 Som=Som+S
20 ENDIF
21 ENDDO
22 Pi =4.∗Som/n
23 Print ∗ , n , Pi
24 END
8.2. ESTIMATION D’INTÉGRALES PAR LA MÉTHODE MONTE-CARLO TYPE TIRAGE PAR NOIR OU BLANC

y Echec
1

F(x)

1 x
0

Succès

Figure 8.2 – Estimation d’intégrales par la méthode Monte-Carlo type tirage par noir ou blanc

8.2 Estimation d’intégrales par la méthode Monte-Carlo type


tirage par noir ou blanc
Comme dans l’estimation du nombre π avec MC de type tirage par noir ou blanc, on génère à
l’ordinateur deux nombres aléatoires (n couples) compris entre 0 et 1 et on les utilise pour obtenir
les coordonnées d’un point (x,y) situé dans le carré où on a :

 ξ (x, y) ≡ 1 Si y ≤ f (x) (succès)
 ξ (x, y) ≡ 0 Si y > f (x) (échec)

A
alors la probabilité P (ξ (x, y) = 1) = P (y ≤ f (x)) = 1×1 =A
donc on peut écrire :
Z 1 n
1X ns
A= f (x)dx = ξ (xi , yi ) =
0 n 1 n

où n est le nombre total de couples (xi , yi ) et ns est nombre des succès.

8.3 Estimation d’intégrales par la méthode Monte-Carlo élémentaire

8.4 Estimation d’intégrales par la méthode Monte-Carlo échantillonnage


suivant l’importance
Pour améliorer la convergence de la méthode de MC, nous privilégions les régions où la fonction
possède des valeurs élevées par rapport à celles où elle est proche de zéro. Plutôt que de générer
46 CHAPITRE 8. LES MÉTHODES DE MONTE-CARLO

des nombres aléatoires uniformément répartis, on tire ces nombres dans une distribution non uni-
forme qui échantillonne mieux les régions où l’intégrale est importante. Cette méthode est appelée
échantillonnage suivant l’importance.
Rb
Soit l’intégrale :I = a f (x)dx
Considérons une densité de probabilité non uniforme, ρ(x), qui imite le comportement de f (x)
et que l’on sait intégrer analytiquement. On la choisit normalisée dans l’intervalle [a, b] :
Rb
a
ρ(x)dx = 1
Rb R b (x)
Donc on peut écrire a f (x)dx = a fρ(x) ρ(x)dx.
On génère alors des nombres au hasard, zi , distribués non plus uniformément mais suivant ρ(z)et
l’on évalue f (zi )/ρ(zi ). La valeur moyenne de la fonction f (z) peut alors être obtenue comme la
moyenne de f /ρ pondérée par ρ(z) :

n
1 X f (zi)
hf (z)i = lim 0
n→∞ n ρ(zi)
i=1

P
Le symbole (0) dans signifie que la somme est réalisée implicitement suivant une distribution
non uniforme. L’intégrale recherchée est donnée par :
b n
(b − a) X f (zi)
Z
I= f (x)dx = 0
a n i=1
ρ(zi)

Comment on peut choisir la distribution ? :


Choisissez ρ (z) pour minimiser la variance σ :
f (zi)
ρ (z) = I → σ = 0 Assez inutile..
ρ (z) proche de f (z), mais assez simple pour être échantillonné.

Comment on peut déterminer z = z (x) ? :


Pour obtenir des nombres aléatoires, (zi ), de distribution non uniforme ρ (z) , à partir de
nombres aléatoires, (xi ) générés à partir d’une distribution uniforme g (z) , nous utilisons le
théorème suivant :

ρ (z) |dz| = g (x) |dx|


R1 ex −1
Exemple : Soit l’intégrale I = 0 e−1 dx, qui égale exactement I = 0.418. pour estimer cette
intégrale par la méthode de monte-Carlo échantillonnage suivant l’importance nous choisissons par
exemple les distributions suivantes et nous calculons leurs variances :



 ρ1 (z) = 1 → σ1 = 0.3009540


 ρ (z) = 2z → σ = 0.0560286

2 2
z
e
 ρ3 (z) = e−1 → σ3 = 0.1380024




 ρ (z) = 3z 2 → σ = 0.1838806

4 4

Donc la distribution la plus capable est ρ (z) = ρ2 (z) = 2z puisque sa variance été la plus
petite.
8.4. ESTIMATION D’INTÉGRALES PAR LA MÉTHODE MONTE-CARLO ÉCHANTILLONNAGE SUIVANT L’IM

Pour obtenir des nombres aléatoires (zi ), de distribution non uniforme (ρ (z) = 2z) , à partir
de nombres aléatoires, (xi ) générés à partir d’une distribution uniforme (g(x) = 1) , nous utili-
sons le théorème précédent on trouve :2zdz = 1dx et après l’intégration de deux mombres on

trouve :z (x) = x.

Le programme fortran résolvant cet exemple est le suivant :

1 Program MC ESI
2 ! C a l c u l e l ’ i n t e g r a l e de f ( x ) de a a b a v e c l a methode
3 ! de monte c a r l o de t y p e E c h a n t i l l o n n a g e s u i v a n t l ’ i m p o r t a n c e
4 !
5 Integer se ed , n
6 Real a , b , x , y , r , Som , MC ESI
7 DATA a / 0 . / , b / 1 . / , s e e d /7654321/
8 Read∗ , n
9 Som=0.
10 DO i =1 ,n
11 ! C r e a t i o n d e s nombres a l e a t o i r e s x s u i v a n t une d i s t r i b u t i o n u n i f o r m e
12 x=a+(b−a ) ∗ Ran ( s e e d )
13 r=Zad ( x )
14 Som=Som+(F( r ) /Ro( r ) )
15 ENDDO
16 MC ESI=(b−a ) ∗Som/n
17 Print ∗ , ’ MC ESI= ’ , MC ESI
18 END
19 !
20 Real Function f ( x )
21 real x
22 F=(exp ( x ) − 1 . ) / ( exp ( 1 . ) − 1 . )
23 Return
24 END
25

26 Real Function Ro ( z )
27 real z
28 Ro=2.∗ z
29 Return
30 END
31

32 Real Function Zad ( t )


33 real t
34 Zad=s q r t ( t )
35 Return
36 END
48 CHAPITRE 8. LES MÉTHODES DE MONTE-CARLO

8.5 Estimation d’intégrales par les méthodes Monte-Carlo


(Tirage par noir ou blanc, MC élémentaire et Échantillonnage
suivant l’importance) :

1 Program TypesMonteCarlo
2 ! CALCULE L ’INTEGRALE DE F(X) DE a A b AVEC LES TROIS METHODE
3 ! DE MONTE CARLO:
4 ! 1−TIRAGE NOIR OU BLANC
5 ! 2− MC ELEMENTAIRE
6 ! 3− ECHANTILLONNAGE SUIVANT L ’IMPORTANCE
7

8 !
9 Integer se ed , n
10 Real a , b , x , y , r , Som1 , Som2 , Som3 , S , MC NB,MC ELM, MC ESI
11

12 DATA a / 0 . / , b / 1 . / , s e e d /765432100/
13 Read∗ , n
14

15

16 Som1=0.
17 Som2=0.
18 Som3=0.
19

20 DO i =1 ,n
21 !CREATION DES NOMBRES ALEATOIRES x , y
22 x=a+(b−a ) ∗ Ran ( s e e d )
23 y=a+(b−a ) ∗ Ran ( s e e d )
24

25 ! Print ∗ , x , y
26 IF ( y . LE . F( x ) ) then
27 S=1.
28 Som1=Som1+S
29 ENDIF
30

31 Som2=Som2+F( x )
32 r=Zad ( x )
33 Som3=Som3+(F( r ) /Ro ( r ) )
34

35 ENDDO
36 ! 1− METODE DE TIRAGE NOIR OU BLANC:
37 MC NB = Som1/n
38 Print ∗ , ’MC NB = ’ , MC NB
39 ! 2− METHODE DE MC ELEMENTAIRE:
40 MC ELM=(b−a ) ∗ Som2/n
41 Print ∗ , ’MC ELM= ’ , MC ELM
42 ! 3− METHODE: E c h a n t i l l o n n a g e s u i v a n t l ’ i m p o r t a n c e
43 MC ESI=(b−a ) ∗ Som3/n
8.5. ESTIMATION D’INTÉGRALES PAR LES MÉTHODES MONTE-CARLO (TIRAGE PAR NOIR OU BLANC, M

44 Print ∗ , ’ MC ESI= ’ , MC ESI


45 END
46

47

48 !
49 Real Function f ( x )
50 real x
51 F=(exp ( x ) − 1 . ) / ( exp ( 1 . ) − 1 . )
52 Return
53 END
54

55 Real Function Ro ( z )
56 real z
57 Ro=2.∗ z
58 Return
59 END
60

61 Real Function Zad ( t )


62 real t
63 Zad=s q r t ( t )
64 Return
65 END
50 CHAPITRE 8. LES MÉTHODES DE MONTE-CARLO
Chapitre 9

Les Méthodes de Monte Carlo


Metropolis

9.1 Oscillateur Harmonique Unidimensionnel :

9.1.1 Algorithm de Metropolis :

1- Choisissez la position initiale, calculez l’énergie.


2- Choisissez le déplacement aléatoire, calculez le nouvel emplacement et l’énergie.
3- Décider d’accepter ou non le déplacement :
a- Si δU > 0 , calculer E = e−βδU .
b- Dessinez un nombre aléatoire r de 0 à 1.
c- Si ∆E < r ou δU ≤ 0 Accepter la nouvelle position, lamettre à jour et l’énergie, sinon
rester au même endroit, ajouter les valeurs courantes aux moyennes courantes.
4- Revenir à l’étape 2.

Exemple :

L’Oscillateur Harmonique Unidimensionnel :


Un oscillateur harmonique classique à une dimension (x) est modélisé par un potentiel quadra-
tique :
1 2 1
U (x) = kx = mω 2 x2
2 2
où m étant la masse du système et ω est une grandeur homogène à une fréquence (angulaire) appelée
pulsation propre de l’oscillateur. De façon générale celle-ci est liée à la force ou
  raideur du
potentiel.

L’hamiltonien classique d’un oscillateur harmonique unidimensionnel est


p2x 1
H= + mω 2 x2
2m 2

51
52 CHAPITRE 9. LES MÉTHODES DE MONTE CARLO METROPOLIS

1 PROGRAM MCMC OXILLATEUR HARMONIQUE


2

3 ! V o i c i un exemple du code F o r t r a n pour c a l c u l e r l e n e r g i e moyenne


4 ! de l o s c i l l a t e u r harmonique (1− d i m e n s i o n n e l ) par l a methode
5 ! M e t r o p o l i s Monte C a r l o . ou l e n e r g i e p o t e n t i e l l e de l ’ o s c i l l a t e u r
6 ! harmonique U=kx ∗x /2
7

9 i m p l i c i t r e a l ∗ 8 ( a−h , o−z )
10

11 ! S p e c i f i e z l e s parametres :
12 ! La g r a n d e u r maximale de d e p l a c e m e n t a u t o r i s e e en une e t a p e
13 parameter ( dxmax =0.1)
14 ! Nombre d ’ e s s a i s
15 parameter ( N c y c l e =10000 , N p r i n t=N c y c l e / 1 0 )
16 ! Temperature
17 parameter (T= 0 . 1 , b e t a =1./T)
18 ! G e n e r a t e u r de nombres a l e a t o i r e s
19 ! p a r a m e t e r ( i s e e d =1234567)
20 i s e e d =123456789
21

22 ! R e g l e r l e s compteurs
23 fav = 0 . 0 d0
24 f 2 a v = 0 . 0 d0
25 ! D e f i n i r l a g r a i n e pour l e g e n e r a t e u r de nombres a l e a t o i r e s ( n o t e z
26 ! que l e nom s r a n d peut e t r e d i f f e r e n t s u r d i f f e r e n t e s a r c h i t e c t u r e s )
27

28 ! S t a r t from t h e o r i g i n
29 x o l d =0.0
30 f o l d=f ( x )
31

32 ! Demarrez l e c y c l e MC( en s u p p o s a n t que ran ( ) r e n v o i e r e e l a l e a t o i r e f o u s


33 ! 1 de 0 a 1 )
34

35 do i c y c l e = 1 , N c y c l e
36 ! Obtenir l a n o u v e l l e p o s i t i o n , et l energie
37 xnew=x o l d +( ran ( i s e e d ) − 0 . 5 ) ∗ dxmax
38 fnew=f ( xnew )
39 w = fnew − f o l d
40 ! F a i r e l e c r i t e r e d a c c e p t a t i o n de M e t r o p o l i s
41 i f ( ( w . l t . 0 . d0 ) . o r . ( exp(− b e t a ∗w ) . g t . ran ( i s e e d ) ) ) then
42 ! A c c e p t e r l e deplacement , Mis a n i v e a u de x o l d e t f o l d
43 x o l d=xnew
44 f o l d=fnew
45 endif
46 ! Augmenter l e s moyennes
47

48 fav = fav + fo l d
9.1. OSCILLATEUR HARMONIQUE UNIDIMENSIONNEL : 53

49 f 2 a v= f 2 a v + f o l d ∗ f o l d
50

51 ! Imprimer l a moyenne c o u r a n t e
52 i f (mod( i c y c l e , N p r i n t ) . eq . 1 ) then
53 frunav = fav / i c y c l e
54 f2runav = f2av / i c y c l e
55 f 2 r u n a v = s q r t ( ( f 2 r u n a v −f r u n a v ∗ f r u n a v ) / i c y c l e )
56 write ( 6 , 2 ) i c y c l e , f r u n a v , f 2 r u n a v
57 2 format ( 1 x , i 8 , ” c y c l e s Average Energy = ” , e12 . 5 ,
58 > ” Std . Dev ” , e12 . 5 )
59 endif
60 enddo
61

62 ! Obtenez l a moyenne e t l e c a r t t y p e
63

64 fav = fav / Ncycle


65 f2av = f2av / Ncycle
66 f 2 a v = s q r t ( ( f 2 a v −f a v ∗ f a v ) / N c y c l e )
67

68 ! Ecrire le resultat
69

70 write ( 6 , 1 ) Ncycle , f av , f 2 a v
71 1 format ( 1 x , i 8 , ” c y c l e s Average Energy = ” , e12 . 5 ,
72 > ” Std . Dev ” , e12 . 5 )
73

74 ! Fin
75

76 end
77

78 ! Potentiel
79 r e a l ∗8 function f ( x )
80 r e a l ∗8 x
81 f=x∗x
82 return
83 end
54 CHAPITRE 9. LES MÉTHODES DE MONTE CARLO METROPOLIS
Chapitre 10

Dynamique Moléculaire

10.1 Comparaison entre l’algorithme d’Euler et de Verlet :

10.1.1 Pour un pondule simple :

1 Program V e r l e t E u l e r P o n d u l e
2 ! CE PROGRAMME ETUDIER LE MOUVEMENT D UN PONDULE SIMPLE
3 !AVEC LA METHODE D EULER ET DE VERLET
4 Parameter (m=60000)
5 r e a l x (m) ,V(m) , t e t a (m) , omiga (m) , h , t , Pi
6 open ( unit =33 , f i l e= ’ V e r l e t E u l e r P o n d u l e . dat ’ , status= ’ unknown ’ )
7 Pi =3.1416
8 h =0.01 ! l e pas de temps
9 n=3000 ! nombre d i t e r a t i o n s
10 ! conditions initiales
11 t =0.
12 x (1)= Pi / 2 . ! a n g l e i n i t i a l e pour v e r l e t
13 V( 1 ) = 0 . ! v i t e s s e a n g u l a i r e i n i t i a l e pour v e r l e t
14 t e t a (1)= x ( 1 ) ! a n g l e i n i t i a l e pour E u l e r
15 omiga (1)=V( 1 ) ! v i t e s s e a n g u l a i r e i n i t i a l e pour E u l e r
16

17 do i =1 , n
18 t=t+h
19 ! A l g o r i t h m e de V e r l e t
20 x ( i +1)=x ( i )+h∗V( i ) −0.5∗ h∗h∗ s i n ( x ( i ) )
21 V( i +1)=V( i ) −0.5∗ h ∗ ( s i n ( x ( i ))+ s i n ( x ( i +1)))
22 ! Algorithme d ’ Euler
23 t e t a ( i +1)= t e t a ( i )+h∗ omiga ( i )
24 omiga ( i +1)=omiga ( i )−h∗ s i n ( t e t a ( i ) )
25

26 print ∗ , t , x ( i ) , v ( i ) , t e t a ( i ) , omiga ( i )
27 write ( 3 3 , ∗ ) t , x ( i ) , t e t a ( i )
28 enddo
29 end

55
56 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

10.1.2 Pour un pondule simple :

1 Program V e r l e t E u l e r P o n d u l e
2 ! CE PROGRAMME ETUDIER LE MOUVEMENT D UN PONDULE SIMPLE
3 !AVEC LA METHODE D EULER ET DE VERLET
4 Parameter (m=60000)
5 r e a l x (m) ,V(m) , t e t a (m) , omiga (m) , h , t , Pi
6 open ( unit =33 , f i l e= ’ V e r l e t E u l e r P o n d u l e . dat ’ , status= ’ unknown ’ )
7 Pi =3.1416
8 h =0.01 ! l e pas de temps
9 n=3000 ! nombre d i t e r a t i o n s
10 ! conditions initiales
11 t =0.
12 x (1)= Pi / 2 . ! a n g l e i n i t i a l e pour v e r l e t
13 V( 1 ) = 0 . ! v i t e s s e a n g u l a i r e i n i t i a l e pour v e r l e t
14 t e t a (1)= x ( 1 ) ! a n g l e i n i t i a l e pour E u l e r
15 omiga (1)=V( 1 ) ! v i t e s s e a n g u l a i r e i n i t i a l e pour E u l e r
16

17 do i =1 , n
18 t=t+h
19 ! A l g o r i t h m e de V e r l e t
20 x ( i +1)=x ( i )+h∗V( i ) −0.5∗ h∗h∗ s i n ( x ( i ) )
21 V( i +1)=V( i ) −0.5∗ h ∗ ( s i n ( x ( i ))+ s i n ( x ( i +1)))
22 ! Algorithme d ’ Euler
23 t e t a ( i +1)= t e t a ( i )+h∗ omiga ( i )
24 omiga ( i +1)=omiga ( i )−h∗ s i n ( t e t a ( i ) )
25

26 print ∗ , t , x ( i ) , v ( i ) , t e t a ( i ) , omiga ( i )
27 write ( 3 3 , ∗ ) t , x ( i ) , t e t a ( i )
28 enddo
29 end

10.1.3 Pour un ressort avec une masse m :

1 Program V e r l e t E u l e r R e s s o r t
2 ! CE PROGRAMME ETUDIER LE MOUVEMENT D’UN PONDULE SIMPLE
3 !AVEC LA METHODE D’EULER ET DE VERLET
4 Parameter (m=900000)
5 r e a l x (m) ,V(m) , t e t a (m) , omiga (m) , h , t
6 open ( unit =33 , f i l e=” V e r l e t E u l e r R e s s o r t . dat ” , status=”unknown” )
7

8 h =0.01 ! l e pas de temps


9 n=90000 ! nombre d ’ i t e r a t i o n s
10 ! conditions initiales
11 t =0.
12 x (1)=2. ! l ’ a n g l e i n i t i a l e pour v e r l e t
13 V( 1 ) = 0 . ! v i t e s s e a n g u l a i r e i n i t i a l e pour v e r l e t
14 t e t a (1)= x ( 1 ) ! l ’ a n g l e i n i t i a l e pour E u l e r
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 57

15 omiga (1)=V( 1 ) ! v i t e s s e a n g u l a i r e i n i t i a l e pour E u l e r


16

17 do i =1 , n
18 t=t+h
19 ! A l g o r i t h m e de V e r l e t
20 x ( i +1)=x ( i )+h∗V( i ) −0.5∗ h∗h ∗ ( x ( i ) )
21 V( i +1)=V( i ) −0.5∗ h ∗ ( ( x ( i ))+( x ( i +1)))
22 ! Algorithme d ’ Euler
23 t e t a ( i +1)= t e t a ( i )+h∗ omiga ( i )
24 omiga ( i +1)=omiga ( i )−h ∗ ( t e t a ( i ) )
25

26 print ∗ , t , x ( i ) , v ( i ) ! , t e t a ( i ) , omiga ( i )
27 write ( 3 3 , ∗ ) t , x ( i ) , t e t a ( i )
28 enddo
29 end

Verlet
2
RK3

0
x

-1

-2

0 2 4 6 8 10 12 14 16 18 20
t

Figure 10.1 – Mouvement d’un ressort avec la méthode de Verlet à un pas et RK3

10.1.4 Pour les trajectoire d’un électron autour d’un ion central :
58 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

1 Program V e r l e t u n P a s
2 ! CE PROGRAMME CALCULE LES TRAJECTOIRES CLASSIQUES D ’UN ELECTRON AUTOUR
3 ! D’UNE IMPURETIE ( de c h a r g e Ze )AVEC LA METHODE DE VERLET A UN PAS
4 parameter (m=90000)
5 r e a l r x (m) , r y (m) , r z (m) , Vx(m) , Vy(m) , Vz (m) , d e l , T
6 open ( unit =33 , f i l e=” V e r l e t U n p a s . dat ” , status=”unknown” )
7 !
8 d e l =0.1 ! l e pas de temps
9

10 rx (1)=0.01 ! les position initiales : x,y,z


11 ry (1)=0.5
12 rz (1)=0.01
13 Vx( 1 ) = 0 . 3 ! les vitesses i n i t i a l e s : Vx , Vy , Vz
14 Vy( 1 ) = 0 . 3
15 Vz ( 1 ) = 0 . 3
16 !
17

18 do 55 i =1 , 1000
19 T=d e l ∗ i
20 r 1=s q r t ( ( r x ( i )∗ ∗ 2 ) + ( r y ( i )∗∗2)+ r z ( i ) ∗ ∗ 2 )
21

22 r x ( i +1)=r x ( i )+ d e l ∗Vx( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ r x ( i ) ∗ f e ( r 1 )
23 r y ( i +1)=r y ( i )+ d e l ∗Vy( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ r y ( i ) ∗ f e ( r 1 )
24 r z ( i +1)= r z ( i )+ d e l ∗Vz ( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ r z ( i ) ∗ f e ( r 1 )
25

26 r 2=s q r t ( ( r x ( i +1)∗∗2)+( r y ( i +1)∗∗2)+ r z ( i +1)∗∗2)


27

28 Vx( i +1)=Vx( i )+ 0. 5∗ d e l ∗ ( r x ( i ) ∗ f e ( r 1 )+ r x ( i +1)∗ f e ( r 2 ) )


29 Vy( i +1)=Vy( i )+ 0. 5∗ d e l ∗ ( r y ( i ) ∗ f e ( r 1 )+ r y ( i +1)∗ f e ( r 2 ) )
30 Vz ( i +1)=Vz ( i ) + 0. 5∗ d e l ∗ ( r z ( i ) ∗ f e ( r 1 )+ r z ( i +1)∗ f e ( r 2 ) )
31

32 write ( 3 3 , ∗ ) r x ( i +1) , r y ( i +1) , r z ( i +1) ,T


33 55 continue
34 end
35 !
36 r e a l function f e ( r )
37 r e a l r , A1 , A2 , T1 , T2 , Ze
38 ! d e r i v e du p o t e n t i e l
39 Ze =1.
40 A1= 3.64619
41 T1= 0.44374
42 A2= 0.39011
43 T2= 4.74356
44 f e =( z e / 3 . ) ∗ ( − (A1/T1 ) ∗EXP(− r /T1) −(A2/T2 ) ∗ exp(− r /T2 ) ) / r
45 return
46 end

1 PROGRAM RK3 Electron TRAJE


2 ! CE PROGRAMME CALCULE LES TRAJECTOIRES CLASSIQUES D ’UN ELECTRON AUTOUR
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 59

3 ! D’UNE IMPURETIE ( de c h a r g e Ze )AVEC LA METHODE DE RUNGE−KUTTA3


4 r e a l h , x , y , z , xp , yp , zp
5 open ( unit =42 , f i l e= ’ RK3 Traj . dat ’ ,STATUS= ’UNKNOWN’ )
6

7 n=100 ! nombre d ’ i t e r a t i o n s
8 h=0.1 ! l e pas du temps
9 ! l e s condition i n i t i a l e s ( positions et v i t e s s e s initials )
10 !POUR X
11 x =0.01 ! La p o s i t i o n i n i t i a l e pour x
12 xp =0.3 ! La v i t e s s e initiale pour vx
13 !POUR Y
14 y =0.5 ! La p o s i t i o n i n i t i a l e pour y
15 yp =0.3 ! La v i t e s s e initiale pour vy
16 !POUR Z
17 z =0.01 ! La p o s i t i o n i n i t i a l e pour z
18 zp =0.3 ! La v i t e s s e initiale pour vz
19

20 DO i =1 ,n
21 CALL RK( h , x , xp , y , yp , z , zp )
22 write ( 4 2 , ∗ ) x , y , z
23 enddo
24 END
25 !
26 SUBROUTINE RK( h , x , xp , y , yp , z , zp )
27 r e a l L1x , L2x , L3x , LP1x , LP2x , LP3x , t2 , t3 , x2 , x3 , h , t , x , xp , xp2 , xp3
28 r e a l L1y , L2y , L3y , LP1y , LP2y , LP3y , y2 , y3 , y , yp , yp2 , yp3
29 r e a l L1z , L2z , L3z , LP1z , LP2z , LP3z , z2 , z3 , z , zp , zp2 , zp3
30

31 L1x=h∗xp
32 LP1x=h∗ f ( x , x , y , z )
33 L1y=h∗yp
34 LP1y=h∗ f ( y , x , y , z )
35 L1z=h∗ zp
36 LP1z=h∗ f ( z , x , y , z )
37

38 L2x=h ∗ ( xp+LP1x / 2 . )
39 t 2=t+h / 2 .
40 x2=x+L1x / 2 .
41 xp2=xp+LP1x / 2 .
42

43 L2y=h ∗ ( yp+LP1y / 2 . )
44 y2=y+L1y / 2 .
45 yp2=yp+LP1y / 2 .
46

47 L2z=h ∗ ( zp+LP1z / 2 . )
48 z2=z+L1z / 2 .
49 zp2=zp+LP1z / 2 .
50 LP2x=h∗ f ( x2 , x2 , y2 , z2 )
51 LP2y=h∗ f ( y2 , x2 , y2 , z2 )
60 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

52 LP2z=h∗ f ( z2 , x2 , y2 , z2 )
53

54 L3x=h ∗ ( xp +2.∗LP2x−LP1x )
55 t 3=t+h
56 x3=x +2.∗ L2x−L1x
57 xp3=xp +2.∗LP2x−LP1x
58

59 L3y=h ∗ ( yp +2.∗LP2y−LP1y )
60 y3=y +2.∗ L2y−L1y
61 yp3=yp +2.∗LP2y−LP1y
62

63 L3z=h ∗ ( zp +2.∗LP2z−LP1z )
64 z3=z +2.∗ L2z−L1z
65 zp3=zp +2.∗LP2z−LP1z
66

67 LP3x=h∗ f ( x3 , x3 , y3 , z3 )
68 LP3y=h∗ f ( y3 , x3 , y3 , z3 )
69 LP3z=h∗ f ( z3 , x3 , y3 , z3 )
70

71 x=x+(L1x +4.∗ L2x+L3x ) / 6 .


72 xp=xp+(LP1x+4.∗LP2x+LP3x ) / 6 .
73

74 y=y+(L1y +4.∗ L2y+L3y ) / 6 .


75 yp=yp+(LP1y+4.∗LP2y+LP3y ) / 6 .
76

77 z=z+(L1z +4.∗ L2z+L3z ) / 6 .


78 zp=zp+(LP1z +4.∗ LP2z+LP3z ) / 6 .
79 t=t+h
80 return
81 end
82 !
83 r e a l function f ( t , x , y , z )
84 r e a l t , x , y , z , r , Ze
85 ! Ze l a c h a r g e e l e c t r i q u e
86 r=s q r t ( x∗x+y∗y+z ∗ z )
87 DATA Ze / 1 . /
88 f =(Ze / 3 . ) ∗ t ∗ d i v P o t ( r ) / r
89 return
90 end
91 !
92 r e a l function d i v P o t ( r )
93 r e a l a1 , a2 , t1 , t2 , r
94 ! Z=1
95 A1= 3.64619
96 t 1= 0.44374
97 A2= 0.39011
98 t 2= 4.74356
99 d i v P o t =−((A1/ t 1 ) ∗EXP(− r / t 1 )+(A2/ t 2 ) ∗ exp(− r / t 2 ) )
100 return
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 61

101 end

0,4
RK3
Verlet
0,2

Z
0,0

-0,2

0,6 -0,4
0,4 0,4
0,2 0,3
0,2
0,0 0,1
0,0
-0,2 -0,1
-0,2
Y

-0,4 -0,3
-0,6 -0,4 X
-0,5

Figure 10.2 – Les trajectoires d’un électron autour d’un ion central avec la méthode de Verlet à
un pas et RK3
62 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

0,6

0,4

0,2

0,0
Y

-0,2

-0,4

-0,6

-0,4 -0,2 0,0 0,2 0,4


X

Figure 10.3 – Les trajectoires d’un électron autour d’un ion central avec la méthode de Verlet à
un pas et RK3

1 % PROGRAMME DETREMINE LES TRAJECTOIRES D’UN ELECTRON


2 % DANS UN GAZ DES ELECTRON PAR LA METHODE DE VERLET
3 % A UN PAS
4 clc ;
5 clear a l l ;
6 close a l l ;
7 Ze = 1 . ;
8 f e= @( r ) (−Ze / r ˆ 3 ) ; % composante du g r a d i a n t /x
9

10 del =0.05; % l e pas de temps


11

12 rx ( 1 ) = 0 . 1 ; % les position initiales : x,y,z


13 ry ( 1 ) = 0 . 5 ;
14 rz (1)=0.0;
15 Vx ( 1 ) = 1 . 1 ; % les vitesses i n i t i a l e s : Vx , Vy , Vz
16 Vy ( 1 ) = 0 . 3 ;
17 Vz ( 1 ) = 0 . ;
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 63

18 %
19

20 for i =1: 800


21 T=d e l ∗ i ;
22 r 1=sqrt ( ( r x ( i ) ˆ2 )+ ( r y ( i )ˆ2)+ r z ( i ) ˆ 2 ) ;
23

24 r x ( i +1)=r x ( i )+ d e l ∗Vx( i ) + 0 . 5 ∗ ( d e l ˆ 2 ) ∗ r x ( i ) ∗ f e ( r 1 ) ;
25 r y ( i +1)=r y ( i )+ d e l ∗Vy( i ) + 0 . 5 ∗ ( d e l ˆ 2 ) ∗ r y ( i ) ∗ f e ( r 1 ) ;
26 r z ( i +1)= r z ( i )+ d e l ∗Vz ( i ) + 0 . 5 ∗ ( d e l ˆ 2 ) ∗ r z ( i ) ∗ f e ( r 1 ) ;
27

28 r 2=sqrt ( ( r x ( i +1)ˆ2)+( r y ( i +1)ˆ2)+ r z ( i + 1 ) ˆ 2 ) ;


29

30 Vx( i +1)=Vx( i )+ 0. 5∗ d e l ∗ ( r x ( i ) ∗ f e ( r 1 )+ r x ( i +1)∗ f e ( r 2 ) ) ;


31 Vy( i +1)=Vy( i )+ 0. 5∗ d e l ∗ ( r y ( i ) ∗ f e ( r 1 )+ r y ( i +1)∗ f e ( r 2 ) ) ;
32 Vz ( i +1)=Vz ( i ) + 0. 5∗ d e l ∗ ( r z ( i ) ∗ f e ( r 1 )+ r z ( i +1)∗ f e ( r 2 ) ) ;
33 end
34 plot ( rx , r y )
64 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6

Figure 10.4 – Mouvement d’un électron dans un gaz des électrons avec la méthode de Verlet à un
pas et RK3

10.1.5 Le mouvement de la terre autour du soleil :

Soit →

r la distance entre le soleil et la terre et Ms et MT les masses du soleil et de la terre
respectivement.

Nous négligeons l’effet des autres planètes et le mouvement du soleil (nous supposons que Ms
>> MT ). L’objectif est de calculer la position de la terre comme une fonction du temps.
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 65

D’après la deuxième loi de Newton on a :


X −−→ d2 →
−r GMT Ms →
Fext = MT →

a ⇒ MT 2 = − −
r (10.1)
dt r3

Où G est la constante gravitationnelle (G=6.67259×10−11 m3 kg−1 s−2 ).

d2 x →
− d2 y →
− GMs  →− →


i + j = − x i + y j (10.2)
dt2 dt2 r3
p
où :r = (x2 + y 2 )
Nous obtenons le système de deux équations :

 d2 x = − GMs x
dt2 r3
(10.3)
 d2 y = − GMs y
dt2 r3

Nous remplaçons ces deux équations différentielles du second ordre par les quatre équations différentielles
du premier ordre : 
dx
dt = vx





dvx GMs
dt = − r 3 x


(10.4)
dy
dt = vy




 dvy GMs
dt = − r 3 y

Remarque : 1.Rappelons que dans le système d’unités astronomiques, la masse solaire Ms est
choisie comme unité de masse, l’année comme unité de temps et le demi-grand axe de l’orbite
terrestre a=149,6.109 m comme unité de longueur.
a3 GMs
En vertu de la 3e loi de Kepler on a, pour les planètes du système solaire, T = 4π 2 avec G la
constante de gravitation, a le demi-grand axe de l’orbite et T la période orbitale. Si l’on adopte le
système d’unités astronomiques, on a dans le cas de la terre a =1 et T =1 de sorte que dans ce
système d’unités la constante de gravitation universelle vautG = 4π 2 .
Algorithmes de Euler :
La discrétisation de temps est :

t ≡ t(i) = i∆t = ih, i = 0, 1........N

L’intervalle de temps total est T = N∆t. Nous définissons x(t) = x(i), vx (t) =vx (i), y(t) = y(i),
vy (t) = vy (i).
D’après l’algorithme d’Euler le système (10.4) devient :



 vx (i + 1) = vx (i) − GM s
r(i)3
x(i)



 x(i + 1) = x(i) + hv (i)
x
(10.5)
GMs


 vy (i + 1) = vy (i) − r(i)3 y(i)



 y(i + 1) = y(i) + hv (i)
y

q
2 2
où :r (i) = x (i) + y (i)
Algorithmes de Verlet :
66 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

L’algorithme de Verlet à un pas repose sur le schéma numérique suivant :



 → −
r (i + 1) = →

r (i) + h→
−v (i) + h2 →
2

a (i)
(10.6)
 → − →
− h2

− →

v (i + 1) = v (i) + ( a (i) + a (i + 1))2

(Verfier les erreures dans le programme farançais )

1 Program EULER RK3 Verlet Solaire


2 ! CE PROGRAMME DETERMINE LES TRAJECTOIRES D’UN CORPS M1 TOURNE AUTOUR
3 ! D’UN DEUXIEME CORPS M2 (MOUVEMENT DE SYSTEME SOLAIRE)
4 ! LES METHODES UTIILISEES :EULER − RK3 − VERLET
5 ! C’ EST UNE RESOLUTION DE L ’EQUATION DIFFERENTIELLE y ’=F( t , y ( t ) )
6 ! (PROBLEME DE CAUCHY) ) DANS L ’ INTERVALLE [ t0 , tn ]
7 Parameter (m=10000)
8 Real t , h , x1 (m) , Vy1 (m) , Vx1 (m) , y1 (m) , x2 (m) , y2 (m) ,E ,m1 , m2 , r 1 2 ,G
9 Real Vx2 (m) , Vy2 (m) , z1 (m) , Vz1 (m) , z2 (m) , Vz2 (m)
10

11 open ( unit =34 , f i l e= ’ E u l e r S o l a i r e . dat ’ , status= ’ unknown ’ )


12 open ( unit =42 , f i l e= ’ R K S o l a i r e . dat ’ , status= ’ unknown ’ )
13 open ( unit =33 , f i l e= ’ V e r l e t S o l a i r e . dat ’ , status= ’ unknown ’ )
14 !
15 ! Corps 1
16 M1=0.1 ! M1 l a masse
17 x1 ( 1 ) = 3 . ! Les p o s i t i o n s initiales
18 y1 ( 1 ) = 0 .
19 z1 ( 1 ) = 0 .
20 Vx1 ( 1 ) = 0 . ! Les v i t e s s e s initiales
21 Vy1(1)= 4 .
22 Vz1 (1)= 0 .
23 ! Corps 2 : l e s positions et v i t e s s e s initiales nulles
24 M2 =1. !
25 x2 ( 1 ) = 0 .
26 y2 ( 1 ) = 0 .
27 z2 ( 1 ) = 0 .
28 Vx2 ( 1 ) = 0 . ! Les v i t e s s e s initiales
29 Vy2 ( 1 ) = 0 .
30 Vz2 ( 1 ) = 0 .
31

32 t =0. ! Le debut de l i n t e r v a l l e [ t0 , tn ]
33 n=1000 ! Le nombre de s u b d i v i s o n s
34 h=0.1 ! Le pas de temps
35 !
36 ! C a l c u l de l ’ e n e r g i e
37 G=39.4 ! G=4∗Pi ∗∗2 CONSTANTE DE GRAVITATION
38 r 1 2=s q r t ( ( x1 (1) − x2 ( 1 ) ) ∗ ∗ 2 + ( y1 (1) − y2 ( 1 ) ) ∗ ∗ 2 + ( z1 (1) − z2 ( 1 ) ) ∗ ∗ 2 )
39 E=0.5∗m1∗ ( Vx1(1)∗∗2+Vy1(1)∗∗2+ Vz1 (1)∗∗2) −G∗M1∗M2/ r 1 2
40 print ∗ , ’ E n e r g i e E= ’ , E
41 !
42 ! METHODE D’EULER
43 DO i =1 , n
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 67

44 Vx1 ( i +1)=Vx1 ( i )+h∗ f ( x1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ) )


45 x1 ( i +1)=x1 ( i )+h∗Vx1 ( i )
46 Vy1 ( i +1)=Vy1 ( i )+h∗ f ( y1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ) )
47 y1 ( i +1)=y1 ( i )+h∗Vy1 ( i )
48 t=t+h
49

50 write ( 3 4 , ∗ ) x1 ( i ) , y1 ( i )
51 End do
52 DO i =1 ,n
53 ! CALL RK( h , x , xp , y , yp , z , zp )
54 CALL RK( h , x1 ( 1 ) , Vx1 ( 1 ) , y1 ( 1 ) , Vy1 ( 1 ) , z1 ( 1 ) , Vz1 ( 1 ) )
55 write ( 4 2 , ∗ ) x1 ( i ) , y1 ( i )
56 enddo
57

58 !
59 ! METHODE DE VERLET
60 d e l=h
61 do 55 i =1 , n
62

63 T=d e l ∗ i
64 x1 ( i +1)=x1 ( i )+ d e l ∗Vx1 ( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ f ( x1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ) )
65 y1 ( i +1)=y1 ( i )+ d e l ∗Vy1 ( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ f ( y1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ) )
66 z1 ( i +1)=z1 ( i )+ d e l ∗Vz1 ( i ) + 0 . 5 ∗ ( d e l ∗ ∗ 2 ) ∗ f ( z1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ) )
67

68 Vx1 ( i +1)=Vx1 ( i )+ 0. 5∗ d e l ∗ ( f ( x1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ))+


69 & f ( x1 ( i +1) , x1 ( i +1) , y1 ( i +1) , z1 ( i +1)))
70

71 Vy1 ( i +1)=Vy1 ( i )+ 0. 5∗ d e l ∗ ( f ( y1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ))+


72 & f ( y1 ( i +1) , x1 ( i +1) , y1 ( i +1) , z1 ( i +1)))
73

74 Vz1 ( i +1)=Vz1 ( i )+ 0. 5∗ d e l ∗ ( f ( z1 ( i ) , x1 ( i ) , y1 ( i ) , z1 ( i ))+


75 & f ( z1 ( i +1) , x1 ( i +1) , y1 ( i +1) , z1 ( i +1)))
76

77 write ( 3 3 , ∗ ) x1 ( i +1) , y1 ( i +1) ! , r z ( i +1) ,T


78 55 continue
79 END
80 !
81 ! METHODE RUNGE KUTTA 3
82 SUBROUTINE RK( h , x , xp , y , yp , z , zp )
83 r e a l L1x , L2x , L3x , LP1x , LP2x , LP3x , t2 , t3 , x2 , x3 , h , t , x , xp , xp2 , xp3
84 r e a l L1y , L2y , L3y , LP1y , LP2y , LP3y , y2 , y3 , y , yp , yp2 , yp3
85 r e a l L1z , L2z , L3z , LP1z , LP2z , LP3z , z2 , z3 , z , zp , zp2 , zp3
86

87 L1x=h∗xp
88 LP1x=h∗ f ( x , x , y , z )
89 L1y=h∗yp
90 LP1y=h∗ f ( y , x , y , z )
91 L1z=h∗ zp
92 LP1z=h∗ f ( z , x , y , z )
68 CHAPITRE 10. DYNAMIQUE MOLÉCULAIRE

93

94 L2x=h ∗ ( xp+LP1x / 2 . )
95 t 2=t+h / 2 .
96 x2=x+L1x / 2 .
97 xp2=xp+LP1x / 2 .
98

99 L2y=h ∗ ( yp+LP1y / 2 . )
100 y2=y+L1y / 2 .
101 yp2=yp+LP1y / 2 .
102

103 L2z=h ∗ ( zp+LP1z / 2 . )


104 z2=z+L1z / 2 .
105 zp2=zp+LP1z / 2 .
106 LP2x=h∗ f ( x2 , x2 , y2 , z2 )
107 LP2y=h∗ f ( y2 , x2 , y2 , z2 )
108 LP2z=h∗ f ( z2 , x2 , y2 , z2 )
109

110 L3x=h ∗ ( xp +2.∗LP2x−LP1x )


111 t 3=t+h
112 x3=x +2.∗ L2x−L1x
113 xp3=xp +2.∗LP2x−LP1x
114

115 L3y=h ∗ ( yp +2.∗LP2y−LP1y )


116 y3=y +2.∗ L2y−L1y
117 yp3=yp +2.∗LP2y−LP1y
118

119 L3z=h ∗ ( zp +2.∗LP2z−LP1z )


120 z3=z +2.∗ L2z−L1z
121 zp3=zp +2.∗LP2z−LP1z
122

123 LP3x=h∗ f ( x3 , x3 , y3 , z3 )
124 LP3y=h∗ f ( y3 , x3 , y3 , z3 )
125 LP3z=h∗ f ( z3 , x3 , y3 , z3 )
126

127 x=x+(L1x +4.∗ L2x+L3x ) / 6 .


128 xp=xp+(LP1x+4.∗LP2x+LP3x ) / 6 .
129

130 y=y+(L1y +4.∗ L2y+L3y ) / 6 .


131 yp=yp+(LP1y+4.∗LP2y+LP3y ) / 6 .
132

133 z=z+(L1z +4.∗ L2z+L3z ) / 6 .


134 zp=zp+(LP1z +4.∗ LP2z+LP3z ) / 6 .
135 t=t+h
136 return
137 end
138 ! ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
139

140 ! La f o n c t i o n F( t , y ( t ) )
141 Real function f ( t , x , y , z )
10.1. COMPARAISON ENTRE L’ALGORITHME D’EULER ET DE VERLET : 69

142 Real t , x , y , z ,G
143 G=39.4 ! G=4∗Pi ∗∗2
144 f=−G∗ t / ( x∗∗2+y∗∗2+ z ∗ ∗ 2 ) ∗ ∗ 1 . 5
145 Return
146 end

10

0
y (u.a)

-5

-10

Verlet
-15
RK3 et Euler
-25 -20 -15 -10 -5 0 5 10
x (u.a)

Figure 10.5 – Trajectoire de la Terre mT = 0.1 autour de soleil mS = 1 pour x(0) = 3, V y(0) = 4,
avec la méthode de Verlet à un pas, Euler et RK3.

Vous aimerez peut-être aussi