• Aucun résultat trouvé

Licence de physique L3 PHYTEM

N/A
N/A
Protected

Academic year: 2022

Partager "Licence de physique L3 PHYTEM"

Copied!
135
0
0

Texte intégral

(1)

PHYSIQUE NUM´ ERIQUE

Licence de physique L3 PHYTEM

Universit´e Pierre et Marie Curie Paris-6 — ENS-Cachan

0 0.0005 0.001 0.0015 0.002 0.0025

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0 1 0.0005 0.001 0.0015 0.002 0.0025

X1 X2

1. INSP (Institut des NanoSciences de Paris), CNRS UMR 7588 & Universit´e P. et M. Curie Paris-6. Con- tact :depondt@insp.jussieu.fr

(2)

2 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

(3)

Table des mati` eres

1 Introduction 7

1.1 Des m´ethodes num´eriques, pour quoi faire ? . . . 8

1.1.1 Quelques jalons. . . 8

1.1.2 . . . et quelques exemples. . . 10

1.2 Plan succinct. . . 13

2 Notions pratiques de FORTRAN95. 15 2.1 Qu’est-ce qu’un langage de programmation ? . . . 15

2.2 Notions ´el´ementaires. . . 18

2.2.1 Instructions. . . 18

2.2.2 D´eclarations. . . 19

2.2.3 Op´erations ´el´ementaires sur les nombres. . . 20

2.3 Premi`eres boucles. . . 20

2.3.1 Pour quoi faire ? . . . 20

2.3.2 Pratiquement. . . 20

2.3.3 Boucles imbriqu´ees . . . 21

2.3.4 Boucles munies d’un nom . . . 21

2.4 Conditions. . . 21

2.5 Entr´ees-sorties. . . 23

2.5.1 Ecran et clavier. . . .´ 23

2.5.2 Les fichiers. . . 23

2.5.3 Les formats. . . 24

2.6 Les fonctions intrins`eques. . . 25

2.7 Autres boucles. . . 25

2.7.1 do while . . . 25

2.7.2 Boucles infinies :exitetcycle. . . 25

2.7.3 Boucles implicites. . . 26

2.8 Tableaux. . . 26

2.8.1 D´eclaration . . . 26

2.8.2 Manipulation globale de tableaux . . . 27

2.8.3 Fonctions intrins`eques et tableaux . . . 28

2.8.4 Allocation dynamique de m´emoire . . . 29

2.9 Fonctions et sous-programmes. . . 30

2.9.1 Lesfunction. . . 30

2.9.2 Et lessubroutine. . . 31

2.9.3 L’intention . . . 31

2.9.4 La mise en commun de variables. . . 31

2.9.5 Mettre un nom de sous-programme comme argument. . . 32

2.9.6 Les biblioth`eques. . . 32

2.10 Les commentaires. . . 33

2.11 Une instruction sur plusieurs lignes. . . 34

2.12 Les chaˆınes de caract`eres. . . 34

2.12.1 D´eclaration . . . 34

2.12.2 Op´erations sur les chaˆınes . . . 34

2.12.3 Conversion chaˆıne⇔nombres . . . 34

2.13 D´etection de fin de fichier. . . 35

2.14 FORTRAN77-90-95 : filiation et diff´erences. . . 35

2.14.1 kind . . . 36

2.14.2 Interfaces. . . 36

2.14.3 Objets de type d´eriv´e. . . 37

2.14.4 Pointeurs. . . 38 3

(4)

4 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

2.14.5 R´ecursivit´e. . . 38

3 Un prototype de TP 41 3.1 Introduction. . . 41

3.2 La lentille demi-boule . . . 41

3.2.1 Pr´eliminaires analytiques . . . 41

3.2.2 Ecriture d’un programme . . . .´ 42

3.2.3 Premiers r´esultats . . . 42

3.2.4 Trac´e des rayons . . . 42

3.2.5 Au-del`a de la r´eflexion totale . . . 43

4 M´ethodes num´eriques. 45 4.1 Recherche des z´eros d’une fonction. . . 45

4.1.1 M´ethode de la dichotomie. . . 45

4.1.2 M´ethode de Newton. . . 46

4.1.3 Comment s’y prendre ? . . . 48

4.2 Repr´esentation des nombres dans un ordinateur. . . 48

4.2.1 Les nombres entiers. . . 48

4.2.2 Les nombres r´eels. . . 49

4.2.3 Cons´equence. . . 49

4.3 Suites et s´eries. . . 49

4.3.1 G´en´eralit´es et premi`eres difficult´es. . . 49

4.3.2 Calcul des int´egrales. . . 50

4.4 Echantillonnages, interpolation. . . .´ 53

4.4.1 Interpolation lin´eaire. . . 54

4.4.2 Approximation parabolique. . . 54

4.4.3 Polynˆomes de Lagrange. . . 54

4.4.4 D´eriv´ees. . . 55

4.5 Alg`ebre lin´eaire. . . 55

4.5.1 Un exemple : la diffusion de la chaleur `a une dimension. . . 55

4.5.2 Syst`emes d’´equations lin´eaires. . . 56

4.5.3 Une g´en´eralisation de la m´ethode de Newton `a plusieurs dimensions. . . 58

4.5.4 Probl`emes de vecteurs propres et de valeurs propres oueigenproblems. . . 59

4.6 Probl`emes autocoh´erents. . . 61

4.6.1 Qu’est-ce donc ? . . . 61

4.6.2 Formulation g´en´erale. . . 61

4.6.3 Est-ce que ¸ca converge ? . . . 61

4.7 Recherche des minima d’une fonction. . . 62

4.7.1 Du mouvement des amibes (m´ethode du simplex). . . 63

4.7.2 M´ethode de Newton . . . 63

4.7.3 Recherche `a une dimension : interpolation parabolique. . . 63

4.7.4 M´ethode du gradient conjugu´e. . . 64

4.7.5 Minimisation avec contrainte : les multiplicateurs de Lagrange. . . 65

4.8 Mod´elisation de donn´ees exp´erimentales. . . 66

4.8.1 Donn´ees et moindres carr´es. . . 66

4.8.2 Ajustement d’une fonction lin´eaire. . . 66

4.8.3 Ajustement d’un polynˆome. . . 68

4.8.4 D´eriv´ee locale d’une courbe exp´erimentale. . . 69

4.8.5 Lissage :a dirty trick! . . . 69

4.8.6 Ajustement non-lin´eaire. . . 70

4.9 Syst`emes d’´equations diff´erentielles ordinaires. . . 71

4.9.1 Un exemple : les lignes de champ. . . 71

4.9.2 La m´ethode d’Euler. . . 72

4.9.3 La m´ethode d’Euler am´elior´eeou m´ethode de Heun. . . 72

4.9.4 La m´ethode de Runge-Kutta d’ordre 4. . . 73

4.9.5 La m´ethode de Cranck et Nicholson . . . 74

4.9.6 Equations d’ordre sup´erieur `´ a 1. . . 75

4.9.7 M´ethode de Verlet. . . 75

4.9.8 Le probl`eme du pas d’int´egration. . . 75

4.9.9 Quelle m´ethode choisir ? . . . 76

4.10 Transform´ees de Fourier rapides. . . 78

4.10.1 La transform´ee de Fourier en physique. . . 78

4.10.2 La transform´ee de Fourier discr`ete. . . 84

(5)

4.10.3 Filtrage de donn´ees exp´erimentales. . . 86

4.11 Les m´ethodes de Monte-Carlo. . . 86

4.11.1 Processus stochastiques et chaˆınes de Markov. . . 86

4.11.2 Les vicissitudes de π. . . 86

4.11.3 La production de nombresal´eatoires. . . 87

4.11.4 Obtenir une distribution autre qu’uniforme. . . 88

4.11.5 Int´egration multidimensionnelle sur des domaines compliqu´es. . . 89

4.11.6 Simulation de Monte-Carlo-Metropolis. . . 92

4.11.7 Recherche du minimum d’une fonction : le recuit simul´e. . . 94

4.12 Le tri. . . 95

5 Introduction `a la simulation num´erique 97 5.1 Pourquoi laSimulation num´erique? . . . 97

5.2 La mati`ere consid´er´ee comme un milieu continu. . . 97

5.2.1 Quels types de questions se pose-t-on ? . . . 97

5.2.2 La m´ethode des diff´erences finies . . . 98

5.2.3 Les m´ethodes spectrales . . . 103

5.2.4 Introduction aux ´el´ements finis . . . 104

5.3 La mati`ere comme une collection de particules. . . 105

