36
Sylvain Archenault Yves Houpert A NALYSE N UMÉRIQUE : Les méthodes de Runge-Kutta d’ordre 3 Projet GM3 Février 2005

Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Sylvain ArchenaultYves Houpert

ANALYSE NUMÉRIQUE :

Les méthodes de Runge-Kutta d’ordre 3

Projet GM3Février 2005

Page 2: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Table des matières

1 Introduction 2

2 Principe des méthodes de Runge-Kutta d’ordre 3 32.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Consistance, stabilité des méthodes de Runge-Kutta. . . . . . . . . . . . . . . . . . . . . 42.3 Ordre 1 et 2 des méthodes de Runge-Kutta. . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3.1 Conditions pour qu’une méthode de Runge Kutta soit d’ordre 1. . . . . . . . . . . 52.3.2 Conditions pour qu’une méthode de Runge-Kutta soit d’ordre 2. . . . . . . . . . . 5

2.4 Les méthodes de Runge-Kutta d’ordre 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4.1 Conditions pour qu’une méthode de Runge-Kutta soit d’ordre 3 . . . . . . . . . . 62.4.2 Calcul des conditions pour qu’une méthode soit d’ordre 3 . . . . . . . . . . . . . 6

2.4.2.1 Calcul des paramètres avec a3,1 = 0 : . . . . . . . . . . . . . . . . . . . 72.4.2.2 Calcul des paramètres avec a3,1 6= 0 : . . . . . . . . . . . . . . . . . . . 9

3 Comparaison des résultats 113.1 Une quation de Riccati : f(x, y(x)) = −2y2 + x(2x + 3)y − x : . . . . . . . . . . . . 12

3.1.1 Résultat avec a3,1 = 0 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.1.1 α = 1/3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.1.2 α = 1/2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.1.1.3 α = 0.58 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1.2 Résultat avec a3,1 6= 0 et α = 1 et β = 2/3 : . . . . . . . . . . . . . . . . . . 153.2 f(x, y(x)) = −(3x2 + 1)y ; y(0) = 5 . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.1 Résultat avec a31 = 0 et α =1/3 : . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.2 Résultat avec a31 = 0 et α =1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2.3 Résultat avec a32 = 0 et α =0.18 . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2.4 Résultat avec a31 6= 0 et α = 1 , β = 2/3 . . . . . . . . . . . . . . . . . . . . . . 193.2.5 Résultat avec a31 6= 0 et α = 1/6 , β = 1/2 . . . . . . . . . . . . . . . . . . . . . 20

3.3 f(x, y(x)) = tan(x)cos(y) ; y(0) = 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3.1 Résultat avec a31 = 0 et α =1/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.2 Résultat avec a31 = 0 et α =1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.3.3 Résultat avec a31 = 0 et α = valeur optimale . . . . . . . . . . . . . . . . . . . . 223.3.4 Résultat avec a31 6= 0 et α = 1 , β = 2/3 . . . . . . . . . . . . . . . . . . . . . . 233.3.5 Résultat avec a31 6= 0 et α = 1/6 , β = 1/2 . . . . . . . . . . . . . . . . . . . . . 24

4 Conclusion 25

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

- 1 -

Page 3: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Chapitre 1

Introduction

Le projet qui nous a été confié est d’étudier les méthodes Runge-Kutta d’ordre 3.

Dans une première partie, nous allons présenter les méthodes de Runge-Kutta d’ordre 3. Nous essaie-rons de déterminer les différents paramètres qui permettent de minimiser les calculs. Pour cela, on partirades conditions générales de la méthode, puis on effectuera des simplifications qui nous donneront des in-formations caractéristiques sur ces paramètres.

Ensuite, dans une seconde partie, on comparera entre eux les différents résultats sur une même équationdifférentielle. Nous effectuerons ces études sur 3 équations différentielles différentes.

De plus, pour chaque équation , on essaiera de donner les meilleurs paramètres qui correspondent à unminimum du maximum de l’erreur.

- 2 -

Page 4: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Chapitre 2

Principe des méthodes de Runge-Kuttad’ordre 3

2.1 PrésentationDans ce chapitre, nous allons expliquer et présenter les différentes méthodes de Runge-Kutta d’ordre

3. Le nombre de méthodes de Runge-Kutta d’ordre 3 est infini ! En effet suivant les paramètres choisis,chaque méthode offre des résultats légèrement différents.

Les méthodes de Runge-Kutta sont des méthodes à un pas, c’est à dire de la forme :

yk+1 = yi + hiΦ(xi, yi, hi)

On cherche a résoudre une équation différentielle de la forme :

y′(x) = f(x, y(x))

y(x0) = y0

où y est une application continue et dérivable de [a,b] dans Rn, f une application définie et continue sur[a,b] x Rmdans Rm. La suite des points xkest définie telle que a = x0 < x1 < x2 < ... < xn−1 < xn = b.Dans les méthodes de Runge-Kutta, nous calculons des points intermédiaires pour améliorer la précisionde la méthode, on note ces points xk,i ∈ [xk, xk+1] . Ils sont définis par :

xk,i = xk + θihk

avec 0 ≤ θi ≤ 1. On calcule également des yk,i de la manière suivante :

yk,i = yk + hk

r∑j=1

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

Enfin on abouti au calcul des yk+1qui sont donnés par la relation suivante :

yk+1 = yk + hk

r∑i=1

cif(xk,i, yk,i)

On reconnaît ici la fonction Φ(xi, yi, hi) qui est en réalité la fonction f(xk,i, yk,i).

Il nous reste a décrire les coefficients ai,j , θi et ci. Il existe en fait trois groupes de méthodes :– Méthodes explicites : Ce sont les méthodes où ai,j = 0 ∀ j ≥ i. C’est à dire que tous les yk,ise

calculent à partir des termes précédents yk,j ∀ i > j.

- 3 -

Page 5: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

