You are on page 1of 36

Sylvain Archenault

Yves Houpert

A NALYSE N UMRIQUE :
Les mthodes de Runge-Kutta dordre 3

Projet GM3
Fvrier 2005

Table des matires


1

Introduction

Principe des mthodes de Runge-Kutta dordre 3


2.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Consistance, stabilit des mthodes de Runge-Kutta. . . . . . . . . . .
2.3 Ordre 1 et 2 des mthodes de Runge-Kutta. . . . . . . . . . . . . . . .
2.3.1 Conditions pour quune mthode de Runge Kutta soit dordre 1.
2.3.2 Conditions pour quune mthode de Runge-Kutta soit dordre 2.
2.4 Les mthodes de Runge-Kutta dordre 3. . . . . . . . . . . . . . . . . .
2.4.1 Conditions pour quune mthode de Runge-Kutta soit dordre 3
2.4.2 Calcul des conditions pour quune mthode soit dordre 3 . . .
2.4.2.1 Calcul des paramtres avec a3,1 = 0 : . . . . . . . . .
2.4.2.2 Calcul des paramtres avec a3,1 6= 0 : . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

3
3
4
5
5
5
6
6
6
7
9

Comparaison des rsultats


3.1 U ne quation de Riccati : f (x, y(x)) = 2y 2 + x(2x + 3)y x :
3.1.1 Rsultat avec a3,1 = 0 : . . . . . . . . . . . . . . . . . . .
3.1.1.1 = 1/3 : . . . . . . . . . . . . . . . . . . . . .
3.1.1.2 = 1/2 : . . . . . . . . . . . . . . . . . . . . .
3.1.1.3 = 0.58 : . . . . . . . . . . . . . . . . . . . . .
3.1.2 Rsultat avec a3,1 6= 0 et = 1 et = 2/3 : . . . . . .
3.2 f (x, y(x)) = (3x2 + 1)y ; y(0) = 5 . . . . . . . . . . . . . .
3.2.1 Rsultat avec a31 = 0 et =1/3 : . . . . . . . . . . . . . .
3.2.2 Rsultat avec a31 = 0 et =1/2 . . . . . . . . . . . . . . .
3.2.3 Rsultat avec a32 = 0 et =0.18 . . . . . . . . . . . . . .
3.2.4 Rsultat avec a31 6= 0 et = 1 , = 2/3 . . . . . . . . . .
3.2.5 Rsultat avec a31 6= 0 et = 1/6 , = 1/2 . . . . . . . . .
3.3 f (x, y(x)) = tan(x)
; y(0) = 0 . . . . . . . . . . . . . . . . . .
cos(y)
3.3.1 Rsultat avec a31 = 0 et =1/3 . . . . . . . . . . . . . . .
3.3.2 Rsultat avec a31 = 0 et =1/2 . . . . . . . . . . . . . . .
3.3.3 Rsultat avec a31 = 0 et = valeur optimale . . . . . . . .
3.3.4 Rsultat avec a31 6= 0 et = 1 , = 2/3 . . . . . . . . . .
3.3.5 Rsultat avec a31 6= 0 et = 1/6 , = 1/2 . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

11
12
12
12
13
14
15
16
16
17
18
19
20
21
21
22
22
23
24

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Conclusion

25

A Code Source
A.1 rk3.f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 fonctions.f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

-1-

27
27
35

Chapitre 1

Introduction
Le projet qui nous a t confi est dtudier les mthodes Runge-Kutta dordre 3.
Dans une premire partie, nous allons prsenter les mthodes de Runge-Kutta dordre 3. Nous essaierons de dterminer les diffrents paramtres qui permettent de minimiser les calculs. Pour cela, on partira
des conditions gnrales de la mthode, puis on effectuera des simplifications qui nous donneront des informations caractristiques sur ces paramtres.
Ensuite, dans une seconde partie, on comparera entre eux les diffrents rsultats sur une mme quation
diffrentielle. Nous effectuerons ces tudes sur 3 quations diffrentielles diffrentes.
De plus, pour chaque quation , on essaiera de donner les meilleurs paramtres qui correspondent un
minimum du maximum de lerreur.

-2-

Chapitre 2

Principe des mthodes de Runge-Kutta


dordre 3
2.1

Prsentation

Dans ce chapitre, nous allons expliquer et prsenter les diffrentes mthodes de Runge-Kutta dordre
3. Le nombre de mthodes de Runge-Kutta dordre 3 est infini ! En effet suivant les paramtres choisis,
chaque mthode offre des rsultats lgrement diffrents.
Les mthodes de Runge-Kutta sont des mthodes un pas, cest dire de la forme :
yk+1 = yi + hi (xi , yi , hi )
On cherche a rsoudre une quation diffrentielle de la forme :
y 0 (x) = f (x, y(x))
y(x0 ) = y0
o y est une application continue et drivable de [a,b] dans Rn , f une application dfinie et continue sur
[a,b] x Rm dans Rm . La suite des points xk est dfinie telle que a = x0 < x1 < x2 < ... < xn 1 < xn = b.
Dans les mthodes de Runge-Kutta, nous calculons des points intermdiaires pour amliorer la prcision
de la mthode, on note ces points xk,i [xk , xk+1 ] . Ils sont dfinis par :
xk,i = xk + i hk
avec 0 i 1. On calcule galement des yk,i de la manire suivante :
yk,i = yk + hk

r
X

ai,j f (xk,j + yk,j )

j=1

Enfin on abouti au calcul des yk+1 qui sont donns par la relation suivante :
yk+1 = yk + hk

r
X

ci f (xk,i , yk,i )

i=1

On reconnat ici la fonction (xi , yi , hi ) qui est en ralit la fonction f (xk,i , yk,i ).
Il nous reste a dcrire les coefficients ai,j , i et ci . Il existe en fait trois groupes de mthodes :
Mthodes explicites : Ce sont les mthodes o ai,j = 0 j i. Cest dire que tous les yk,i se
calculent partir des termes prcdents yk,j i > j.
-3-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

Mthodes semi-explicites : Ce sont les mthodes o ai,j = 0 j > i. Il existe au moins un m tel
que am,m 6= 0, 1 m r.
Mthodes implicites : (i, j) tel que i > j et ai,j 6= 0.
Dans ce projet, nous utiliserons uniquement les mthodes explicites,
cest dire de la forme ai,j = 0 j i

2.2

Consistance, stabilit des mthodes de Runge-Kutta.

Soient les relations ci dessous :


yk+1 = yi + hi (xi , yi , hi )
X
yi = y + h
af (x + i h, yi )
()
(x, y, h) =

ci f (x + i h, yi )

Celles-ci possdent une forme quivalente souvent plus commode pour la programmation. On pose
kl,i = f (xl,i yl,i )
On obtient :
X
kl,i = f (xl,i , yl + hl
ai,j kl,j ) pour i = 1, ..., r
yl+1 = yl + hl

ci kl,i

On rsout le premier systme ci-dessous de r quations r inconnues kl,i pour i = 1, ..., r.


On en dduit yl+1 .
Pour r-obtenir les systmes :
yk,i = yk + hk

r
X

ai,j f (xk,j + yk,j )

j=1

et
yk+1 = yk + hk

r
X

ci f (xk,i , yk,i )

i=1

il suffit de poser
P:
yl,i = yl + hl Pai,j kl,j .
et (x, y, 0) = ci f (x, yi )
o yi = y dans le systme (**).
On obtient quune Condition Ncessaire et Suffisante pour quune mthode de Runge-Kutta soit
consistante est :
r
X

ci = 1

i=1