5.3.1 Matrice dynamique . . . 105

5.3.2 Simulations Monte-Carlo. . . 110

5.3.3 Simulations de dynamique mol´eculaire. . . 111

5.3.4 Simulationsab-initio. . . 111

6 Optimisation de code. 115 6.1 Eviter les calculs inutiles . . . 115´

6.2 Utiliser les sym´etries. . . 115

6.3 Stocker des r´esultats interm´ediaires. . . 116

6.4 Utilisation des caches . . . 116

6.5 Eviter les interruptions . . . 117

6.6 Ne pas r´einventer ce qui existe d´ej`a . . . 117

7 Calculs tr`es lourds : vectorisation et parall´elisation 119 7.1 L’architecture vectorielle . . . 119

7.2 Parall`elisme . . . 119

7.2.1 M´emoire partag´ee . . . 120

7.2.2 M´emoire distribu´ee . . . 120

8 Quelques ´el´ements de C++ 121 8.1 Avant mˆeme de commencer . . . 121

8.2 D´eclarations . . . 122

8.3 Structures de base diverses . . . 122

8.3.1 Boucles . . . 122

8.3.2 Conditions . . . 122

8.3.3 Sauvegardes . . . 122

8.4 Tableaux . . . 122

8.4.1 Tableaux de taille fixe . . . 122

8.4.2 Les pointeurs : premiers pas . . . 123

8.4.3 Tableaux dynamiques . . . 123

8.5 Fonctions . . . 124

8.5.1 Une fonction tr`es simple . . . 124

8.5.2 Prototype . . . 124

8.5.3 Passage d’arguments par valeur . . . 124

8.5.4 Passage d’arguments par r´ef´erence . . . 124

8.6 Les classes . . . 125

9 La question du calcul formel. 127 9.1 Calcul formel, calcul num´erique : quelle diff´erence ? . . . 127

9.2 Quelques exemples . . . 127

9.2.1 ax+b= 0 . . . 127

9.2.2 Le gaz de Van der Waals . . . 128

9.2.3 Mod`ele de Brillouin-Weiss . . . 128

9.2.4 Le projectile . . . 129

9.2.5 Unegrosse simulation : les anneaux de Saturne. . . 131

(6)

6 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

9.3 Que peut-on en conclure ? . . . 134

10 Bibliographie. 135

(7)

Chapitre 1

Introduction

Si vous pensez que le calcul num´erique, c’est l’af- faire des autres, c’est qu’il est temps de vous recycler : cette affirmation p´eremptoire, et volontairement provoca- trice1, est `a comprendre dans un contexte o`u le CEA, le CNRS, la Communaut´e Europ´eene et les grands in- dustriels s’´equipent r´esolument de moyens de calcul tou- jours plus consid´erables. Le sigle HPC (High Performance Computing) jaillit un peu partout. . . On parle volon- tier, et le plus s´erieusement du monde, de PetaFlops2 (sans forc´ement toujours tr`es bien comprendre de quoi il s’agit. . .). C’est sans doute que l’enjeu en paraˆıt important aux d´ecideurs (et aux payeurs) `a la fois pour la recherche scientifique et pour la recherche et d´eveloppement (R

& D) industriel. Les demandeurs de ce genre de calculs lourds voire tr`es lourds sont divers ; par exemple et dans le d´esordre :

– La m´et´eorologie est l’un des utilisateurs civils les plus importants : les pr´evisions au quotidien bien sˆur, mais aussi les recherches sur le r´echauffement climatique, essayer d’en pr´evoir les cons´equences, voire trouver des rem`edes requi`erent des simulations tr`es ´elabor´ees des mouvements atmosph´eriques et des

´echanges chimiques et ´energ´etiques.

– La mati`ere condens´ee, les mat´eriaux et les nanosciences en physique et en chimie offrent une vari´et´e incroyable de probl`emes mettant en jeu un grand nombre (entre quelques dizaines et le nom- bre d’Avogadro !) d’atomes : des calculs classiques ou quantiques, parfois assez simples, parfois tr`es lourds, sont mis en œuvre pour tenter de comprendre ou de pr´edire leurs propri´et´es.

– Les sciences de la vie se pr´eoccupent, au niveau micro- scopique, de mol´ecules ´enormes, extraordinairement complexes. Des efforts consid´erables sont faits pour tenter de mod´eliser ces objets, avec des enjeux impor- tants : repliement de proteines, cons´equences pour la maladie d’Alzheimer ou celle de Parkinson, drug de- sign, etc. La g´enomique, de son cˆot´e, doit utiliser des bases de donn´ees colossales en utilisant des m´ethodes qui doivent ˆetre efficaces et n’ont rien de trivial.

– Les sciences de l’ing´enieur sont aussi tr`es deman- deuses. Les simulations a´erodynamiques permettent de pr´evoir et d’optimiser les caract`eristiques d’un avion avant mˆeme son premier vol ; un industriel comme EDF d´eveloppe des calculs souvent tr`es lourds dans des domaines d’une grande diversit´e : simula-

1. faite par un professeur de math´ematiques `a l’UPMC en intro- duction `a un colloque intitul´ePenser PetaFlopsen mai 2008.

2. 1015floating point operations per second. La premi`ere machine

etaflopiquea fonctionn´e au printemps 2008. L’´etape suivante est l’ExaFlops : 1018flops. . .

tion d’irradiation de mat´eriaux divers ou r´egulation de la distribution d’´electricit´e ; les fabriquants de tur- bines qui cherchent `a optimiser leur fonctionnement simulent les ph´enom`enes tr`es complexes li´es aux in- stabilit´es dans les chambres de combustion.

Il n’y a gu`ere de domaine qui ´echappe : mˆeme la finance recrute des scientifiques capables de mod´eliser sur ordina- teur ! Un(e) physicien(e) de formation, que ce soit dans un environnement recherche ou industriel peut difficilement ignorer ce domaine dont l’importance est de plus en plus massive, mˆeme si il/elle n’est pas directement impliqu´e(e) dans des calculs l´egers ou lourds.

L’´evolution fulgurante de la capacit´e de calcul disponible ne peut toutefois ˆetre utile et profitable que s’il y a des personnes comp´etentes pour s’en servir de fa¸con pertinente et donc convenablement form´ees : il s’agit l`a d’unedouble comp´etence`a la fois scientifique dans la disci- pline d’origine (physique, chimie, math´ematiques, science de la vie, etc.) et de simulation :Some jog along with the technology while others lag behind3. . .. Ce monde ´evolue rapidement et le but de ce cours est de fournir les bases et les d´emarches permettant de s’y rep´erer.

L’exp´erience tend `a montrer que ce cours dePhysique num´eriquesurprend parfois un peu ceux `a qui il s’adresse.

Il commence, en effet, par de la programmation et quelques notions d’Unix : serait-ce alors uncours d’info, comme on l’entend souvent appeler ? Tr`es rapidement toutefois, apr`es quelques semaines, on ne parle plus, ou presque plus, d’informatique ou de programmation : c’est sup- pos´e acquis ; on parle de physique principalement, parfois orn´ee d’un peu de math´ematiques appliqu´ees. En outre, cette physique ne paraˆıt, parfois, gu`ere famili`ere `a des

´etudiants habitu´es `a r´esoudre des probl`emes dont la so- lution analytique est connue : c’est qu’ici, justement, l’ob- jectif est de r´esoudre des probl`emes pour lesquels il n’y a pas de solution analytique, c’est-`a-dire l’immense ma- jorit´e. . . L’informatique est alors pour nous un outil - qu’il faut bien sˆur maˆıtriser - pour s’attaquer `a des probl`emes de physiques vari´es. Le charme de cet enseignement, pour les enseignants mais aussi souhaitons-le pour ceux qui le re¸coivent, une fois - r´ep´etons-le - l’outil acquis, est qu’il ne se cantonne pas `a tel ou tel domaine de la physique, mais qu’il pioche ses exemples dans des champs aussi vari´es que possible, dans des questions souvent tr`es contemporaines, avec des approches parfois inattendues.

Le pr´esent polycopi´e d´eborde assez largement le strict minimum n´ecessaire `a la r´eussite `a l’examen. . . c’est volon-

3. Certains accompagnent le peloton tandis que d’autres traˆınent derri`ere.

