• Aucun résultat trouvé

Méthode de dichotomie ou de bissection

Dans le document Analyse numérique élémentaire (Page 28-34)

Résolution de systèmes non linéaires

3.1 Recherche des zéros d'une fonction

3.1.1 Méthode de dichotomie ou de bissection

Dans un premier temps, on étudiera la méthode de dichotomie qui est assez naturelle. Puis on

4

étudiera plusieurs algorithmes liés à la méthode du point xe.

5

3.1.1 Méthode de dichotomie ou de bissection

6

Principe et résultats

7

principe de la méthode de dichotomie : SoitI un intervalle contenant un unique zéro de la fonctionf,on le divise par son milieu en deux intervalles et on détermine lequel des deux contient le zéro. On itére ce processus sur le nouvel intervalle.

8

Plus précisement, on suppose que la fonctionf vériefpaqfpbq ă0et qu'il existe un uniqueξPsa, br

9

tel quefpxq “0.

10

On noteIp0q“sa, bretx0“ pa`bq{2.Sifpx0q “0alors on a ni! Supposonsfpx0q ‰0,alorsξappartient

11

à sa, x0r si fpaqfpx0q ă 0, sinon il appartient à sx0, br. On vient donc de déterminer une méthode

12

permettant de diviser par2la longueur de l'intervalle de recherche deξ.On peut bien évidemment itérer

13

ce principe en dénissant les trois suitespakqkPN,pbkqkPN etpxkqkPNpar

14

‚ a0“a, b0“betx0a`b2 ,

15

‚ @kPN, xk “ pak`bkq{2,et

$

’&

’%

ak`1“bk`1“xk sifpxkq “0, ak`1“xk, bk`1“bk sifpbkqfpxkq ă0,

ak`1“ak, bk`1“xk sinon (i.e. fpakqfpxkq ă0.)

En Figure 3.2, on représente les intervalles successifs obtenus par la méthode de dichotomie pour

16

a“0.1, b“2.4etf :xÞÑ px`2qpx`1qpx´1q.

17

0.5 1 1.5 2 2.5 x

5 10 15 20 25 30 35

y

y=f(x)

a0 b0

a1 b1

a2 b2

a3 b3

a4 b4

a5 b5

a6 b6

a7 b7

a8 b8

a9 b9

Figure 3.2: Méthode de dichotomie: fpxq “ px`2qpx`1qpx´1q,

Exercice 3.1.1

18

3.Résolutiondesystèmesnonlinéaires 3.1.Résolutiondesystèmesnonlinéaires3.1.1Méthodededichotomieoudebissection On suppose que la fonctionf est continue surra, bs,vérie fpaqfpbq ă0 et qu'il existe un unique

ξPsa, brtel que fpxq “0.

Q. 1 1. Montrer que les suites pakqetpbkqconvergent versα.

2. En déduire que la suitepxkq converge versα.

Q. 2 1. Montrer que pour tout kPN,|xk´α| ď 2b´ak`1. 2. Soitą0.En déduire que si kě logp

b´a q

logp2q ´1alors |xk´α| ď.

1

Correction Exercice 3.1.1 2

Q. 1 1. Supposons qu'il existe k P N tel que fpxkq “ 0, (i.e. xk “ α car xk P ra, bs) alors par 3 constructionak`i “bk`i“xk`i“αpour toutiPN˚.Ceci assure la convergence des3suites vers 4

α. 5

Supposons maintenant que @k P N, fpxkq ‰ 0. Par construction, nous avons ak ď ak`1 ď b, 6

aďbk`1ďbk et akďbk.La suitepakqest convergente car elle est croissante et majorée. La suite 7 pbkq est décroissante et minorée : elle est donc convergente. De plus0 ďbk´ak ď bk´1´a2 k´1 et 8 donc 0 ďbk´ak ď 2b´ak`1. On en déduit que les suites pakq et pbkq ont même limite. Comme par 9 construction,@kPN, αP rak, bksceci entraine queαest la limite de ces2 suites. 10 2. Par construction,@kPN,,ak ďxk ďbk et comme les suitespakqetpbkqconvergent versα, la suite 11

pxkqconverge aussi versα. 12

Q. 2 1. On a@kPN, ak ďxkďbk etak ďαďbk d'où|xk´α| ďbk´ak.Ce qui donne

|xk´α| ďbk´akď bk´1´ak´1

2 ď b´a 2k`1. 2. Pour avoir |xk´α| ď,il sut d'avoir 2b´ak`1 ď,et donckělogp

b´a q

logp2q ´1. 13

˛ 14 15

On peut alors écrire la proposition suivante : 16

Proposition 3.1

