Polycopies AN
Polycopies AN
Polycopies AN
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
3
4 TABLE DES MATIÈRES
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
5
6 TABLE DES FIGURES
Chapitre 1
Introduction au Fortran 77
7
8 CHAPITRE 1. INTRODUCTION AU FORTRAN 77
Chapitre 2
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 :
9
10 CHAPITRE 2. INTERPOLATION POLYNOMIALE
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
(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.
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
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
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
Exemple
2,0
Les points d'interpolation
Polynôme d'interpolation de Lagrange ou Newton
1,5
1,0
Y
0,5
0,0
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
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
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
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
∆k f (xi )
δ (xi , xi+1 ..........xi+k ) = 0≤i≤i+k ≤n (3.2)
hk k!
∆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 :
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
(−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
Intégration Numérique
1 program M e t h o d e s I n t e g r a t i o n
2
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
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
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
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
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
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
33
34 CHAPITRE 5. RÉSOLUTION DE L’ÉQUATION F (X) = 0
32 ENDDO
33 END
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
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
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
37
38 CHAPITRE 6. RÉSOLUTION DU SYSTÈME DES ÉQUATIONS LINÉAIRES AX = B
Résolution de l’équation
différentielle y 0(x) = f (x, y(x))
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
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
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
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))
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
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.
43
44 CHAPITRE 8. LES MÉTHODES DE MONTE-CARLO
y Succès
1/2
1/2 x
1/2
Echec
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
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.
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)
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.
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
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
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
Exemple :
51
52 CHAPITRE 9. LES MÉTHODES DE MONTE CARLO METROPOLIS
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
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
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
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
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
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
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
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
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
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
Figure 10.3 – Les trajectoires d’un électron autour d’un ion central avec la méthode de Verlet à
un pas et RK3
18 %
19
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
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
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
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 :
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
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
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
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
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
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.