7

(8)

8 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

taire : `a chacun de s´electionner ce qui lui paraˆıt utile, les s´eances de travaux dirig´es et de travaux pratiques ´etant de bons guides en la mati`ere4.

1.1 Des m´ ethodes num´ eriques, pour quoi faire ?

A titre de provocation, on pourrait dire que l’objet de ce` cours est de faire aussi peu d’informatique que possible. Il s’agit plutˆot d’utiliser les ressources fournies par les ordi- nateurs pour tenter de traiter des probl`emes de physique aussi vari´es que possible, afin, soit de se simplifier la vie et gagner du temps en faisant faire par un ordinateur des calculs fastidieux que l’on pourrait sans doute faire soi- mˆeme, soit au contraire de s’attaquer `a des questions que l’on ne pourrait en aucun cas traiter avec une feuille de papier et un crayon. . . Nous chercherons ainsi dans divers domaines de la physique des probl`emes, de pr´ef´erence peu susceptibles d’une solution analytique, afin de les traiter num´eriquement `a l’aide d’un calcul sur ordinateur, l’ob- jectif ´etant d’apprendre comment aborder une question de fa¸con qu’un calcul permette d’y r´epondre de mani`ere sat- isfaisante, quitte `a la reformuler au passage pour la faire entrer dans un cadre propice `a ce genre de traitement.

1.1.1 Quelques jalons. . .

Il ne faut cependant pas croire que les calculs num´e- riques aient attendu l’invention de l’ordinateur pour voir le jour. Au XVIIe si`ecle d´ej`a, l’invention des logarithmes par John Napier (1550-1616) fut une r´evolution (Miri- fici logarithmorum canoni descriptio, Edimbourg (1614)) : une multiplication se transformait en addition -beaucoup plus ais´ee-, une extraction de racine carr´ee en division par deux ! L’astronome Johannes Kepler (1571-1630) qui d´ecouvrit l’ellipticit´e des orbes plan´etaires, se livra `a des calculs num´eriques vertigineux dans, par exemple, son œu- vre principale, l’Astronomie Nouvelle (Astronomia Nova, (1609) ). Ainsi, par exemple, pour ´evaluer les positions au cours du temps d’une plan`ete alors qu’elle parcourt ce qui n’est encore qu’unovo¨ıde avec une vitesse variable5, il divise la trajectoire en 360 petits segments et additionne les r´esultats obtenus pour chaque segment : c’est ce que l’on appelle maintenant unediscr´etisation. Kepler, lui, ap- pelait cela un morcellement num´erique et se plaig- nait de ce que ce calcul fˆut m´ecanique et ennuyeux : comme son employeur, l’empereur Rudolf II., ne payait son salaire qu’occasionnellement, il n’avait pas les moyens d’employer lui-mˆeme un assistant pour l’aider. . . Il con- naissait d’ailleurs les tables de logarithmes de Napier et en ´etablit lui-mˆeme dans ses Tables Rodolphines (Tabulæ Rudolphinæ, (1627) ).

4. Le chapitre 5, en particulier doit ˆetre consid´er´e comme la suite logique du cours, mais n’en fait `a proprement parler partie.

5. Jusqu’alors, on croyait, Copernic, Tycho Brahe et Galil´ee y compris, que les mouvements plan´etaires ´etaient des mouvements circulaires uniformes, ou des combinaisons de mouvements circulaires uniformes, ce qui permettait un calcul facile des positions plan´etaires futures. Kepler, comme on le sait, introduisit, `a cause d’un d´esaccord de 8 minutes d’angle dans la position de Mars, les orbes, d’abord ovo¨ıdes puis elliptiques, parcourues `a vitesse variable ; les pr´edictions en devenaient beaucoup plus difficiles : il fallut attendre Newton pour voir la r´esolution de ce probl`eme.

Un autre exemple, moins c´el`ebre sans doute, est l’ensem- ble des op´erations qui, pendant la R´evolution Fran¸caise, ont abouti `a la d´efinition du m`etre, en remplacement du maquis d’unit´es de l’Ancien R´egime, par un syst`eme uniforme et rationnel. On voulait que le m`etre fˆut uni- versel (on aurait certes put choisir comme r´ef´erence les unit´es en vigueur `a Paris, mais l’id´eal universaliste des r´evolutionnaires l’interdisait) et l’on choisit ainsi une r´ef´erence qui pˆut ˆetre commune `a toute l’humanit´e : la dix- millioni`eme partie du quart du m´eridien terrestre. Encore fallait-il en mesurer la longueur. . . On envoya donc deux math´ematiciens-astronomes r´eput´es pour leur pr´ecision et le soin avec lequel ils menaient leurs observations (Jean-Baptiste-Joseph Delambre (1749-1822) et Pierre- Fran¸cois-Andr´e M´echain (1744-1804)) ´equip´es des instru- ments de vis´ee les plus ´elabor´es, mesurer entre Dunkerque et Barcelone la longueur de l’arc de m´eridien de Paris : en d´eterminant tr`es pr´ecis´ement la latitude des deux villes (`a partir de la hauteur de l’´Etoile Polaire et de quelques autres) on en d´eduirait ais´ement la longueur du m´eridien complet.

Il fallait donc ´etablir un r´eseau de triangles qui recou- vre compl´etement l’arc de m´eridien compris entre les deux villes, mesurer avec une pr´ecision m´eticuleuse les angles aux sommets de tous ces triangles afin d’en calculer la longueur des cˆot´es, puis par trigonom´etrie, la longueur de l’arc. Cette ´epop´ee (racont´ee par Ken Alder dansThe measure of all things, Free Press (2002)) dura sept ans (1792-1799) dans une France en proie `a toutes sortes de violences (les invasions, les guerres r´evolutionnaires, la Terreur, Thermidor. . .) : dans les jours qui suivirent la fuite de Louis XVI `a Varennes, Delambre avec son at- tirail de longue-vues et d’instruments, et, pire encore, son ordre de mission sign´e par le roi fugitif, fut arrˆet´e

`

a plusieurs reprises comme espion ; un peu plus tard, M´echain resta bloqu´e en Catalogne quand l’Espagne bourbonnienne et la France r´epublicaine se trouv`erent en guerre ; M´echain dut aussi lutter en permanence contre un ´etat psychologique d´epressif li´e `a son inqui´etude quant

`

a la qualit´e de ses mesures. Les deux hommes revinrent enfin `a Paris en 1799 pour pr´esenter leurs r´esultats : une conf´erence internationale de math´ematiciens devait : 1ov´erifier et valider la coh´erence de leurs observations, et 2oen d´eduire la longueur du m`etre.

Il fallait donc, pour la deuxi`eme partie de ce tra- vail, faire des calculs de trigonom´etrie sur une surface sph´erique. On savait cependant qu’outre les montagnes dont il fallait bien sˆur tenir compte, la Terre n’´etait pas une sph`ere parfaite mais plutˆot un ellipso¨ıde de r´evolution l´eg`erement applati aux pˆoles : toutefois, le choix d’un arc de m´eridien situ´e `a des latitudes interm´ediaires (le 45˚par- all`ele passe `a Bordeaux et donc coupe l’arc Dunkerque- Barcelone non loin de son milieu) permettait d’esp´erer obtenir une valeur moyenne qui pˆut servir de r´ef´erence.

On fit alors une d´ecouverte compl´etement inattendue : le g´eo¨ıde n’´etait pas r´egulier mais recouvert de bosses et de creux. La valeur du rayon de courbure de la sur- face terrestre d´ependait de l’endroit o`u il ´etait mesur´e, or la pr´ecision magnifique des observations de Delambre et M´echain, le soin m´eticuleux -voire obsessionnel dans le cas de M´echain- avec lequel elles avaient ´et´e r´ealis´ees ne permettaient pas de mettre ce r´esultat sur le compte d’erreurs ou d’impr´ecisions de mesure. Apr`es de longues

(9)

Réglette Curseur transparent

Graduations logarithmiques

a b

a.b