Soitf :ra, bs ĂRÝÑRune fonction continue vériantfpaqfpbq ă0et admettantαPsa, brcomme unique solution defpxq “0.Alors la suitepxkqkPNdénie par la méthode de dichotomie converge versαet

|xk´α| ď b´a

2k`1, @kPN.

On a alors@ą0,@kě logp

b´a q logp2q ´1

|xk´α| ď.

17

A partir de ce résultat, on va proposer plusieurs variantes de l'algorithme de dichotomie. 18 On note tout d'abord que pour déterminerαil faut calculer la limite d'une suite et donc une innité 19 de termes! Numériquement et algorithmiquement, on se limite donc à déterminer une approximation de 20 α.La proposition 3.1 permet d'obtenir une approximationαdeαen un nombre ni d'itérations avec une 21 précisiondonnée: on choisi α“xkmin aveckmin“Eplogp

b´a q

logp2q qoùEp.qest la fonction partie entière. 22

Algorithmique 23

Tout d'abord nous allons poser "correctement" le problème pour lever toute ambiguité. En eet, si 24

le problème est rechercher une racine de f sur l'intervalle ra, bs par la méthode de dichotomie, dois-je 25 uniquement rechercher une approximation d'une racine ou calculer la suitepxkqou l'ensemble des suites 26 pxkq,pakqetpbkq? C'est ce que nous appelerons le(s) résultat(s)/objectif(s) de l'algorithme. L'écriture 27

3.Résolutiondesystèmesnonlinéaires 3.1.Résolutiondesystèmesnonlinéaires3.1.1Méthodededichotomieoudebissection

d'un algorithme est fortement corrélée aux objectifs souhaités.

1

Sauf note contraire, on choisira dans la suite comme objectif de déterminer une approximation de la

2

racineαdef :

3

Résultat : α : un réel tel que|α´α| ď.

4

Ensuite, pour aboutir à cet objectif on détermine les données (avec hypothèses) nécessaires et

su-5

isantes :

6

Données : a, b : deux réels aăb,

f : f :ra, bs ĂRÝÑRvériant les hypothèses de la proposition 3.1, : un réel strictement positif.

7

On peut alors noter (formellement pour le moment)Dichotomie la fonction permettant, à partir des donnéesf, a, b,et, de trouverα.Cette fonction algorithmique aura la syntaxe suivante :

αÐDichotomiepf, a, b, q

Nous allons maintenant proposer une manière d'aborder l'écriture de cette fonction dans un langage

8

algorithmique présenté dans []. On doit s'aranchir de tout (ou presque) symbolismes mathématiques

9

pour s'approcher au plus près des langages de programmation. Par exemple, la notation mathématique

10

pxkq10k“0 pour noter les11premiers itérés d'une suite n'est pas directement disponible dans les langages

11

de programmations : on peut par exemple passer par un tableau X de dimension 11 (au moins) pour

12

stocker les valeurs de la suite. Suivant les langages, l'accès aux composantes d'un tableau dière :

13

sous Matlab/Octave l'accès au 1er élément d'un tableau X se fait par X(1) et en C/C++/Python par

14

X[0]. Lors de l'écriture d'un algorithme, nous utiliserons l'opérateur () ou(exclusif) [] pour accéder

15

aux diérentes composantes d'un tableau : () si le 1er élément est d'indice1 ou [] si le 1er élément est

16

d'indice0.

17

Pour écrire un algorithme non trivial, nous utiliserons une technique de ranements d'algorithme

18

(voir []) : par ranements succéssifs, nous allons écrire des algorithmes équivalents pour aboutir au

19

nal à un algorithme n'utilisant que

20

• des instructions élémentaires (aectation, addition, somme, ...)

21

• des instructions composées (conditionnelle, boucles pour, tantque, ...)

22

• des fonctions usuelles, mathématiques (cos, exp, Epartie entière, ...), entrées/sorties , ...

23

présentent dans tous les langages.

24

L'idée est donc de partir d'un algorithme formel facile à comprendre puis de le détailler de plus en plus

25

au fur et à mesure des ranements. Le passage entre deux ranements successifs doit être simple.

26

Un petit rappel pour les algorithmes qui suivent : les données sont supposées ... données!

27

Algorithme3.1 R0

1: kminÐEplogp

b´a ǫ q

logp2q q Ź E,partieentière

2: Caluldelasuitepxkqkk“0min pardihotomie

3: αǫÐxkmin

Algorithme3.1 R1

1: kminÐEplogp

b´a ǫ q

logp2q q Ź E,partieentière

2: Initialisationdex0

3: PourkÐ0àkmin´1faire

4: Caluldelasuitepxk`1qpardihotomie

5: FinPour

6: αǫÐxkmin 28