– Méthodes semi-explicites : Ce sont les méthodes où ai,j = 0 ∀ j > i. Il existe au moins un m telque am,m 6= 0, 1 ≤ m ≤ r.

– Méthodes implicites : ∃ (i, j) tel que i > j et ai,j 6= 0.Dans ce projet, nous utiliserons uniquement les méthodes explicites,

c’est à dire de la forme ai,j = 0 ∀ j ≥ i

2.2 Consistance, stabilité des méthodes de Runge-Kutta.Soient les relations ci dessous :

yk+1 = yi + hiΦ(xi, yi, hi)

yi = y + h∑

af(x + θih, yi) (∗∗)

φ(x, y, h) =∑

cif(x + θih, yi)

Celles-ci possèdent une forme équivalente souvent plus commode pour la programmation. On posekl,i = f(xl,iyl,i)

On obtient :

kl,i = f(xl,i, yl + hl

∑ai,jkl,j) pour i = 1, ..., r

yl+1 = yl + hl

∑cikl,i

On résout le premier système ci-dessous de r équations à r inconnues kl,ipour i = 1, ..., r.On en déduit yl+1.Pour ré-obtenir les systèmes :

yk,i = yk + hk

r∑j=1

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

et

yk+1 = yk + hk

r∑i=1

cif(xk,i, yk,i)

il suffit de poser :yl,i = yl + hl

∑ai,jkl,j .

et φ(x, y, 0) =∑

cif(x, yi) où yi = y dans le système (**).On obtient qu’une Condition Nécessaire et Suffisante pour qu’une méthode de Runge-Kutta soit

consistante est :

r∑i=1

ci = 1

On peut également noter que si cette condition est remplie , la méthode est alors d’ordre 1 au moins.On peut ajouter un théorème important à notre présentation.