Figure 1.1 – La r`egle `a calcul, h´eriti`ere des tables de logarithmes de John Napier, en usage jusqu’`a la fin des ann´ees 1970. La r´eglette pouvait coulisser dans une gorge am´enag´ee dans la r`egle et le curseur pouvait glisser sur l’ensemble.

Pour faire le produit de deux nombresaetb(par exemple pour convertir des calories en joules), on d´epla¸cait la r´eglette de telle fa¸con que son origine se trouve en face de la graduation ade la r`egle, puis on d´epla¸cait le curseur jusqu’`a la graduationb de la r´eglette pour lire le r´esultat : comme les graduations ´etaient logarithmiques, on additionnait ainsi deux logarithmes pour obtenir le produit de leurs arguments.

tergiversations, on finit n´eanmoins par fixer la valeur du m`etre `a 443,296lignes(une unit´e en vigueur `a Paris alors) et l’on fondit le fameux m`etre-´etalon en platine irridi´e du pavillon de Breteuil.

Au-del`a de l’histoire plus ou moins anecdotique, on devine en arri`ere-plan les prodigieux calculs num´eriques que les math´ematiciens de la conf´erence ont dˆu faire (outre les travaux de d´egrossissage r´ealis´es par Delambre et M´echain : corrections pour l’altitude, la r´efraction atmo- sph`erique, la temp´erature, etc.) arm´es d’une plume pour

´ecrire et d’une table de logarithmes. Il ne se r´epartirent mˆeme pas la tˆache, car pour plus de sˆuret´e, chaque par- ticipant devait faire ind´ependamment l’int´egralit´e des cal- culs en utilisant ses propres m´ethodes ! On reste pantois devant la dext´erit´e et l’acharnement calculatoires que cela repr´esente. . .

Un peu plus tard, au XIXe si`ecle, Urbain Le Verrier

´etudia les perturbations observ´ees dans l’orbite d’Uranus et postula l’existence d’une autre plan`ete jusqu’alors in- connue. Il calcula la position de cette plan`ete et le di- recteur de l’observatoire de Berlin, Johann Galle, vit

`a l’endroit indiqu´e, le 23 septembre 1846, la nouvelle plan`ete, Neptune : un triomphe pour le valeureux cal- culateur ! On imagine sans peine cependant l’´enorme labeur que repr´esent`erent, pour Le Verrier, ces calculs, enti`erement faits `a la main. . .

Cependant, l’id´ee d’automatiser des calculs ennuyeux est ancienne. Le baron Gaspard de Prony ´etait charg´e pendant le Premier Empire d’´etablir des tables pour le calcul de l’impˆot foncier : pour cela, il divisa le tra- vail en trois grands blocs. La premi`ere partie, la plus noble, ´etait confi´ee `a des math´ematiciens : il s’agis- sait de d´ecomposer tous les calculs n´ecessaires en s´eries d’op´erations ´el´ementaires. La deuxi`eme tˆache consistait `a organiser le travail et `a compiler les r´esultats. La troisi`eme, faire les calculs r´eduits `a des op´erations tr`es simples, fut confi´ee `a une arm´ee de calculateurs humains dont la seule qualification ´etait d’ˆetre capable de faire des additions.

L’´etape suivante fut franchie par Charles Babbage, un gentleman philosopher britannique du d´ebut du XIXe si`ecle qui eut l’id´ee d’associer cette d´ecomposition des cal-

culs en tˆaches ´el´ementaires avec une calculatrice du type de celle de Pascal et un syst`eme de cartes perfor´ees issu des m´etiers `a tisser Jacquard. Malheureusement, malgr´e un financement public cons´equent, et une communica- tion - comme on dirait maintenant - efficace assur´ee par Ada Byron6, les r´ealisations pratiques ne donn`erent jamais satisfaction, `a cause semble-t-il des frottements ex- cessifs des m´ecanismes.

La premi`ere r´ealisation pratique de calculs massifs au- tomatis´es est due `a Herman Hollerith qui inventa une ma- chine pour traiter les donn´ees du recensement am´ericain de 1890 `a l’aide de cartes perfor´ees. Le r´esultat (62 622 250 habitants) fut obtenu en six semaines au lieu de sept ans pour le recensement pr´ec´edent. Fort de ce succ`es, Hol- lerith fonda en 1896 laTabulating Machine Company qui changea de nom en 1924 pour devenirInternational Busi- ness Machines :ibm. . . sp´ecialis´ee dans la fabrication de calculatrices m´ecaniques de bureau, parfois mˆues par des moteurs ´electriques, ou utilisant des cartes perfor´ees.

Un effort de recherche important sur le calcul automa- tique fut men´e aux ´Etats-Unis pendant la deuxi`eme guerre mondiale pouss´e en grande partie par leBallistic Research Laboratory. Il fallait calculer les trajectoires des projectiles tir´es par divers armements afin de fournir des tables de pointage aux artilleurs. Pour chaque nouvelle munition, il fallait produire une nouvelle table. Une arm´ee d’employ´es, dot´es de calculatrices m´ecaniques de bureau, faisait ces calculs, mais `a la fin de la guerre, ´etait litt´eralement sub- merg´ee par l’afflux de munitions de tous types et de tous calibres produits par une industrie de guerre en plein ef- fort. . . La premi`ere calculatrice ´electronique, l’ENIAC en 1945, ´etait un monstre de 30 tonnes comportant 17 468 tubes `a vide7et consommant 150 kW. La panne d’un seul tube arrˆetait la machine qui occupait un bˆatiment `a elle toute seule et n´ecessitait un syst`eme de refroidissement puissant pour ´evacuer la chaleur produite ! Les premiers ordinateurs virent le jour `a la fin des ann´ees 1940, trop tard pour participer `a l’effort de guerre.

6. la fille du po`ete.

7. il n’y avait pas encore de transistors et encore moins de circuits int´egr´es.

(10)

10 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

Rapidement, les banques, les compagnies d’assurance8 et toutes les entreprises astreintes `a une comptabilit´e lourde comprirent l’usage qu’elles pouvaient faire de ces nouvelles machines et constitu`erent un march´e important pour les constructeurs. Cependant, la demande de calculs toujours plus importants venant des scientifiques, physi- ciens et astronomes en tˆete, n’a jamais cess´e d’ˆetre pres- sante, toujours de quelques ordres de grandeur au-del`a de ce que pouvaient fournir les ordinateurs les plus puis- sants du moment : cette histoire se poursuit actuellement, certains calculs quantiques, par exemple, se chargeant, par leurs exigences en termes de puissance de calcul, de ramener `a une saine modestie les fabriquants des pro- cesseurs les plus ´eblouissants !

Figure 1.2 – Page de garde de la table de logarithmes Bouvart et Ratinet (´edition 1957) en usage dans les classes scientifiques des lyc´ees jusque dans les ann´ees 1970.

A titre de t´emoignage de la rapidit´e avec laquelle la vie` des scientifiques a chang´e, rappelons qu’encore au d´ebut des ann´ees soixante-dix, les ´el`eves des classes pr´eparatoires passaient plusieurs heures par semaine `a remplir des colonnes de chiffres, stylo d’une main, table de logarithmes (figures 1.2 et 1.3) de l’autre, un entraˆınement jug´e in-

8. Du point de vue des constructeurs d’ordinateurs, ce genre de clients avait l’avantage d’ˆetre largement solvable, un encouragement fort `a faire les investissements n´ecessaires `a la production de calcu- latrices rapides et fiables !

dispensable `a leur dext´erit´e calculatoire. . . les calculettes

´electroniques n’ayant d´etrˆon´e l’invention de Napier qu’`a la fin de la d´ecennie. Un livre de math´ematiques com- putationelles9 r´eguli`erement r´e´edit´e jusqu’`a la fin des ann´ees 80 explique, dans un chapitre d’introduction inti- tul´e General rules of computation work , que si l’on veut construire une table des valeurs de la fonction :

y= ex+ cosx 1 +x2 +p

1 + sin2x