Entre les ranementsR0etR1,nous avons juste décrit le principe de calcul de toute suite récurrente

29

d'ordre1.

30

Pour faciliter la lecture, nous rappelons la méthode de dichotomie :

31

3.Résolutiondesystèmesnonlinéaires 3.1.Résolutiondesystèmesnonlinéaires3.1.1Méthodededichotomieoudebissection et

xk`1“ ak`1`bk`1

2

Ecrit sous cette forme, le calcul de la suitepxkqnécessite le calcul simultané des suitespakqet pbkq. 1

Algorithme3.1 R1

1: kminÐEplogplogp2qb´aǫ qq Ź E,partieentière

2: Initialisationdex0

3: PourkÐ0àkmin´1faire

4: Caluldelasuitepxk`1qpardihotomie

5: FinPour

6: αǫÐxkmin

Algorithme3.1 R2

1: kminÐEplogplogp2qb´aǫ qq

2: a0Ða, b0Ðb

3: x0Ð a0`b2 0

4: PourkÐ0àkmin´1faire ŹCaluldexk`1

5: Sifpxkq ““0alors

6: ak`1Ðxk, bk`1Ðxk

7: SinonSifpxkqfpbkq ă0qalors

8: ak`1Ðxk, bk`1Ðbk

9: Sinon

10: ak`1Ðak, bk`1Ðxk

11: FinSi

12: xk`1Ðak`1`b2 k`1

13: FinPour

14: αǫÐxkmin

2 3

La transcription de ce ranement dans un langage de programmation n'est pas forcément triviale pour tout le monde. Quid deak, ,... qui sont syntaxiquement incorrectes dans un langage de programmation?

Le cas du est très simple : les lettres grecques étant prohibées, on la remplacera par exemple par eps. Pour les suites pakq, pbkqet pxkq, tronquées à kmin, on pourra utiliser des tableaux (vecteurs) de kmin`1réels notésAAA, BBB etXXX qui contiendront respectivement l'ensemble des valeursak, bk etxk pour 0ďkďkmin.Plus précisément nous pourrons utiliser les opérateurspq(indice des tableaux commence à 1) ours (indice des tableaux commence à0) pour accéder aux diérents éléments des tableaux et nous aurons par conventionAAApk`1q “AAArks “ak, @kP v0, kminw.Par la suite nous utiliserons les opérateurs pqet nous aurons alors

