Méthodes numeriques pour la physique - CINaM

0 downloads 0 Views 463KB Size Report
On parle souvent de précision du résultat au cours de calculs numériques. ..... D'un point de vue numérique, cela va être équivalent `a une racine car le ...
M´ ethodes numeriques pour la physique

Licences de Physique Facult´e des Sciences de Luminy

Hubert Klein ([email protected]) CiNaM UPR CNRS 3118 case 913 facult´e des Sciences de Luminy 13288 Marseille cedex 9

Table des mati` eres Introduction

4

Repr´ esentation des nombres dans un ordinateur

6

I

9

Tri et mod´ elisation de donn´ ees

1 Algorithmes de tri de 1.1 Tri `a bulle . . . . . 1.2 Tri par insertion . 1.3 Tri shell . . . . . . 1.4 Tri rapide . . . . .

. . . .

10 11 12 13 15

2 Cacul de quelques grandeurs statistiques usuelles 2.1 Moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 variance, ´ecart-type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 M´edian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 17 18 18

3 R´ egression lin´ eaire par la m´ ethode des moindres carr´ es 3.1 D´efinition du probl`eme . . . . . . . . . . . . . . . . . . . . 3.2 Impl´ementation . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Exemple d’application : ajustement d’une fonction lin´eaire 3.3.1 prise en compte de l’incertitude sur les mesures . .

19 19 19 20 20

II

donn´ ees . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . y .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . . . . . . . = a.x + b . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

M´ ethodes num´ eriques

4 Recherche des racines d’une fonction 4.1 Encadrement . . . . . . . . . . . . . 4.2 Dichotomie . . . . . . . . . . . . . . 4.2.1 Convergence de la m´ethode . 4.3 M´ethode de Newton - Raphson . . . 4.3.1 Convergence de la m´ethode .

23 . . . . . 2

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

24 24 26 26 28 28

` TABLE DES MATIERES

3

5 Minimisation ou maximisation d’une 5.1 Recherche par la section d’or (golden 5.1.1 Principe . . . . . . . . . . . . 5.1.2 Convergence . . . . . . . . .

fonction 31 section search) . . . . . . . . . . . . . . . . 31 . . . . . . . . . . . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Interpolation 6.1 Interpolation lin´eaire . . . . . . . . . . 6.2 Interpolation quadratique . . . . . . . 6.3 G´en´eralisation ` a l’ordre n . . . . . . . 6.3.1 Du bon usage de l’interpolation

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

36 36 38 39 40

7 Int´ egration de fonctions 7.1 Int´egration par la m´ethode des rectanges . . . 7.1.1 Incertitude de la m´ethode . . . . . . . 7.2 Int´egration par la m´ethode des trap`ezes . . . 7.2.1 Incertitude de la m´ethode . . . . . . . 7.3 Int´egration par la m´ethode de Simpson . . . . 7.3.1 Incertitude de la m´ethode . . . . . . . 7.4 M´ethode de Romberg . . . . . . . . . . . . . 7.5 D´etermination d’un pas optimal d’int´egration

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

41 41 43 43 44 44 45 45 46

8 D´ erivation num´ erique 8.1 Formule d’Euler . . . . . . . 8.1.1 Erreur intrins`eque . 8.2 D´erivation au demi-pas . . . 8.2.1 Stabilit´e num´erique

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

48 48 48 49 49

. . . . . . . . .

51 52 53 54 55 55 56 57 58 59

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

9 R´ esolution d’´ equations diff´ erentielles lin´ eaires 9.1 M´ethode d’Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1.1 Pr´ecision et stabilit´e de la m´ethode . . . . . . . . . . . . . 9.1.2 Exemple d’application : la loi de d´ecroissance radioactive 9.2 M´ethode du saut de grenouille . . . . . . . . . . . . . . . . . . . 9.2.1 Stabilit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Algorithme Verlet-vitesses . . . . . . . . . . . . . . . . . . . . . . 9.4 M´ethode de Runge Kutta ` a l’ordre 2 . . . . . . . . . . . . . . . . 9.4.1 Stabilit´e de la m´ethode . . . . . . . . . . . . . . . . . . . 9.5 M´ethode Runge Kutta ` a l’ordre 4 . . . . . . . . . . . . . . . . . . A R´ ef´ erences bibliographiques et informatiques

M´ ethodes Informatiques pour la physique

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

62

H. Klein

Introduction Ce document n’a pas pour but d’ˆetre un cours d’informatique, encore moins un cours d’analyse num´erique. L’id´ee en est plutˆ ot d’utiliser la puissance de calcul d’un ordinateur pour traiter des probl`emes physique tr`es vari´es. Pourquoi utiliser un ordinateur ? Pour gagner du temps par exemple lors d’un calcul fastidieux que l’on pourrait r´ealiser `a la main, mais aussi dans des cas o` u le probl`eme ne peut pas ˆetre trait´e avec un crayon et une feuille de papier (certaines ´equations n’ont par exemple pas de solutions analytiques). Nous aborderons au cours de ce cours les m´ethodes classiques de calcul num´erique qui nous permettrons d’int´egrer des fonctions, de calculer leurs racines, d’int´egrer des syst`emes d’´equations diff´erentielles. . .Dans une deuxi`eme partie nous aborderons l’usage d’un ordinateur pour traiter des donn´ees. Cet aspect statistique du calcul num´erique est particuli`erement utilis´e par les exp´erimentateur, notamment en physique o` u les volumes de donn´ees peuvent ˆetre particuli`erement important et les calculs r´ep´etitifs. L’utilisation d’un ordinateur permet dans ces cas de gagner beaucoup de temps. Les calculs num´eriques sont apparus bien avant l’apparition des ordinateurs. Au XVII si`ecle par exemple, John Napier (1550-1616) introduisit les logarithmes (Mirifici logarithmorum canoni descriptio, Edimbourg,1614). Les multiplications pouvait ˆetre transform´ee en addition, un calcul de racine carr´ee en division par deux. C’´etait d´ej`a un gain de temps appr´eciable . . .De nombreux contemporains de Napier r´ealis`erent des prouesses en calculs num´eriques (calculs des orbites plan´etaires par exemple), et tout ceci ` a la main. Outre le temps requis par de tels calculs, les erreurs ´etaient monnaie courante. Aussi, l’id´ee d’automatiser ces calculs fastidieux apparut rapidement. Le baron Gaspard de Prony ´etait charg´e pendant le premier empire de mettre en place des tables pour le calcul des impˆ ots fonciers (dont les r`egles ´etaient d´ej`a complexes `a l’´epoque). Il eut l’id´ee de fractionner ce travail ´enorme en plusieurs partie. Des math´ematiciens d´ecompos`erent tous les calculs n´ecessaires en op´erations ´el´ementaires, des gestionnaires organis`erent le travail et collect`erent les r´esultats. Enfin, les calculs ´el´ementaires furent assur´es par des op´erateurs pour lesquels la qualification requise ´etait de savoir faire des additions. Cette approche est exactement celle d’un programmeur devant r´esoudre un probl`eme ` a l’aide d’un ordinateur : sa tˆache est d’´ecrire un algorithme, c’est `a dire de d´ecomposer un probl`eme en une s´erie de tˆaches ´el´ementaires compr´ehensibles par un ordinateur (additions, comparaisons . . .), et de d´efinir l’ordre d’ex´ecution de ces tˆaches. Dans ce cas, les op´erateurs humains sont remplac´es par un calculateur beaucoup plus rapide. La m´ecanisation du calcul suivit, notamment grˆ ace `a un anglais, Charles Babbage au d´ebut du XIX si`ecle. Il eut l’id´ee d’associer cette id´ee de d´ecomposition d’un probl`eme en tˆaches simples `a une machine ` a calculer m´ecanique ressemblant `a la machine de Pascal et `a un syst`eme 4

` TABLE DES MATIERES

5

de lecture de cartes perfor´ees utilis´ees sur les m´etiers `a tisser Jacquard. Sa machine `a diff´erences ´etait l’analogue m´ecanique de nos calculateurs ´electroniques. Cependant, son id´ee n’aboutit pas, car il se heurta a de tr`es importantes difficult´es techniques. Mais l’id´ee ´etait lanc´ee . . . Cette id´ee fut concr´etis´ee en 1890 par Herman Hollerith qui r´epondit `a un appel d’offre du gouvernement am´ericain pour traiter les donn´ees du recensement national. Le traitement des donn´ees du recensement pr´ec´edent avait n´ecessit´e sept ans de travail. Hollerith proposa une machine qui lisait les donn´ees sur des cartes perfor´ees, et le r´esultat fut obtenu en six semaines. Un gain de temps appr´eciable. Hollerith fonda alors une soci´et´e, la Tabulating Machine Company qui devint en 1924 la International Business Machines, plus connue sous le sigle IBM . . . Au cours de la deuxi`eme guerre mondiale, les efforts de recherche dans ce domaine se sont intensifi´es : les arm´ees avaient besoin de gros volumes de calcul (´etablissement de tables de port´ee de tir pour l’artillerie, d´ecryptage des communications ennemies . . .). Les premiers calculateurs ´electroniques ont vu le jour tr`es peu de temps apr`es la guerre (l’ENIAC en 1946 aux Etats-Unis). L’invention du transistor en 1951 par John Bardeen, William Shockley et Walter Brattain a ensuite ouvert la voie aux calculateurs ´electroniques modernes. Leurs performances n’ont depuis jamais cess´e de croˆıtre.

M´ ethodes Informatiques pour la physique

H. Klein

Repr´ esentation des nombres dans un ordinateur On parle souvent de pr´ecision du r´esultat au cours de calculs num´eriques. Cette pr´ecision n’est jamais une pr´ecision absolue. En effet, outre le fait qu’un algorithme puisse introduire une impr´ecision dans les r´esultats, les nombres eux-mˆemes sont repr´esent´es avec une certaine pr´ecision dans la m´emoire d’un ordinateur.

Repr´ esentation des nombres entiers Dans la m´emoire d’un ordinateur, les nombres ont une repr´esentation binaire, c’est `a dire une suite de 0 et de 1. Aisi pour les nombres entiers on obtient la correspondance suivante entre repr´esentation d´ecimale (premi`ere ligne) et binaire (deuxi`eme ligne) 0 1 2 3 4 5 6 7 8 9 10 ... 0 1 10 11 100 101 110 111 1000 1001 1010 . . . Une case contenant em m´emoire un 0 ou un 1, est appel´ee un bit. Dans la majorit´e des ordinateurs, ces bits sont regroup´es par 8, les octets ou bytes. Ces octets constituent alors un emplacement correspondant ` a une adresse dans la m´emoire. Le tableau pr´ec´edent s’´ecrirait en fait 0 1 2 3 4 5 ... 00000000 00000001 00000010 00000011 00000100 00000101 . . . Avec un octet on peut repr´esenter les nombres entiers 0 . . . 28 − 1, c’st `a dire de 0 `a 255. Afin d’avoir une dynamique de repr´esentation plus importante, on groupe des octets en mots, la taille de ces mots d´ependant du nombre de bits qu’un ordinateur sait manipuler en une op´eration. Sur les ordinateurs personnels actuels, la taille de ces mots est de 32 bits soit 4 octets. Dans un mot de quatre octets, on peut coder les entiers allant de 0 `a 232 − 1 soit de 0 `a 4 294 967 296. Pour pouvoir repr´esenter les nombres n´egatifs, on change de convention de codage : un nombre n´egatif est le compl´ement ` a deux de sa valeur positive. Par exemple 00000001 = 1 et 11111110=-1 (au lieu de 254). Aisi de 00000000=0 `a 01111111=127 on code des nombres positifs, et de 11111110=-1 ` a 11111111=-128 des nombres n´egatifs. Sur 32 bits, on peut coder des nombres entiers sign´es allant de −231 `a 231 − 1 6

` TABLE DES MATIERES

7