il faut faire sur une feuille de papier un tableau `a 12 colonnes donnant, pour la premi`ere la liste des valeurs de x, la deuxi`eme celles de x2, la troisi`eme ex, etc., la douzi`eme donnant enfin la liste des valeurs de y (voir la table 1.1) : il n’est pas inutile de r´ealiser quetous les cal- culs scientifiques ´etaient r´ealis´es de la sorte jusqu’`a un pass´e somme toute r´ecent `a l’´echelle d’une vie humaine10. Sur l’histoire de l’informatique, on se reportera avec profit aux ouvrages suivants :

Ph. Breton Histoire de l’informatique, La D´ecouverte (1987)

M. Campbell-Kelly & Computer. A history of the W. Aspray information machine, Basic Books

(1996)

Ph. Breton Le premier ordinateur copiait le cerveau humain,La Recherche 290 (1996) p. 80

1.1.2 . . . et quelques exemples.

Au d´ebut du XXe si`ecle, le math´ematicien Henri Poincar´e, ´etudiant le probl`eme dit `a N corps par exempleN−1 plan`etes et leur soleil, d´ecouvrit lasen- siblit´e aux conditions initiales qui interdit de trou- ver des solutions g´en´erales aux syst`emes d’´equations diff´erentielles produites par ces probl`emes : une infime diff´erence dans les conditions initiales suffit `a induire un comportement radicalement diff´erent du syst`eme. Au- tant dire que, malgr´e le d´eterminisme intrins`eque de la m´ecanique newtonienne, un tel syst`eme devient rapide- ment impr´evisible11. Toutefois, malgr´e cette d´ecouverte fondamentale, Poincar´e ne put gu`ere aller plus loin et l’on en resta l`a jusque vers les ann´ees 1960. C’est alors que le math´ematicien-m´et´eorologue am´ericain Ed- ward Lorenz12 se mit `a r´esoudre sur ordinateur des

´equations diff´erentielles qui visaient `a simuler le com- portement de l’atmosph`ere terrestre : il red´ecouvrit alors des syst`emes au comportement irr´egulier similaire `a ce qu’avait pr´edit Poincar´e. Le triangle simulation-sur- ordinateur/th´eorie/exp´erience donna naissance `a un do- maine de recherches nouveau et toujours actif de nos jours : le chaos, la turbulence, les fractals. . ., tout ce qui a trait `a la dynamique des syst`emes non-lin´eaires. Il fallait

´evidemment pour cela que l’on pˆut faire des simulations

9. Voir la r´ef´erence [2] dans la bibliographie. Il s’agit certes d’un livre sovi´etique et l’informatique est sans doute l’un des domaines dans lequel le retard de l’Union sovi´etique ´etait sensible.

10. Pour fixer les id´ees, pr´ecisons que l’esp`eceTyranosaurus Rex

´etait d´ej`a ´eteinte depuis quelques ann´ees. . .

11. Voir par exemple : David Ruelle,Hasard et chaos, Odile Jacob (1991).

12. `A ne pas confondre avec l’´ethologiste autrichien Konrad Lorentz et ses oies.

(11)

Figure1.3 – Une page de la table de logarithmesBouvart et Ratinet. Admettons que l’on cherche le produit 0,1263× 18,17 ; une calculette donne 2,2949. Avec la table, il faut d’abord chercher 1263, soit 120 puis la sixi`eme ligne pour 126 et enfin la colonne 3 : on y trouve 10140. La mˆeme op´eration pour 1817 donne 25935. La somme de ces deux nombres est 36075. En cherchant dans la table, on trouve que 39078 correspond `a 2295, reste `a d´ecaler la virgule convenablement pour obtenir le r´esultat. Si l’on veut avoir 5 chiffres significatifs, il faut utiliser les tables de multiplication fournies dans la marge pour faire des interpolations lin´eaires. Avec un peu d’habitude, ¸ca va assez vite, plus vite en tous cas que la multiplication `a la main !

sur ordinateur, car le calcul analytique est insuffisant : d’ailleurs maintenant, la m´et´eorologie nationale est un des plus gros consomateurs civils de calcul sur les ordinateurs les plus puissants.

Dans un autre domaine, les exp´eriences faites par ex- emple `a l’aide du rayonnement synchrotron produit dans des laboratoires tels que SOLEIL `a Orsay et l’ESRF

`

a Grenoble, produisent une grande quantit´e de donn´ees num´eriques qui ne se traduisent pas imm´ediatement par des informations de type physique : par exemple, les po- sitions des atomes d’une prot´eine, qui en comporte des

centaines voire des milliers, destin´ee `a soigner telle ou telle maladie. Survient alors une tˆache assez difficile, lamod´e- lisation de donn´ees d’exp´erience qui consiste `a ajuster un mod`ele th´eorique aux donn´ees exp´erimentales con- nues, en tenant compte des barres d’erreur exp´erimentales.

Il s’agit en g´en´eral de minimiser autant que possible l’´ecart entre les donn´ees empiriques et les pr´edictions du mod`ele th´eorique : cette minimisation, une optimisation du mod`ele si l’on pr´ef`ere, est ´etablie en ajustant un nom- bre souvent ´elev´e de param`etres (les positions atomiques, la caract´erisation de l’agitation thermique) et ne peut pra-

(12)

12 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

1 2 3 4 5 6 7 8 9 10 11 12

x x2 ex sinx cosx ex+ cosx 1 +x2 ex1+x+cos2x sin2x 1 + sin2x p

1 + sin2x y

(1)2 (3) + (5) 1 + (2) (6)/(7) (4)2 1 + (9) p

(10) (8) + (11) 0

0.1 0.2 0.3 0.4 . . .

Table 1.1 – Feuille de calcul pour la fonctiony = ex+ cosx 1 +x2 +p

1 + sin2x, `a remplir, colonne par colonne, `a l’aide d’une machine `a calculer m´ecanique ou ´electro-m´ecanique. . .

Table1.2 – Un article du journalLe Monde en 1957, les derniers progr`es de la pr´evision m´et´eorologique, il y a un demi-si`ecle :

Une machine `a pr´edire le temps

Quel temps fera-t-il demain ? Vieille question `a laquelle les of- fices m´et´eorologiques s’efforcent de r´epondre. Mais voici que la machine ´electronique vient `a leur secours. On connaˆıt les ap- titudes extraordinaires de ces ordinateurs, v´eritables cerveaux de remplacement, dou´es de raisonnement et d’une fabuleuse m´emoire, qui peuvent aujourd’hui r´epondre en quelques sec- ondes `a des questions qui embarasseraient plus d’un auditoire savant.

C’est `a des machines semblables que le Bureau m´et´eorologique am´ericain demande de travailler pour lui, au moins pour un cer- tain nombre de calculs. Ce bureau centralise des milliers d’ob- servations qu’une arm´ee de savants, de ballons-sondes, toute une flotille de bateaux, tout un r´eseau de postes et de sta- tions diss´emin´es aux quatre coins du monde, glanent quoti- diennement et `a chaque instant sur terre, sur mer et dans le ciel.

Rien n’a chang´e dans le syst`eme, si ce n’est qu’une grande par- tie des op´erations math´ematiques, la plus dure, la plus longue, est confi´ee `a l’ordinateur. A chaque instant on introduit dans la machine, sous forme de bandes magn´etiques, de nouvelles observations, de nouveaux chiffres, qui sont la nourriture de ce cerveau surhumain, et les savants n’ont plus qu’`a tirer leurs conclusions. Ils peuvent ainsi annoncer, avec une plus grande sˆuret´e de diagnostic, l’´evolution du temps pour des p´eriodes de vingt-quatre, quarante-huit et mˆeme soixante-douze heures.

(Le Monde, le 25 juillet 1957, reproduit le 25/07/2007).

tiquement se faire qu’`a l’aide d’un ordinateur.

L’´etude des syst`emes d´esordonn´es est aussi grosse con- sommatrice de moyens de calcul. Par exemple, une chaˆıne lin´eaire harmonique d’atomes, tous de masse m, est par- courue de vibrations de type onde planex=uei(ωtkℓa), o`uxest le d´epacement de l’atomeℓpar rapport `a sa po- sition d’´equilibre et a est la distance interatomique. Un calcul classique13 `a partir des ´equations du mouvement :

mx¨=C(xℓ+1−2x+x1)

donne la pulsationωen fonction du vecteur d’ondek, c’est-

`

a-dire la relation de dispersion : ω(k) = 2

rC m sinka

2

13. Voir, par exemple : Charles Kittel, Introduction to Solid StatePhysics, New York : Wiley, (1986).

o`u C est la constante de force entre deux atomes. Main- tenant, si la chaˆıne comporte des impuret´es de masse m r´eparties al´eatoirement, le probl`eme devient beaucoup plus difficile `a r´esoudre. On montre cependant sans grande difficult´e que la solution est donn´ee par la recherche des valeurs propres et vecteurs propres d’une ´enorme matrice n×n, appel´ee matrice dynamique o`u nest le nom- bre d’atomes de la chaˆıne. Le probl`eme est tr`es facile `a r´esoudre num´eriquement `a l’aide d’un sous-programme de biblioth`eque, alors que le d´esespoir guette quiconque ten- terait de le r´esoudre `a la main. . .