@kP v0, kminw, AAApk`1q “ak, BBBpk`1q “bk etXXXpk`1q “xk.

En utilisant ces changements de notations nous obtenons (enn) l'Algorithme 3.1. 4

3.Résolutiondesystèmesnonlinéaires 3.1.Résolutiondesystèmesnonlinéaires3.1.1Méthodededichotomieoudebissection

Algorithme 3.1 Méthode de dichotomie : version 1 Données : a, b : deux réelsaăb,

f : f :ra, bs ĂRÝÑRvériant

les hypothèses de la proposition 3.1, eps : un réel strictement positif.

Résultat : x : un réel tel que|x´α| ďeps.

1: FonctionxÐDichotomie1(f, a, b,eps )

2: kminÐEplogppb´aq{epsq{logp2qq

3: AAA, BBB, XXX PRkmin`1 ŹAAApk`1qcontiendraak,...

4: AAAp1q Ða, BBBp1q Ðb, XXXp1q Ð pa`bq{2

5: Pour kÐ1 à kmin faire

6: SifpXXXpkqq ““0alors

7: AAApk`1q ÐXXXpkq, BBBpk`1q ÐXXXpkq

8: Sinon SifpBBBpkqqfpXXXpkqq ă0 alors

9: AAApk`1q ÐXXXpkq, BBBpk`1q ÐBBBpkq

10: Sinon

11: AAApk`1q ÐAAApkq, BBBpk`1q ÐXXXpkq

12: Fin Si

13: XXXpk`1q Ð pAAApk`1q `BBBpk`1qq{2

14: Fin Pour

15: xÐXXXpkmin`1q

16: Fin Fonction

Des codes Matlab/Octave et C correspondant de cette fonction sont données en Annexe A.4.1,

re-1

spectivement en Listing A.1 et A.2. Les Listings A.3 et A.4 correspondent respectivement à un script

2

Matlab et un main C utilisant cette fonction.

3

On peut noter qu'une réécriture de la méthode de dichotomie permet d'éviter d'utiliser les deux suites

4

pakqet pbkq.En eet, on a

5

‚ A“a, B“bet x0A`B2 ,

6

‚ @kP v0, kmin´1w,

$

’&

’%

A“B“xk sifpxkq “0, A“xk, B inchangé sifpBqfpxkq ă0,

B“xk, Ainchangé sinon (i.e. fpAqfpxkq ă0.)

et

xk`1“A`B 2

On utilise, ces formules dans l'Algorithme 3.2.

7

3.Résolutiondesystèmesnonlinéaires 3.1.Résolutiondesystèmesnonlinéaires3.1.1Méthodededichotomieoudebissection Algorithme 3.2 Méthode de dichotomie : version 2

Données : a, b : deux réels aăb,

f : f :ra, bs ĂRÝÑRvériant

les hypothèses de la proposition 3.1, eps : un réel strictement positif.

Résultat : x : un réel tel que |x´α| ďeps.

1: FonctionxÐDichotomie2(f, a, b,eps )

2: kminÐEplogppb´aq{epsq{logp2qq

3: XXX PRkmin`1 ŹXXXpk`1qcontiendraxk,...

4: AÐa, BÐb, XXXp1q Ð pA`Bq{2

5: PourkÐ1à kmin faire

6: Si fpXXXpkqq ““0 alors

7: AÐXXXpkq, BÐXXXpkq

8: Sinon Si fpBqfpXXXpkqq ă0alors

9: AÐXXXpkq ŹB inchangé

10: Sinon

11: BÐXXXpkq ŹA inchangé

12: Fin Si

13: XXXpk`1q Ð pA`Bq{2

14: Fin Pour

15: xÐXXXpkmin`1q

16: Fin Fonction

Si notre objectif n'est que de calculer α, on peut, sur le même principe, s'aranchir d'utiliser un 1 tableau pour stocker tous les termes de la suite xk : seul le dernier nous interesse. On propose dans 2

l'Algorithme 3.3, une version n'utilisant pas de tableaux. 3

Algorithme 3.3 Méthode de dichotomie : version 3 Données : a, b : deux réels aăb,

f : f :ra, bs ĂRÝÑRvériant les hypothèsesde la proposition 3.1, eps : un réel strictement positif.

Résultat : x : un réel tel que |x´α| ďeps.

1: FonctionxÐDichotomie2(f, a, b,eps )

2: kminÐEplogppb´aq{epsq{logp2qq

3: A, BPR

4: AÐa, BÐb, xÐ pa`bq{2

5: PourkÐ1à kmin faire

6: Si fpxq ““0 alors

7: AÐx, B Ðx

8: Sinon Si fpBqfpxq ă0 alors

9: AÐx ŹB inchangé

10: Sinon

11: BÐx ŹAinchangé

12: Fin Si

13: xÐ pA`Bq{2

14: Fin Pour

15: Fin Fonction

Une autre écriture est possible sans utiliser le nombrekminet donc en utilisant une boucle Tantque 4 (pour les anglophobes!) ou While (pour les anglophiles!). Celle-ci est présentée dans l'Algorithme 3.4 5

3.Résolutiondesystèmesnonlinéaires 3.2.Résolutiondesystèmesnonlinéaires3.2.0Méthodededichotomieoudebissection

Algorithme 3.4 Méthode de dichotomie : version 4 Données : a, b : deux réelsaăb,

f : f :ra, bs ĂRÝÑR..., eps : un réel strictement positif.

Résultat : x : un réel tel que|x´α| ďeps.

1: FonctionxÐDichotomie4(f, a, b,eps )

2: A, BPR

3: AÐa, BÐb, xÐ pa`bq{2

4: Tantque|x´A| ąeps faire

5: Sifpxq ““0alors

6: AÐx, BÐx

7: Sinon SifpBqfpxq ă0alors

8: AÐx ŹB inchangé

9: Sinon

10: BÐx ŹAinchangé

11: Fin Si

12: xÐ pA`Bq{2

13: Fin Tantque

14: Fin Fonction

Que pensez-vous de l'algorithme suivant ?

1

Algorithme 3.5 Méthode de dichotomie : version 5 Données : a, b : deux réelsaăb,

f : f :ra, bs ĂRÝÑR Résultat : x : un réel tel quefpxq “0.

1: FonctionxÐDichotomie5(f, a, b)

2: A, BPR

3: AÐa, BÐb, xÐ pa`bq{2, xpÐa

4: Tantque x„“xp faire

5: SifpBqfpxq ă0alors

6: AÐx ŹB inchangé

7: Sinon

8: BÐx ŹAinchangé

9: Fin Si

10: xpÐx

11: xÐ pA`Bq{2

12: Fin Tantque

13: Fin Fonction

Des codes Matlab/Octave et C correspondant de cette fonction sont données en Annexe A.4.1,

re-2

spectivement en Listing A.5 et A.6. Les Listings A.7 et A.8 correspondent respectivement à un script

Dans le document Analyse numérique élémentaire (Page 28-34)

Documents relatifs