Théorème :Si hiL(p(|A|) < 1, où L est la constante de Lipschitz de f, alors le schéma de Runge-Kutta admet unesolution unique.

De plus si h ∗ L(p(|A|) < 1, alors le schéma de Runge-Kutta est stable pour tout h tel que 0 < h < h*.Si la fonction f(x,y) est k fois continûment dérivable sur [a,b] ×R, alors la fonction φ(x, y, h) est aussi

k fois continûment différentiable sur [a,b] ×R× [0, h∗].

- 4 -

Page 6: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

Dans notre projet nous avons déjà indiqué que nous nous occuperons uniquement des méthodes expli-cites. Nous pouvons donc observer ce cas précis :

Cas d’une méthode explicite :La matrice A est strictement triangulaire inférieure et donc :

p(|A|)=0 stable ∀h∗ : toutes les méthodes explicites sont stables théoriquement donc convergentes.Il reste à examiner le problème le plus délicat qui est celui de l’ordre des méthodes de Runge-Kutta.

2.3 Ordre 1 et 2 des méthodes de Runge-Kutta.Afin de condenser l’écriture des relations, nous adoptons les notations suivantes : le produit x.y=z entre

les vecteurs deRrdonne un vecteur de Rr ; on a zi = xiyipour i=1,....,r. Le produit x.x est aussi noté x.2.Plus généralement x.k = (x(k−1)).x.Nous rappelons que e est le vecteur de Rrde composantes touteségales à 1.

Notre projet consiste à étudier les méthodes de Runge-Kutta d’ordre 3. Nous savons qu’une des condi-tions pour que cette méthode soit d’ordre 3 est qu’elle remplisse déjà les conditions nécessaires et suffi-santes de la même méthode d’ordre 1 et 2.

Conditions Nécessaires et Suffisantes pour avoir l’ordre p :

dj

dhjφ(x, y(x), h)|h=0 =

1j + 1

× f (j)(x, y(x)) j = 0 , ..., p− 1

2.3.1 Conditions pour qu’une méthode de Runge Kutta soit d’ordre 1.

p Conditions A’(p)

1 cT e= 1

2.3.2 Conditions pour qu’une méthode de Runge-Kutta soit d’ordre 2.p

Conditions A’(p)

1

cT e = 1

2

cT θe = cT Ae = 1/2

- 5 -

Page 7: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

2.4 Les méthodes de Runge-Kutta d’ordre 3.

2.4.1 Conditions pour qu’une méthode de Runge-Kutta soit d’ordre 3p

Conditions A’(p)

1

cT e = 1

2

cT θe = cT Ae = 1/2

3

cT θ2e = cT θAe = cT (Ae).2 = 1/3

cT Aθe = cT A2e = 1/6

2.4.2 Calcul des conditions pour qu’une méthode soit d’ordre 3Nous allons exprimer les conditions pour qu’une méthode de Runge-Kutta d’ordre 3 fonctionne. On

prendra :

A =

0 0 0a2,1 0 0a3,1 a3,2 0

e =

111

θ =

θ1 0 00 θ2 00 0 θ3

et c =

c1

c2

c3

donc on obtient Ae =

0a2,1

a3,1 + a3,2

de même en calculant on a θ2e =

θ21

θ22

θ23

et (Ae).2 = 0a22,1

(a3,1 + a3,2)2

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

paramètres.

– Conditions pour l’ordre 1 :c1 + c2 + c3 = 1

– Conditions pour l’ordre 2 :{c1θ1 + c2θ2 + c3θ3 = 1/2c2a2,1 + c3(a3,1 + a3,2) = 1/2

– Conditions pour l’ordre 3 :

- 6 -

Page 8: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

c1θ21 + c2θ

22 + c3θ

23 = 1/3

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

22,1 + c3(a3,1 + a3,2)2 = 1/3

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

On obtient donc un système à 8 équations et 9 inconnues.Le premier tableau caractérisant la méthode de Runge-Kutta est donc le suivant :

θ1

θ2

θ3

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

– Cas des méthodes explicites :Dans le cas des méthodes explicites, on peut faire une première simplification du système :

Ae = θe

ce qui implique que : θ1 = 0, θ2 = a2,1, θ3 = a3,1 + a3,2 . On obtient alors le système suivant :

c1 + c2 + c3 = 1c2θ2 + c3θ3 = 1/2c2θ

22 + c3θ

23 = 1/3

c3a3,2θ2 = 1/6

On obtient alors un système de 4 équations à 6 inconnues.Le tableau caractérisant la méthode est alors :

0θ2

θ3

0 0 0θ2 0 0

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

2.4.2.1 Calcul des paramètres avec a3,1 = 0 :

On choisit alors de prendre a3,1 = 0.Cela implique que θ3 = a3,2 :

c1 + c2 + c3 = 1c2θ2 + c3θ3 = 1/2c2θ

22 + c3θ

23 = 1/3

c3θ3θ2 = 1/6

On obtient un système à 4 équations et 5 inconnues.Le tableau caractéristique de la méthode :

0θ2

θ3

0 0 0θ2 0 00 θ3 0

c1 c2 c3

- 7 -

Page 9: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

Nous devons essayer de continuer à simplifier le système pour obtenir un coût de calcul optimal.Comme nous avons un système de 4 équations à 5 inconnues, nous pouvons choisir arbitrairement unparamètre pour résoudre le problème. Comme dans le cours, nous choisirons θ2 = α.

Le tableau caractérisant la méthode devient alors :

0αθ3

0 0 0α 0 00 θ3 0

c1 c2 c3

Le système est alors suivant : Le but alors est d’exprimer les paramètres c1, c2, c3, et θ3en fonction deα.

c1 + c2 + c3 = 1c1θ1 + c2α + c3θ3 = 1/2c2α

2 + c3θ23 = 1/3

c3θ3α = 1/6

c1 =

(1− 16αθ3

)−( 12−

16α )

α

c2 = ( 12−

16α )

α

c2 = ( 13−

θ36α )

α2

c3 = 16αθ3

donc après calcul nous obtenons les expressions suivantes pour chaque paramètre :

c1 = 3(1−α)(6α2−3α+1)−1

18(1−α)

c2 = 3α−16α2

c3 = 118α(α−α2)

θ3 = 3α(1− α)

Pour résoudre le système et trouver des valeurs aux différents paramètres, il suffit de fixer α.On re-cherche donc αde manière à réduire les coûts de calculs. Il est donc préférable d’avoir des paramètreségaux à 1 ou 0. Nous avons fait les calculs et bous obtenons ces résultats :

On peut par exemple fixer :

– α = 1/3 :c2 = 0 c3 = 3/4

c1 = 1/4 et θ3 = 2/3

– α = 1/2 :c2 = 1/3 c3 = 4/9

c1 = 2/9 et θ3 = 3/4

– α =√

2+23 ou α = −

√2−23 :

c2 =3/2× (

√2 + 1)

(√

2 + 2)2c3 = −3× (

√2− 1)

4

c1 = 1 et θ3 =−√

23

- 8 -

Page 10: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

et

c2 =−3/2× (

√2− 1)

(√

2− 2)2c3 =

3× (√

2 + 1)4

c1 = 1 et θ3 =√

23

– α = 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 différentes valeurs pour les paramètres en fonction de la valeur deα. Reste à savoirquels sont les effets du choix arbitraire de la valeur de αsur la solution.

2.4.2.2 Calcul des paramètres avec a3,1 6= 0 :

Dans la 1ère partie, on a considéré que a3,1était nul.Pour étudier le cas plus général, on prend a3,1différent de zéro.On veut montrer que le choix arbitraire des paramètres est important pour économiser les coûts de

calculs. Nous allons fixer différents paramètres et nous allons voir que selon les choix faits , les coûts decalcul pour trouver les solutions du système ne sont pas les mêmes :

– 1er choix de paramètre : θ2 = α et θ3 = βComme nous l’avons dit précédemment, nous avons choisis d’étudier le cas où a3,1était différent de 0.Nous partons donc du système de 4 équations à 6 inconnues obtenu auparavant. On fixe θ2 = α et θ3 = β.

on a le système suivant : c1 + c2 + c3 = 1c2α + c3β = 1/2c2α

2 + c3β2 = 1/3

c3αa3,2 = 1/6

et le tableau caractéristique :

- 9 -

Page 11: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

II. PRINCIPE DES MÉTHODES DE RUNGE-KUTTA D’ORDRE 3

0αβ

0 0 0α 0 0

β − a3,2 a3,2 0c1 c2 c3

On cherche c1, c2, c3, et a3,2. On obtient après résolution du système :c1 = 1− 1

2α −3α−26αβ

c2 = 12α + 3α−2

6α(β−α)

c3 = − 3α−26β(β−α)

a3,2 = β(β−α)−α(3α−2)

Le coût de calcul pour obtenir ces relations est raisonnable :

Il faut maintenant fixer les paramètres α et βafin de minimiser les calculs :Si alpha + beta = 2/3 ⇒ c1 = 1 .Si beta = 2/3 ⇒ c2 = 0.Le nombre d’opérations est encore abaissé lorsque l’on choisit ces valeurs pour ces paramètres.

– 2ème choix de paramètre :θ2 = α et a3,2 = β :Nous choisissons de prendre a3,2quelconque pour résoudre le système. On a donc le système suivant :

c1 + c2 + c3 = 1c2α + c3θ3 = 1/2c2α

2 + c3θ23 = 1/3

c3αβ = 1/6

et le tableau caractéristique :

0αθ3

0 0 0α 0 0

θ3 − β β 0c1 c2 c3

On voit tout de suite que si l’on cherche à résoudre le système de cette manière, on va devoir manipulerdes termes de degré 2 ( dans ce cas précis :les θ2 et donc calculer des déterminants pour exprimer chacundes coefficients) . On voit donc que cette méthode est bien plus coûteuse en nombre d’opérations que laprécédente.

Le choix arbitraire doit donc être fait de manière optimale pour minimiser les calculs au maximum. Dansce cas de la méthode de Runge-Kutta d’ordre 3, le choix de fixer a3,2n’est pas optimal. Il vaudrait mieuxpréférer fixer par exemple θ3 comme on l’a vu dans l’exemple précédent.

- 10 -

Page 12: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Chapitre 3

Comparaison des résultats

Dans tout ce chapitre, nous allons prendre le pas, h égal a 0.1 ( nombre de points calculés : 10 ) puis à0,01 ( nombre de points calculés : 100 ). Les paramètres fixés seront θ2 = α et θ3 = β.

Nous avons choisi d’étudier 3 cas d’équations différentielles :– une équation différentielle avec une solution polynomiale.– une équation différentielle avec une solution exponentielle.– une équation différentielle avec une solution trigonométrique.

Nous avions tout d’abord décidé de représenter les résultats de nos 3 exemples sous forme de courbe àl’aide du logiciel gnuplot. Il s’est avéré que cette méthode n’était pas très efficace car nous ne pouvions pasréellement interpréter les résultats. Nous afficherons donc les tableaux des solutions calculées pour diffé-rentes valeurs de x ainsi que la valeur exacte. A chaque fois, et pour chaque étude, on affichera égalementle minimum du maximum de l’erreur pour voir la précision de la méthode.

On modifiera également le pas pour chaque équation afin de montrer l’importance de celui-ci dans laméthode.

Nous avons également étudier les méthodes en fonction des paramètres choisis et de leur valeur. Nousétudierons donc les différentes équations avec plusieurs paramètres fixés pour trouver une méthode opti-male. Les α seront pris tels que α = 1/2, α = 1/3 ( valeurs obtenues dans le chapitre 2 pour avoir un coûtde calcul réduit ) et α = choisi pour avoir une solution optimale. On calculera donc aussi la méthodeavec a32 = 0 ou a32 choisi arbitrairement ( nous prendrons aussi comme valeurs les α et β obtenues dansle chapitre précédent ).

- 11 -

Page 13: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.1 Une quation deRiccati : f(x, y(x)) = −2y2 + x(2x + 3)y − x :La solution de cette équation est y(x) = 1

2x+3 .

3.1.1 Résultat avec a3,1 = 0 :3.1.1.1 α = 1/3 :

Nous choisissons de fixer α = 1/3 pour cette première étude.

– h = 0.1 :

x y calculée y exacte erreur relative

0,1 0.3124978102743626E+00 0.3125000000000000E+00 0.2189725637424811E-050,2 0.2941145598888397E+00 0.2941176593303680E+00 0.3099441528320312E-050,3 0.2777743354439736E+00 0.2777777910232544E+00 0.3455579280831067E-050,4 0.2631541732698679E+00 0.2631579041481018E+00 0.3730878233909607E-050,5 0.2499957516789436E+00 0.2500000000000000E+00 0.4248321056360416E-050,6 0.2380899218842387E+00 0.2380952388048172E+00 0.5316920578479767E-050,7 0.2272654391825199E+00 0.2272727340459824E+00 0.7294863462459222E-050,8 0.2173805683851242E+00 0.2173912972211838E+00 0.1072883605957031E-040,9 0.2083166455850005E+00 0.2083333283662796E+00 0.1668278127908707E-04

1.0 0.1999728638678789E+00 0.2000000029802322E+00 0.2713911235333044E-04

On peut remarquer que les résultats sont très bons . En effet l’erreur relative est de l’ordre de 10−5, cequi est déjà très précis . 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 résultats sont encore meilleurs. On obtient une précision de l’ordre de 10−8, ce qui estvraiment très bon. Abaisser le pas nous permet vraiment d’avoir des solutions très proches des solutionsexactes. On peut remarquer qu’on a gagné en moyenne 3 chiffres significatifs par rapport à l’étude avec lepas précédent . Il faudra vérifier avec les autres équations si on obtient le même phénomène.

Prenons maintenant une autre valeur pour α, et voyons si les résultats diffèrent significativement.

- 12 -

Page 14: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.1.1.2 α = 1/2 :

Nous ne prendrons que la valeur h = 0.1 pour étudier ce cas car il est sensiblement similaire au précé-dent.

X Ycalculé Yexacte Erreur relative

x : 0.1 y : 0.3124995428654883E+00 exact : 0.3125000000000000E+00 erreur : 0.4571345117443393E-06

x : 0.2 y : 0.2941176099909676E+00 exact : 0.2941176593303680E+00 erreur : 0.4933940039864027E-07

x : 0.3 y : 0.2777784297863642E+00 exact : 0.2777777910232544E+00 erreur : 0.6387631098503377E-06

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 l’on obtient quasiment les mêmes résultats qu’avec α = 1/3. Ils sont toutde même plus précis car on gagne parfois 2 chiffres significatifs pour la solution. On peut tout de mêmesupposer que la méthode est très stable. Il en est de même si on fait l’étude avec le pas h = 0.01.

- 13 -

Page 15: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.1.1.3 α = 0.58 :

Nous avons recherché la valeur de α pour laquelle les résultats semblaient optimaux. Nous avons ob-tenu le résultat suivant : α = 0.58 qui nous permet d’obtenir des résultats encore plus précis :

– 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 l’on obtient des résultats encore meilleur qu’avec les anciennes valeurs de α. Cela est trèsintéressant car cela nous montre que la précision de la solution dépend du paramètre. Voyons si les résultatsavec un pas plus petit sont aussi plus précis.

– 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 erreur : 0.7824411674128839E-09

x : 0.5 y : 0.2500000092750592E+00 exact : 0.2500000000000000E+00 erreur : 0.9275059165148036E-08

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 résultats sont bien évidemment encore plus précis que précédemment. La précision est de l’ordrede 10−8 On peut vraiment penser que cette valeur de α est optimale car nous avons essayé d’autres valeurset nous n’avons jamais trouvé de solutions qui se rapprochaient autant de la solution exacte.

- 14 -

Page 16: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.1.2 Résultat avec a3,1 6= 0 et α = 1 et β = 2/3 :On va maintenant étudier les équations de Riccati quand a32 6= 0. Il semble intéressant de voir si le fait

de fixer deux paramètres permet d’obtenir de meilleures solutions . Nous avons choisi les valeurs des para-mètres α et β en fonction du chapitre 1 ( c’est à dire pour optimiser les coûts de calculs ). Nous obtenonsles résultats 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 résultats sont presque identiques à ceux calculés précédem-ment. La méthode semble donc très stable et le fait de fixer a32 égal ou non à zéro ne semble pas trèsimportant 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 erreur : 0.9313223248152980E-09

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

Avec un pas de 0.01, on obtient les mêmes conclusions. Parfois même il semble que de fixer uniquementun paramètre soit plus efficace même si on obtient tout de même une précision de 10−9 pour x = 0.8 Laméthode avec a32 = 0 ne l’atteint que pour une valeur optimale de α.

On voit donc que la méthode de Runge-Kutta est très appropriée pour résoudre les équations de Riccati.De plus la méthode est très stable car même en changeant les paramètres, les résultats ne sont pas trèsdifférents et surtout sont toujours très proches de la solution exacte.

- 15 -

Page 17: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.2 f(x, y(x)) = −(3x2 + 1)y ; y(0) = 5

La solution de cette équation est y(x) = 5e−x3−x.

3.2.1 Résultat avec a31 = 0 et α =1/3 :On reprend la même étude que précédemment avec les mêmes valeurs ( sauf pour les conditions initiales

bien sûr ).Les résultats obtenus pour les paramètres ci-dessus sont affichés 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 méthode semble très efficace. On obtient déjà 3 chiffres si-gnificatifs après la virgule par rapport à la solution exacte. On peut penser qu’en augmentant le pas, onobtiendra les mêmes résultats 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 d’abord noter de nouveau que les résultats sont très bons. Le maximum de l’erreur est del’ordre de 10−7. La méthode fonctionne très bien . On a également gagner de l’ordre de 10−3par rapport aupas précédent. Par contre on peut tout de même remarquer que la précision est moins bonne pour ce genred’équation . (précision 10−6dans ce cas et précision de 10−9dans la première étude ) .

- 16 -

Page 18: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.2.2 Résultat avec a31 = 0 et α =1/2On choisit d’étudier l’équation en modifiant α. On prendra uniquement h = 0,1 pour la même raison

que lors de l’étude la première équation.Les résultats 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 résultats sont très bons. Le choix de α ne semble pas primordialcar la méthode est à nouveau très stable. les résultats sont quasi-identiques et la précision est du mêmeordre. Essayons de trouver un α pour lequel les résultats semble optimaux.

- 17 -

Page 19: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.2.3 Résultat avec a32 = 0 et α =0.18Nous avons à nouveau recherché une valeur d’α pour laquelle les résultats semblaient optimaux. Nous

avons obtenu le résultat suivant : α = 0.18 nous permet d’obtenir des résultats encore plus précis.

– 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 résultat est plus précis avec α = 0.18. Bien sûr cette différence importe que lorsque ona besoin de solutions vraiment très précises . ( 10−5au lieu de 10−4 au niveau de l’ordre de la précision. )On pourrait penser également qu’avec cette valeur, la méthode devient plus précise puisque qu’on obtientla meilleure précision pour notre dernière valeur de x calculé. En fait, nous avons donc calculé les solutionspour les x suivants et il se trouve que la précision n’atteint pas cet ordre de 10−5mais reste bloqué à 10−4.Voyons si on obtient aussi une meilleure précision 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 erreur : 0.8977019116951368E-07

Nous voyons que l’erreur obtenue est de l’ordre de 10−7 ce qui est équivalent au résultat obtenu pré-cédemment. Nous avons cherché d’autre α mais avec aucun d’entre eux, nous avons obtenu de meilleurssolutions. On peut donc trouver un paramètre optimale pour la méthode. La différence de précision est toutde même conséquente lorsque l’on veut des résultats très précis.

- 18 -

Page 20: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.2.4 Résultat avec a31 6= 0 et α = 1 , β = 2/3

Étudions le cas où a31 n’est pas nul pour voir si l’on obtient des résultats plus pertinents. Nous avonschoisi α et β de la même manière qu’auparavant .

On obtient les résultats 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 résultats semblent un tout petit peu moins précis : on a des précisions de l’ordre de 10−2qui appa-raissent.

– h = 0.01 :

X Ycalculé Yexacte Erreur relative

x : 0.1 y : 0.4519665217399598E+01 exact : 0.4519665241241455E+01 erreur : 0.2384185737724920E-07

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

La précision de l’ordre de 10−7. Les résultats sont donc quasi similaires à ceux obtenus lorsque l’onavait fixé a31 = 0. Malgré tout , si l’on veut être rigoureux, on peut noter que la première méthode sembleun peu plus efficace. En fait il s’avère difficile de trouver deux paramètres qui résolvent le système de façonoptimale. Que se passerait -il si on trouvait ce couple ?

- 19 -

Page 21: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.2.5 Résultat avec a31 6= 0 et α = 1/6 , β = 1/2

Changeons notre α et notre β. Nous obtenons les résultat 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 l’impression que les résultats sont un peu meilleurs qu’avec les premières valeurs de α et β. Ilatteint pas la précision de la méthode où l’on avait notre α optimal. Peut-être est-il alors mieux de fixer 2paramètres.

On a pu remarquer que la méthode de Runge-Kutta d’ordre 3 fonctionnait également très bien avecles équations qui ont des solutions de la forme exponentielle. On peut tout de même constater que laprécision, même si elle est très bonne, n’est pas du même ordre que dans la première étude. Concernantles paramètres, on voit que l’on peut à nouveau trouver un α optimal, mais la méthode reste vraiment trèsstable et la différence ne se perçoit que sur des études où on a besoin d’une très grande précision.

- 20 -

Page 22: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

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 dernière étude concerne une équation différentielle avec une solution trigonométrique. Nous

garderons le même axe d’étude, donc les mêmes valeurs pour l’étudier.

3.3.1 Résultat avec a31 = 0 et α =1/3Les premiers résultats nous sont donnés :

– 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.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 résultats sont très bons . On peut remarquer que la précision diminue au fur et àmesure que les x augmentent .

Malgré tout la précision est très bonne ( de l’ordre de 10−6 ).

- 21 -

Page 23: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.3.2 Résultat avec a31 = 0 et α =1/2Les nouveaux résultats correspondant aux paramètres et à un pas correspondant à h = 0,01 nous sont

donnés :

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 erreur : 0.5981160525192486E-08

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

Les résultats sont meilleurs car on obtient à un moment une précision de l’ordre de 10−9, ce qui n’étaitpas le cas auparavant. La méthode est toujours très stable tout de même.

3.3.3 Résultat avec a31 = 0 et α = valeur optimaleComme pour la première et deuxième équation, nous cherchons la valeur optimale de α :

Il se trouve qu’après avoir étudié l’équation avec de nombreuses valeurs de α, nous n’avons pas trouverde meilleur résultat que dans l’étude où α valait 1/2 . Cela est très intéressant car on a alors une valeuroptimale de α pour un coût de calcul réduit . On peut donc avoir une résolution optimale en coût decalcul, donc en temps et en précision.

- 22 -

Page 24: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.3.4 Résultat avec a31 6= 0 et α = 1 , β = 2/3

Étudions le cas où a31 6= 0 et voyons si les résultats obtenus sont plus précis.

– 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 erreur : 0.8780043553313632E-08

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.1148763111302742E-06

Pour un choix de α = 1 , β = 2/3, les résultats obtenus sont sensiblement les mêmes que lorsquel’on avait pris α = 1/3. Ils sont également très bons et l’erreur relative du même ordre ( 10−8). Prenonsd’autres valeurs pour les paramètres.

- 23 -

Page 25: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

III. COMPARAISON DES RÉSULTATS

3.3.5 Résultat avec a31 6= 0 et α = 1/6 , β = 1/2

– Voici les résultats 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 erreur : 0.2108572519365914E-07

x : 0.6 y : 0.1931641335034510E+00 exact : 0.1931641697883606E+00 erreur : 0.3628490957696684E-07

x : 0.7 y : 0.2714054451131960E+00 exact : 0.2714055180549622E+00 erreur : 0.7294176612715475E-07

x : 0.8 y : 0.3697589001798769E+00 exact : 0.3697590231895447E+00 erreur : 0.1230096677296011E-06

x : 0.9 y : 0.4954666177177569E+00 exact : 0.4954668879508972E+00 erreur : 0.2702331403092728E-06

x : 1.0 y : 0.6631798688316486E+00 exact : 0.6631807088851929E+00 erreur : 0.8400535442820711E-06

Les résultats avec ces valeurs sont exactement du même ordre . La méthode est vraiment très stable .Le choix de α et β ne semble pas primordial. On peut noter qu’on n’atteint la même précision que lorsqueα = 1/3.

On voit que dans toute l’étude, la précision diminue . Malgré cela, celle-ci est très bonne. Cette étude esttrès intéressante car la valeur du paramètre qui réduit les calculs est la même que celle qui rend la solutionoptimale ( α = 1/2). C’est avec ce paramètre qu’on a atteint la meilleure précision de toute l’étude. Avecles autres valeurs et ∀a32, la précision atteint ”seulement l’ordre de 10−8”. On peut donc remarquer quecette fois on n’a pas obtenu la même précision avec 2 paramètres qu’avec le paramètre optimal. La méthodeest comme dans les autres études toujours très stable. Les résultats sont toujours excellents.

- 24 -

Page 26: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Chapitre 4

Conclusion

On peut tout d’abord dire que les résultats obtenus lors de cette étude sont très satisfaisants.

Dans un premier temps, nous avons cherché quels étaient les paramètres qui nous permettaient d’obtenirune réduction du coût de calcul pour la méthode. Nous leurs avons ensuite fixé des valeurs pour simplifierencore la méthode.

Dans un deuxième temps, nous avons étudié 3 équations différentielles de types différents pour pouvoirinterpréter les résultats obtenus.

On a tout d’abord pu remarquer que la méthode de Runge-Kutta était très stable car le choix desparamètres et de leurs valeurs, même si il est indéniablement bénéfique pour obtenir une réduction des coûtsde calcul, n’affecte pas significativement les résultats. En effet, les différentes études avec des paramètresà valeurs différentes nous ont donnés sensiblement les mêmes résultats à chaque fois.

Malgré tout , le choix arbitraire de la valeur des paramètres est tout de même important car on peutobtenir une solution optimale très proche de la valeur réelle. Ce résultat n’est pas à négliger.Dans cette étude, nous avons trouver lorsque a31 était nul, les α devaient être pris respectivement de valeur0,18, 1/2 et 0.58 pour obtenir une solution optimale.

On peut par ailleurs remarquer que pour le 3ème exemple la valeur du paramètre qui réduit les calculsest la même que celle qui rend la solution optimale. Ceci est très intéressant même si nous n’avons pasretrouvé ces résultats sur les autres équations ( en fait on peut dire qu’ils sont quand même 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 précises, mais on ne peut pas

généraliser. En fait, on obtient parfois la même précision qu’avec la valeur optimale de α quand a31 = 0.Mais on peut tout de même penser que l’on peut fixer a31 = 0 car cela n’altère pas beaucoup la précisiondes calculs et les simplifie par contre de manière significative.

Nous avons aussi pu remarquer qu’il était très difficile de trouver une solution optimale lorsque l’ondoit fixer deux paramètres ( ici α et β).

Enfin, on peut noter que le choix du pas est très important. En effet, plus le pas choisi est petit, plusla précision des résultats est grande et le nombre de chiffre significatifs importants.

La diminution du pas entraîne donc une augmentation de la précision. Pour bien montrer que lechoix du pas est très important dans la méthode , on peut dire que l’on a remarqué qu’une division par 10du pas donne environ 3 chiffres significatifs de plus , soit une précision améliorée de l’ordre 10−3 pour lasolution ! ! !

Néanmoins, il ne faut pas oublier que cette diminution du pas provoque une augmentation dunombre de calcul. Il faut donc choisir judicieusement le pas pour à la fois obtenir la précision néces-saire sans avoir des coûts de calcul prohibitif.

- 25 -

Page 27: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

IV. CONCLUSION

La méthode de Runge-Kutta est donc très stable . Elle est également très efficace car les résultatstrouvés sont tous très bons. Celle-ci nécessite un choix précis des paramètres et du pas pour obtenirdes résultats optimaux ou un coût de calcul moindre.

Pour finir, on pourra dire que la méthode de Runge-Kutta d’ordre 3 est certainement plus précise quela méthode de Runge-Kutta d’ordre 2 puisqu’elle utilise un nombre de paramètre plus important.

- 26 -

Page 28: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

Annexe A

Code Source

A.1 rk3.fCe fichier est le coeur du programme. Il comporte les routines d’affichage, de saisie des paramètres

ainsi que l’algorithme de la méthode de Runge-Kutta d’ordre 3.

c**********************************************************cc Résolution d’une équations différentiellec du premier ordre par la méthode de RUNGE ET KUTTAc d’ordre 3c dy/dx = f(x,y(x) avec y(x0) = y0cc*********************************************************c*********************************************************cc copyright : (C) 2005 by Yves Houpert & Sylvain Archenaultcc This program is free software; you can redistribute it and/or modifyc it under the terms of the GNU General Public License as published byc the Free Software Foundation; either version 2 of the License, orc (at your option) any later version.c*********************************************************

c**********************************************************cc Programme principalcc**********************************************************

program rk3external h,g,e,sh,sg,se

integer rep,eqdouble precision alpha,param(7),dh

ieq = 0iparam = 0ipas = 0alpha = 0

- 27 -

Page 29: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

10 write(*,*) ’************************************************ ’write(*,*) ’* Programme de résolution * ’write(*,*) ’* d équations différentielles * ’write(*,*) ’* par la méthode de Runge-Kutta * ’write(*,*) ’* d ordre 3 * ’write(*,*) ’* (en simple précision) * ’write(*,*) ’************************************************ ’write(*,*)write(*,*) ’0- Quitter’write(*,*) ’1- Choisir l équation différentielle’write(*,*) ’2- Choisir le(s) paramètre(s)’write(*,*) ’3- Entrer le pas, et le nombre de points’write(*,*) ’4- Résoudre l équation différentielle’write(*,*) ’5- Afficher les données’read(*,*,ERR=10) rep

if(rep.eq.0) thenstopreturn

elseif(rep.eq.1) thencall choixEquation(eq,param)ieq = 1

elseif(rep.eq.2) thencall choixParam(param)iparam=1

elseif(rep.eq.3) thencall entrezPas(dh,n)ipas=1

elseif(rep.eq.4) thenif((iparam.ne.1).or.(ieq.ne.1).or.(ipas.ne.1)) then

write(*,*) ’Tous les paramètres n ont pas été saisie’goto 10

endifif(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) thencall afficheDonnees(param,eq,dh,n)

endif

goto 10

end

- 28 -

Page 30: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

c**********************************************************cc Routine permettant de choisir une équationcc**********************************************************

subroutine choixEquation(eq,param)

integer rep,eqdouble precision param(7)

write(*,*) ”100 write(*,*) ’Choix de l équation différentielle :’c Solution x^-3

write(*,*) ’1- f(x,y(x)) = -2y2+x(2x+3)y-x ; y(0) = 1/3’c Solution exp(x) + x + 1

write(*,*) ’2- f(x,y(x)) = -(3x2+1)y; y(0) = 5’c 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) theneq=1param(7) = 0

elseif(rep.eq.2) theneq = 2param(7) = 0

elseif(rep.eq.3) theneq = 3param(7) = 0

elsegoto 100

endif

returnend

c**********************************************************cc Routine permettant d’entrer le nombre de points et le pascc**********************************************************

subroutine entrezPas(h,n)

double precision hinteger n

120 write(*,*) ’Entrez le pas :’read(*,*,ERR=120) h

121 write(*,*) ’Entrez le nombre de points’read(*,*,ERR=121) nreturnend

- 29 -

Page 31: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

c**********************************************************cc Routine permettant de choisir la méthodes de tunge Kuttacc**********************************************************

subroutine choixParam(param)double precision param(7)integer rep

140 write(*,*) ”write(*,*) ’Choix des méthodes’write(*,*) ’1. a31 = 0, 1 paramètre’write(*,*) ’2. a32 non nul, 2 paramètres’read(*,*,ERR=140) repif(rep.eq.1) then

call choixParam1(param)elseif(rep.eq.2) then

call choixParam2(param)else

goto 140endifreturnend

c**********************************************************cc Routine permettant de choisir le 2 paramètres, A et Bccc 0 | 0 0 0c A | A 0 0c B | B-a32 a32 0c __________________c | c1 c2 c3ccc**********************************************************

subroutine choixParam2(param)

integer rep

double precision param(7),alpha,beta

write(*,*) ”145 write(*,*) ’Choix des paramètres :’

write(*,*) ’1- alpha = 1 et beta = 2/3’write(*,*) ’2- alpha = 1/6 et beta = 1/2’write(*,*) ’3- Choisir son propre alpha et beta’

read(*,*,ERR=145) rep

if(rep.eq.1) thenc alpha

param(1)= 1.d0c beta

- 30 -

Page 32: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

param(2)=2.d0/3c a32

param(3)= 2.d0/9c c1

param(4)= 1.d0/4c c2

param(5)=0.d0c c3

param(6)= 3.d0/4elseif(rep.eq.2) then

c alphaparam(1)=1.d0/6

c betaparam(2)=1.d0/2

c a32param(3)=2.d0/3

c c1param(4)=1.d0

c c2param(5)=-3.d0/2

c c3param(6)=3.d0/2

elseif(rep.eq.3) then146 write(*,*) ’Entrez alpha :’

read(*,*) alpha147 write(*,*) ’Entrez beta :’

read(*,*) betaA = 3.d0*alpha -2.d0B = (beta-alpha)ab = alpha*betabeta2 = beta*betaun = 1.d0/(2.d0*alpha)

c alpha,teta2param(1) = alpha

c beta, teta3param(2) = beta

c a32param(3) = beta*B / (-alpha)*A

c c1param(4) = 1.d0-un - A / (6.d0*ab)

c c2param(5) = un + A/(6.d0*alpha*B)

c c3param(6) = -A/(6.d0*beta*B)

elsegoto 145

endif

returnend

- 31 -

Page 33: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

c**********************************************************cc Routine permettant de choisir le paramètrecc 0 | 0 0 0c A | A 0 0c teta3| 0 teta3 0c __________________c | c1 c2 c3cc**********************************************************

subroutine choixParam1(param)

integer repdouble precision param(7),alpha

write(*,*) ”150 write(*,*) ’Choix des paramètres :’

write(*,*) ’1- Alpha = 1/3’write(*,*) ’2- Alpha = 1/2’write(*,*) ’3- Choisir son propre alpha’

read(*,*,ERR=150) rep

if(rep.eq.1) thenc alpha, teta2

param(1) = 1.d0/3c a32

param(2) = 2.d0/3c teta3

param(3) = 2.d0/3c c1, c2, c3

param(4) = 1.d0/4param(5) = 0.d0param(6) = 3.d0/4

elseif(rep.eq.2) thenc alpha

param(1) = 1.d0/2c a32

param(2) = 3.d0/4c teta3

param(3) = 3.d0/4c c1,c2,c3

param(4) = 2.d0/9param(5) = 1.d0/3param(6) = 4.d0/9

elseif(rep.eq.3) then160 write(*,*) ’Entrez vore propre alpha : ’

read(*,*,ERR=160) alphaalpha2 = alpha*alphaA = alpha-alpha2

c alphaparam(1) = alpha

c teta3

- 32 -

Page 34: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

param(3) = 3.d0*Ac 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)

elsegoto 150

endif

returnend

c**********************************************************cc Routine permettant d’afficher les donnéescc**********************************************************

subroutine afficheDonnees(param,eq,dh,n)

integer eqdouble precision param(7),dhwrite(*,*) ’les paramètres 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) thenwrite(*,*) ’f(x,y(x)) = -2y2+x(2x+3)y-x’write(*,*) ’x0 : ’,param(7),’ y0 : ’,sg(param(7))

elseif(eq.eq.2) thenwrite(*,*) ’f(x,y(x)) = y(x) - x; y(0) = 2’write(*,*) ’x0 : ’,param(7),’ y0 : ’,sh(param(7))

elseif(eq.eq.3) thenwrite(*,*) ’f(x,y(x)) = tan(x)/cos(y) : y(0) = 1’write(*,*) ’x0 : ’,param(7),’ y0 : ’,se(param(7))

endif

write(*,*)write(*,*) ’Pas :’,dh,’ Nombre de points :’,nread(*,*)returnend

- 33 -

Page 35: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

c**********************************************************cc Routine permettant de résoudre l’équationcc**********************************************************

subroutine rungeKutta(param,f,sol,h,n)

double precision param(7)double precision teta2,teta3,c1,c2,c3,a32,a31double precision x0,y0,x1,y1,hdouble precision 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 initialesx0 = param(7)y0= sol(x0)

write(*,*) xk,ykwrite(*,*) teta2,teta3,a31,a32,c1,c2,c3do 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+hy1=y0+h*c1*k1 + h*k2*c2 + c3*h*k3

write(*,1000) x1,y1,sol(x1),dabs(sol(x1)-y1)x0 = x1y0 = y1

enddo1000 format(’x :’,D24.16,’ y :’, D24.16,’ exact :’,

\ D24.16,’ erreur :’,D24.16)write(*,*)write(*,1050) , maxerreur

1050 format(’Erreur maximale : ’,D24.16)read(*,*)

returnend

- 34 -

Page 36: Les méthodes de Runge-Kutta d’ordre 3 - Freesylvain.archenault.free.fr/projets/rk3/rungekutta3.pdf · Chapitre 1 Introduction Le projet qui nous a été confié est d’étudier

I. CODE SOURCE

A.2 fonctions.fDans ce fichier, on a déclaré les fonctions que l’on a utilisé lors de notre étude, avec leur solution exacte.

c****************************************************c fonctions.fc Contient la declaration de toutes les fonctionsc utiles a rk3.fcc****************************************************c*********************************************************cc copyright : (C) 2005 by Yves Houpert & Sylvain Archenaultcc This program is free software; you can redistribute it and/or modifyc it under the terms of the GNU General Public License as published byc the Free Software Foundation; either version 2 of the License, orc (at your option) any later version.c*********************************************************function g(x,y)double precision x,y,gg = -2.d0*y*y+x*(2.d0*x+3.d0)*y-xreturnendfunction h(x,y)double precision x,y,hh = -(3*x*x+1)*yreturnendfunction e(x,y)double precision x,y,ee = tan(x)/cos(y)returnendfunction sg(x)double precision x,sgsg = 1.d0/(2.d0*x+3.d0)returnendfunction sh(x,y)double precision x,shsh = 5*exp(-x*x*x-x)returnendfunction se(x,y)double precision x,sese = asin(-log(cos (x)))returnend

- 35 -