On pourrait objecter `a ce qui pr´ec`ede qu’un probl`eme de physique qui n´ecessite plus qu’une r`egle de trois pour ˆetre r´esolu est un probl`eme mal pos´e. L’art du physicien th´eoricien n’est-il pas justement de faire des approxima- tions adroites de fa¸con `a rendre r´esolubles ces probl`emes tout en isolant les principes importants ? L’int´erˆet n’est-il pas plutˆot dans les concepts que dans les techniques de calcul plus ou moins laborieuses ?

Cette objection est parfaitement recevable et c’est tou- jours une bonne d´emarche que de tenter de r´efl´echir `a une question avant de se lancer dans des calculs effr´en´es.

Il y a cependant des limites qui souvent arrivent tr`es vite : imaginons un pendule simple qui subit un frotte- ment a´erodynamique. Il pend verticalement et on le lance avec une vitesse initiale donn´ee, suffisamment fort pour qu’il passe `a la verticale au dessus de son point d’´equilibre pour retomber de l’autre cot´e. Combien de tours fera-t- il autour de son axe avant de se mettre `a osciller ? Il est clair qu’on est fort loin des conditions o`u l’on peut faire les approximations usuelles (angle petit). En attendant de trouver le concept ad´equat, il n’est peut-ˆetre pas stupide de faire une petite simulation num´erique sur un ordina- teur : cela ne repr´esente gu`ere plus que quelques dizaines de lignes de programme et quelques secondes de simulation sur une machine mˆeme de puissance m´ediocre. . .

Il ne faut pas croire non plus que le calcul num´erique sur ordinateur se limite `a la physique : les pr´evisions m´et´eorologiques (voir la table 1.2) sont ´evidemment un cas bien connu, mais aussi les simulateurs de vol permet- tent `a des pilotes d’essais de tester le comportement d’un nouvel avion sans risquer leurs vies et des simulateurs d’op´erations permettent `a des chirurgiens de s’entraˆıner sans risquer celles de leurs patients ! Le dossier de la revue Pour la Science (voir la bibliographie, ref. (20)) consacr´e

`

a la mod´elisation informatique parcourt quelques th`emes

`a la mode. . .

(13)

1.2 Plan succinct.

La premi`ere ´etape est l’apprentissage d’un langage de programmation. Il faut pouvoirdire`a l’ordinateur ce que l’on veut qu’il fasse. Le langage le plus adapt´e au cal- cul scientifique est le fortran95. Son concurrent, le lan- gage C, plus g´en´eraliste et plus adapt´e `a la programmation syst`eme -le syst`eme d’exploitation unix est programm´e en C-, n´ecessiterait un apprentissage plus long, qui n’ap- porterait rien de plus `a notre objectif, sans apporter la puissance qu’offre fortran95en particulier dans la ma- nipulation des tableaux. Afin d’illustrer l’objectif de ce cours, cette premi`ere partie est suivie d’un chapitre dont le but est de montrer sur un exemple la fa¸con dont on proc`ede pour aborder un probl`eme et en particulier es- sayer d’expliciter ce qui est attendu lors des s´eances de travaux pratiques.

La deuxi`eme ´etape consistera `a passer en revue les m´ethodes les plus utilis´ees par les physiciens, autant que possible `a l’aide d’exemples tir´es de la physique. L’accent ne sera pas forc´ement mis sur les d´etails les plus intimes des algorithmes, car des math´ematiciens seraient sˆurement plus `a mˆeme de le faire que des physiciens dont ce n’est pas le centre d’int´erˆet principal : de fait, la pratique des physiciens est souvent d’utiliser des sous-programmes de biblioth`eque existants et ´eprouv´es que l’on appelle `a partir d’un programme sp´ecifique `a un probl`eme donn´e.

L’effort portera donc plutˆot sur les contraintes que ces al- gorithmes peuvent exercer sur les probl`emes que se posent les physiciens, ´eventuellement sur les pi`eges qu’ils rec`elent.

En gros, il s’agit d’essayer de r´epondre `a trois questions :

comment ¸ca marche ? , quelles cons´equences cela peut-il avoir pour moi, physicien ?et bien sˆur :qu’est- ce que je peux faire avec ?. Une ouverture est donn´ee sur la simulation num´erique.

La troisi`eme ´etape consistera `a utiliser un logiciel de cal- cul formel pour tenter de r´esoudre les mˆemes probl`emes que pr´ec´edemment. Dans certains cas, le caract`ere con- vivial et automatique du logiciel tout fait fera des miracles, dans d’autres en revanche, ¸ca sera moins convaincant. . . mieux vaut savoir se rep´erer, d’autant que, l`a encore, des pi`eges subsistent.

Ainsi ce cours se veut, non pas un cours d’ infor- matique pour physiciens mais un cours pratique de

Physique num´erique c’est-`a-dire des m´ethodes qu’u- tilisent les physiciens pour r´esoudre un grand nombre de probl`emes de physique.

(14)

14 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

(15)

Chapitre 2

Notions pratiques de FORTRAN95.

Les notes ci-dessous ont pour but de donner rapide- ment au lecteur la capacit´e d’´ecrire des programmes ; elles ne remplacent pas, bien sˆur, un cours syst´ematique1. Il s’agit ici d’un outil dont la maˆıtrise est un pr´ealable in- dispensable `a tout travail de calcul num´erique : il n’est pas utile de connaˆıtretoutesles subtilit´es duFortran95, mais il faut imp´erativement ˆetre capable d’´ecrire rapi- dement des programmes simples qui marchent car, sinon, les s´eances de travaux pratiques destin´ees `a faire de la physique que l’on esp`ere int´eressante avec cet outil, en deviendraient suprˆemement ennuyeuses pour tous, en- seignants compris. . .

2.1 Qu’est-ce qu’un langage de programmation ?

Un ordinateur, lorsqu’il ex´ecute un programme, lit l’une apr`es l’autre dans sa m´emoire des instructions

´el´ementaires, par exemple : aller chercher un nombre

`

a tel emplacement dans la m´emoire ou multiplier tel nombre par tel autre . Ce sch´ema correspond `a la c´el`ebre

machine de Turing qui sert de mod`ele th´eorique `a l’immense majorit´e des ordinateurs (figure 2.1) : instruc- tions et donn´ees sont inscrites sur un mˆeme support ap- pel´e m´emoire2. La m´emoire est constitu´ee d’emplacements correspondant chacun `a une adresse et contenant chacun une instruction ou une donn´ee : on peut se repr´esenter cette m´emoire comme une esp`ece de long ruban divis´e en cases, chacune d’entre elles ayant un num´ero, comme les maisons le long d’une rue, chaque num´ero constituant une

adresse.

La machine lit dans la m´emoire les instructions et les ex´ecute l’une apr`es l’autre s´equentiellement3. Une instruction peut ˆetre l’ordre d’aller lire une donn´ee `a l’adresse en m´emoire indiqu´ee par cette instruction, ou de modifier une donn´ee ou encore d’inscrire une donn´ee `a une autre adresse dans la m´emoire : on peut donc modifier le contenu de la m´emoire.

Chaque instruction est d´esign´ee par un code binaire constitu´e de 0 et de 1, et chaque emplacement dans

1. voir par exemple J. F. Kerrigan, r´ef. [6] dans la bibliographie, ou, plus r´ecent et plus complet M. Metcalf et al., r´ef. [18].

2. Le terme emoire date des ann´ees 1940, lorsque John Von Neumann s’est pr´eoccup´e de r´ealisations pratiques de la machine de Turing qui dans son esprit devaient ˆetre des cerveaux artificiels.

Avant, on parlait, plus prosa¨ıquement, de storage en anglais, soit stockage.

3. d’o`u l’expressionmachine s´equentielleque l’on retrouve fr´equemment : il s’agit simplement d’une machine qui ex´ecute les instructions l’une apr`es l’autre, par opposition aux machines dites