Repr´ esentation des nombres r´ eels Parler de√nombre r´eels est abusif, on ne peut en effet traiter que des nombres rationels, par exemple 2 = 1.4142213562 . . .. La restriction est encore plus grande puisque l’on ne peut repr´esenter qu’un nombre fini de chiffres : 1/3 devient par exemple 0.33333333. Si l’on supprime la virgule, ce nombre peut ˆetre repr´esent´e√comme un entier, il suffit ensuite d’indiquer la position de la virgule par une puissance de 10. 2 = 1.4142213562 peut s’´ecrire 14142213562.10−9 ou encore 0, 14142213562.101 . L’avantage de la deuxi`eme ´ecriture est que l’expression des chiffres composant le nombre est comprise entre 0 et 1, chaque chiffre correspondant `a une puissance n´egative de 10. On pourra donc repr´esenter un nombre avec 3 papram`etres : le signe, la position de la virgule (ou l’exposant) et les chiffres (ou la mantisse). La d´ecomposition que nous avons fait en base 10 peut sans probl`eme ˆetre transpos´ee en base 2. Aisi un nombre r´eel cod´e sur 4 octets se r´epartit de la mani`ere suivante – 1 bit de signe – 8 bits pour l’exposant – 23 bits pour la mantisse, comme le premier chiffre sera toujours z´ero, on peut l’omettre et gagner ainsi un bit significatif Cette convention appel´ee notation en virgule flottante permet de coder les nombres r´eels de ±1, 175494.10−38 ` a ±3, 402823.1038 avec 7 chiffres significatifs. Il est aussi possible de repr´esenter un nombre r´eels sur 64 bits (8 octets) en double pr´ecision avec 15 chiffres significatifs de ±2, 225074.10−308 ` a 1, 797693.10308 . Il convient cependant de se rappeler que cette repr´esentation des nombres r´eels n’est pas exacte, c’st une approximation.

Cons´ equences La cons´equence de ces repr´esentations, est que les calculs se feront toujours avec une certaine pr´ecision intrins`eque (par exemple 7 chiffres significatifs). Imaginons que nous voulions r´ealiser le calcul suivant avec des nombres r´eels cod´es sur 4 octets si+1 = si + 10−9 avec s0 = 1, si l’on r´ep`ete le calcul 109 fois, le r´esultat donnera 1... La raison en est que pour r´ealiser l’addition la machine dispose d’une pr´ecision de 10−7 , donc 1+10−9 = 1. Le mˆeme calcul conduit en double pr´ecision donnerait un r´esultat correct (la pr´ecision est alors de 15 chiffres). Il faut donc extrˆemement prudent lorsque l’on r´ealise des op´erations entre des nombres qui peuvent prendre des valeurs tr`es diff´erentes. Il est aussi prudent de se rappeler que lorsque l’on fait des calculs it´eratifs (ce qui est tr`es fr´equent en calcul num´erique), les erreurs peuvent s’ajouter les unes aux autres pour finalement conduire `a des r´esultats dont l’erreur n’est pas n´egligeable, voire ` a des r´esultats aberrants. Un deuxi`eme cas classqiue d’erreur est le suivant : on compare un nombre r´eel if(a == 0.0) then .... Le r´esultat d’une telle comparaison est al´eatoire `a cause des arrondis ! Imaginons que a soit le r´esultat d’un long calcul, va-t-il valoir 0 ou 0, 1234567.10−35 ? Il est prudent de remplacer M´ ethodes Informatiques pour la physique

H. Klein

` TABLE DES MATIERES

8

la comparaison pr´ec´edente par if(|a| < ǫ), qui se traduirait par : si |a| est inf´erieur `a la pr´ecision alors . . . Il faut cependant se poser la question de la pr´ecision adapt´ee `a un calcul : si l’on est capable repr´esenter un nombre avec une pr´ecision de 10−7 , cela ne repr´esente pas une pr´ecision absolue mais relative. On pourra par exemple par exemple repr´esenter x ≈ 1 avec cette pr´ecision, mais x ≈ 1020 sera repr´esent´e avec une pr´ecision de 10−7 × 1020 = 1013 . . . D’une mani` ere g´ en´ erale, lorsque l’on fait des calculs num´ eriques, il est utile de v´ erifier le calcul sur des cas o` u l’on connait la solution afin de v´ erifier le fonctionnement correct d’un programme.

M´ ethodes Informatiques pour la physique

H. Klein

Premi` ere partie

Tri et mod´ elisation de donn´ ees

9

Chapitre 1

Algorithmes de tri de donn´ ees Ce chapitre n’a a priori pas grand chose `a voir avec le calcul num´erique, c’est cependant une ´etape n´ecessaire et pr´ealable ` a des manipulations plus sophistiqu´ees ( par exemple des calculs statistiques) . C’est de plus un domaine o` u de tr`es nombreux algorithmes ont ´et´e propos´es, et nous allons en d´etailler quelques uns. Un peu d’algorithmique ne peut pas faire de mal . . . Pour effectuer un tri, nous allons placer les donn´ees dans un tableau, nous supposerons dans la suite que ce tableau comport N ´el´ements. Le but sera de r´eduire au minimum le nombre d’op´erations pour trier ces N ´el´ements. Cette optimisation est souvent indispensable, lorsque le nombre de donn´ees est important, o` u lorsqu’on est amen´e a` r´ep´eter le tri un grand nombre de fois. Le nombre d’op´erations n´ecessaires pour trier un tableau de N ´el´ements, n − op est variable en fonction des algorithmes :

N log2 N ≤ n − op ≤ N 2

Dans ce chapitre nous allons aborder deux types de m´ethodes : – simples, mais peu performantes : tri `a bulle ou par insertion – moins simples mais plus performantes : tri rapide ou shell 10

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

1.1

11

Tri ` a bulle

Le principe du tri ` a bulle est des plus simples : supposons que l’on souhaite classer un tableau de nombres entiers par ordre croissant, on va alors parcourir le tableau contenant les N nombres. Le plus petit nombre sera rang´e dans la prei`ere case du tableau. Il ne reste plus qu’`a trier N − 1 ´el´ements pour lesquels on r´ep`ete la mˆeme op´eration. Une illustration de l’algorithme 1 est donn´ee dans la figure 1.1 Algorithme 1 Tri d’un tableau par tri ` a bulle Requiert: un tableau tab[N] de N ´el´ements Fournit: le tableau tri´e par ordre croissant pour i = 0 `a N − 1 faire tampon ← i pour j = i + 1 ` a N − 1 faire si tab[j] ≤ tab[tampon] alors tampon ← j fin si fin pour ttampon ← tab[i] tab[i] ← tab[tampon] tab[tampon] ← ttampon fin pour renvoyer tab[]

Fig. 1.1 – Tri d’un tableau par la m´ethode du tri `a bulle. Cet algorithme requiert en moyenne N 2 op´erations pour trier un tableau de N ´el´ements. Pour cette raison cette m´ethode de tri, tr`es simple `a impl´ementer n’est utilis´ee que pour de petits ensemble de donn´ees. M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

1.2

12

Tri par insertion

Cette m´ethode de tri est bien connue des joueurs de cartes : on commence par trier les deux premi`eres cartes l’une par rapport ` a l’autre, puis on trie la troisi`eme par rapport aux deux premi`eres, et ainsi de suite jusqu’`a ce que toutes les cartes soient tri´ees. Une illustration de l’algorithme 2 est donn´ee ` a la figure 1.2. Algorithme 2 Tri d’un tableau par insertion Requiert: un tableau tab[N] de N ´el´ements Fournit: le tableau tri´e par ordre croissant pour i = 1 `a N faire tampon ← tab[i] j ←i−1 tant que j ≥ 0 ET tab[j] > tampon faire tab[j + 1] ← tab[j] j ←j−1 fin tant que tab[j + 1] ← tampon fin pour renvoyer tab[]

Fig. 1.2 – Tri d’un tableau par la m´ethode du tri par insertion. Cet algorithme demande ´egalement N 2 op´erations pour trier un tableau de N ´el´ements, ce n’est donc pas a priori une m´ethode tr`es performante pour de grands ensembles car la recherche de l’emplacement o` u ranger un ´el´ement dans l’ensemble tri´e n´ecessite ´eventuellement de le comparer ` a tous les autres ´el´ements.Le grand int´erˆet de cette m´ethode est que dans le cas o` u l’on veut ins´erer un ´el´ement dans un ensemble d´ej`a tri´e, il est simplement n´ecessaire de parcourir une fois l’ensemble d´ej`a tri´e pour positionner le nouvel ´el´ement. C’est la raison pour laquelle cette m´ethode est particuli`erement adapt´ee au tri incr´emental. Consid´erons par exemple un syst`eme de r´eservation dans un hotel : tous les clients sont affich´es par ordre alphab´etique. Si la liste est mise ` a jour lorsque de nouveaux clients arrivent, la mise en place d’un nouveau M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

13

client dans la liste ne n´ecessitera qu’un simple d´ecalage des donn´ees.

1.3

Tri shell

Le tri shell est une variante plus performante du tri par insertion. Cet algorithme appliqu´e ` a un tableau rang´e au hasard n´ecesite environ N 1.25 op´erations. Cependant pour N > 50, le tri rapide est plus performant. L’id´ee de base est la suivante : soit un ensemble de nombres n1 . . . n1 6. Nous allons d’abord trier par insertion 8 groupes de 2 nombres (n1 , n9 ), (n2 , n10 ), . . . , (n8 , n16 ). Puis 4 groupes de 4 nombres (n1 , n5 , n9 ), (n2 , n6 , n10 , n14 ), . . . , (n4 , n8 , n12 , n16 ). Puis 2 groupes de 8 nombres (n1 , n3 , n5 , n7 , n9 , n11 , n13 , n15 ), (n2 , n4 , n6 , n8 , n10), n12 , n14 , n16 , et enfin un groupe de 16 nombres. A priori, seule la derni`ere ´etape est n´ecessaire. L’int´erˆet des ´etapes pr´eliminaires est d’effectuer un filtrage qui va rapprocher tous les ´el´ements de leurs places finales. Ainsi, `a la derni`ere ´etape, seule quelques comparaisons sont n´ecessaires pour que chaque ´el´ement trouve sa place dans l’ensemble tri´e. La performance de l’algorithme d´epend de l’incr´ement utilis´e entre nombres. Dans notre cas, nous d´emarrons avec les couples (n1 , n9 ) . . ., puis (n1 , n5 . . .. L’incr´ement sera ici 8, 4, 2, 1, cette s´erie n’est pas un bon choix. Il y a eu de nombreux travaux sur ces suites d’incr´ements, et il en ressort que le meilleur compromis est de la forme 3k − 1 , . . . , 40, 13, 4, 1 3 cette s´erie peut-ˆetre g´en´er´ee par la r´ecurrence suivante i1 = 1, ik+1 = 3ik + 1, k = 1, 2, . . . Il a ´et´e d´emontr´e qu’en utilisant cette s´erie d’incr´ements, l’algorithme n´ecessite N 1.5 op´erations dans le pire des cas. L’algorithme 3 est illustr´e par la figure 1.3.

Fig. 1.3 – Tri d’un tableau par la m´ethode du tri shell.

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

14

Algorithme 3 Tri d’un tableau par la m´ethode du tri shell Requiert: un tableau tab[N] de N ´el´ements Fournit: le tableau tri´e par ordre croissant inc ← 1 r´ ep´ eter inc ← inc ∗ 3 inc ← inc + 1 tant que inc ≤ N r´ ep´ eter inc ← inc/3 pour i = inc ` a N faire tampon ← tab[i] j←i tant que tab[j − inc] > tampon faire tab[j] ← tab[j − inc] j ← j − inc si j < inc alors sortir fin si fin tant que tab[j] ← tampon fin pour tant que inc > 1 renvoyer tab[]

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

1.4

15

Tri rapide

Pour de grands ensemble de donn´ees , cet algorithme est l’algorithme le plus rapide sur la plupart des ordinateurs. Le principe de cet algorithme (4) est de partitionner le tableau `a trier par rapport `a une valeur pivot. Tout les ´el´ements dont la valeur est sup´erieure au pivot seront plac´es apr`es le pivot (haut de la figure 1.4, les ´el´ements inf´erieurs avant. Cette op´eration est ensuite r´ep´et´ee sur les deux sous-ensembles de valeurs jusqu’`a ce que le tableau soit compl`etement tri´e (bas de la figure 1.4). La valeur choisie pour le pivot a peu d’importance, on peut tr`es bien choisir une valeur au hasard du tableau, mais pour plus de clart´e, dans la figure 1.4, le m´edian des valeurs a ´et´e choisi comme pivot pour chaque op´eration. Algorithme 4 Tri d’un tableau par la m´ethode du tri rapide. Dans cet algorithme, le pivot est le dernier ´el´ement du tableau. Requiert: un tableau tab[N] de N ´el´ements, initialement debut = 1, f in = N − 1 Fournit: le tableau tri´e par ordre croissant si debut < f in alors pivot ← tab[N − 1] i ← debut − 1 j ← f in r´ ep´ eter r´ ep´ eter i ←i+1 tant que tab[i] < pivot r´ ep´ eter j ←j−1 tant que tab[j] ≥ pivot tampon ← tab[i] tab[i] = tab[j] tab[j] ← tampon le pivot est maintenant dans tab[i] tant que i < j appel recursif 1 : debut, f in = i − 1 appel recursif 2 : debut = i + 1, f in fin si renvoyer tab[]

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 1. ALGORITHMES DE TRI DE DONNEES

16

Fig. 1.4 – Tri d’un tableau par la m´ethode du tri rapide. En haut : on a choisi le pivot 28, premier tri du tableau. En bas : Visualisation des op´erations de tris succesives.

M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 2

Cacul de quelques grandeurs statistiques usuelles Ce chapitre ne se veut pas exhaustif, nous allons simplement aborder le calcul des grandeurs statistiques les plus couramment utilis´ees par les physiciens, comme la moyenne. Nous verrons notamment que, si certains calculs sont tr`es simples `a r´ealiser, ils peuvent n´eanmoins receler certains pi`eges. Quand un distribution de donn´ees a tendance `a ˆetre group´e autour d’une valeur particuli`ere, il peut alors ˆetre utile de le caract´eriser par des nombres reli´es `a ses moments, c.a.d. la somme de puissances enti`eres de ses valeurs.

2.1

Moyenne

Le calcul d’une valeur moyenne x est certainement la mani`ere la plus simple de caract´eriser une distribution de N donn´ees xi n 1 X xi x= N i=1 l’information obtenue est assez pauvre : on sait maintenant que les donn´ees sont r´eparties plus ou moins r´eguli`erement autour de la valeur moyenne x. Le calcul est ´el´ementaire ` a r´ealiser ` a l’aide d’un ordinateur, mais il peut poser des probl`emes assez s´erieux. Il convient bien sˆ ur de s’assurer que le type de repr´esentation des nombres est compatibles avec les donn´ees utilis´ees. Lors du calcul de la moyenne, il faut r´ealiser la somme de toutes les donn´ees. Ceci peut rapidement conduire `a un d´epassement de capacit´e. La solution peut ˆetre de faire la division par n pour chaque ´el´ement avant de r´ealiser la somme. Mais, outre le rallongement du temps de calcul, cela peut conduire `a des erreurs d’arrondis, du fait du nombre d’op´erations r´ealis´ees. Il ne faudra donc pas oublier de tester les d´ epassements de capacit´ e lors de ce calcul. L’utilisation d’une valeur moyenne pour estimer une distribution de donn´ees n’est pas forc´ement judicieux : imaginons une distribution tr`es dispers´ee de valeurs, dans ce cas la valeur moyenne ne sera pas repr´esentative. Il peut alors ˆetre plus judicieux d’utiliser le m´edian (voir 2.3) 17

CHAPITRE 2. CACUL DE QUELQUES GRANDEURS STATISTIQUES USUELLES

2.2

18

variance, ´ ecart-type

Lorsque l’on a caract´eris´e la valeur centrale d’une distribution, on caract´erise souvent sa ”largeur” ou sa dispersion autour de cette valeur. La mesure la plus courante est appel´ee variance. V ar(x1 . . . xN ) =

N 1 X (xi − x)2 N − 1 i=1

ou ´ecart-type lorsque l’on consid`ere sa racine carr´ee σ(x1 . . . xN ) =

q

V ar(x1 . . . xN )

La variance est une estimation de l’´ecart moyen (au carr´e) entre les valeurs xi et la moyenne x

2.3

M´ edian

Le m´edian d’une distribution de probabilit´e p(x) est la valeur xmed pour laquelle les valeurs sup´erieures ou inf´erieures de x sont ´equiprobables Z

xmed

−∞

1 p(x)dx = = 2

Z



p(x)dx

xmed

Il est assez simple de d´eterminer le m´edian d’une distribution x1 . . . xN , en d´eterminant la valeur xi qui a un nombre ´equivalent de valeurs au dessus et au dessous d’elle, si le nombre d’´el´ements de la distribution est pair. Dans le cas d’un nombre d’´el´ements impair, on calculera la valeur moyenne des deux ´el´ements centraux. xmed = x(N +1)/2 , N pair 1 xmed = (xN/2 + x(N/2)+1 ), N impair 2 Pour trouver un median, on peut classer toutes les valeurs d’une distribution par ordre croissant ou d´ecroissant, et d’utiliser ensuite l’´equation ci-dessus. Dans le cas o` u une distribution est dispers´ee, le m´edian peut ˆetre une meilleure estimation que la moyenne.

M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 3

R´ egression lin´ eaire par la m´ ethode des moindres carr´ es 3.1

D´ efinition du probl` eme

Nous allons maintenant nous int´eresser un probl`eme qui se pose souvent aux exp´erimentateurs. A l’issue d’une exp´erience, un exp´erimentateur a souvent enregistr´e des donn´ ees relatives par exemple `a l’observation d’un ph´enom`ene physique. Ces donn´ees sont toujours entach´ees de bruit (le plus souvent dˆ u aux instruments utilis´es). L’exp´erimentateur souhaite n´eanmoins comparer ses donn´ees `a un mod` ele. Nous ne nous int´eresserons ici qu’au cas o` u le mod`ele est connu. L’exp´erimentateur souhaite donc uniquement s’assurer que le ph´enom`ene observ´e suit bien la loi o` u le mod`ele qu’il connaˆıt. Il souhaitera ´egalement d´eterminer les valeurs num´eriques des param`etres intervenant dans ce mod`ele, et qui ne sont pas connues a ` priori.

3.2

Impl´ ementation

L’exp´erimentateur est en possession de n donn´ees (xi , yi ). La loi connue s’exprime comme y = f (x, p1 , p2 . . . pm ). Cette loi d´epend des param`etres p qui ne sont pas n´ecessairement connus. Pour v´erifier si les donn´ees se superposent correctement `a la loi f , il suffit de calculer les ´ecarts yi − f (x, pj ) en faisant varier la valeur de pj jusqu’`a ce que l’´ecart soit minimal (o` u nul si l’accord est parfait). Il faut bien ´evidemment r´ealiser ce calcul pour tous les points exp´erimentaux. Les statistiques nous offrent une mani`ere ´el´egante de calculer cela. On introduit pour cela une variable d´ependant des param`etres pj que l’on appelle χ2 (prononcer”ki-2”). Cette variable est d´efinie comme χ2 (pj ) =

n X i=1

(f (xi , {pj }) − yi )2

on va ensuite chercher l’ensemble de param`etres pj qui va minimiser χ2 . 19

´ ´ ´ ´20 CHAPITRE 3. REGRESSION LINEAIRE PAR LA METHODE DES MOINDRES CARRES

3.3

Exemple d’application : ajustement d’une fonction lin´ eaire y = a.x + b

Dans ce cas pr´ecis, χ2 s’exprimera χ2 =

n X i=1

(axi + b − yi )2

on cherche `a minimiser cette grandeur, on va donc chercher a` satisfaire les conditions n ∂χ2 X = 2xi (axi + b − yi ) = 0 ∂a i=1 n ∂χ2 X = 2(axi + b − yi ) = 0 ∂b i=1

on en d´eduit que

a=

n

Pn Pn i=1 yi i=1 xi i=1 xi yi − Pn Pn 2 n i=1 xi − ( i=1 xi )2

Pn

2 Pn y − Pn x y Pn x i i=1 i i=1 i i i=1 xi Pi=1 P b= n ni=1 x2i − ( ni=1 xi )2 deux param`etres a et b qui minimisent le χ2 ,

Pn

On trouve ainsi les c’est `a dire les param`etres qui fournissent le meilleur accord entre les donn´ees exp´erimentales (xi , yi ) et la fonction y. La valeur num´erique de χ2 va nous renseigner sur cet accord. Une valeur nulle indiquera un accord parfait entre les donn´ees et le mod`ele, plus la valeur sera grande, moins bon sera l’accord. C’est ensuite `a l’utilisateur de cette m´ethode de d´eterminer quelles valeurs peuvent ˆetre satisfaisantes ...

3.3.1

prise en compte de l’incertitude sur les mesures

Dans l’introduction, nous avons parl´e de donn´ees, et de bruit. Un exp´erimentateur rigoureux va toujours tenter de caract´eriser ce bruit qui va se traduire par une erreur sur chaque mesure, que l’on notera σi . Dans la suite, nous consid´ererons que cette erreur ne concerne que les points yi , ce qui signifie que l’on connaˆıt exactement les valeurs xi . Nous avons donc une incertitude σi pour chaque couple de mesures (xi , yi ). Nous exprimerons alors χ2 comme X  axi + b − yi 2 2 χ = σi on va de nouveau chercher ` a le minimiser en posant

et

∂χ2 X 2xi (axi + b − yi ) =0 = ∂a σi2

M´ ethodes Informatiques pour la physique

∂χ2 X 2(axi + b − yi ) =0 = ∂b σi2 H. Klein

´ ´ ´ ´21 CHAPITRE 3. REGRESSION LINEAIRE PAR LA METHODE DES MOINDRES CARRES

alors, en posant Sxy =

X xi y i

σi2

, S = S11

∆ = SSxx − (Sx )2 ) on obtient

SSxy − Sx Sy ∆ Sxx Sy − Sx Sxy b= ∆ ce sont `a nouveau les param`etres qui fournissent le meilleur accord entre donn´ees et mod`ele en tenant compte des erreurs de mesures. Et l’on peut maintenant calculer l’erreur sur ces param`etres S σa = ∆ Sxx σb = ∆ Les statistiques nous permettent ´egalement de calculer un facteur de confiance sur l’op´eration qui vient d’ˆetre r´ealis´ee : le facteur de confiance pond´er´e (wheighted en anglais ? ? ?) a=

v u u Rw = t P

χ2 f (xi ,{pj }) σi2

par exemple Rw = 0.1 signifie que f est ´eloign´ee des donn´ees de 10 % en unit´es de σ.

Fig. 3.1 – Exemple d’application de la r´egression lin´eaire `a un ensemble de donn´ees. Chaque couple de mesures (xi , yi ) est accompagn´e d’une incertitude sur yi , σi , repr´esent´ee comme une barre verticale. Dans l’exemple de la figure 3.1, est repr´esent´e un ensemble de donn´ees qui suivent visiblement un mod`ele lin´eaire. L’application de la r´egression lin´eaire non pond´er´ee donne les r´esultats suivants : – a = 1.25 M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´22 CHAPITRE 3. REGRESSION LINEAIRE PAR LA METHODE DES MOINDRES CARRES

– b = 0.5 le trac´e de cette fonction sur la mˆeme figure, montre que l’accord entre donn´ees exp´erimentales et r´egression est excellent. L’application de la r´egression pond´er´ee donne les r´esultats suivants : – a = 1.25, σa = 0.19 – b = 0.5, σb = 0.42 – Rw est quant ` a lui tr`es proche de z´ero. on voit donc que si la r´egression est tout a` fait pertinente sur cet ensemble de donn´ees, l’incertitude sur le param`etre b est loin d’ˆetre n´egligeable.

M´ ethodes Informatiques pour la physique

H. Klein

Deuxi` eme partie

M´ ethodes num´ eriques

23

Chapitre 4

Recherche des racines d’une fonction Nous nous int´eressons ici ` a un des probl`emes les plus basiques : r´esoudre num´eriquement une ´equation du type f (x) = 0 Dans le cadre de ce document, nous n’allons nous int´eresser qu’au cas o` u il y a une seule variable ind´ependante x, c’est ` a dire au probl`eme ` a une dimension. Except´e le cas des probl`emes lin´eaires, la recherche des racines de la fonction f (x) va se faire par it´erations. Il faut pour cela partir d’une solution approch´ee, mˆeme grossi`ere, et bˆ atir un algorithme qui va “am´eliorer” la solution jusqu’`a satisfaire un crit`ere de convergence. Nous allons nous int´eresser `a deux types d’algorithmes : – m´ethode dichotomique – m´ethode utilisant la d´eriv´ee Mais avant d’aborder ces algorithmes, nous allons ´etudier des algorithmes simples d’encadrement permettant de d´efinir des solutions approch´ees de f (x) = 0.

4.1

Encadrement

On dira qu’une racine d’une fonction f (x) est encadr´ee par l’intervalle (a, b) si f (a) et f (b) ont des signes oppos´es. Si la fonction est continue, alors il existe au moins une racine de f dans cet intervalle (th`eor`eme de la valeur interm´ediaire). Si la fonction n’est pas continue, on peut `a la place d’une racine, trouver une discontinuit´e qui traverse le z´ero dans l’intervalle (a, b). D’un point de vue num´erique, cela va ˆetre ´equivalent `a une racine car le comportement va ˆetre le mˆeme, c.a.d. que l’on va traverser le z´ero entre deux nombres flottants de la repr´esentation en pr´ecision finie de la machine. Seules les fonctions du type f (x) =

1 x−c

vont pr´esenter des singularit´es mais pas de racines. Dans ce cas, certains algorithmes pourront converger vers c, mais dans ce cas il n’y a (heureusement) pas de confusion possible avec une racine, puisqu’une ´evaluation de |f (x)| va donner un r´esultat tr`es grand plutˆ ot que proche de z´ero. Il est donc important d’avoir une id´ee de la variation de f (x) dans l’intervalle ´etudi´e pour 24

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

25

choisir un algorithme adapt´e, d’o` u la n´ecessit´e d’avoir des algorithmes simples permettant de d´eterminer les intervalles contenant une racine pour une fonction quelconque. L’algorithme 5 permet, partant d’un intervalle de d´epart (x1 , x2 ), de l’´elargir jusqu’`a ce qu’il contienne une racine, les valeurs renvoy´ees sont alors le nouvel intervalle (x1 , x2 ) contenant une racine. Ce type de proc´edure est une bonne mani`ere de commencer une recherche de racine, et a de bonnes chances de fonctionner si la fonction ´etudi´ee a des signes oppos´es `a la limite x → ±∞.

Algorithme 5 Encadrement d’une fonction Requiert: un intervalle (x1 , x2 ), un nombre d’essais N Requiert: f (x) d´efinie dans l’intervalle (x1 , x2 ) ´etudi´e, x1 6= x2 Fournit: l’intervalle x1 , x2 contenant une racine f1 = f (x1 ) f2 = f (x2 ) α ← 1.6 (par exemple) pour i = 1 `a N faire si f1 < f2 alors Renvoyer x1 et x2 fin si si |f1 | < |f2 | alors f1 = f (x1 + α(x1 − x2 )) sinon f2 = f (x2 + α(x2 − x1 ) fin si fin pour

L’algorithme 6 permet lui, ` a l’inverse, de r´eduire l’intervalle de d´epart. On va simplement subdiviser l’intervalle de d´epart (x1 , x2 ) en n intervalles, et renvoyer les sous-intervalles contenant une racine sous forme de deux tableaux. A l’aide de ces algorithmes, nous sommes maintenant capables de trouver des intervalles contenant les racines d’une fonction, c’est un pr´e-requis pour estimer plus pr´ecisemment la valeur d’une racine particuli`ere d’une fonction. M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

26

Algorithme 6 R´eduction de l’encadrement d’une fonction Requiert: L’intervalle (x1 , x2 ) fourni contient une racine de f Requiert: nombre maximum de racines recherch´ees N Fournit: nr le nombre de racines trouv´es, x1 [] et x2 [] deux tableaux contenant les bornes des intervales contenant les racines nr ← 0 dx ← (x2 − x1 )/n x ← x1 f p = f (x) pour i = 0 `a N faire x ← x + dx f c = f (x) si f p ∗ f c ≤ 0 alors nr ← nr + 1 x1 [nr] ← x − dx x2 [nr] ← x fin si fp = fc fin pour renvoyer nr

4.2

Dichotomie

Le principe est extrˆemement simple, il est sch´ematis´e sur la figure 4.1. On choisit un intervalle (a, b) encadrant une racine de la fonction f ´etudi´ee. On divise cet intervalle en 2 par un point c. On ´evalue f (a).f (c), si f (a).f (c) < 0, alors le nouvel intervalle devient (a, c), sinon (c, b). Et l’on recommence ainsi jusqu’`a ce que l’intervalle satisfasse le crit`ere de convergence. Cette m´ethode a de bonnes chances de fonctionner si la fonction ´etudi´ee a des signes oppos´es `a la limite x → ±∞. L’algorithme 4.2 est un algorithme simple permettant de d´eterminer une valeur approch´ee de la racine d’une fonction dans le cas o` u f (x) traverse le z´ero dans l’intervalle (x1 , x2 ) ´etudi´e.

4.2.1

Convergence de la m´ ethode

Dans cette algorithme, apr`es chaque it´eration, l’intervalle (x1 , x2 ) a diminu´e d’un facteur 2. Apr`es n it´erations, la racine est contenu dans un intervalle de taille ǫn , avec ǫn ǫn+1 = 2 Donc, pour parvenir ` a la pr´ecision ǫ d´esir´ee en partant de ǫ0 = x2 − x1 il faudra ǫ0 n = log2 ǫ it´erations. Le cas ´etudi´e ici o` u l’on divise l’intervalle par 2 `a chaque it´eration pr´esente une convergence lin´ eaire On voit en effet que pour ǫn+1 = α × ǫm n avec α < 1 M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

27

Fig. 4.1 – principe de la m´ethode de recherche de racines par dichotomie. L’intervalle initial ( 1 , 2 ) est divis´e en 2 par 3 , puis l’intervalle devient ( 1 , 3) Algorithme 7 Recherche d’une racine par dichotomie Requiert: l’intervalle d’´etude (x1 , x2 ) et la pr´ecision d´esir´ee ǫ Fournit: l’intervalle encadrant la racine ` a la pr´ecision pr`es f 1 ← f (x1 ) f 2 ← f (x2 ) r´ ep´ eter f temp ← f ((x1 + x2 )/2) si f 1 ∗ f temp < 0 alors x2 ← (x1 + x2 )/2 sinon x1 ← (x1 + x2 )/2 fin si tant que |x2 − x1 | > ǫ renvoyer x1 et x2

– la convergence est lin´eaire si m = 1 – la convergence est superlin´eaire si m > 1 Pour obtenir des r´esultats coh´erents avec un algorithme de ce type, il faut faire attention au crit`ere de convergence ǫ. Il est en effet n´ecessaire de se rappeler qu’un ordinateur utilise un nombre fini de bits pour repr´esenter un nombre en virgule flottante. Si, analytiquement la fonction f passe par z´ero, il est possible que la valeur calcul´ee ne vale jamais z´ero. Si la racine recherch´ee est proche de 1, demander une pr´ecision absolue de 10−8 est raisonnable, mais ne l’est plus si la racine est proche de 1020 par exemple. On pourrait fournir une pr´ecision relative (fractionnaire), mais dans ce cas le calcul devient probl´ematique si la racine est proche de z´ero. . .D’une mani`ere g´en´erale, il est pr´ef´erable de fournir une tol´erance absolue pour que les it´erations se poursuivent jusqu’`a ce que l’intervalle de recherche deviennent plus petit que cette tol´erance en unit´es absolues. La valeur ǫm (|x1 | + |x2 |)/2 o` u ǫm est la pr´ecision de repr´esentation de la machine, et (x1 , x2 ) l’intervalle initial est un bon choix. Il faut cependant toujours se poser M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

28

la question de ce que repr´esente une tol´erance raisonnable lorsque la racine est proche de z´ero.

4.3

M´ ethode de Newton - Raphson

Cette m´ethode est la plus utilis´ee pour la recherche de racines dans les probl`emes `a une dimension. Elle requiert cependant l’´evaluation de f (x) et de f ′ (x). Le principe est le suivant : on prend la tangente de f (x) au point xi (solution approch´ee), et on la prolonge jusqu’`a l’axe des abscisses (fig. 4.2). On utilise alors cette nouvelle abscisse comme point xi+1 , et l’on recommence tant que xi+1 − xi ne satisfait pas le crit`ere de convergence.

Fig. 4.2 – Principe de la m´ethode de Newton-Raphson : on part de la solution approch´ee 1 , l’extrapolation de la tangente ` a la courbe pour cette abscisse fournit la nouvelle solution approch´ee 2. Cela peut se traduire alg´ebriquement grˆ ace aux d´eveloppements de Taylor δ2 ′′ f (x) . . . 2 Si on n´eglige les termes d’ordre sup´erieurs a` 1, ´ecrire f (x+δ) = 0 revient `a ´ecrire f (x)+δf ′ (x) ≈ 0 d’o` u f (x) δ=− ′ f (x) Lorsque l’on se trouve loin d’une racine de la fonction ´etudi´ee, les termes du d´eveloppement d’ordre sup´erieur ` a 1 ne peuvent pas ˆetre n´eglig´es, aussi la m´ethode peut donner des r´esultats aberrants. Par exemple si la solution approch´ee de d´epart est loin d’une racine, l’intervalle iniial de recherche peut ˆetre proche d’un extr´emum local (fig.4.3), ce qui signifie que f ′ (x) → 0. Cela sera fatal dans le cadre de cette m´ethode. . . L’algorithme 4.3, pr´esente une impl´ementation de cette m´ethode. f (x + δ) ≈ f (x) + δf ′ (x) +

4.3.1

Convergence de la m´ ethode

Pour ǫ petit f (x + ǫ) ≈ f (x) + ǫf ′ (x) + ǫ2 M´ ethodes Informatiques pour la physique

f ′′ (x) + ... 2 H. Klein

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

29

Fig. 4.3 – Cas particulier o` u l’on trouve un extr´emum local. Dans ce cas la m´ethode de NewtonRaphson diverge Algorithme 8 Recherche de racines par la m´ethode de Newton-Raphson Requiert: valeur de d´epart x, pr´ecision d´esir´ee ǫ Fournit: valeur x ` a la pr´ecision d´esir´ee si f ′ (x) = 0 alors Sortie du programme fin si r´ ep´ eter xn ← x x ← x − f (x)/f ′ (x) tant que |x − xn | ≥ ǫ ET f ′ (x) = 0 renvoyer x f ′ (x + ǫ) ≈ f ′ (x) + ǫf ′′ (x) + . . . d’apr`es la formule de Newton-Paphson xi+1 = xi −

f (xi ) f (xi ) ⇔ ǫi+1 = ǫi − ′ ′ f (xi ) f (xi )

Quand une solution approch´ee xi diff`ere de la solution vraie α par une quantit´e ǫi = α − xi , on a f ′′ (xi ) f (α) = f (xi + ǫi ) = f (xi ) + ǫi f ′ (xi ) + ǫ2i + ... 2 f (α) = 0 ⇔ f (xi + ǫi ) = f (xi ) + (α − xi )f ′ (xi ) + ǫ2i donc

f ′′ (xi ) + ... = 0 2

′′ f (xi ) 2 f (xi ) − x ≃0 +α + ǫ i i f ′ (xi ) 2f ′ (xi )

| M´ ethodes Informatiques pour la physique

{z

=−xi+1

}

H. Klein

CHAPITRE 4. RECHERCHE DES RACINES D’UNE FONCTION

d’o` u ǫi+1 = α − xi+1 ≃ −ǫ2i

30

f ′′ (xi ) 2f ′ (xi )

on voit donc que la convergence est quadratique, la m´ethode est plus efficace que la dichotomie o` u la convergence n’est que lin´eaire. Ceci suppose bien sˆ ur que l’on sache ´evaluer f ′ (x) en tout point, et que f ′ (α) 6= 0. Si la forme analytique de f ′ (x) n’est pas connue, il faut calculer num´eriquement cette quantit´e par f (x + dx) − f (x) f ′ (x) ≈ dx on√doit donc ´evaluer f (x) 2 fois ` a chaque it´eration, l’ordre de convergence va donc passer de 2 `a 2. De plus, si l’intervalle dx est trop petit, il y a un risque que les erreurs d’arrondi fassent diverger le calcul. A l’oppos´e, si l’intervalle dx est grand, la convergence ne sera que lin´eaire. En conclusion on peut donc dire que la m´ethode de Newton-Raphson n’est pas une m´ethode int´eressante si l’on ne peut d´eterminer de forme analytique de f ′ (x).

M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 5

Minimisation ou maximisation d’une fonction Le probl`eme peut-ˆetre pos´e simplement : consid´erons une fonction f d´ependant d’une ou plusieurs variables ind´ependantes. Nous voulons trouver les valeurs de ces variables pour lesquelles f prend une valeur maximale ou minimale. La recherche d’un maximum ou d’un minimum peuvent ˆetre r´ealis´ee par un programme identique en travaillant simplement sur f ou 1/f . Un extr´emum d’une fonction peut ˆetre soit local (minimum dans un intervalle donn´e)soit global (minimum r´eel) comme on le voit sur la figure 5.1

Fig. 5.1 – Les extr´emums d’une fonction peuvent ˆetre locaux ou globaux C’est une des raisons pour lesquelles la recherche d’un extr´emum est souvent une tˆache d´elicate. Ce chapitre va ˆetre extrˆemement succint, puisque nous n’aborderons qu’une m´ethode de minimisation d’une fonction pr´esentant une variable ind´ependante (probl´eme 1D).

5.1

Recherche par la section d’or (golden section search)

Nous avons d´ej`a vu dans le chapitre 4 que pour obtenir une valeur approch´ee d’une racine d’une fonction il ´etait suffisant de l’encadrer dans un intervalle (a, b). Ceci est insuffisant pour 31

CHAPITRE 5. MINIMISATION OU MAXIMISATION D’UNE FONCTION

32

caract´eriser un minimum. Nous aurons besoins dans ce cas de trois points (a, b, c). Un intervalle tel que a < b < c et f (b) < f (a), f (b) < f (c) caract´erise un minimum dans l’intervalle (a, c). En d’autres termes pour encadrer un minimum nous avons besoin d’un triplet de point tel que le point central pr´esente une valeur de f inf´erieure `a celles des bornes de l’intervalle.

5.1.1

Principe

Le principe de cette recherche est r´esum´e sur la figure 5.2. Le minimum est encadr´e `a l’origine par ( 1 , 3 , 2 ). La fonction est ´evalu´ee en 4 , qui remplace 2 . Ensuite en 5 qui remplace 1 puis en 6 qui remplace 4 . La r`egle est de garder un point central pour lequel la valeur de f est inf´erieure `a celles des bornes. Apr`es cette s´erie d’it´erations, le minimum est alors encadr´e par ( 5 , 3 , 6 ). Le principe est analogue ` a celui utilis´e lors d’une recherche de racine par dichotomie (cf. chapitre 4.2)

Fig. 5.2 – Encadrements succesif d’un minimum d’une fonction f . Le minimum est encadr´e `a l’origine par ( 1 , 3 , 2 ). Apr`es 3 ´evaluations de f le minimum est finalement encadr´e par ( 5 , 3 , 6 ). Le seul point d´elicat, est de d´efinir une m´ethode pour choisir un nouveau point d’encadrement dans l’intervalle (a, b, c) initial. Supposons que b soit une fraction ω du segment [ac], alors c−b b−a =ω⇔ =1−ω c−a c−a Si l’on choisit un nouveau point x eloign´e d’une fraction z par rapport `a b x−b =z c−a le nouveau segment d’encadrement aura alors une longueur ω + z par rapport au segment initial, ou de longueur 1 − ω. Si nous voulons minimiser le pire cas (attitude plutˆ ot saine...) nous allons choisir z pour que ces deux longueurs soient ´equivalentes. 1 − ω = ω + z ⇔ z = 1 − 2ω M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 5. MINIMISATION OU MAXIMISATION D’UNE FONCTION

33

Fig. 5.3 – Comment choisir un nouveau point√pour r´eduire l’encadrement du minimum. La position optimale est ω = (b − a)/(c − a) = (3 − 5)/2. Le nouveau point x doit ˆetre choisi pour respecter cette proportion par rapport ` a (a, b) ou (b, c). On montre alors simplement que le nouveau point x est le sym´etrique de b dans son intervalle d’origine, c.a.d. que |b − a| = |x − c|. Cela signifie que le point x se trouve dans le plus grand des segments [ab], [bc]. Reste maintenant ` a d´efinir la position du point x `a l’int´erieur de ce segment. La valeur ω provient d’une ´etape pr´ec´edente de calcul, et si l’on suppose qu’elle est optimale, alors z doit ˆetre choisie de la mˆeme mani`ere. Cette similarit´e d’´echelle implique que x doit ˆetre situ´e `a la mˆeme fraction du segment [bc] (si [bc] est le segment le plus long) que b l’´etait du segment [ac]. Cela conduit ` a la relation z =ω 1−ω en combinant cette ´equation avec la d´efinition de z on arrive `a l’´equation quadratique √ 3− 5 ω − 3ω = 0 ⇔ ω = ≈ 0.38197 2 2

En d’autres termes, ce r´esultat signifie que l’intervalle d’encadrement (a, b, c) a son point central b est situ´e a une distance telle que b−a = ω ≈ 0.38197 c−a ou c−b = 1 − ω ≈ 0.61803 c−a ces fractions sont celles de la moyenne d’or ou de la section d’or suppos´ees avoir certaines propri´et´es esth´etiques par les pythagoriciens du monde antique. C’est la raison pour laquelle cette m´ethode optimale de d´etermination du minimum d’une fonction est appel´ee recherche par section d’or (golden search section). L’algorithme 9 d´ecrit une imp´ementation de cette m´ethode. M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 5. MINIMISATION OU MAXIMISATION D’UNE FONCTION

34

Algorithme 9 Recherche d’un minimum par la methode golden section search Requiert: un intervalle de d´epart (a, b, c), une tol´erance ǫ Fournit: la meilleure estimation du minimum R ← 0.38197 C ←1−R x0 ← a x3 ← c si (c − b) > (b − a) alors x1 ← b x2 = (c − b) ∗ R + b sinon x2 ← b x1 ← a + (b − a) ∗ R fin si f1 ← f (x1 ) f2 ← f (x2 ) tant que |x3 − x0 | > ǫ ∗ (|x1 | + |x2 |) faire si f2 < f1 alors x0 ← x1 ; x1 ← x2 ; x2 ← C ∗ x1 + R ∗ x3 f1 ← f2 ; f2 ← f (x2 ) sinon x3 ← x2 ; x2 ← x1 ; x1 ← C ∗ x2 + R ∗ x0 f2 ← f1 ; f1 ← f (x1 ) fin si fin tant que si f1 < f2 alors renvoyer x1 sinon renvoyer x2 fin si

M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 5. MINIMISATION OU MAXIMISATION D’UNE FONCTION

5.1.2

35

Convergence

Cette m´ethode garantit que chaque nouvelle ´evaluation de la fonction va encadrer le minimum dans un intervalle qui vaut 0.61803 fois le pr´ec´edent, en d’autres termes ǫi+1 = 0.61803ǫi Cela signifie donc que la convergence est lin´eaire, mais moins rapide que dans le cas de la m´ethode de recherche de racines par dichotomie o` u le nouvel intervalle valait la moiti´e du pr´ec´edent. La m´ethode abord´ee dans ce chapitre n’est bien ´evidemment pas la seule. Il existe des m´ethodes pouvant ˆetre plus performantes, ou mieux adapt´ees `a des cas particuliers, et ´egalement un tr`es vaste champ d’investigation concernant les probl`emes `a N dimensions que nous n’avons pas abord´es. Je ne saurais trop vous conseiller la lecture du chapitre 10 des Numerical Recipes 1 pour vous cultiver sur ce sujet. . .

1

Numerical Recipes in C, W.H. Press et al., Cambridge University Press,2002. Le mˆeme livre existe pour d’autres language de programmation : Fortran et C++. M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 6

Interpolation L’interpolation est un concept fondamental en calcul num´erique : on ´evalue une fonction f en x0 , x1 . . . xn . Que faire si l’on veut connaˆıtre la valeur de f (x) si x0 < x < x1 ? Il n’y a pas d’´evaluation de f pour cette valeur, on a donc recours a l’interpolation qui consiste en une estimation d’une valeur inconnue s’appuyant sur des valeurs connues qui l’encadrent. Ce probl`eme se pose fr´equemment pour l’exp´erimentateur scientifique qui r´ealise des mesures d’une grandeur en un certain nombre de points, et qui a parfois besoin de connaˆıtre une approximation de cette grandeur en dehors des valeurs mesur´ees. Une autre utilisation courante de l’interpolation est le lissage de courbe. Cela rend le r´esultat graphiquement plus satisfaisant, mais la courbe obtenue n’est pas plus pr´ecise que la s´erie f (x0 ), f (x1 ) . . . f (xn ), mais peut permettre d’avoir une estimation d’une valeur x non comprise dans la s´erie. Ceci `a la condition que l’on soit capable d’estimer l’erreur commise lors du processus d’interpolation. De plus, l’interpolation est `a la base de nombreuses m´ethodes num´eriques d’int´egration de fonctions. Ces techniques sont bas´ees sur les polynˆomes de Lagrange. On peut en effet montrer que pour une fonction f d´efinie sur un intervalle [a, b] pour n + 1 valeurs distinctes, il existe un polynˆome d’ordre n tel que Pn (x) = f (xi ) pour i = 0 . . . n. Nous d´etaillerons dans ce chapitre les calculs pour des polynˆomes d’ordre 1 et 2, puis nous g´en´eraliserons `a l’ordre n.

6.1

Interpolation lin´ eaire

Il est bien connu qu’il n’y a qu’une droite passant par deux points (xi , fi ) et (xi+1 , fi+1 ), comme cela est sch´ematis´e sur la figure 6.1. Cette droite peut-ˆetre d´ecrite par un polynˆome Pi (x) de premier degr´e en x : fi+1 − fi (x − xi ) Pi (x) = fi + xi+1 − xi si l’on suppose que f a une d´eriv´ee seconde, l’´ecart entre f et Pi (et donc l’erreur commise lors d’une interpolation peut-ˆetre estim´ee par max |f (x) − Pi (x)| ≤

(xi+1 − xi )2 max |f ′′ (x)| 2 36

CHAPITRE 6. INTERPOLATION

37

pour xi ≤ xi+1 . Si l’´ecart entre deux ´evaluations successives de la fonction (le pas d’´echantillongage) vaut xi+1 − xi = h alors l’erreur s’exprime max |f (x) − Pi (x)| ≤

h2 max |f ′′ (x)| 2

Fig. 6.1 – La fonction f est d´efinie aux points xi , entre ces points, il est possible de l’interpoler par un polynˆome d’ordre 1 passant par deux points cons´ecutifs. exemple : soit la fonction f (x) = sin(x) ´evalu´ee (tabul´ee) en n + 1 points dans l’intervalle [0; π2 ] avec une pr´ecision d´esir´ee de 10−m . Dans ce cas le pas d’´echantillonage h = π/2n, et l’on souhaite  2 π d2 sin(x) 1 −m max |f (x) − P (x)| ≤ 10 ⇔ | ≤ 10−m × max | 2n 2 dx2 d2 sin(x) = − sin(x) dx2 donc max |

d2 sin(x) |=1⇔ dx2



π 2n

2

×

1 ≤ 10−m 2

d’o` u

π2 8n2 π2 m −m m 2 .10 ≤ 10 ⇔ ≥ 10 ⇔ n ≥ 8n2 π2 8 ce qui conduit finalement ` a π n ≥ √ .10m/2 2 2

Concr`etement, cela signifie que si l’on souhaite pouvoir interpoler un point de la fonction f avec une pr´ecision de 10−m , il va ˆetre n´ecessaire d’´evaluer la fonction f en n points. Le tableau 6.1 r´esume ceci pour quelques valeurs de m. Ceci vous montre qu’augmenter la pr´ecision peut couter extrˆemement cher en temps de calcul. Il pourrait ˆetre astucieux de faire varier le pas d’´echantillonage h de la fonction f , de fa¸con `a suivre le rayon de courbure local de la fonction : l`a o` u il est grand choisir h n’a pas besoin d’ˆetre grand, et inversement. On pourrait construire un algorithme r´ealisant cette op´eration en M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 6. INTERPOLATION

38

pr´ecision 10−3 10−6 10−8

n ∼ 35 ∼ 1000 ∼ 11000

Tab. 6.1 – Nombre d’´evaluations n n´ecessaires pour parvenir `a une pr´ecision donn´ee dans le cas d’une interpolation lin´eaire. ´evaluant la d´eriv´ee seconde de la fonction en chaque point. N´eanmoins, le calcul d’une d´eriv´ee seconde n’est pas toujours facile ` a r´ealiser, il vaut donc mieux utiliser une m´ethode plus pr´ecise, c.a.d. utiliser un polynˆome d’ordre plus ´elev´e.

6.2

Interpolation quadratique

Le principe est identique ` a l’interpolation lin´eaire : il existe un polynˆome unique d’ordre 2 Pi+1 qui passe par 3 points d´ecrivant notre fonction f (voir figure 6.2) (x − xi+2 )(x − xi ) (x − xi+1 )(x − xi+2 ) + fi+1 (xi − xi+1 )(xi − xi+2 ) (xi+1 − xi+2 )(xi+1 − xi ) (x − xi )(x − xi+1 ) +fi+2 (xi+2 − xi )(xi+2 − xi+1 )

Pi+1 (x) = fi

Fig. 6.2 – La fonction f est d´efinie aux points xi , entre ces points, il est possible de l’interpoler par un polynˆome d’ordre 2 passant par trois points cons´ecutifs. Cette expression est simple lorsque le pas d’´echantillonage est constant. Si ce pas vaut h alors x = xi+1 + u.h. Si u = −1 x = xi , si u = 0 x = xi+1 et si u = 1 x = xi+2 . L’´equation pr´ec´edente peut alors s’´ecrire plus simplement Pi+1 (u) = fi+1 + M´ ethodes Informatiques pour la physique

fi+2 − 2fi+1 + fi 2 fi+2 − fi u+ u 2 2 H. Klein

CHAPITRE 6. INTERPOLATION

39

L’erreur est maintenant major´ee par le terme d’ordre 3 du d´eveloppement en s´erie de Taylor de f (x) au point xi+1 : h3 (3) max |f (x) − Pi+1 (x)| ≤ |f (x)| max 6 Exemple : Si l’on reprend l’exemple pr´ec´edent de f (x) = sin(x) ´evalu´ee en n + 1 points, avec une pr´ecision de 10−m , on obtient l’in´egalit´e π n≥ √ .10m/3 236 Le tableau 6.2 pr´esente le nombre d’´evaluations n´ecessaires de la fonction pour une pr´ecision donn´ee. Il est clair que cette m´ethode est plus performante dans le cas de la fonction ´etudi´ee que l’interpolation d’ordre 1. pr´ecision 10−3 10−6 10−8

n ∼9 ∼ 90 ∼ 400

Tab. 6.2 – Nombre d’´evaluations n n´ecessaires pour parvenir `a une pr´ecision donn´ee dans le cas d’une interpolation quadratique.

6.3

G´ en´ eralisation ` a l’ordre n

Un polynˆome de Lagrange d’ordre n s’exprime Pn (x) =

n X i=0

fi

(x − x0 ) . . . (x − xi−1 )(x − xi+1 ) . . . (x − xn ) (xi − x0 ) . . . (xi − xi−1 )(xi − xi+1 ) . . . (xi − xn )

ou plus simplement Pn (x) =

n X

Li (x)f (xi )

i=0

avec Li (x) =

n Y (x − xj ) j=0

j6=i

(xi − xj )

L’erreur est dans ce cas major´ee par max |f (x) − Pn (x)| ≤ max |f (n+1) (x)|.

(xn − x0 )n+1 (n + 1)!

Ceci suppose que la d´eriv´ee d’ordre (n + 1) de f existe et est continue. L’algorithme 10 permet de calculer la valeur d’un polynˆome de Lagrange d’ordre n en un point, connaissant la fonction f en n + 1 points. M´ ethodes Informatiques pour la physique

H. Klein

CHAPITRE 6. INTERPOLATION

40

Exemple : si l’on reprend l’exemple de la fonction f (x) = sin(x) d´efinie en n + 1 points sur l’intervalle [0; π/2], et que l’on veuille interpoler une valeur avec une pr´ecision de 10−m alors −m

10

6.3.1





π 2n

n+1

.

1 (n + 1)!

Du bon usage de l’interpolation

Il convient de faire attention ` a l’ordre du polynˆome utilis´e. En effet si l’on consid`ere la fonction f (x) = sin(10x), l’erreur |f (n+1) |max ≈ 10n peut augmenter tr`es rapidement avec l’ordre du polynˆome. On peut ´etablir la r`egle de prudence suivante : – si f (x) varie lentement, elle pourra ˆetre approxim´ee correctement par un polynˆome de degr´e ´elev´e, c.a.d. que l’erreur diminuera avec le degr´e du polynˆome – si la d´eriv´ee de f varie brutalement ou est discontinue, la fonction sera mieux approxim´ee par un polynˆome de degr´e faible, c.a.d. que l’erreur peut augmenter rapidement avec l’ordre du polynˆome. D’une mani`ere g´en´erale, l’utilisation de polynˆome d’ordre n > 4, 5 donne rarement de bons r´esultats num´eriques. Algorithme 10 Interpolation par un polynˆome de Lagrange d’ordre n Requiert: une fonction f d´efinie en x0 . . . xn , l’ordre du polynˆome n, la valeur xi nter o` u l’on souhaite approximer la fonction Fournit: l’approximation de f au point souhait´e lagr ← 0 pour i = 0 . . . n faire li ← 1 pour j = 0 . . . n faire si j 6= i alors li ← li ∗ (xinter − xj )/(xi − xj ) fin si fin pour lagr ← lagr + li ∗ f (xi ) fin pour renvoyer lagr

M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 7

Int´ egration de fonctions Dans ce chapitre, nous n’allons pas aborder la d´etermination des primitives des fonctions (ceci concerne le calcul formel, et des logiciels comme MAPLE, MATHEMATHICA...), mais le calcul num´erique d’une int´egrale Z

b

f (x)dx

a

qui revient `a calculer l’aire sous la courbe f (x) entre a et b. Nous allons aborder 3 m´ethodes : – int´egration par la m´ethode des rectanges – int´egration par la m´ethode des trap`ezes – int´egration par la m´ethode de Simpson ces m´ethodes sont bas´ees sur l’interpolation d’ordre 0,1,2 respectivement. Ces m´ethodes sont g´en´eralisables `a l’ordre n. Nous terminerons ce chapitre par une discussion sur la recherche d’un pas optimal d’int´egration.

7.1

Int´ egration par la m´ ethode des rectanges

Soit une fonction f (x) d´ependant d’une variable ind´ependante. Nous souhaitons calculer I=

Z

xn

f (x)dx

x0

num´eriquement, cela revient ` a calculer la somme I=

n−1 X i=0

fi (xi+1 − xi )

Pour cela, nous allons tabuler f (x) en n + 1 points f0 , f1 . . . fn dans l’intervalle d’int´egration [x0 , xn ]. On peut approximer l’aire sous la courbe f (x) par une s´erie de rectangles comme repr´esent´e sur la figure 7.1, ce qui math´ematiquement correspond `a l’interpolation de f par un pˆ olynome d’ordre 0 (une constante). Si la distribution des points est uniforme, ce qui revient `a xi+1 − xi = h, l’int´egration revient ` a calculer I=h

n−1 X i=0

41

fi

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

42

Fig. 7.1 – D´ecoupage de l’aire sous la courbe f par une s´erie de rectangle. Il y a cependant 2 possibilit´es pour r´ealiser ce calcul , comme cela est montr´e `a la figure 7.2. On peut en effet majorer ou minorer la fonction selon que l’on calcule respectivement I=h

n−1 X

fi+1

i=0

ou I=h

n−1 X

fi

i=0

ceci dans le cas o` u f ′ (x) > 0. Ceci pose deux probl`emes. Tout d’abord les r´esultats ne seront pas identiques suivant que l’on majore ou minore f . On peut ´eventuellement r´esoudre le probl`eme en r´ealisant les calculs dans les deux cas, puis en faisant une moyenne des deux r´esultats. Ensuite, pour les mˆemes raisons, on n’obtiendra pas les mˆemes r´esultats selon que l’on int`egre de a → b ou de b → a. Cette limitation doit ˆetre prise en compte lors de calculs utilisant cette m´ethode.

Fig. 7.2 – Il y a deux mani`eres de d´elimiter l’aire sous la courbe par une s´erie de rectangle : fi (xi+1 − xi ) (minoration) ou fi+1 (xi+1 − xi ) (majoration)

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

7.1.1

43

Incertitude de la m´ ethode

Nous avons vu que cette m´ethode revient `a approximer la fonction f par un polynˆome d’ordre 0. Dans ce cas, l’incertitude sur chaque point fi s’exprime ǫ ≤ h|f ′ (x)|max , donc pour chaque intervalle h d’int´egration h2 ′ |f (x)|max ǫ≤ 2 L’incertitude totale pour n pas d’int´egration sera donc ǫ ≤ n.

h2 ′ |f (x)|max 2

Cette m´ethode est extrˆement simple a` mettre en œuvre, et ne n´ecessite pas de gros calculs. Cependant si l’on souhaite conserver une incertitude acceptable, il est g´en´eralement n´ecessaire d’utiliser un pas d’´echantillonage petit.

7.2

Int´ egration par la m´ ethode des trap` ezes

Le principe de cette m´ethode est analogue `a celui de l’int´egration par une s´erie de rectangles. Dans cette m´ethode on cherche ` a augmenter la pr´ecision du calcul tout en ´evitant la disym´etrie qui apparaˆıt dans la d´efinition de l’int´egration par rectangles. Nous allons donc ici aussi tabuler f (x) en n + 1 points f0 , f1 . . . fn dans l’intervalle d’int´egration [x0 , xn ]. On va ensuite interpoler lin´eairement (polynˆome d’ordre 1, c.a.d. une droite) pour approximer f (x) entre deux points tabul´es. On va donc remplacer les arcs xi , xi+1 par leurs cordes (figure 7.3). L’int´egration va

Fig. 7.3 – D´ecoupage de l’aire sous la courbe f par une s´erie de trap`ezes. alors se faire en sommant l’aire des trap`ezes, soit I=

n−1 X i=0

fi+1 + fi (xi+1 − xi ) 2

si l’´echantillonage des points est r´egulier, c.a.d. si xi+1 − xi = h alors l’int´egrale s’exprimera I=

n−1 X h (f0 + fn ) + h. fi 2 i=1

en effet chaque trap`eze aura chacun de ces cˆot´es en commun avec les trap`ezes adjacents, `a l’exception du premier et du dernier qui n’ont qu’un cˆot´e en commun. M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

7.2.1

44

Incertitude de la m´ ethode

Nous avons vu que cette m´ethode revient `a approximer la fonction f par un polynˆome d’ordre 1. Dans ce cas, l’incertitude sur chaque point fi s’exprime h2 ′′ |f (x)|max 2

ǫ≤ donc pour chaque intervalle h d’int´egration ǫ≤

h3 ′′ |f (x)|max 4

L’incertitude totale pour n pas d’int´egration sera donc ǫ ≤ n.

h3 ′′ |f (x)|max 4

La pr´ecision est sup´erieure ` a celle de l’int´egration par rectangles, le terme d’erreur ´etant maintenant le terme du deuxi`eme ordre du d´eveloppement de f en s´erie de Taylor.

7.3

Int´ egration par la m´ ethode de Simpson

Comme les autres m´ethodes, cette m´ethode est bas´ee sur une distribution fi de la fonction f (x) que l’on interpole. La m´ethode de Simpson correspond au cas de l’interpolation parabolique (polynˆome d’ordre 2 passant par 3 points fi ). Le polynˆome d’interpolation Pi (x)d’ordre 2 a ´et´e d´efini au chapitre 6.2, et l’on peut donc exprimer Z

xi+1

f (x)dx =

Z

xi+1

xi−1

xi−1

Pi (x)dx = h

Z

1 −1

Pi (u)du

en posant x = xi+1 + u.h, donc si u = −1 x = xi , si u = 0 x = xi+1 , et si u = 1 x = xi+2 . On peut alors calculer Z xi+1 h f (x)dx = (fi−1 + 4fi + fi+1 ) 3 xi−1 l’expression de l’int´egrale sur un intervalle de calcul de 2n + 1 points s’exprime alors I=

2n hX (fi−1 + 4fi + fi+1 ) 3 i=1

que l’on peut r´e´ecrire plus commodemment

I=





n−1 n−1 X X  h (f1 + fn ) + 4.f + 2.fi  i   3 i>1 i>1 pair

M´ ethodes Informatiques pour la physique

impair

H. Klein

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

7.3.1

45

Incertitude de la m´ ethode

Nous avons vu que cette m´ethode revient `a approximer la fonction f par un polynˆome d’ordre 2. Dans ce cas, l’incertitude sur chaque point fi est major´ee par le terme d’ordre 3 du d´eveloppement en s´erie de Taylor de f h3 (3) |f (x)|max 6 donc pour chaque intervalle h d’int´egration ǫ≤

h4 (3) |f (x)|max 12 L’incertitude totale pour n pas d’int´egration sera donc ǫ≤

ǫ ≤ n.

7.4

h4 (3) |f (x)|max 12

M´ ethode de Romberg

La m´ethode de Romberg g´en`ere un tableau triangulaire d’estimations num´eriques de l’int´egrale en applicant l’extrapolation de Richardson `a la m´ethode des trap`ezes. Cela permet d’am´eliorer l’ordre de convergence de la m´ethode des trap`ezes en divisant l’intervalle d’´etude et en formant des combinaisons judicieuses des diff´erents termes calcul´es. Nous n’allons pas d´etailler cette m´ethode en analyse num´erique, mais juste la d´efinir. Le principe est le suivant : si l’on veut trouver une estimation de f (x) int´egr´ee de a `a b on calcule le premier terme R(0, 0) par la m´ethode des trap`ezes, puis les termes suivants en somant des nouveaux termes et en faisant des combinaisons avec les termes calcul´es pr´ec´edemment : R(0, 0) =

1 2 (b

R(n, 0) =

P2n−1 1 k=1 2 R(n − 1, 0) + h 1 m 4m −1 (4 R(n, m − 1) −

R(n, m) =

− a)(f (a) + f (b)) f (a + (2k − 1)h)

R(n − 1, m − 1))

avec h = (b − a)/2n , n ≥ 1, m ≥ 1. On utilise alors les termes diagonaux R(n, n) comme estimation de l’int´egrale avec une erreur en O(h2n+1 . Si vous d´eveloppez ` a la main les ´equations pr´ec´edentes, vous constaterez que les valeurs de R situ´ees dans la premi`ere colonne, correspondent `a la m´ethode des trap`ezes pour nu intervalle divis´e en 2 puis en 3 . . .. La deuxi`eme colonne correspond aux mˆemes calculs avec la m´ethode de Simpson, et ainsi de suite. G´en´eralement, pour impl´ementer cette m´ethode, on poursuit le calcul jusqu’`a ce que (crit`ere de convergence) la diff´erence entre 2 valeurs successives d’une ligne soit inf´erieure ` a une pr´ecision souhait´ee. Les premiers termes R(n, 0) sont calcul´es par la m´ethode des trap`ezes, avec un nombre de pas qui augmentent `a chaque it´eration, les termes suivants sont estim´es ` a partir des calculs pr´ec´edents. Les valeurs num´eriques suivantes correspondent `a l’estimation de Z

1.25

cos(x2 )dx = 0.9774

0

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

n=1 n=2 n=3 n=4 n=5

m=1 6.301851e-01 8.930121e-01 9.406354e-01 9.568902e-01 9.643337e-01

46

m=2

m=3

m=4

m=5

9.806211e-01 9.565098e-01 9.623084e-01 9.668149e-01

9.549024e-01 9.626950e-01 9.671153e-01

9.628187e-01 9.671855e-01

9.672026e-01

le calcul a ´et´e arrˆet´e lorsque m = 5. Vous voyez cependant que l’on est encore loin d’une estimation correcte : la valeur exacte est 0.9774 soit une erreur de ǫ = 1.02e − 1.

7.5

D´ etermination d’un pas optimal d’int´ egration

La question ici est : lorsque l’on cherche `a calculer In =

Z

a

f (x)dx

b

quel est le pas optimal h = xi+1 −xi permettant de calculer In avec une pr´ecision ǫ donn´ee. Nous avons jusqu’`a pr´esent consid´er´e le pas h comme une constante. Reprenons le cas de l’int´egration par trap`eze. Si l’on souhaite d´eterminer In `a la pr´ecision ǫ, il suffit de choisir un pas h0 , de calculer I0 , puis de diminuer le pas en h1 , calculer I1 ... Ceci tant que |In+1 − In | ≥ ǫ. La m´ethode est simple, mais les calculs sont r´ep´etitifs et potentiellement longs. Il existe un moyen de r´eduire le temps de calcul en introduisant une relation de r´ecurrence permettant d’exprimer In+1 en fonction de In . Nous allons d´etailler ce calcul, toujours dans le cas d’une int´egration par trap`ezes.

1 On pose h0 = b − a, et on calcule I0 =

h0 [f (a) + f (b)] 2

2 On pose h1 = h0 /2 et on calcule I0 2

I1 = = =

z

}|

{

h1 h1 [f (a) + f (a + h1 ) + f (a + h1 ) + f (b)] = [f (a) + f (b)] +h1 f (a + h1 ) 2 2 1 I0 + h1 f (a + h1 ) 2 1 [I0 + h0 (f (a + h1 ))] 2

3 On pose h2 = h1 /2 = h0 /4 et on calcule I2 =

h2 [f (a) + f (a + h2 ) + f (a + h2 ) + f (a + 2h2 ) + f (a + 2h2 ) + f (a + 3h2 ) + f (a + 3h2 ) + f (b)] 2

M´ ethodes Informatiques pour la physique

H. Klein

´ CHAPITRE 7. INTEGRATION DE FONCTIONS

=

h2 [f (a) + f (b)] +h2 [f (a + h2 ) + f (a + 2h2 ) +f (a + 3h2 )] {z } | |2 {z } f (a+h1 )

h1 [f (a)+f (b)] 4

= =

47

{z

|

I1 2

1 I1 + h2 [f (a + h2 ) + f (a + 3h2 )] 2 1 {I1 + h1 [f (a + h2 ) + f (a + 3h2 )]} 2

}

4 On pose h3 = h2 /2 = h0 /8 h3 [f (a) + f (b) + 2f (a + h3 ) + 2f (a + 2h3 ) + 2f (a + 3h3 ) + 2f (a + 4h3 ) 2 +2f (a + 5h3 ) + 2f (a + 6h3 ) + 2f (a + 7h3 )] 1 I2 + h3 [f (a + h3 ) + f (a + 3h3 ) + f (a + 5h3 ) + f (a + 7h3 )] = 2 1 = {I2 + h2 [. . .]} 2

I3 =

On peut alors g´en´eraliser en In =



2n−1 X



1 f (a + (2i − 1)hn ) In−1 + hn−1 2 i=1impair

Cette relation permet de calculer ´economiquement le terme n connaissant le terme pr´ec´edent. D’une mani`ere g´en´erale, un programme r´ealisant une int´egration sera divis´e de la mani`ere suivante : – une fonction permettant de r´ealiser un pas d’int´egration – une fonction r´ealisant le calcul de l’int´egrale en utilisant des relations de r´ecurrence du type de celle que nous venons de d´etailler pour fournir un r´esultat avec une pr´ecision connue.

M´ ethodes Informatiques pour la physique

H. Klein

Chapitre 8

D´ erivation num´ erique Nous allons nous int´eresser dans ce chapitre au calcul de la d´eriv´ee d’une fonction ´echantillon´ee, c.a.d d’une fonction dont seulement certaines valeurs sont connues. La d´efinition math´ematique de la d´eriv´ee f ′ (x) d’une fonction f (x) d´efinie sur un intervalle I avec x ∈ I est lim

f ′ (x) =ǫ → 0 ou

f (x + ǫ) − f (x) ǫ

f (x) − f (x − ǫ) ǫ selon que l’on r´ealise une estimation ` a droite ou `a gauche respectivement. Comme l’on calcule la limite pour ǫ → 0, les deux expressions sont strictement ´equivalentes. lim

f ′ (x) =ǫ → 0

8.1

Formule d’Euler

En calcul num´erique en revanche, si les mˆemes d´efinitions sont utilis´ees, la situation est diff´erente puisque l’on va maintenant travailler sur des diff´erences finies, c.a.d que ǫ sera ´egal `a une constante non nulle, ǫ = h. Les deux d´efinitions pr´ec´edentes ne sont alors plus ´equivalentes. Il faudra utiliser f (x + h) − f (x) f ′ (x) = h ou f (x) − f (x − h) f ′ (x) = h

8.1.1

Erreur intrins` eque

Si l’on r´ealise un d´eveloppement en s´erie de Taylor de f (x + h) on obtient f (x + h) = f (x) + h.f ′ (x) +

h2 ′′ .f (x) + . . . 2

il apparaˆıt donc que l’estimation de la d´eriv´ee f ′ (x) =

f (x + h) − f (x) h 48

´ ´ CHAPITRE 8. DERIVATION NUMERIQUE

49

pr´esente une erreur correspondant au terme d’ordre 2 du d´evellopement de Taylor, cette erreur est un terme h2 .|f ′′ (x)|. On voit donc que cette m´ethode n’est pas tr`es pr´ecise, elle donne de plus des r´esultats diff´erents suivant que l’on r´ealise une estimation `a gauche ou `a droite. Pour ces raisons, cette m´ethode est peu employ´ee. Nous allons maintenant voir qu’il est possible de l’am´eliorer `a peu de frais.

8.2

D´ erivation au demi-pas

En conservant la mˆeme d´emarche, nous allons refaire en calcul en sym´etrisant le probl`eme c.a.d. que pour estimer la d´eriv´ee au point x, nous allons utiliser les valeurs de la fonction f (x + h) et f (x − h). Si l’on ´ecrit les d´eveloppements limit´es de f (x) dans ces deux situations f (x + h) = f (x) + h.f ′ (x) +

h3 h2 ′′ .f (x) + f (3) + . . . 2 6

f (x − h) = f (x) − h.f ′ (x) +

h2 ′′ h3 .f (x) − f (3) + . . . 2 6

on en d´eduit que f (x + h) − f (x − h) = 2h.f ′ (x) + 2

h3 (3) f + ... 6

et il apparaˆıt alors que f ′ (x) ≃

f (x + h) − f (x − h) 2h 2

avec une erreur correspondant au terme h3 |f (3) (x)|. Nous sommes maintenant en possession d’une m´ethode sym´etrique, avec un terme d’erreur `a l’ordre 2.

8.2.1

Stabilit´ e num´ erique

La seule question qu’il convient de se poser ici est : comment doit-on choisir le pas h utilis´e dans le calcul ? La r´eponse intuitive est que ce pas doit ˆetre le plus petit possible, nous allons voir que c’est faux. Quant on discr´etse une fonction continue, on commet une erreur num´erique ǫ=

∆f f

o` u ∆f est l’´ecart entre la valeur r´eelle de la fonction et la valeur tabul´eee. Pour le calcul au demi-pas, l’incertitude num´erique pour les ´evaluations de f est Inumerique =

ǫ ǫ|f (x + h)| + ǫ|f (x − h)| = |f (x)| 2h h

L’incertitude totale comprenant l’erreur intrins`eque au calcul de la d´eriv´ee s’exprime Itotal = M´ ethodes Informatiques pour la physique

ǫ h2 |f (x)| + |f (3) (x)| h 3 H. Klein

´ ´ CHAPITRE 8. DERIVATION NUMERIQUE

50

L’incertitude optimale se d´efinit telle que ∂Itotal =0 ∂h ce qui conduit `a un pas de calcul optimal h=

M´ ethodes Informatiques pour la physique



3ǫf 2f (3)

1 3

H. Klein

Chapitre 9

R´ esolution d’´ equations diff´ erentielles lin´ eaires C’est un probl`eme tr`es fr´equent en physique (ph´enom`enes transitoires dans un circuit RLC par exemple), chimie (cin´etique des r´eactions chimiques), astronomie . . .Le probl`eme `a l’ordre 1 peut-ˆetre r´esolu par les m´ethodes d’int´egration du chapitre 7 dy = r(x) ⇔ y(x) = dx

Z

r(x)dx

Dans ce chapitre, nous consid`ererons 3 types de bases d’´equations diff´erentielles respectivement d´ecroissantes, croissantes ou oscillantes : dy + αy ⇔ y = y0 exp(−αx) dx dy − αy ⇔ y = y0 exp(αx) dx dy ± iωy ⇔ y = y0 exp(±iωx) dx et nous aborderons plusieurs m´ethodes num´eriques de r´esolution de ce type d’´equation, en mettant l’accent sur le fait que toutes les m´ethodes ne sont pas adapt´ees `a tous les types d’´equation. Les probl`emes physiques sont souvent d’ordre sup´erieur, comme dans l’´equation dy d2 y +α = r(x) dx dx on peut facilement se ramener au probl`eme `a l’ordre 1 en r´e´ecrivant l’´equation du deuxi`eme ordre pr´ec´edente comme un syst`eme d’´equation du premier ordre dy dx dz dx

= z(x) = r(x) − αz(x)

51

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

52

syst`eme que nous pouvons r´esoudre par int´egration. On peut g´en´eraliser `a une ´equation diff´erentielle d’ordre N , que l’on r´ecrit comme un syst`eme de N ´equations fi d’ordre 1 dyi (x) = f (x, y1 . . . yN ) dx o` u les fonctions fi sont connues. Pour r´esoudre le syst`eme, il suffit d’int´egrer les fonctions fi . Pour r´esoudre num´eriquement ce syst`eme, on part d’un point donn´e (x0 , y0 ) repr´esentant les conditions initiales du probl`eme. On choisit ensuite un pas d’int´egration fini h = ∆x comme pour les m´ethodes du chapitre 7, et l’on int`egre pas `a pas avec xn = xn−1 + h yn = yn−1 + ∆y dans ce chapitre, nous allons d´etailler diff´erentes m´ethodes pour ´evaluer les pas finis ∆y.

9.1

M´ ethode d’Euler

Soit

dyi = fi (x, y) dx

(1)

La formule la plus simple que nous puissions utiliser est la formule d’Euler. C’est `a dire que dy et dx sont remplac´es par des accroissements finis ∆y et ∆x, et l’on r´e´ecrit ensuite les ´equations en multipliant par ∆x, ela revient ` a ´ecrire, pour un accroissement h y(x + h) = y(x) + hy(x) + O(h2 ) le terme O(h2 ) ´etant le terme d’erreur (` a l’ordre 2) On peut alors r´e´ecrire l’´equation (1) en n´egligeant les termes du deuxi`eme ordre yi+1 = yi + hf (xi , yi ) dans le cas o` u l’on ne consid`ere qu’un ´echantillonage de x x0 . . . xn , avec h = xi+1 − xi . Si l’on connait les valeurs initiales {x0 , y0 }, cette m´ethode permet de calculer toutes les valeurs successives yi , comme on le voit sur la figure 9.1 Avec une m´ethode de ce type, on fait avancer la solution de xi `a xi + h = xi+1 `a chaque pas d’int´egration. Nous avons cependant vu au chapitre 6 que cette m´ethode est peu performante, et surtout asym´etrique. Cela peut poser quelques probl`emes : si par exemple vous tracez une trajectoire d´ependant d’une ´equation diff´erentielle entre t = 0 et t, vous obtiendrez des r´esultats diff´erents en r´ealisant les mˆemes calculs entre t et t = 0... Cette m´ethode est donc ` a ´eviter dans la majorit´e des cas. Il est utile de l’introduire, pour permettre la compr´ehension des m´ethodes d’int´egration des ´equations diff´erentielles, et elle reste cependant utilisable dans certains cas simples. M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

53

Fig. 9.1 – M´ethode d’Euler. Dans cette m´ethode d’int´egration d’une ´equation diff´erentielle, la d´eriv´ee au point de d´epart xn de chaque intervalle est extrapol´ee pour trouver la valeur suivante en xi+1 de la fonction.

9.1.1

Pr´ ecision et stabilit´ e de la m´ ethode

Quelle est la pr´ecision de la m´ethode d’Euler ? Pour y r´epondre, nous allons consid´erer le d´evelopement en s´erie de Taylor de la fonction y(x) autour de la valeur xi yi+1



dy = yi + h dx



h2 + 2 i

d2 y dx2

!

+ ... i

si l’on soustrait cette expression ` a l’expression de yi+1 d´efini au chapitre 9.1 on obtient yi+1



dy = yi + h dx



h2 + 2 i

d2 y dx2

!



dy + . . . ≈ yi − hf (yi , xi ) = yi + h dx i



i

Nous voyons donc que le terme en h est correctement exprim´e dans l’approximation de la m´ethode d’Euler, mais que le terme d’ordre sup´erieur est faux. Ceci nous permet de d´ecrire la m´ethode d’Euler comme une m´ethode du premier ordre. Le terme d’erreur parfois appel´e erreur d’arrondi est ici le terme en h2 , on peut r´e´ecrire l’´equation de la mani`ere suivante y(x + h) = y(x) + hy(x) + O(h2 ) le terme O(h2 ) ´etant le terme d’erreur (` a l’ordre 2) Nous venons de voir que la m´ethode d’Euler est une m´ethode du premier ordre. Il reste `a se poser une question importante : quelle est sa stabilit´e ? Supposons qu’`a un moment du calcul, la solution num´erique diff`ere de la vraie solution d’une quantit´e δy. Nous ´ecrivons 

yi+1 + δyi+1 = yi + δyi − h f (yi , xi ) +



∂f ∂y



i

δyi



o` u le terme entre crochets est le d´eveloppement de f en s´erie de taylor, en soustrayant ceci `a l’expression de yi+1 , on obtient δyi+1 M´ ethodes Informatiques pour la physique





∂f = 1−h ∂y



δyi = gδyi

i

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

54

si g a une magnitude sup´erieure ` a 1, alors δyi va avoir tendance `a augnmenter quand i augmente. Il y a alors un risque que cette erreur devienne pr´edominante devant la solution recherch´ee. On dira que la m´ethode d’Euler est stable si |g| ≤ 1 ou −1 ≤ 1 − h

∂f ≤1 ∂y

h ´etant positif par d´efinition, la deuxi`eme in´egalit´e impose donc que la d´eriv´ee de f par rapport `a y soit elle aussi positive. La premi`ere in´egalit´e introduit une restriction sur δx h ≤ 2/

∂f ∂y

Si cette d´eriv´ee est complexe, il faut faire attention au calcul de |g|. Dans ces cas il peut ˆetre plus facile de rechercher des solutions ` a la condition |g2 | ≤ 1. Dans le cas d’une ´equation d’oscillation du type dy ± iωy = 0 ⇔ y = yo exp(±iωx) dx cette in´egalit´e conduira ` a 1 + h2 ω 2 ≤ 1 qui est impossible ` a satisfaire pour des ω et h r´eels. De mˆeme pour une ´equation du type dy − αy = 0 ⇔ y = yo exp(αx) dx cette analyse n’a pas de sens. Dans ce cas il serait plus judicieux de s’int´eresser `a l’erreur relative, et imposer que cette erreur dans la solution n’augmente pas. d´ecroissance h ≤ 2/α

9.1.2

croissance instable

oscillation instable

Exemple d’application : la loi de d´ ecroissance radioactive

Pour illustrer ce propos, voici un exemple dans un cas extrˆemement simple : la loi de d´ecroissance radioactive, o` u nous sommes capables de donner une solution analytique exacte tr`es facilement. Une substance radioactive est caract´eris´ee par une constante de d´ecroissance radioactive k. On peut ´ecrire la loi N (t) = N0 exp(−k.t) permettant d’exprimer le nombre de noyaux radioactifs a` un instant t, N (t) en fonction du nombre de noyaux N0 ` a l’instant t = 0 et de la constante de d´ecroissance radioactive. Cette loi correspond `a l’´equation diff´erentielle dN dN + k.N = 0 ⇔ = −k.N = f (t) dt dt M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

55

Nous allons r´esoudre num´eriquement cette ´equation avec k = 100s−1 et N0 = 1 en utilisant la m´ethode d’Euler. Nous avons montr´e pr´ec´edemment que cette m´ethode ´etait stable si le pas d’int´egration h (ici un temps) respectait le crit`ere h ≤ 2/α, dans ce cas pr´ecis α = k. Il est donc n´ecessaire dans ce cas de choisir un pas h ≤ 2.10−2 s pour satisfaire le crit`ere de stabilit´e. La figure 9.2 repr´esente les r´esultats de la simulation pour des pas d’int´egration inf´erieurs ou sup´erieurs `a ce crit`ere, ainsi que la solution exacte en trait plein. 1 dt = 1 ms -100*t e

dt=30ms dt=1ms

4

0,8

N /N0

N / N0

0,6

2

0,4

0 0,2

0

0

0,05 Temps (s)

0,1

-2

0 Temps (s)

Fig. 9.2 – Application de la m´ethode d’Euler : simulation de l’´evolution temporelle du nombre de noyaux d’une source radioactive (constante de d´ecroissance radioactive 100s−1 . Le crit`ere de stabilit´e de la m´ethode impose un pas d’int´egration inf´erieur `a 0.02 s. Courbe de gauche : le crit`ere est respect´e, le calcul num´erique donne des r´esultats corrects (la solution exacte est trac´ee en trait plein). Lorsque ce crit`ere n’est pas respect´e (courbe de droite) le r´esultat diverge. Un simple examen de ce graphe permet de comprendre qu’il est important de choisir un pas d’int´egration satisfaisant le crit`ere de stabilit´e de la m´ethode, sous peine de voir le calcul diverger rapidement . . .On voit donc qu’une m´ethode peut donner de bons r´esultats dans certains cas, et pas dans d’autres. Il convient donc de se poser ces questions avant de se lancer dans des calculs complexes. . .

9.2

M´ ethode du saut de grenouille

L’id´ee ici est d’am´eliorer la m´ethode d’Euler en sym´etrisant le probl`eme. On va simplement ´ecrire yi+1 = yi−1 + 2h.f (xi , yi ) ici, le terme d’erreur est en h3 /6, on parlera donc d’une m´ethode d’ordre2.

9.2.1

Stabilit´ e

Si l’on tient le mˆeme raisonnement que pour la m´ethode d’Euler, on peut exprimer la variation de la solution par rapport ` a la solution vraie pour une ´equation d´ecroissante : δyi+1 = δyi−1 − 2h M´ ethodes Informatiques pour la physique

∂f δyi ∂y H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

56

on va ´ecrire δyi = gδyi−1 et δyi+1 = g2 δyi−1 ce qui conduit `a g2 = 1 − 2h. dont les solutions s’´ecrivent ∂f g = h. ± ∂y

s

∂f g ∂y 

∂f 1 + h. ∂y

2

on a toujours, pour les deux racines g1 .g2 = −1 et g1 6= g2 ce qui implique que l’une des deux racines est sup´erieure ` a 1. La m´ethode est donc instable dans ce cas, ainsi que dans le cas d’une ´equation croissante. Il y a une exception dans le cas ou ∂f ∂y est purement imaginaire, le terme sous la racine dans l’expression de g peut alors ˆetre n´egatif, il est alors possible que g1 .g2 < 1. C’est le cas pour une ´equation oscillante o` u ∂f ∂y = ±iω. Dans ce cas, l’algorithme est stable si le terme sous la racine dans l’expression de g est positif, c’est `a dire si h ≤ 1/ω d´ecroissance instable

9.3

croissance instable

oscillation h ≤ 1/ω

Algorithme Verlet-vitesses

Les algorithmes de Verlet sont tr`es utilis´es pour int´egrer les ´equations du mouvement de Newton et calculer les trajectoires de particules en dynamique mol´eculaire (et dans les jeux vid´eos). L’algorithme du Verlet r´eduit les erreurs par rapport `a une m´ethode calculant la position au temps t + h uniquement ` a partir de la position aux temps t et t − h. C’est une m´ethode `a l’ordre 3 (erreur en O(h4 ). Le principe est d’´ecrire le d´eveloppement limit´e de la position dans les deux directions temporelles : x(t + h) = x(t) + v(t).h +

b(t).h3 a(t).h2 + + O(h4 ) 2 6

a(t).h2 b(t).h3 − + O(h4 ) 2 6 o` u h est le pas d’int´egration, x est la position, v la vitesse, a l’acc´el´eration, et b la d´eriv´ee troisi`eme de la position. En sommant les deux expressions pr´ec´edentes, on obtient x(t − h) = x(t) − v(t).h +

x(t + h) = 2.x(t) − x(t − h) + a(t).h2 + O(h4 ) Une variante de cet algorithme, que nous d´etaillons ici est l’algorithme Verlet vitesses, bas´e sur le mˆeme principe pais dans lequel on inclue explicitement la vitesse : 1 x(t + h) = x(t) + v(t).h + a(t).h2 2 a(t) + a(t + h) .h 2 on peut montrer que l’erreur est du mˆeme ordre que pour l’algorithme du Verlet. On l’impl´emente g´en´eralement de la mani`ere suivante : v(t + h) = v(t) +

M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

1. on calcule

57

1 x(t + h) = x(t) + v(t).h + a(t).h2 2

2. on calcule v(t + h/2) = v(t) + a(t).h/2 3. `a partir du potentiel d’interaction on calcule a(t + h) 4. et finalement on calcule v(t + h) = v(t + h/2) +

a(t + h).h 2

Cet algorithme suppose que l’acc´el´eration a(t + h) ne d´epend que de x(t + h), et pas de v(t + h).

9.4

M´ ethode de Runge Kutta ` a l’ordre 2

Nous avons vu deux m´ethodes : l’une est stable pour des ´equations d´ecroissantes, l’autre pour les ´equations oscillantes en respectant certaines conditions. Est-il possible de combiner ces deux conditions de stabilit´e dans une seule m´ethode ? La r´eponse est oui, avec la m´ethode de Runge Kutta `a l’ordre 2. Le principe est sch´ematis´e sur la figure 9.3. Les valeurs des d´eriv´ees des yi au point initial sont utilis´ees pour estimer les yi au centre du pas d’int´egration, puis les valeurs de ces d´eriv´ees sont utilis´ees pour faire avancer la solution jusqu’au point xi+1 .

Fig. 9.3 – M´ethode de Runge Kutta d’ordre 2. Dans cette m´ethode d’int´egration d’une ´equation diff´erentielle, on obtient une pr´ecision au deuxi`eme ordre en utilisant la d´eriv´ee au point de d´epart xi pour trouver un point interm´ediaire. On utilise ensuite la d´eriv´ee en ce point pour trouver la valeur suivante de la fonction. On calcule la d´eriv´ee de y(x) au point xi k1 = M´ ethodes Informatiques pour la physique



dy dx



= h.f (xi , yi )

x=xi H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

58

puis on calcule la d´eriv´ee au point xi + h/2 k2 =



dy dx



x=xi + h 2

= h.f (xi +

k1 h , yi + ) 2 2

on ´ecrit alors que yi+1 = yi + k2 + O(h3 ) c’est une m´ethode du deuxi`eme ordre, l’erreur correspond donc au terme suivant d’ordre 3. On voit que cette m´ethode requiert deux ´evaluations de f (x) `a chaque pas d’int´egration. Contrairement ` a la m´ethode d’Euler, cette m´ethode est sym´etrique, c.a.d que l’int´egration de l’´equation diff´erentielle de x0 → xi ou de xi → x0 conduira au mˆeme r´esultat.

9.4.1

Stabilit´ e de la m´ ethode

On exprime comme pr´ec´edemment l’´ecart `a la vrai solution δyi+1 = δyi

"



1 ∂f ∂f + h 1−h ∂y 2 ∂y

2 #

ce qui conduit en posant que le terme entre crochets est inf´erieur `a 1 aux conditions de stabilit´e suivantes d´ecroissance h ≤ 2/α

croissance instable

oscillation 1 + 14 (hω)4 ≤ 1

nous avons ici combin´e les crit`eres de stabilit´e des m´ethodes d’Euler et de la grenouille au sein d’une seule m´ethode d’ordre 2. Dans le cas d’une ´equation oscillante, on peut consid´erer la m´ethode comme instable, mais en pratique si hω < 1 les erreurs g´en´er´ees sont n´egligeables devant le vrai r´esultat, et la m´ethode est utilisable. Exemple d’application Reprenons l’exemple pr´esent´e pour la m´ethode d’Euler, dN dN + k.N = 0 ⇔ = −k.N = f (t) dt dt Nous allons r´esoudre num´eriquement cette ´equation avec k = 100s−1 en utilisant la m´ethode RK2. Nous avons montr´e pr´ec´edemment que cette m´ethode ´etait stable si le pas d’int´egration h (ici un temps) respectait le crit`ere h ≤ 2/α, dans ce cas pr´ecis α = k. Il est donc n´ecessaire dans ce cas de choisir un pas h ≤ 2.10−2 s pour satisfaire le crit`ere de stabilit´e. La figure 9.4 repr´esente les r´esultats de la simulation pour des pas d’int´egration inf´erieurs ou sup´erieurs `a ce crit`ere, ainsi que la solution exacte en trait plein. A nouveau,un simple examen du graphe permet de comprendre qu’il est important de choisir un pas d’int´egration satisfaisant le crit`ere de stabilit´e de la m´ethode, sous peine de voir le calcul diverger rapidement. On notera cependant que le comportement est diff´erent de celui observ´e avec la m´ethode d’Euler. M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

59

2 -2

pas de temps : 2,1.10 -3

N / N0

pas de temps 10

s

s

1

0

0

0,1 Temps (s)

0,2

Fig. 9.4 – Application de la m´ethode Runge Kutta d’ordre 2 : simulation de l’´evolution temporelle du nombre de noyaux d’une source radioactive (constante de d´ecroissance radioactive 100s−1 . Le crit`ere de stabilit´e de la m´ethode impose un pas d’int´egration inf´erieur `a 0.02 s. Lorsque ce crit`ere n’est pas respect´e, le r´esultat diverge par rapport `a la solution exacte trac´ee en trait plein.

9.5

M´ ethode Runge Kutta ` a l’ordre 4

Dans la m´ethode RK2, on utilise l’estimation des yi au demi-pas d’int´egration pour le calcul des d´eriv´ees. La m´ethode de Runge-Kutta d’ordre 4 tente de fournir une meilleure estimation `a l’aide d’une moyenne de 4 estimations, ce principe est sch´ematis´e sur la figure 9.5. La premi`ere estimation est celle d’Euler : on fait un demi-pas de longueur h/2 par la m´ethode d’Euler pour ´evaluer les valeurs yi au demi-pas. Cela permet de calculer de nouvelles valeurs des d´eriv´ees. On revient ensuite au point d’origine et l’on utilise ces d´eriv´ees pour refaire un demi-pas suivant la m´ethode d’Euler et ainsi obtenir de nouvelles valeurs des yi : on ne trouvera pas les mˆemes valeurs qu’`a la premi`ere ´etape puisque l’on n’utilise pas les mˆemes valeurs des d´eriv´ees (n’oublions pas qu’il ne s’agit que d’estimations). Cela permet d’obtenir une troisi`eme estimation des d´eriv´ees. Cette estimation est utilis´ee pour faire un pas h complet suivant la m´ethode d’Euler, toujours ` a partir du mˆeme point de d´epart, cela conduit `a une quatri`eme estimation des d´eriv´ees des yi . Il ne reste plus alors qu’`a faire une moyenne pond´er´ee de ces quatres estimations en affectant un poids double aux deux estimations interm´ediaires, et faire un pas complet de longueur h pour faire avancer la solution jusqu’au point xi+1 . L’algorithme 11 propose une impl´ementation de cette m´ethode. Cette m´ethode requiert 4 ´evaluations de f (x, y) par pas d’int´egration h : une au point de d´epart de l’intervalle, 2 au demi-intervalle, et une `a la fin de l’intervalle : k1 = h.f ()xi , yi ) k1 h k2 = h.f (xi + , yi + ) 2 2 M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

60

Fig. 9.5 – M´ethode Runge Kutta d’ordre 4. Dans cette m´ethode d’int´egration d’une ´equation diff´erentielle, on obtient une pr´ecision au quatri`eme ordre en ´evaluant 4 fois la d´eriv´ee : une fois au point de d´epart, deux fois au milieu de l’intervalle, et une fois en un point final estim´e. h k2 ), yi + ) 2 2 = h.f (xi + h, yi + k3 )

k3 = h.f (xi + k4

et l’on calcule alors la valeur de y au point xn+1 en sommant ces quatres termes yi+1 = yi +

k1 k2 k3 k4 + + + + O(h5 ) 6 3 3 6

le terme d’erreur est alors d’ordre 5. Cette m´ethode peut paraitre ressembler `a un bricolage, mais c’est une des m´ethodes les plus utilis´ees en physique : elle est en effet stable et efficace dans beaucoup de cas. Pour des raisons de lourdeur des calculs, nous ne d´etaillerons pas les crit`eres de stabilit´e de cette m´ethode, qui est cependant la plus robuste de toute celles que nous venons d’aborder.

M´ ethodes Informatiques pour la physique

H. Klein

´ ´ ´ ´ CHAPITRE 9. RESOLUTION D’EQUATIONS DIFFERENTIELLES LINEAIRES

61

Algorithme 11 R´esolution d’un syst`eme d’´equations diff´erentielles du premier ordre par la m´ethode Runge-Kutta d’ordre 4 Requiert: un pas d’int´egration h, les n valeurs yi du d´ebut d’intervalle x dans un tableau, une fonction deriv permettant le calcul des d´eriv´ees Fournit: les valeurs fi au point x + h dh ← h/2 d1 ← deriv(x, y[], n) pour i = 1 `a n faire ytemp [i] = y[i] + d1 [i] ∗ dh fin pour d2 ←deriv(x + dh, ytemp [], n) pour i = 1 `a n faire ytemp [i] = y[i] + d2 [i] ∗ dh fin pour d3 ← deriv(x + dh, ytemp [], n) pour i = 1 `a n faire ytemp [i] = y[i] + d3 [i] ∗ h fin pour d4 ← deriv(x + h, ytemp[] , n) pour i = 1 `a n faire   y[i] ← y[i] + h d16[i] + d23[i] + d33[i] + d46[i] fin pour renvoyer y

M´ ethodes Informatiques pour la physique

H. Klein

Annexe A

R´ ef´ erences bibliographiques et informatiques La litt´erature couvrant ce domaine est importante, je ne citerai ici que quelques r´ef´erences qui m’ont servi ` a la r´ealisation de ce document. Libre `a vous d’en utiliser d’autres. 1. Numerical Recipes in C, second edition, Cambridge University Press, 1992 W.H. Press, S.A. Teukolski, W.T. Vetterling, B.P. Flannery La bible pour l’utilisateur ! Le livre peut ˆetre t´el´echarg´e au format PDF `a l’adresse http ://libwww..lanl.gov/numerical/bookcpdf.html 2. Physique num´erique, Ed. Vuibert, 1998 P. Depondt Malheureusement ´epuis´e 3. M´ethodes de calcul num´erique, Ed. Herm`es, 2001 J.P. Nougier Vous trouverez ici quelques r´ef´erences d’outils informatiques libres. Cela signifie que ces outils sont gratuits, et que vous disposez de leurs codes sources. Libre `a vous de les utiliser, de lire les sources pour les comprendre . . .Ces outils d´evelopp´es sur platte-forme UNIX, fonctionnent aussi sous Windows (sauf Linux bien sˆ ur). 1. Un syst`eme d’exploitation stable, fonctionnant sur architecture PC : Linux. Voir par exemple le site de la distribution Mandrake http ://www.linux-mandrake.com ou http ://www.linux.org 2. La r´ef´erence des compilateurs C : gcc, il compile aussi le C++, l’ObjC . . . http ://www.gnu.org/software/gcc 3. Besoin d’une librairie de calcul num´erique ? Pensez `a la GNU Scientific Library http ://www.gnu.org/software/gsl 4. Un logiciel de trac´e de courbe tr`es complet : Gnuplot, il fonctionne mˆeme sous Windows http ://www.gnuplot.info 62

List of Algorithmes 1 2 3 4 5 6 7 8 9 10 11

Tri d’un tableau par tri ` a bulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tri d’un tableau par insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tri d’un tableau par la m´ethode du tri shell . . . . . . . . . . . . . . . . . . . . . Tri d’un tableau par la m´ethode du tri rapide. Dans cet algorithme, le pivot est le dernier ´el´ement du tableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Encadrement d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R´eduction de l’encadrement d’une fonction . . . . . . . . . . . . . . . . . . . . . Recherche d’une racine par dichotomie . . . . . . . . . . . . . . . . . . . . . . . . Recherche de racines par la m´ethode de Newton-Raphson . . . . . . . . . . . . . Recherche d’un minimum par la methode golden section search . . . . . . . . . . Interpolation par un polynˆome de Lagrange d’ordre n . . . . . . . . . . . . . . . R´esolution d’un syst`eme d’´equations diff´erentielles du premier ordre par la m´ethode Runge-Kutta d’ordre 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

11 12 14 15 25 26 27 29 34 40 61