On peut galement noter que si cette condition est remplie , la mthode est alors dordre 1 au moins.
On peut ajouter un thorme important notre prsentation.
Thorme :
Si hi L(p(|A|) < 1, o L est la constante de Lipschitz de f, alors le schma de Runge-Kutta admet une
solution unique.
De plus si h L(p(|A|) < 1, alors le schma de Runge-Kutta est stable pour tout h tel que 0 < h < h*.
Si la fonction f(x,y) est k fois continment drivable sur [a,b] R, alors la fonction (x, y, h) est aussi
k fois continment diffrentiable sur [a,b] R [0, h].

-4-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

Dans notre projet nous avons dj indiqu que nous nous occuperons uniquement des mthodes explicites. Nous pouvons donc observer ce cas prcis :
Cas dune mthode explicite :
La matrice A est strictement triangulaire infrieure et donc :
p(|A|)=0 stable h : toutes les mthodes explicites sont stables thoriquement donc convergentes.
Il reste examiner le problme le plus dlicat qui est celui de lordre des mthodes de Runge-Kutta.

2.3

Ordre 1 et 2 des mthodes de Runge-Kutta.

Afin de condenser lcriture des relations, nous adoptons les notations suivantes : le produit x.y=z entre
les vecteurs deRr donne un vecteur de Rr ; on a zi = xi yi pour i=1,....,r. Le produit x.x est aussi not x.2 .
Plus gnralement x.k = (x(k1) ).x.Nous rappelons que e est le vecteur de Rr de composantes toutes
gales 1.
Notre projet consiste tudier les mthodes de Runge-Kutta dordre 3. Nous savons quune des conditions pour que cette mthode soit dordre 3 est quelle remplisse dj les conditions ncessaires et suffisantes de la mme mthode dordre 1 et 2.
Conditions Ncessaires et Suffisantes pour avoir lordre p :
dj
1
(x, y(x), h)|h=0 =
f (j) (x, y(x))
j
dh
j+1

2.3.1

2.3.2

j = 0 , ..., p 1

Conditions pour quune mthode de Runge Kutta soit dordre 1.


p

Conditions A(p)

cT e= 1

Conditions pour quune mthode de Runge-Kutta soit dordre 2.


p
Conditions A(p)
1
cT e = 1
2
cT e = cT Ae = 1/2

-5-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

2.4
2.4.1

Les mthodes de Runge-Kutta dordre 3.


Conditions pour quune mthode de Runge-Kutta soit dordre 3
p
Conditions A(p)
1
cT e = 1
2
cT e = cT Ae = 1/2
3
cT 2 e = cT Ae = cT (Ae).2 = 1/3
cT Ae = cT A2 e = 1/6

2.4.2

Calcul des conditions pour quune mthode soit dordre 3

Nous allons exprimer les conditions pour quune mthode de Runge-Kutta dordre 3 fonctionne. On
prendra :

= a2,1
a3,1

0
=
0

donc on obtient Ae =

0
a2,1
a3,1 + a3,2

0
0
a3,2

0
0
0

0 0
2 0 et
0 3

1
e= 1
1

c1
c = c2
c3

12
de mme en calculant on a 2 e = 22 et (Ae).2 =
32

a22,1
(a3,1 + a3,2 )2

On utilise les relations des tableaux de conditions et on obtient les conditions suivantes en fonction des
paramtres.

Conditions pour lordre 1 :


c1 + c2 + c3 = 1
Conditions pour lordre 2 :
(
c1 1 + c2 2 + c3 3 = 1/2
c2 a2,1 + c3 (a3,1 + a3,2 ) = 1/2
Conditions pour lordre 3 :
-6-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

c1 12 + c2 22 + c3 32 = 1/3

c2 2 a2,1 + c3 3 (a3,1 + a3,2 ) = 1/3


c2 a22,1 + c3 (a3,1 + a3,2 )2 = 1/3

c2 1 a2,1 + c3 1 a3,1 + c3 2 a3,2 = 1/6

c a a = 1/6
3 3,2 2,1
On obtient donc un systme 8 quations et 9 inconnues.
Le premier tableau caractrisant la mthode de Runge-Kutta est donc le suivant :
1
2
3

0
0
0
a2,1
0
0
a3,1 a3,2 0
c1 c2 c3

Cas des mthodes explicites :


Dans le cas des mthodes explicites, on peut faire une premire simplification du systme :
Ae = e
ce qui implique que : 1 = 0, 2 = a2,1 , 3 = a3,1 + a3,2 . On obtient alors le systme suivant :

c1 + c2 + c3 = 1

c + c = 1/2
2 2
3 3
2
2

c
+
c
2 2
3 3 = 1/3

c3 a3,2 2 = 1/6
On obtient alors un systme de 4 quations 6 inconnues.
Le tableau caractrisant la mthode est alors :
0
2
3

2.4.2.1

0
0
2
0
3 a3,2 a3,2
c1 c2 c3

Calcul des paramtres avec a3,1 = 0 :

On choisit alors de prendre a3,1 = 0.


Cela implique que 3 = a3,2 :

c1 + c2 + c3 = 1

c + c = 1/2
2 2
3 3
2
2

+
c
2 2
3 3 = 1/3

c3 3 2 = 1/6
On obtient un systme 4 quations et 5 inconnues.
Le tableau caractristique de la mthode :
0
2
3

0 0 0
2 0 0
0 3 0
c1 c2 c3
-7-

0
0
0

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

Nous devons essayer de continuer simplifier le systme pour obtenir un cot de calcul optimal.
Comme nous avons un systme de 4 quations 5 inconnues, nous pouvons choisir arbitrairement un
paramtre pour rsoudre le problme. Comme dans le cours, nous choisirons 2 = .
Le tableau caractrisant la mthode devient alors :
0

0 0 0
0 0
0 3 0
c1 c2 c3

Le systme est alors suivant : Le but alors est dexprimer les paramtres c1 , c2 , c3 , et 3 en fonction de
.

c1 + c2 + c3 = 1

c + c + c = 1/2
1 1
2
3 3
2
2

c2 + c3 3 = 1/3

c3 3 = 1/6

c1

c2

c2

c3

=
=
=
=

1
1
)( 12 6
)
(1 6
3

1
1
( 2 6 )

3
)
( 13 6
2
1
63

donc aprs calcul nous obtenons les expressions suivantes pour chaque paramtre :

c1

c2

c3

=
=
=

3(1)(62 3+1)1
18(1)
31
2
6
1
18(2 )

= 3(1 )

Pour rsoudre le systme et trouver des valeurs aux diffrents paramtres, il suffit de fixer .On recherche donc de manire rduire les cots de calculs. Il est donc prfrable davoir des paramtres
gaux 1 ou 0. Nous avons fait les calculs et bous obtenons ces rsultats :
On peut par exemple fixer :
= 1/3 :
c2 = 0
c1 = 1/4

c3 = 3/4
et

3 = 2/3

= 1/2 :
c2 = 1/3
c1 = 2/9

2+2
3 ou

22
3

c3 = 4/9
et

3/2 ( 2 + 1)

c2 =
( 2 + 2)2

3 = 3/4

3 ( 2 1)
c3 =
4

2
c1 = 1 et 3 =
3
-8-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

et

3 ( 2 + 1)
c3 =
4

2
c1 = 1 et 3 =
3

3/2 ( 2 1)

c2 =
( 2 2)2

= 0, 936679 ou = 0, 277249 ou = 0, 213928 :


c2 = 0, 936679
c3 = 1
c1 = 0, 343834 et 3 = 0, 177934
ou
c2 = 0, 364814

c3 = 1

c1 = 0, 364817 et 3 = 0, 60146
ou
c2 = 5, 97901

c3 = 1

c1 = 5, 97901 et 3 = 0, 77908

On obtient donc diffrentes valeurs pour les paramtres en fonction de la valeur de. Reste savoir
quels sont les effets du choix arbitraire de la valeur de sur la solution.
2.4.2.2

Calcul des paramtres avec a3,1 6= 0 :

Dans la 1re partie, on a considr que a3,1 tait nul.


Pour tudier le cas plus gnral, on prend a3,1 diffrent de zro.
On veut montrer que le choix arbitraire des paramtres est important pour conomiser les cots de
calculs. Nous allons fixer diffrents paramtres et nous allons voir que selon les choix faits , les cots de
calcul pour trouver les solutions du systme ne sont pas les mmes :
1er choix de paramtre : 2 = et 3 =
Comme nous lavons dit prcdemment, nous avons choisis dtudier le cas o a3,1 tait diffrent de 0.
Nous partons donc du systme de 4 quations 6 inconnues obtenu auparavant. On fixe 2 = et 3 = .
on a le systme suivant :

c1 + c2 + c3 = 1

c + c = 1/2
2
3
c2 2 + c3 2 = 1/3

c3 a3,2 = 1/6
et le tableau caractristique :
-9-

II. PRINCIPE DES MTHODES DE RUNGE-KUTTA DORDRE 3

0
0

0
a3,2 a3,2
c1 c2 c3

0
0
0

On cherche c1 , c2 , c3 , et a3,2 . On obtient aprs rsolution du systme :

c1 = 1 2
32

c = 1 + 32
2
2
6()
32
c3 = 6()

a = ()
3,2

(32)

Le cot de calcul pour obtenir ces relations est raisonnable :


Il faut maintenant fixer les paramtres et afin de minimiser les calculs :
Si alpha + beta = 2/3 c1 = 1 .
Si beta = 2/3 c2 = 0.
Le nombre doprations est encore abaiss lorsque lon choisit ces valeurs pour ces paramtres.
2me choix de paramtre :2 = et a3,2 = :
Nous choisissons de prendre a3,2 quelconque pour rsoudre le systme. On a donc le systme suivant :

c1 + c2 + c3 = 1

c + c = 1/2
2
3 3
2

c2 + c3 32 = 1/3

c3 = 1/6
et le tableau caractristique :
0

0
0 0

0 0
3 0
c1 c2 c3

On voit tout de suite que si lon cherche rsoudre le systme de cette manire, on va devoir manipuler
des termes de degr 2 ( dans ce cas prcis :les 2 et donc calculer des dterminants pour exprimer chacun
des coefficients) . On voit donc que cette mthode est bien plus coteuse en nombre doprations que la
prcdente.
Le choix arbitraire doit donc tre fait de manire optimale pour minimiser les calculs au maximum. Dans
ce cas de la mthode de Runge-Kutta dordre 3, le choix de fixer a3,2 nest pas optimal. Il vaudrait mieux
prfrer fixer par exemple 3 comme on la vu dans lexemple prcdent.

- 10 -

Chapitre 3

Comparaison des rsultats


Dans tout ce chapitre, nous allons prendre le pas, h gal a 0.1 ( nombre de points calculs : 10 ) puis
0,01 ( nombre de points calculs : 100 ). Les paramtres fixs seront 2 = et 3 = .
Nous avons choisi dtudier 3 cas dquations diffrentielles :
une quation diffrentielle avec une solution polynomiale.
une quation diffrentielle avec une solution exponentielle.
une quation diffrentielle avec une solution trigonomtrique.
Nous avions tout dabord dcid de reprsenter les rsultats de nos 3 exemples sous forme de courbe
laide du logiciel gnuplot. Il sest avr que cette mthode ntait pas trs efficace car nous ne pouvions pas
rellement interprter les rsultats. Nous afficherons donc les tableaux des solutions calcules pour diffrentes valeurs de x ainsi que la valeur exacte. A chaque fois, et pour chaque tude, on affichera galement
le minimum du maximum de lerreur pour voir la prcision de la mthode.
On modifiera galement le pas pour chaque quation afin de montrer limportance de celui-ci dans la
mthode.
Nous avons galement tudier les mthodes en fonction des paramtres choisis et de leur valeur. Nous
tudierons donc les diffrentes quations avec plusieurs paramtres fixs pour trouver une mthode optimale. Les seront pris tels que = 1/2, = 1/3 ( valeurs obtenues dans le chapitre 2 pour avoir un cot
de calcul rduit ) et = choisi pour avoir une solution optimale. On calculera donc aussi la mthode
avec a32 = 0 ou a32 choisi arbitrairement ( nous prendrons aussi comme valeurs les et obtenues dans
le chapitre prcdent ).

- 11 -

III. COMPARAISON DES RSULTATS

3.1 U ne quation de Riccati : f (x, y(x)) = 2y 2 + x(2x + 3)y x :


La solution de cette quation est y(x) =

3.1.1

Rsultat avec a3,1 = 0 :

3.1.1.1

= 1/3 :

1
2x+3 .

Nous choisissons de fixer = 1/3 pour cette premire tude.


h = 0.1 :
x

y calcule

y exacte

erreur relative

0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9

0.3124978102743626E+00
0.2941145598888397E+00
0.2777743354439736E+00
0.2631541732698679E+00
0.2499957516789436E+00
0.2380899218842387E+00
0.2272654391825199E+00
0.2173805683851242E+00
0.2083166455850005E+00

0.3125000000000000E+00
0.2941176593303680E+00
0.2777777910232544E+00
0.2631579041481018E+00
0.2500000000000000E+00
0.2380952388048172E+00
0.2272727340459824E+00
0.2173912972211838E+00
0.2083333283662796E+00

0.2189725637424811E-05
0.3099441528320312E-05
0.3455579280831067E-05
0.3730878233909607E-05
0.4248321056360416E-05
0.5316920578479767E-05
0.7294863462459222E-05
0.1072883605957031E-04
0.1668278127908707E-04

1.0

0.1999728638678789E+00

0.2000000029802322E+00

0.2713911235333044E-04

On peut remarquer que les rsultats sont trs bons . En effet lerreur relative est de lordre de 105 , ce
qui est dj trs prcis . Prenons maintenant un pas 10 fois plus petit.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.3125000069662929E+00

exact : 0.3125000000000000E+00

erreur : 0.6966292875887348E-08

x : 0.2

y : 0.2941176524758339E+00

exact : 0.2941176593303680E+00

erreur : 0.6854534162492598E-08

x : 0.3

y : 0.2777777824923397E+00

exact : 0.2777777910232544E+00

erreur : 0.8530914696880387E-08

x : 0.4

y : 0.2631578994169833E+00

exact : 0.2631579041481018E+00

erreur : 0.4731118552481206E-08

x : 0.5

y : 0.2500000049546363E+00

exact : 0.2500000000000000E+00

erreur : 0.4954636312337612E-08

x : 0.6

y : 0.2380952432006600E+00

exact : 0.2380952388048172E+00

erreur : 0.4395842773119440E-08

x : 0.7

y : 0.2272727325186136E+00

exact : 0.2272727340459824E+00

erreur : 0.1527368787002104E-08

x : 0.8

y : 0.2173913095332684E+00

exact : 0.2173912972211838E+00

erreur : 0.1231208465735101E-07

x : 0.9

y : 0.2083333382010462E+00

exact : 0.2083333283662796E+00

erreur : 0.9834766612204504E-08

x : 1.0

y : 0.2000000040419402E+00

exact : 0.2000000029802322E+00

erreur : 0.1061707999294725E-08

On voit que les rsultats sont encore meilleurs. On obtient une prcision de lordre de 108 , ce qui est
vraiment trs bon. Abaisser le pas nous permet vraiment davoir des solutions trs proches des solutions
exactes. On peut remarquer quon a gagn en moyenne 3 chiffres significatifs par rapport ltude avec le
pas prcdent . Il faudra vrifier avec les autres quations si on obtient le mme phnomne.
Prenons maintenant une autre valeur pour , et voyons si les rsultats diffrent significativement.

- 12 -

III. COMPARAISON DES RSULTATS

= 1/2 :

3.1.1.2

Nous ne prendrons que la valeur h = 0.1 pour tudier ce cas car il est sensiblement similaire au prcdent.
X
x : 0.1

Ycalcul
y : 0.3124995428654883E+00

Yexacte
exact : 0.3125000000000000E+00

Erreur relative
erreur : 0.4571345117443393E-06

x : 0.2

y : 0.2941176099909676E+00

exact : 0.2941176593303680E+00

x : 0.3

y : 0.2777784297863642E+00

exact : 0.2777777910232544E+00

erreur : 0.6387631098503377E-06

erreur : 0.4933940039864027E-07

x : 0.4

y : 0.2631591510441568E+00

exact : 0.2631579041481018E+00

erreur : 0.1246896055018265E-05

x : 0.5

y : 0.2500015520387226E+00

exact : 0.2500000000000000E+00

erreur : 0.1552038722596460E-05

x : 0.6

y : 0.2380965939826436E+00

exact : 0.2380952388048172E+00

erreur : 0.1355177826373177E-05

x : 0.7

y : 0.2272731761965487E+00

exact : 0.2272727340459824E+00

erreur : 0.4421505663265712E-06

x : 0.8

y : 0.2173897870712810E+00

exact : 0.2173912972211838E+00

erreur : 0.1510149902766988E-05

x : 0.9

y : 0.2083281530274285E+00

exact : 0.2083333283662796E+00

erreur : 0.5175338851082234E-05

x : 1.0

y : 0.1999882042407989E+00

exact : 0.2000000029802322E+00

erreur : 0.1179873943329968E-04

On voit facilement que lon obtient quasiment les mmes rsultats quavec = 1/3. Ils sont tout
de mme plus prcis car on gagne parfois 2 chiffres significatifs pour la solution. On peut tout de mme
supposer que la mthode est trs stable. Il en est de mme si on fait ltude avec le pas h = 0.01.

- 13 -

III. COMPARAISON DES RSULTATS

3.1.1.3

= 0.58 :

Nous avons recherch la valeur de pour laquelle les rsultats semblaient optimaux. Nous avons obtenu le rsultat suivant : = 0.58 qui nous permet dobtenir des rsultats encore plus prcis :
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.3124995305163064E+00

exact : 0.3125000000000000E+00

erreur : 0.4694836935881241E-06

x : 0.2

y : 0.2941175410411598E+00

exact : 0.2941176593303680E+00

erreur : 0.1182892082063347E-06

x : 0.3

y : 0.2777782350552249E+00

exact : 0.2777777910232544E+00

erreur : 0.4440319704701601E-06

x : 0.4

y : 0.2631587326233972E+00

exact : 0.2631579041481018E+00

erreur : 0.8284752953668928E-06

x : 0.5

y : 0.2500007710533829E+00

exact : 0.2500000000000000E+00

erreur : 0.7710533828642063E-06

x : 0.6

y : 0.2380952473068135E+00

exact : 0.2380952388048172E+00

erreur : 0.8501996273668766E-08

x : 0.7

y : 0.2272709527098229E+00

exact : 0.2272727340459824E+00

erreur : 0.1781336159439872E-05

x : 0.8

y : 0.2173861827401459E+00

exact : 0.2173912972211838E+00

erreur : 0.5114481037876706E-05

x : 0.9

y : 0.2083223011960885E+00

exact : 0.2083333283662796E+00

erreur : 0.1102717019105248E-04

x : 1.0

y : 0.1999785307735492E+00

exact : 0.2000000029802322E+00

erreur : 0.2147220668305416E-04

On voit que lon obtient des rsultats encore meilleur quavec les anciennes valeurs de . Cela est trs
intressant car cela nous montre que la prcision de la solution dpend du paramtre. Voyons si les rsultats
avec un pas plus petit sont aussi plus prcis.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.3125000082162786E+00

exact : 0.3125000000000000E+00

erreur : 0.8216278601924643E-08

x : 0.2

y : 0.2941176547982537E+00

exact : 0.2941176593303680E+00

erreur : 0.4532114350475069E-08

x : 0.3

y : 0.2777777857755464E+00

exact : 0.2777777910232544E+00

erreur : 0.5247707990374550E-08

x : 0.4

y : 0.2631579033656606E+00

exact : 0.2631579041481018E+00

x : 0.5

y : 0.2500000092750592E+00

exact : 0.2500000000000000E+00

erreur : 0.9275059165148036E-08

erreur : 0.7824411674128839E-09

x : 0.6

y : 0.2380952478548415E+00

exact : 0.2380952388048172E+00

erreur : 0.9050024285528480E-08

x : 0.7

y : 0.2272727373782156E+00

exact : 0.2272727340459824E+00

erreur : 0.3332233267094864E-08

x : 0.8

y : 0.2173913144133755E+00

exact : 0.2173912972211838E+00

erreur : 0.1719219172580111E-07

x : 0.9

y : 0.2083333428507370E+00

exact : 0.2083333283662796E+00

erreur : 0.1448445735574566E-07

x : 1.0

y : 0.2008032211527360E+00

exact : 0.2008032202720642E+00

erreur : 0.8806718132525759E-09

Les rsultats sont bien videmment encore plus prcis que prcdemment. La prcision est de lordre
de 108 On peut vraiment penser que cette valeur de est optimale car nous avons essay dautres valeurs
et nous navons jamais trouv de solutions qui se rapprochaient autant de la solution exacte.

- 14 -

III. COMPARAISON DES RSULTATS

3.1.2

Rsultat avec a3,1 6= 0 et = 1 et = 2/3 :

On va maintenant tudier les quations de Riccati quand a32 6= 0. Il semble intressant de voir si le fait
de fixer deux paramtres permet dobtenir de meilleures solutions . Nous avons choisi les valeurs des paramtres et en fonction du chapitre 1 ( cest dire pour optimiser les cots de calculs ). Nous obtenons
les rsultats suivants :
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.3124996844679117E+00

exact : 0.3125000000000000E+00

erreur : 0.3155320882908264E-06

x : 0.2

y : 0.2941175036132336E+00

exact : 0.2941176593303680E+00

erreur : 0.1557171344646058E-06

x : 0.3

y : 0.2777775712311268E+00

exact : 0.2777777910232544E+00

erreur : 0.2197921276092529E-06

x : 0.4

y : 0.2631568800657987E+00

exact : 0.2631579041481018E+00

erreur : 0.1024082303069385E-05

x : 0.5

y : 0.2499969702214002E+00

exact : 0.2500000000000000E+00

erreur : 0.3029778599755728E-05

x : 0.6

y : 0.2380884110927582E+00

exact : 0.2380952388048172E+00

erreur : 0.6827712059037649E-05

x : 0.7

y : 0.2272594233974814E+00

exact : 0.2272727340459824E+00

erreur : 0.1331064850093600E-04

x : 0.8

y : 0.2173672746866941E+00

exact : 0.2173912972211838E+00

erreur : 0.2402253448965941E-04

x : 0.9

y : 0.2082914011552930E+00

exact : 0.2083333283662796E+00

erreur : 0.4192721098664198E-04

x : 1.0

y : 0.1999272463843226E+00

exact : 0.2000000029802322E+00

erreur : 0.7275659590963435E-04

On peut tout de suite remarquer que ces rsultats sont presque identiques ceux calculs prcdemment. La mthode semble donc trs stable et le fait de fixer a32 gal ou non zro ne semble pas trs
important pour la solution finale.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.3125000080838800E+00

exact : 0.3125000000000000E+00

erreur : 0.8083879954323692E-08

x : 0.2

y : 0.2941176544129849E+00

exact : 0.2941176593303680E+00

erreur : 0.4917383167324374E-08

x : 0.3

y : 0.2777777847647668E+00

exact : 0.2777777910232544E+00

erreur : 0.6258487561527915E-08

x : 0.4

y : 0.2631579012423756E+00

exact : 0.2631579041481018E+00

erreur : 0.2905726215196580E-08

x : 0.5

y : 0.2500000054389241E+00

exact : 0.2500000000000000E+00

erreur : 0.5438924088885244E-08

x : 0.6

y : 0.2380952412635091E+00

exact : 0.2380952388048172E+00

erreur : 0.2458691861217943E-08

x : 0.7

y : 0.2272727263532582E+00

exact : 0.2272727340459824E+00

erreur : 0.7692724207641888E-08

x : 0.8

y : 0.2173912962898615E+00

exact : 0.2173912972211838E+00

x : 0.9

y : 0.2083333130367103E+00

exact : 0.2083333283662796E+00

erreur : 0.1532956933614216E-07

x : 1.0

y : 0.1999999582022431E+00

exact : 0.2000000029802322E+00

erreur : 0.4477798912216890E-07

erreur : 0.9313223248152980E-09

Avec un pas de 0.01, on obtient les mmes conclusions. Parfois mme il semble que de fixer uniquement
un paramtre soit plus efficace mme si on obtient tout de mme une prcision de 109 pour x = 0.8 La
mthode avec a32 = 0 ne latteint que pour une valeur optimale de .
On voit donc que la mthode de Runge-Kutta est trs approprie pour rsoudre les quations de Riccati.
De plus la mthode est trs stable car mme en changeant les paramtres, les rsultats ne sont pas trs
diffrents et surtout sont toujours trs proches de la solution exacte.

- 15 -

III. COMPARAISON DES RSULTATS

3.2 f (x, y(x)) = (3x2 + 1)y

;
3

La solution de cette quation est y(x) = 5ex

3.2.1

y(0) = 5

Rsultat avec a31 = 0 et =1/3 :

On reprend la mme tude que prcdemment avec les mmes valeurs ( sauf pour les conditions initiales
bien sr ).
Les rsultats obtenus pour les paramtres ci-dessus sont affichs ci-dessous :
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519570505619049E+01

exact : 0.4519665241241455E+01

erreur : 0.9473562240636113E-04

x : 0.2

y : 0.4060877788066864E+01

exact : 0.4061035156250000E+01

erreur : 0.1573681831361640E-03

x : 0.3

y : 0.3605223250389099E+01

exact : 0.3605418682098389E+01

erreur : 0.1954317092898172E-03

x : 0.4

y : 0.3143608689308166E+01

exact : 0.3143817663192749E+01

erreur : 0.2089738845829636E-03

x : 0.5

y : 0.2676110041141510E+01

exact : 0.2676307201385498E+01

erreur : 0.1971602439883036E-03

x : 0.6

y : 0.2210820841789245E+01

exact : 0.2210984468460083E+01

erreur : 0.1636266708375800E-03

x : 0.7

y : 0.1761854648590088E+01

exact : 0.1761979579925537E+01

erreur : 0.1249313354494408E-03

x : 0.8

y : 0.1346294271945953E+01

exact : 0.1346404790878296E+01

erreur : 0.1105189323427069E-03

x : 0.9

y : 0.9804707705974577E+00

exact : 0.9806280136108398E+00

erreur : 0.1572430133821578E-03

x : 1.0

y : 0.6763849198818205E+00

exact : 0.6766763925552368E+00

erreur : 0.2914726734163375E-03

Comme pour les quations de Riccati, la mthode semble trs efficace. On obtient dj 3 chiffres significatifs aprs la virgule par rapport la solution exacte. On peut penser quen augmentant le pas, on
obtiendra les mmes rsultats que dans la partie 1 du chapitre.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519665080308915E+01

exact : 0.4519665241241455E+01

erreur : 0.1609325401830120E-06

x : 0.2

y : 0.4061035047769548E+01

exact : 0.4061035156250000E+01

erreur : 0.1084804521767069E-06

x : 0.3

y : 0.3605418545007707E+01

exact : 0.3605418682098389E+01

erreur : 0.1370906819175843E-06

x : 0.4

y : 0.3143817594051362E+01

exact : 0.3143817663192749E+01

erreur : 0.6914138683811188E-07

x : 0.5

y : 0.2676306968927384E+01

exact : 0.2676307201385498E+01

erreur : 0.2324581136470272E-06

x : 0.6

y : 0.2210984395742417E+01

exact : 0.2210984468460083E+01

erreur : 0.7271766566674387E-07

x : 0.7

y : 0.1761979413032533E+01

exact : 0.1761979579925537E+01

erreur : 0.1668930043052796E-06

x : 0.8

y : 0.1346404653787614E+01

exact : 0.1346404790878296E+01

erreur : 0.1370906821396289E-06

x : 0.9

y : 0.9806278347969065E+00

exact : 0.9806280136108398E+00

erreur : 0.1788139333269712E-06

x : 1.0

y : 0.6766761237382898E+00

exact : 0.6766763925552368E+00

erreur : 0.2688169470355106E-06

On peut tout dabord noter de nouveau que les rsultats sont trs bons. Le maximum de lerreur est de
lordre de 107 . La mthode fonctionne trs bien . On a galement gagner de lordre de 103 par rapport au
pas prcdent. Par contre on peut tout de mme remarquer que la prcision est moins bonne pour ce genre
dquation . (prcision 106 dans ce cas et prcision de 109 dans la premire tude ) .

- 16 -

III. COMPARAISON DES RSULTATS

3.2.2

Rsultat avec a31 = 0 et =1/2

On choisit dtudier lquation en modifiant . On prendra uniquement h = 0,1 pour la mme raison
que lors de ltude la premire quation.
Les rsultats obtenus sont :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519617117775811E+01 exact : 0.4519665241241455E+01 erreur : 0.4812346564442294E-04

x : 0.2

y : 0.4060956017176310E+01

exact : 0.4061035156250000E+01

erreur : 0.7913907368983786E-04

x : 0.3

y : 0.3605321168899536E+01

exact : 0.3605418682098389E+01

erreur : 0.9751319885253906E-04

x : 0.4

y : 0.3143711545732286E+01

exact : 0.3143817663192749E+01

erreur : 0.1061174604628512E-03

x : 0.5

y : 0.2676196098327637E+01

exact : 0.2676307201385498E+01

erreur : 0.1111030578613281E-03

x : 0.6

y : 0.2210860077540080E+01

exact : 0.2210984468460083E+01

erreur : 0.1243909200030480E-03

x : 0.7

y : 0.1761811780929566E+01

exact : 0.1761979579925537E+01

erreur : 0.1677989959714132E-03

x : 0.8

y : 0.1346136622958713E+01

exact : 0.1346404790878296E+01

erreur : 0.2681679195826181E-03

x : 0.9

y : 0.9801792648103503E+00

exact : 0.9806280136108398E+00

erreur : 0.4487488004895068E-03

x : 1.0

y : 0.6759643819597033E+00

exact : 0.6766763925552368E+00

erreur : 0.7120105955334965E-03

On peut nouveau remarquer que les rsultats sont trs bons. Le choix de ne semble pas primordial
car la mthode est nouveau trs stable. les rsultats sont quasi-identiques et la prcision est du mme
ordre. Essayons de trouver un pour lequel les rsultats semble optimaux.

- 17 -

III. COMPARAISON DES RSULTATS

3.2.3

Rsultat avec a32 = 0 et =0.18

Nous avons nouveau recherch une valeur d pour laquelle les rsultats semblaient optimaux. Nous
avons obtenu le rsultat suivant : = 0.18 nous permet dobtenir des rsultats encore plus prcis.
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519457830529595E+01

exact : 0.4519665241241455E+01

erreur : 0.2074107118597013E-03

x : 0.2

y : 0.4060679193701091E+01

exact : 0.4061035156250000E+01

erreur : 0.3559625489089058E-03

x : 0.3

y : 0.3604954483073882E+01

exact : 0.3605418682098389E+01

erreur : 0.4641990245066729E-03

x : 0.4

y : 0.3143287056656929E+01

exact : 0.3143817663192749E+01

erreur : 0.5306065358201550E-03

x : 0.5

y : 0.2675764224371731E+01

exact : 0.2676307201385498E+01

erreur : 0.5429770137670431E-03

x : 0.6

y : 0.2210495859223788E+01

exact : 0.2210984468460083E+01

erreur : 0.4886092362950123E-03

x : 0.7

y : 0.1761610113285135E+01

exact : 0.1761979579925537E+01

erreur : 0.3694666404026048E-03

x : 0.8

y : 0.1346193385844428E+01

exact : 0.1346404790878296E+01

erreur : 0.2114050338677398E-03

x : 0.9

y : 0.9805626031459340E+00

exact : 0.9806280136108398E+00

erreur : 0.6541046490582403E-04

x : 1.0

y : 0.6766857009467675E+00

exact : 0.6766763925552368E+00

erreur : 0.9308391530682414E-05

On voit que le rsultat est plus prcis avec = 0.18. Bien sr cette diffrence importe que lorsque on
a besoin de solutions vraiment trs prcises . ( 105 au lieu de 104 au niveau de lordre de la prcision. )
On pourrait penser galement quavec cette valeur, la mthode devient plus prcise puisque quon obtient
la meilleure prcision pour notre dernire valeur de x calcul. En fait, nous avons donc calcul les solutions
pour les x suivants et il se trouve que la prcision natteint pas cet ordre de 105 mais reste bloqu 104 .
Voyons si on obtient aussi une meilleure prcision avec un pas 1 fois plus petit.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519664954878774E+01

exact : 0.4519665241241455E+01

erreur : 0.2863626811233644E-06

x : 0.2

y : 0.4061034830109891E+01

exact : 0.4061035156250000E+01

erreur : 0.3261401086973592E-06

x : 0.3

y : 0.3605418243980091E+01

exact : 0.3605418682098389E+01

erreur : 0.4381182976409548E-06

x : 0.4

y : 0.3143817204639470E+01

exact : 0.3143817663192749E+01

erreur : 0.4585532789036506E-06

x : 0.5

y : 0.2676306569363077E+01

exact : 0.2676307201385498E+01

erreur : 0.6320224210654146E-06

x : 0.6

y : 0.2210983997789656E+01

exact : 0.2210984468460083E+01

erreur : 0.4706704266332906E-06

x : 0.7

y : 0.1761979080473914E+01

exact : 0.1761979579925537E+01

erreur : 0.4994516229483992E-06

x : 0.8

y : 0.1346404468882679E+01

exact : 0.1346404790878296E+01

erreur : 0.3219956170585903E-06

x : 0.9

y : 0.9806278308752605E+00

exact : 0.9806280136108398E+00

erreur : 0.1827355793349028E-06

x : 1.0

y : 0.6766763027850456E+00

exact : 0.6766763925552368E+00
7

erreur : 0.8977019116951368E-07

Nous voyons que lerreur obtenue est de lordre de 10 ce qui est quivalent au rsultat obtenu prcdemment. Nous avons cherch dautre mais avec aucun dentre eux, nous avons obtenu de meilleurs
solutions. On peut donc trouver un paramtre optimale pour la mthode. La diffrence de prcision est tout
de mme consquente lorsque lon veut des rsultats trs prcis.

- 18 -

III. COMPARAISON DES RSULTATS

3.2.4

Rsultat avec a31 6= 0 et = 1 , = 2/3

tudions le cas o a31 nest pas nul pour voir si lon obtient des rsultats plus pertinents. Nous avons
choisi et de la mme manire quauparavant .
On obtient les rsultats suivants pour a31 6= 0 et = 1 , = 2/3 :
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519716882705689E+01

exact : 0.4519665241241455E+01

erreur : 0.5164146423375371E-04

x : 0.2

y : 0.4061116492748261E+01

exact : 0.4061035156250000E+01

erreur : 0.8133649826103095E-04

x : 0.3

y : 0.3605501294136048E+01

exact : 0.3605418682098389E+01

erreur : 0.8261203765913550E-04

x : 0.4

y : 0.3143862700462342E+01

exact : 0.3143817663192749E+01

erreur : 0.4503726959281806E-04

x : 0.5

y : 0.2676260197162629E+01

exact : 0.2676307201385498E+01

erreur : 0.4700422286951778E-04

x : 0.6

y : 0.2210772669315339E+01

exact : 0.2210984468460083E+01

erreur : 0.2117991447443401E-03

x : 0.7

y : 0.1761511325836182E+01

exact : 0.1761979579925537E+01

erreur : 0.4682540893550247E-03

x : 0.8

y : 0.1345579683780671E+01

exact : 0.1346404790878296E+01

erreur : 0.8251070976252883E-03

x : 0.9

y : 0.9793577194213872E+00

exact : 0.9806280136108398E+00

erreur : 0.1270294189452681E-02

x : 1.0

y : 0.6749178826808934E+00

exact : 0.6766763925552368E+00

erreur : 0.1758509874343450E-02

Les rsultats semblent un tout petit peu moins prcis : on a des prcisions de lordre de 102 qui apparaissent.
h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519665217399598E+01

exact : 0.4519665241241455E+01

x : 0.2

y : 0.4061035268306733E+01

exact : 0.4061035156250000E+01

erreur : 0.1120567327816957E-06

x : 0.3

y : 0.3605418796539307E+01

exact : 0.3605418682098389E+01

erreur : 0.1144409180753314E-06

x : 0.4

y : 0.3143817812204361E+01

exact : 0.3143817663192749E+01

erreur : 0.1490116119384766E-06

x : 0.5

y : 0.2676307090520859E+01

exact : 0.2676307201385498E+01

erreur : 0.1108646388026102E-06

x : 0.6

y : 0.2210984344482423E+01

exact : 0.2210984468460083E+01

erreur : 0.1239776601380527E-06

x : 0.7

y : 0.1761979107856751E+01

exact : 0.1761979579925537E+01

erreur : 0.4720687858394967E-06

x : 0.8

y : 0.1346404045224190E+01

exact : 0.1346404790878296E+01

erreur : 0.7456541055717025E-06

x : 0.9

y : 0.9806269234418873E+00

exact : 0.9806280136108398E+00

erreur : 0.1090168952555537E-05

x : 1.0

y : 0.6766749721765521E+00

exact : 0.6766763925552368E+00

erreur : 0.1420378684668933E-05

erreur : 0.2384185737724920E-07

La prcision de lordre de 10 . Les rsultats sont donc quasi similaires ceux obtenus lorsque lon
avait fix a31 = 0. Malgr tout , si lon veut tre rigoureux, on peut noter que la premire mthode semble
un peu plus efficace. En fait il savre difficile de trouver deux paramtres qui rsolvent le systme de faon
optimale. Que se passerait -il si on trouvait ce couple ?

- 19 -

III. COMPARAISON DES RSULTATS

3.2.5

Rsultat avec a31 6= 0 et = 1/6 , = 1/2

Changeons notre et notre . Nous obtenons les rsultat suivants :


h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519472551345825E+01

exact : 0.4519665241241455E+01

erreur : 0.1926898956297052E-03

x : 0.2

y : 0.4060706281661988E+01

exact : 0.4061035156250000E+01

erreur : 0.3288745880123400E-03

x : 0.3

y : 0.3604994249343872E+01

exact : 0.3605418682098389E+01

erreur : 0.4244327545164239E-03

x : 0.4

y : 0.3143340134620667E+01

exact : 0.3143817663192749E+01

erreur : 0.4775285720821643E-03

x : 0.5

y : 0.2675829672813416E+01

exact : 0.2676307201385498E+01

erreur : 0.4775285720821643E-03

x : 0.6

y : 0.2210569906234741E+01

exact : 0.2210984468460083E+01

erreur : 0.4145622253415304E-03

x : 0.7

y : 0.1761685466766358E+01

exact : 0.1761979579925537E+01

erreur : 0.2941131591793766E-03

x : 0.8

y : 0.1346260452270508E+01

exact : 0.1346404790878296E+01

erreur : 0.1443386077877307E-03

x : 0.9

y : 0.9806117057800297E+00

exact : 0.9806280136108398E+00

erreur : 0.1630783081019160E-04

x : 1.0

y : 0.6767100334167484E+00

exact : 0.6766763925552368E+00

erreur : 0.3364086151158574E-04

h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.4519664998054505E+01

exact : 0.4519665241241455E+01

erreur : 0.2431869496888339E-06

x : 0.2

y : 0.4061034893989563E+01

exact : 0.4061035156250000E+01

erreur : 0.2622604373669901E-06

x : 0.3

y : 0.3605418331623078E+01

exact : 0.3605418682098389E+01

erreur : 0.3504753109950798E-06

x : 0.4

y : 0.3143817327022553E+01

exact : 0.3143817663192749E+01

erreur : 0.3361701961246411E-06

x : 0.5

y : 0.2676306719779969E+01

exact : 0.2676307201385498E+01

erreur : 0.4816055292344856E-06

x : 0.6

y : 0.2210984187126161E+01

exact : 0.2210984468460083E+01

erreur : 0.2813339219365218E-06

x : 0.7

y : 0.1761979296207429E+01

exact : 0.1761979579925537E+01

erreur : 0.2837181081183360E-06

x : 0.8

y : 0.1346404659748079E+01

exact : 0.1346404790878296E+01

erreur : 0.1311302173512274E-06

x : 0.9

y : 0.9806279885768900E+00

exact : 0.9806280136108398E+00

erreur : 0.2503394980202245E-07

x : 1.0

y : 0.6766764223575602E+00

exact : 0.6766763925552368E+00

erreur : 0.2980232338689603E-07

On a limpression que les rsultats sont un peu meilleurs quavec les premires valeurs de et . Il
atteint pas la prcision de la mthode o lon avait notre optimal. Peut-tre est-il alors mieux de fixer 2
paramtres.
On a pu remarquer que la mthode de Runge-Kutta dordre 3 fonctionnait galement trs bien avec
les quations qui ont des solutions de la forme exponentielle. On peut tout de mme constater que la
prcision, mme si elle est trs bonne, nest pas du mme ordre que dans la premire tude. Concernant
les paramtres, on voit que lon peut nouveau trouver un optimal, mais la mthode reste vraiment trs
stable et la diffrence ne se peroit que sur des tudes o on a besoin dune trs grande prcision.

- 20 -

III. COMPARAISON DES RSULTATS

3.3 f (x, y(x)) =

tan(x)
cos(y)

y(0) = 0

La solution de cette quation est y(x) = arcsin( ln(| cos(x)|)).


Notre dernire tude concerne une quation diffrentielle avec une solution trigonomtrique. Nous
garderons le mme axe dtude, donc les mmes valeurs pour ltudier.

3.3.1

Rsultat avec a31 = 0 et =1/3

Les premiers rsultats nous sont donns :


h = 0.1 :
X

Ycalcul

Yexacte
exact : 0.5008376669138670E-02

Erreur relative

x : 0.1

y : 0.5007432773709297E-02

erreur : 0.9438954293727875E-06

x : 0.2

y : 0.2013410013169050E-01

exact : 0.2013613469898701E-01

erreur : 0.2034567296502893E-05

x : 0.3

y : 0.4570410829037428E-01

exact : 0.4570756852626801E-01

erreur : 0.3460235893724961E-05

x : 0.4

y : 0.8231644686311483E-01

exact : 0.8232197165489197E-01

erreur : 0.5524791777136717E-05

x : 0.5

y : 0.1309494895860553E+00

exact : 0.1309582442045212E+00

erreur : 0.8754618465889319E-05

x : 0.6

y : 0.1931499121710658E+00

exact : 0.1931641697883606E+00

erreur : 0.1425761729476061E-04

x : 0.7

y : 0.2713809160515666E+00

exact : 0.2714055180549622E+00

erreur : 0.2460200339554630E-04

x : 0.8

y : 0.3697123197838664E+00

exact : 0.3697590231895447E+00

erreur : 0.4670340567825004E-04

x : 0.9

y : 0.4953630177304149E+00

exact : 0.4954668879508972E+00

erreur : 0.1038702204823050E-03

x : 1.0

y : 0.6628745434805752E+00

exact : 0.6631807088851929E+00

erreur : 0.3061654046176976E-03

h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.5008375600446016E-02

exact : 0.5008376669138670E-02

erreur : 0.1068692654336567E-08

x : 0.2

y : 0.2013613176764921E-01

exact : 0.2013613469898701E-01

erreur : 0.2931337800965439E-08

x : 0.3

y : 0.4570756615372375E-01

exact : 0.4570756852626801E-01

erreur : 0.2372544258277820E-08

x : 0.4

y : 0.8232196354540065E-01

exact : 0.8232197165489197E-01

erreur : 0.8109491314578499E-08

x : 0.5

y : 0.1309582345304079E+00

exact : 0.1309582442045212E+00

erreur : 0.9674113232716053E-08

x : 0.6

y : 0.1931641520676203E+00

exact : 0.1931641697883606E+00

erreur : 0.1772074029182669E-07

x : 0.7

y : 0.2714054799196310E+00

exact : 0.2714055180549622E+00

erreur : 0.3813533111518552E-07

x : 0.8

y : 0.3697589679178782E+00

exact : 0.3697590231895447E+00

erreur : 0.5527166652141702E-07

x : 0.9

y : 0.4954667721805162E+00

exact : 0.4954668879508972E+00

erreur : 0.1157703810039656E-06

x : 1.0

y : 0.6631803383049554E+00

exact : 0.6631807088851929E+00

erreur : 0.3705802374964762E-06

Comme toujours les rsultats sont trs bons . On peut remarquer que la prcision diminue au fur et
mesure que les x augmentent .
Malgr tout la prcision est trs bonne ( de lordre de 106 ).

- 21 -

III. COMPARAISON DES RSULTATS

3.3.2

Rsultat avec a31 = 0 et =1/2

Les nouveaux rsultats correspondant aux paramtres et un pas correspondant h = 0,01 nous sont
donns :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.5008375839226776E-02

exact : 0.5008376669138670E-02

erreur : 0.8299118944149475E-09

x : 0.2

y : 0.2013613225271304E-01

exact : 0.2013613469898701E-01

erreur : 0.2446273964645806E-08

x : 0.3

y : 0.4570756728036536E-01

exact : 0.4570756852626801E-01

erreur : 0.1245902644941843E-08

x : 0.4

y : 0.8232196567373144E-01

exact : 0.8232197165489197E-01

x : 0.5

y : 0.1309582383227017E+00

exact : 0.1309582442045212E+00

erreur : 0.5881819448161352E-08

x : 0.6

y : 0.1931641586083505E+00

exact : 0.1931641697883606E+00

erreur : 0.1118001005662173E-07

x : 0.7

y : 0.2714054913777444E+00

exact : 0.2714055180549622E+00

erreur : 0.2667721771265619E-07

x : 0.8

y : 0.3697589921413196E+00

exact : 0.3697590231895447E+00

erreur : 0.3104822504651494E-07

x : 0.9

y : 0.4954668329283595E+00

exact : 0.4954668879508972E+00

erreur : 0.5502253769273935E-07

x : 1.0

y : 0.6631805375673705E+00

exact : 0.6631807088851929E+00

erreur : 0.1713178223727851E-06

erreur : 0.5981160525192486E-08

Les rsultats sont meilleurs car on obtient un moment une prcision de lordre de 109 , ce qui ntait
pas le cas auparavant. La mthode est toujours trs stable tout de mme.

3.3.3

Rsultat avec a31 = 0 et = valeur optimale

Comme pour la premire et deuxime quation, nous cherchons la valeur optimale de :


Il se trouve quaprs avoir tudi lquation avec de nombreuses valeurs de , nous navons pas trouver
de meilleur rsultat que dans ltude o valait 1/2 . Cela est trs intressant car on a alors une valeur
optimale de pour un cot de calcul rduit . On peut donc avoir une rsolution optimale en cot de
calcul, donc en temps et en prcision.

- 22 -

III. COMPARAISON DES RSULTATS

3.3.4

Rsultat avec a31 6= 0 et = 1 , = 2/3

tudions le cas o a31 6= 0 et voyons si les rsultats obtenus sont plus prcis.
h = 0.1 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.5007432773709297E-02

exact : 0.5008376669138670E-02

erreur : 0.9438954293727875E-06

x : 0.2

y : 0.2013410460203886E-01

exact : 0.2013613469898701E-01

erreur : 0.2030096948147514E-05

x : 0.3

y : 0.4570414405316114E-01

exact : 0.4570756852626801E-01

erreur : 0.3424473106861115E-05

x : 0.4

y : 0.8231661226600409E-01

exact : 0.8232197165489197E-01

erreur : 0.5359388887876682E-05

x : 0.5

y : 0.1309500975534320E+00

exact : 0.1309582442045212E+00

erreur : 0.8146651089196988E-05

x : 0.6

y : 0.1931518344208598E+00

exact : 0.1931641697883606E+00

erreur : 0.1233536750078201E-04

x : 0.7

y : 0.2713866172358393E+00

exact : 0.2714055180549622E+00

erreur : 0.1890081912281349E-04

x : 0.8

y : 0.3697292042896151E+00

exact : 0.3697590231895447E+00

erreur : 0.2981889992953457E-04

x : 0.9

y : 0.4954166574403643E+00

exact : 0.4954668879508972E+00

erreur : 0.5023051053287819E-04

x : 1.0

y : 0.6630805594846606E+00

exact : 0.6631807088851929E+00

erreur : 0.1001494005322678E-03

h = 0.01 :
X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.5008375600446016E-02

exact : 0.5008376669138670E-02

erreur : 0.1068692654336567E-08

x : 0.2

y : 0.2013613176764921E-01

exact : 0.2013613469898701E-01

erreur : 0.2931337800965439E-08

x : 0.3

y : 0.4570756615372375E-01

exact : 0.4570756852626801E-01

erreur : 0.2372544258277820E-08

x : 0.4

y : 0.8232196376891807E-01

exact : 0.8232197165489197E-01

erreur : 0.7885973901666787E-08

x : 0.5

y : 0.1309582354244776E+00

exact : 0.1309582442045212E+00

x : 0.6

y : 0.1931641547498294E+00

exact : 0.1931641697883606E+00

erreur : 0.1503853122586385E-07

x : 0.7

y : 0.2714054866251536E+00

exact : 0.2714055180549622E+00

erreur : 0.3142980853354516E-07

x : 0.8

y : 0.3697589884814808E+00

exact : 0.3697590231895447E+00

erreur : 0.3470806392291692E-07

x : 0.9

y : 0.4954668359574864E+00

exact : 0.4954668879508972E+00

erreur : 0.5199341085448950E-07

x : 1.0

y : 0.6631805940088817E+00

exact : 0.6631807088851929E+00

erreur : 0.8780043553313632E-08

erreur : 0.1148763111302742E-06

Pour un choix de = 1 , = 2/3, les rsultats obtenus sont sensiblement les mmes que lorsque
lon avait pris = 1/3. Ils sont galement trs bons et lerreur relative du mme ordre ( 108 ). Prenons
dautres valeurs pour les paramtres.

- 23 -

III. COMPARAISON DES RSULTATS

3.3.5

Rsultat avec a31 6= 0 et = 1/6 , = 1/2

Voici les rsultats pour les nouvelles valeurs de et ( h = 0,01 ) :


X

Ycalcul

Yexacte

Erreur relative

x : 0.1

y : 0.5008374079479836E-02

exact : 0.5008376669138670E-02

erreur : 0.2589658833727915E-08

x : 0.2

y : 0.2013612873794045E-01

exact : 0.2013613469898701E-01

erreur : 0.5961046555674754E-08

x : 0.3

y : 0.4570756189466919E-01

exact : 0.4570756852626801E-01

erreur : 0.6631598811757122E-08

x : 0.4

y : 0.8232195593358484E-01

exact : 0.8232197165489197E-01

erreur : 0.1572130713112241E-07

x : 0.5

y : 0.1309582231187960E+00

exact : 0.1309582442045212E+00

x : 0.6

y : 0.1931641335034510E+00

exact : 0.1931641697883606E+00

x : 0.7

y : 0.2714054451131960E+00

exact : 0.2714055180549622E+00

x : 0.8

y : 0.3697589001798769E+00

exact : 0.3697590231895447E+00

x : 0.9

y : 0.4954666177177569E+00

exact : 0.4954668879508972E+00

x : 1.0

y : 0.6631798688316486E+00

exact : 0.6631807088851929E+00

erreur : 0.2108572519365914E-07
erreur : 0.3628490957696684E-07
erreur : 0.7294176612715475E-07
erreur : 0.1230096677296011E-06
erreur : 0.2702331403092728E-06
erreur : 0.8400535442820711E-06

Les rsultats avec ces valeurs sont exactement du mme ordre . La mthode est vraiment trs stable .
Le choix de et ne semble pas primordial. On peut noter quon natteint la mme prcision que lorsque
= 1/3.
On voit que dans toute ltude, la prcision diminue . Malgr cela, celle-ci est trs bonne. Cette tude est
trs intressante car la valeur du paramtre qui rduit les calculs est la mme que celle qui rend la solution
optimale ( = 1/2). Cest avec ce paramtre quon a atteint la meilleure prcision de toute ltude. Avec
les autres valeurs et a32 , la prcision atteint seulement lordre de 108 . On peut donc remarquer que
cette fois on na pas obtenu la mme prcision avec 2 paramtres quavec le paramtre optimal. La mthode
est comme dans les autres tudes toujours trs stable. Les rsultats sont toujours excellents.

- 24 -

Chapitre 4

Conclusion
On peut tout dabord dire que les rsultats obtenus lors de cette tude sont trs satisfaisants.
Dans un premier temps, nous avons cherch quels taient les paramtres qui nous permettaient dobtenir
une rduction du cot de calcul pour la mthode. Nous leurs avons ensuite fix des valeurs pour simplifier
encore la mthode.
Dans un deuxime temps, nous avons tudi 3 quations diffrentielles de types diffrents pour pouvoir
interprter les rsultats obtenus.
On a tout dabord pu remarquer que la mthode de Runge-Kutta tait trs stable car le choix des
paramtres et de leurs valeurs, mme si il est indniablement bnfique pour obtenir une rduction des cots
de calcul, naffecte pas significativement les rsultats. En effet, les diffrentes tudes avec des paramtres
valeurs diffrentes nous ont donns sensiblement les mmes rsultats chaque fois.
Malgr tout , le choix arbitraire de la valeur des paramtres est tout de mme important car on peut
obtenir une solution optimale trs proche de la valeur relle. Ce rsultat nest pas ngliger.
Dans cette tude, nous avons trouver lorsque a31 tait nul, les devaient tre pris respectivement de valeur
0,18, 1/2 et 0.58 pour obtenir une solution optimale.
On peut par ailleurs remarquer que pour le 3me exemple la valeur du paramtre qui rduit les calculs
est la mme que celle qui rend la solution optimale. Ceci est trs intressant mme si nous navons pas
retrouv ces rsultats sur les autres quations ( en fait on peut dire quils sont quand mme assez proche,
mais pas identiques....)
Les valeurs obtenues lorsque a31 = 0 ou a31 6= 0sont quasiment identiques.
Dans certains cas, les solutions obtenues avec a31 = 0 sont un peu plus prcises, mais on ne peut pas
gnraliser. En fait, on obtient parfois la mme prcision quavec la valeur optimale de quand a31 = 0.
Mais on peut tout de mme penser que lon peut fixer a31 = 0 car cela naltre pas beaucoup la prcision
des calculs et les simplifie par contre de manire significative.
Nous avons aussi pu remarquer quil tait trs difficile de trouver une solution optimale lorsque lon
doit fixer deux paramtres ( ici et ).
Enfin, on peut noter que le choix du pas est trs important. En effet, plus le pas choisi est petit, plus
la prcision des rsultats est grande et le nombre de chiffre significatifs importants.
La diminution du pas entrane donc une augmentation de la prcision. Pour bien montrer que le
choix du pas est trs important dans la mthode , on peut dire que lon a remarqu quune division par 10
du pas donne environ 3 chiffres significatifs de plus , soit une prcision amliore de lordre 103 pour la
solution ! ! !
Nanmoins, il ne faut pas oublier que cette diminution du pas provoque une augmentation du
nombre de calcul. Il faut donc choisir judicieusement le pas pour la fois obtenir la prcision ncessaire sans avoir des cots de calcul prohibitif.
- 25 -

IV. CONCLUSION

La mthode de Runge-Kutta est donc trs stable . Elle est galement trs efficace car les rsultats
trouvs sont tous trs bons. Celle-ci ncessite un choix prcis des paramtres et du pas pour obtenir
des rsultats optimaux ou un cot de calcul moindre.
Pour finir, on pourra dire que la mthode de Runge-Kutta dordre 3 est certainement plus prcise que
la mthode de Runge-Kutta dordre 2 puisquelle utilise un nombre de paramtre plus important.

- 26 -

Annexe A

Code Source
A.1

rk3.f

Ce fichier est le coeur du programme. Il comporte les routines daffichage, de saisie des paramtres
ainsi que lalgorithme de la mthode de Runge-Kutta dordre 3.
c**********************************************************
c
c
Rsolution dune quations diffrentielle
c
du premier ordre par la mthode de RUNGE ET KUTTA
c
dordre 3
c
dy/dx = f(x,y(x)
avec y(x0) = y0
c
c*********************************************************
c*********************************************************
c
c copyright
: (C) 2005 by Yves Houpert & Sylvain Archenault
c
c This program is free software ; you can redistribute it and/or modify
c it under the terms of the GNU General Public License as published by
c the Free Software Foundation ; either version 2 of the License, or
c (at your option) any later version.
c*********************************************************

c**********************************************************
c
c
Programme principal
c
c**********************************************************
program rk3
external h,g,e,sh,sg,se
integer rep,eq
double precision alpha,param(7),dh
ieq = 0
iparam = 0
ipas = 0
alpha = 0

- 27 -

I. CODE SOURCE

10

write(*,*) ************************************************
write(*,*) *
Programme de rsolution
*
write(*,*) *
d quations diffrentielles
*
write(*,*) *
par la mthode de Runge-Kutta
*
write(*,*) *
d ordre 3
*
write(*,*) *
(en simple prcision)
*
write(*,*) ************************************************
write(*,*)
write(*,*) 0- Quitter
write(*,*) 1- Choisir l quation diffrentielle
write(*,*) 2- Choisir le(s) paramtre(s)
write(*,*) 3- Entrer le pas, et le nombre de points
write(*,*) 4- Rsoudre l quation diffrentielle
write(*,*) 5- Afficher les donnes
read(*,*,ERR=10) rep

if(rep.eq.0) then
stop
return
elseif(rep.eq.1) then
call choixEquation(eq,param)
ieq = 1
elseif(rep.eq.2) then
call choixParam(param)
iparam=1
elseif(rep.eq.3) then
call entrezPas(dh,n)
ipas=1
elseif(rep.eq.4) then
if((iparam.ne.1).or.(ieq.ne.1).or.(ipas.ne.1)) then
write(*,*) Tous les paramtres n ont pas t saisie
goto 10
endif
if(eq.eq.1) then
call rungeKutta(param,g,sg,dh,n)
elseif(eq.eq.2) then
call rungeKutta(param,h,sh,dh,n)
elseif(eq.eq.3) then
call rungeKutta(param,e,se,dh,n)
endif
elseif(rep.eq.5) then
call afficheDonnees(param,eq,dh,n)
endif
goto 10
end

- 28 -

I. CODE SOURCE

c**********************************************************
c
c
Routine permettant de choisir une quation
c
c**********************************************************
subroutine choixEquation(eq,param)
integer rep,eq
double precision param(7)

100
c
c
c

write(*,*)
write(*,*) Choix de l quation diffrentielle :
Solution x^-3
write(*,*) 1- f(x,y(x)) = -2y2 +x(2x+3)y-x ; y(0) = 1/3
Solution exp(x) + x + 1
write(*,*) 2- f(x,y(x)) = -(3x2 +1)y ; y(0) = 5
Solution arcsin( -ln |cos(x)| )
write(*,*) 3- f(x,y(x)) = tan(x)/cos(y) ; y(0) = 0
read(*,*,ERR=100) rep
if(rep.eq.1) then
eq=1
param(7) = 0
elseif(rep.eq.2) then
eq = 2
param(7) = 0
elseif(rep.eq.3) then
eq = 3
param(7) = 0
else
goto 100
endif
return
end

c**********************************************************
c
c
Routine permettant dentrer le nombre de points et le pas
c
c**********************************************************
subroutine entrezPas(h,n)

120
121

double precision h
integer n
write(*,*) Entrez le pas :
read(*,*,ERR=120) h
write(*,*) Entrez le nombre de points
read(*,*,ERR=121) n
return
end

- 29 -

I. CODE SOURCE

c**********************************************************
c
c
Routine permettant de choisir la mthodes de tunge Kutta
c
c**********************************************************
subroutine choixParam(param)
double precision param(7)
integer rep
140
write(*,*)
write(*,*) Choix des mthodes
write(*,*) 1. a31 = 0, 1 paramtre
write(*,*) 2. a32 non nul, 2 paramtres
read(*,*,ERR=140) rep
if(rep.eq.1) then
call choixParam1(param)
elseif(rep.eq.2) then
call choixParam2(param)
else
goto 140
endif
return
end
c**********************************************************
c
c
Routine permettant de choisir le 2 paramtres, A et B
c
c
c
0 |
0
0
0
c
A |
A
0
0
c
B | B-a32 a32 0
c __________________
c
| c1
c2 c3
c
c
c**********************************************************
subroutine choixParam2(param)
integer rep
double precision param(7),alpha,beta

145

write(*,*)
write(*,*)
write(*,*)
write(*,*)
write(*,*)

Choix des paramtres :


1- alpha = 1 et beta = 2/3
2- alpha = 1/6 et beta = 1/2
3- Choisir son propre alpha et beta

read(*,*,ERR=145) rep
if(rep.eq.1) then
c alpha
param(1)= 1.d0
c beta
- 30 -

I. CODE SOURCE

param(2)=2.d0/3
c a32
param(3)= 2.d0/9
c c1
param(4)= 1.d0/4
c c2
param(5)=0.d0
c c3
param(6)= 3.d0/4
elseif(rep.eq.2) then
c alpha
param(1)=1.d0/6
c beta
param(2)=1.d0/2
c a32
param(3)=2.d0/3
c c1
param(4)=1.d0
c c2
param(5)=-3.d0/2
c c3

146
147

param(6)=3.d0/2
elseif(rep.eq.3) then
write(*,*) Entrez alpha :
read(*,*) alpha
write(*,*) Entrez beta :
read(*,*) beta
A = 3.d0*alpha -2.d0
B = (beta-alpha)
ab = alpha*beta
beta2 = beta*beta
un = 1.d0/(2.d0*alpha)

c alpha,teta2
param(1) = alpha
c beta, teta3
param(2) = beta
c a32
param(3) = beta*B / (-alpha)*A
c c1
param(4) = 1.d0-un - A / (6.d0*ab)
c c2
param(5) = un + A/(6.d0*alpha*B)
c c3
param(6) = -A/(6.d0*beta*B)
else
goto 145
endif
return
end

- 31 -

I. CODE SOURCE

c**********************************************************
c
c
Routine permettant de choisir le paramtre
c
c
0 | 0
0
0
c
A | A
0
0
c
teta3| 0 teta3 0
c __________________
c
| c1 c2 c3
c
c**********************************************************
subroutine choixParam1(param)
integer rep
double precision param(7),alpha

150

write(*,*)
write(*,*)
write(*,*)
write(*,*)
write(*,*)

Choix des paramtres :


1- Alpha = 1/3
2- Alpha = 1/2
3- Choisir son propre alpha

read(*,*,ERR=150) rep
if(rep.eq.1) then
c alpha, teta2
param(1) = 1.d0/3
c a32
param(2) = 2.d0/3
c teta3
param(3) = 2.d0/3
c c1, c2, c3
param(4) = 1.d0/4
param(5) = 0.d0
param(6) = 3.d0/4
elseif(rep.eq.2) then
c alpha
param(1) = 1.d0/2
c a32
param(2) = 3.d0/4
c teta3
param(3) = 3.d0/4
c c1,c2,c3
param(4) = 2.d0/9
param(5) = 1.d0/3
param(6) = 4.d0/9
elseif(rep.eq.3) then
160
write(*,*) Entrez vore propre alpha :
read(*,*,ERR=160) alpha
alpha2 = alpha*alpha
A = alpha-alpha2
c alpha
param(1) = alpha
c teta3
- 32 -

I. CODE SOURCE

param(3) = 3.d0*A
c a32
param(2) = param(3)
c c1,c2,c3
param(4) =(3.d0*A*(6.d0*alpha2+1.d0-3.d0*alpha)-alpha)
\ /(18.d0*A*alpha2)
param(5) = (3.d0*alpha-1.d0)/(6.d0*alpha2)
param(6) = 1.d0/(18.d0*alpha*A)
else
goto 150
endif
return
end
c**********************************************************
c
c
Routine permettant dafficher les donnes
c
c**********************************************************
subroutine afficheDonnees(param,eq,dh,n)
integer eq
double precision param(7),dh
write(*,*) les paramtres sont :
write(*,*)
write(*,*) Alpha (teta2) =, param(1)
write(*,*) Beta (teta3) =, param(2)
write(*,*) a32 =, param(3)
write(*,*) c1 =, param(4)
write(*,*) c2 =, param(5)
write(*,*) c3 =, param(6)
write(*,*)
if(eq.eq.1) then
write(*,*) f(x,y(x)) = -2y2 +x(2x+3)y-x
write(*,*) x0 : ,param(7), y0 : ,sg(param(7))
elseif(eq.eq.2) then
write(*,*) f(x,y(x)) = y(x) - x ; y(0) = 2
write(*,*) x0 : ,param(7), y0 : ,sh(param(7))
elseif(eq.eq.3) then
write(*,*) f(x,y(x)) = tan(x)/cos(y) : y(0) = 1
write(*,*) x0 : ,param(7), y0 : ,se(param(7))
endif
write(*,*)
write(*,*) Pas :,dh,
read(*,*)
return
end

- 33 -

Nombre de points :,n

I. CODE SOURCE

c**********************************************************
c
c
Routine permettant de rsoudre lquation
c
c**********************************************************
subroutine rungeKutta(param,f,sol,h,n)
double
double
double
double

precision
precision
precision
precision

param(7)
teta2,teta3,c1,c2,c3,a32,a31
x0,y0,x1,y1,h
k1,k2,k3

teta2 = param(1)
teta3 = param(2)
a32 = param(3)
c1 = param(4)
c2 = param(5)
c3 = param(6)
a31 = param(2)-param(3)
c Conditions initiales
x0 = param(7)
y0= sol(x0)

write(*,*) xk,yk
write(*,*) teta2,teta3,a31,a32,c1,c2,c3
do i=1,n

k1=f(x0,y0)
k2=f(x0+h*teta2,y0+h*k1*teta2)
k3=f(x0+h*teta3,y0+h*a31*k1+h*a32*k2)
x1=x0+h
y1=y0+h*c1*k1 + h*k2*c2 + c3*h*k3
write(*,1000) x1,y1,sol(x1),dabs(sol(x1)-y1)
x0 = x1
y0 = y1
enddo
1000
format(x :,D24.16,
y :, D24.16,
exact :,
\ D24.16, erreur :,D24.16)
write(*,*)
write(*,1050) , maxerreur
1050
format(Erreur maximale : ,D24.16)
read(*,*)
return
end

- 34 -

I. CODE SOURCE

A.2

fonctions.f

Dans ce fichier, on a dclar les fonctions que lon a utilis lors de notre tude, avec leur solution exacte.
c****************************************************
c fonctions.f
c Contient la declaration de toutes les fonctions
c utiles a rk3.f
c
c****************************************************
c*********************************************************
c
c copyright : (C) 2005 by Yves Houpert & Sylvain Archenault
c
c This program is free software ; you can redistribute it and/or modify
c it under the terms of the GNU General Public License as published by
c the Free Software Foundation ; either version 2 of the License, or
c (at your option) any later version.
c*********************************************************
function g(x,y)
double precision x,y,g
g = -2.d0*y*y+x*(2.d0*x+3.d0)*y-x
return
end
function h(x,y)
double precision x,y,h
h = -(3*x*x+1)*y
return
end
function e(x,y)
double precision x,y,e
e = tan(x)/cos(y)
return
end
function sg(x)
double precision x,sg
sg = 1.d0/(2.d0*x+3.d0)
return
end
function sh(x,y)
double precision x,sh
sh = 5*exp(-x*x*x-x)
return
end
function se(x,y)
double precision x,se
se = asin(-log(cos (x)))
return
end

- 35 -

You might also like