parall`eles.

la m´emoire est aussi d´esign´e par une adresse binaire.

C’est ce qu’on appelle le langage machine. R´ealiser un programme consiste donc `a fournir `a l’ordinateur une s´equence d’instructions de ce type pour qu’il la place dans sa m´emoire pour ex´ecution ; or il est rapidement fastidieux d’aligner des listes fort longues de 1 et de 0, sans compter les risques d’erreurs que cela comporte ! Un premier progr`es fut de remplacer le code binaire d’une instruction par un mot-clef, par exemple load (pour charger en m´emoire), et d’´ecrire les adresses en d´ecimal (ou en hexad´ecimal) plutˆot qu’en binaire. Cela donne quelque chose qui peut ressembler `a :

load 150 aller chercher un nombre `a l’adresse 150 add 200 additionner avec le contenu de l’adr. 200 store 220 ranger le r´esultat a l’adresse 220

C’est nettement plus lisible que :

0011010100101100011111100100001001110101...

Un programme sp´ecial, en g´en´eral fourni avec l’ordinateur et appel´eassembleur traduit alors toutes ces instructions en binaire ou langage machine, puis on peut faire ex´ecuter le programme (voir les tables 2.1 et 2.2).

L’assembleur permet de faire beaucoup de choses, presque tout, `a vrai dire : `a une ´epoque (les ann´ees 80) o`u les m´emoires disponibles n’´etaient pas ce qu’elles sont devenues, la programmation en assembleur permet- tait d’´ecrire des programmes efficaces et peu encombrants, au d´etriment ´evidemment de la facilit´e et du temps pass´e

`

a la programmation, car tout cela reste tr`es proche de la machineet certainement assez peu convivial4.

L’´etape suivante fut donc de cr´eer des langages dits

´evolu´es avec lesquels on puisse faire ais´ement des instructions beaucoup plus compliqu´ees comme, par ex- emple :

x = a*exp(i*(omega*t+phi))

qui ressemble beaucoup `a l’expression math´ematique : x=aei(ωt+ϕ)

et o`u xet isont des nombres complexes, les autres vari- ables ´etant r´eelles, expd´esignant ´evidemment l’exponen- tielle et * la multiplication. Un autre programme ap- pel´e compilateur doit alors d´ecomposer ces instructions

´evolu´ees en instructions ´el´ementaires, les coder en bi- naire et affecter des adresses en m´emoire `a toutes les

4. J’ai, personnellement, quelques souvenirs cuisants `a ce titre :

`

a la suite -entre autres- d’une erreur dans le calcul d’une adresse, un programme pouvait tr`es bien ´ecrire une donn´ee `a un emplace- ment r´eserv´e `a une fonctionalit´e de base du syst`eme, ce qui ´etait

´evidemment plutˆot catastrophique !

15

(16)

16 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

150

charger ranger 220

aller en 10 add.

200 en 1

retour

1.414 3.1416

1 2 3 4 150 151 200 201 220

2.6458

Figure2.1 – La machine th´eorique de Turing. Le curseur lit les instructions les unes apr`es les autres et la machine les ex´ecute. Par exemple : aller lire une donn´ee `a un emplacement de la m´emoire vive, ou sauter `a une autre instruction, etc.

Table 2.1 – Pour comprendre comment¸ca marche: quelques ´el´ements d’assembleur

L’unit´e centrale (CPU ou Central Processing Unit) d’un or- dinateur ne travaille pas directement dans la m´emoire vive : elle a ses propres emplacements m´emoires appel´es reg- istres . Elle doit donc aller chercher en m´emoire vive les grandeurs n´ecessaires `a un calcul, les copier dans ses reg- istres, faire les op´erations requises et stoker les r´esultats dans la m´emoire. Pourquoi toutes ces complications, pourquoi ne pas tout stocker d’embl´ee dans les registres de l’unit´e cen- trale ? Tout simplement parce qu’ils sont tr`es peu nombreux, de l’ordre de la dizaine. . . Certains ordinateurs tr`es puissants -et extrˆemement coˆuteux- poss`edent des registres en grand nom- bre ce qui acc´el`ere consid´erablement les calculs mais suppose un budget cons´equent !

Mettons que l’ordinateur utilis´e poss`ede deux registres `a usage g´en´eral appel´es accumulateurs, d´esign´es parAetB dans lesquels on peut placer des nombres, par exemple. L’instruc- tion pour charger le contenu d’un emplacement m´emoire dans le registreAestLDA et celle pourBestLDB(les syntaxes sont donn´ees ici `a titre indicatif : cela d´epend du processeur). On peut donc ´ecrire, par exemple :

LDA $40B6

ce qui signifiecharger le contenu de$40B6dans le registreA, le symbole$indiquant que l’adresse est donn´ee en hexad´ecimal (en base 16), soit :$40B6= 4×163+ 0×162+ 11×16 + 6 soit 16566.De mˆeme :

ADDA $B003

additionne le contenu du registre A avec le contenu de l’em- placement$B003et place le r´esultat dansA.(Suite : table 2.2)

variables pour produire un programme ex´ecutable : cette traduction, ce programme ex´ecutable est g´en´eralement stock´e sur le disque dur de l’ordinateur dans un fichier dit ex´ecutable qu’il suffit d’invoquer (en g´en´eral en tapant son nom sur le clavier) pour qu’il s’ex´ecute. Ainsi, lorsqu’on ´ecrit un programme, que ce soit en fortran, C, pascal ou autre, on doit d’abord cr´eer, `a l’aide d’un

´editeur de texte5 commeemacs, xedit, kedit, vi (pour les amateurs), voire ed, un fichier que l’on appelle le

fichier source qui contient les instructions que l’on a ´ecrites en langage ´evolu´e. Ce fichier source n’est pas ex´ecutable : il ne contient que des caract`eres, a priori inu- tilisables en l’´etat par l’unit´e centrale. On doit alors com- piler le programme pour obtenir un fichier ex´ecutable, et enfin lancer l’ex´ecution de celui-ci. Bien, ´evidemment, `a

5. et non un traitement de texte, dont les fonctionnalit´es (mise en page, correction orthographiques, effets divers) sont infiniment plus riches qu’un simple ´editeur qui se borne `a enregistrer les caract`eres que l’on tape au clavier pour les inscrire dans un fichier texte sur le disque dur.

Table2.2 – Suite de la table 2.1

Un autre registre tr`es important est lecompteur ordinal: il contient l’adresse de la prochaine instruction qui doit ˆetre lue. Le contenu de ce registre est incr´ement´e automatique- ment chaque fois qu’une instruction est lue, sauf si l’instruction pr´ec´edente est une instruction ditede branchement. Ainsi, le CPU lit une instruction, incr´emente le compteur ordinal, ex´ecute l’instruction, puis lit l’instruction suivante, incr´emente le compteur, ex´ecute l’instruction, etc. C’est ce qu’on appelle unearchitecture s´equentielle.

Cependant, si l’instruction lue est une instruction de branche- ment, celle-ci modifie le contenu du compteur afin de forcer la lecture d’une autre instruction que la suivante. Ce branchement est en g´en´eral soumis au contenu d’un registred’´etatqui dit si une grandeur derni`erement trait´ee et positive ou n´egative, s’il y a eu un d´epassement de capacit´e, etc. On peut modifier le registre d’´etat `a l’aide d’instructions de comparaison, par exemple :

CMPB $310F

compare le contenu du registre Bavec celui de l’emplacement

$310Fet modifie le registre d’´etat en cons´equence, puis BGE $11DA

nous exp´edie `a l’adresse m´emoire$11DA, si le r´esultat de la com- paraison est positif (B veut direbranch etGEsignifieGreater or Equal), pour y lire une instruction. On obtient ainsi la pos- sibilit´e d’instructions soumises `a condition ; reste toutefois `a esp´erer que l’emplacement en question contient bien une in- struction, c’est une source de plantages spectaculaires, mais l`a r´eside une grande part du charme d´esuet de l’assem- bleur !

Si l’on souhaite un plat un peu plus cors´e encore, on peut placer un nombre d´esignant une adresse dans un emplacement de la m´emoire. Par exemple :

LDA #$0114

place le nombre (et non le contenu de l’adresse) dans le registre A,

STA $041E

place ce nombre `a l’emplacement$041E LDB [$041E]

charge dans B, non pas le contenu de $041E, mais le contenu de l’adresse elle-mˆeme contenue dans$041E. Ainsi

INC $041E

incr´emente le contenu de cette adresse, et LDB [$041E]

permet d’aller chercher ce qui se trouve `a l’emplacement suiv- ant : en accroissant pas `a pas le contenu de l’emplacement

$041Eon peut parcourir l’un apr`es l’autre toute une s´erie d’em- placements successifs dans la m´emoire. Les amateurs de lan- gage C auront reconnu ici un embryon de pointeur. En for- trance genre de situation est g´er´e par les tableaux.

chaque modification du fichier source, il faut re-compiler

(17)

et relancer l’ex´ecution6!

Le fortran est le premier de ces langages ´evolu´es `a avoir vu le jour, mais beaucoup d’autres ont suivi : al- gol, cobol, pl1, basic, pascal, forth, C, ada, oc- cam, C++. . . Pour ce qui est de la programmation sci- entifique, outre fortran, seul le langage C++ semble survivre.

Le siglefortransignifieformulatranslator(tra- ducteur de formules) : l’id´ee est donc de coder des for- mules de fa¸con aussi proche que possible de ce que l’on fait lorsqu’on ´ecrit des ´equations `a la main et de traduire ceci en instructions ex´ecutables par l’ordinateur. C’est `a premi`ere vue une gageure, mais, en fait, fortran est un langage simple, bien adapt´e au calcul scientifique. Mis au point dans sa premi`ere version par John Backus en 1956, il n’a pas cess´e d’´evoluer depuis et ses variantes sont nombreuses tant les fa¸cons de programmer ont ´evolu´e. En effet, les moins jeunes de vos enseignants ont appris le fortranIVet ont travaill´e avec des cartes perfor´ees : ils ont bien sˆur des anecdotes `a raconter sur des paquets de cartes s’´echappant de leur carton et se r´epandant sur le sol ou de cartes abˆım´ees apr`es de nombreux usages (apr`es tout, il ne s’agissait que de morceaux de papier bristol) se coin¸cant dans le lecteur et dont il fallait aller chercher les d´ebris avec une pince `a ´epiler ! Le bruit des machines

`a perforer7 a marqu´e un certain nombre de g´en´erations de programmeurs. . . `A la fin des ann´ees soixante-dix et au d´ebut des ann´ees quatre-vingt, les cartes perfor´ees dis- parurent, remplac´ees d’abord par des t´el´etypes puis par l’ensemble ´ecran-clavier que nous connaissons maintenant.

Le fortranIV avait bien des d´efauts. Il comportait des instructions (go to et if arithm´etique ) capa- bles de produire des logiques ´echevel´ees, bondissant d’un bout `a l’autre du programme en des itin´eraires dignes d’un plat de spaghettis : autant dire que ce n’´etait pas tr`es lisible et g´en´erateur d’erreurs retorses. Entre-temps, les id´ees li´ees `a la programmation ditestructur´ees’´etaient d´evelopp´ees, incarn´ees entre autres par le langagepascal, et le fortrana int´egr´e une bonne part de ces concepts.

La derni`ere norme officielle de fortran est for- tran2008 : fortran77 est maintenant obsol`ete. En- tre fortran90 et fortran2008, les diff´erences sont marginales, du moins pour l’usage que nous en ferons. De fait, fortran90 ou fortran95 constitue, pour l’essen- tiel, la norme sur les gros calculateurs d´edi´es aux calculs lourds.

Nous utiliserons ici la norme fortran95, principale- ment pour sa capacit´e `a travailler sur des tableaux de nombres de fa¸con tr`es confortable et efficace8. De bons compilateurs fortran95 (g95et gfortran9) et il n’y a

6. il existe des environnements int´egr´es, en particulier sousWin- dows, dans lesquels ces ´etapes sont plus ou moins automatiques et donc quasiment invisibles.

7. Il y eut aussi l’´etape ruban perfor´e qui permettait, avant les bandes, disquettes et autres supports magn´etiques, d’enregistrer des donn´ees : cet engin ´etait -justement- surnomm´ela mitrailleuse! 8. Les programmes ´ecrits en fortran77 peuvent ˆetre compil´es avec un compilateurfortran95.

9. Le compilateur g95 est ais´ement el´echargeable sur http://g95.org/. Le compilateur gnu (Le mot anglais gnu esigne le gnou, une esp`ece de buffle, et le siglegnusignifie :GNU’s Not Unix, un exemple d’autor´ef´erence typique d’un certain humour informatique) gfortran est disponible comme faisant partie des distributions Linux (Debian,Ubuntu,Fedora) et, convenablement install´e, il paraˆıt raisonnablement efficace `a condition d’utiliser l’option d’optimisation-O3.

donc gu`ere de raison de s’en priver. D’autres compilateurs, comme le compilateur Intel produisent parfois des codes plus rapides `a l’ex´ecution, mais le b´en´efice reste marginal pour les calculs faits ici.

Dans les notes qui suivent, nous suivrons leformat li- bre(oufree form) qui permet de s’affranchir de l’obliga- tion de s’en tenir aux colonnes 7 `a 72 comme au bon vieux temps des cartes perfor´ees. . . Les compilateurs s’en acco- modent en principe sans probl`eme encore que quelques fac´eties soient possible : on peut alors tenter d’utiliser l’option de compilation-ffree-form, voire lire le manuel d’utilisation du compilateur. . .

La compilation s’effectue par la commande : gfortran monboprog.f90 -o monboprog

monboprog.f90 (ou tout autre nom se terminant par .f90) est le fichier, dit fichier source cr´e´e avec un

´editeur comme emacs, qui contient toutes les instruc- tions ´ecrites en fortran10. L’option -o (pour output) indique au compilateur o`u il doit placer le r´esultat de son travail, ainsi le fichier monboprog contient le pro- gramme ex´ecutable, c’est-`a-dire sa traduction en langage machine11. Evidemment, si l’on utilise un autre com- pilateur que gfortran (par exemple g95, pgf9012 ou xlf9013), il faut remplacergfortranpar le nom du com- pilateur.

Edition : emacs monboprog.f90 &

Exécution : ./monboprog

Compilation : g95 monboprog.f90 −o monboprog

Figure2.2 – Le cycle de mise au point d’un programme :

´edition du fichier-source, compilation, ex´ecution. La com- pilation permet de d´etecter les erreurs de syntaxe que l’on corrige par un retour `a l’´etape d’´edition. `A l’ex´ecution, la prudence impose de tester le programme, en g´en´eral en faisant des calculs dont on connait le r´esultat : les erreurs ainsi d´etect´ees renvoient aussi `a l’´edition. En principe, le cycle converge assez vite. . .

Le r´esultat de la compilation est donc, quand tout s’est bien pass´e, un programme ex´ecutable qu’il reste `a faire

10. certains compilateursfortran90exigent que le nom du fichier source se termine par.f. Pour d’autres, la terminaison .fsignifie

format fixeet la terminaison.f90,format libre

11. On peut fabriquer une commande personnelle de compilation, par exemple en cr´eant un fichier appel´e gf95 dans lequel on met la ligne :gfortran $1.f90 -o $1. Ce fichier peut alors ˆetre rendu ex´ecutable par la commande :chmod +x gf95. Pour compiler un pro- gramme, il suffira dor´enavant de taper :gf95 monboprog. Selon les besoins,gf95peut ˆetre modifi´e ensuite pour inclure d’autres options de compilation comme-O3 (optimisation) ou des biblioth`eques de calcul.

12. compilateur commercial de Portland Group.

13. compilateuribm.

Références

Documents relatifs

[r]

Interpr´ etez cette in´ egalit´ e en termes

On applique une fois encore la formule d’inversion de la transform´ ee de Fourier (ce qui est lgitime puisque toutes les fonctions sont..

La tranform´ ee de Fourier sert en syst` emes lin´ eaires, en optique, en probabilit´ e, en physique quantique, en ´ equations diff´ erentielles, en traitement du signal etc.. Il en

Etude du signal cr´ eneau de p´ eriode T 0 , de valeur moyenne nulle variant en 1 et -1 : (Par d´ ecalage de l’origine, il est possible de se placer dans le cas d’un signal cr´

Partic1e Filtering for the Detection of Fault Onset Time in Hybrid Dynarnic Systems Witt Autonomous Transitions.. Peloni Strong Diagnosability and Conditional Diagnosability

[r]

Montrer qu’il existe une constante b telle que la famille (bg n ) n∈ Z soit une base hilbertienne de F..