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 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan
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 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´ee≫ou 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
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 nombres≪al´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 Une≪grosse ≫simulation : les anneaux de Saturne. . . 131
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
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
≪p´etaflopique≫a 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 un≪cours 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 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’un≪ovo¨ı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
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 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 la≪sen- 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.
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, la≪mod´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 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(ωt−kℓa), o`uxℓest 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ℓ+xℓ−1)
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≫. . .
1.2 Plan succinct.
La premi`ere ´etape est l’apprentissage d’un langage de programmation. Il faut pouvoir≪dire≫`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 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan
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 m´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’expression≪machine s´equentielle≫que 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 machine≫et 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 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 signifie≪charger 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 le≪compteur 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 dite≪de 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 une≪architecture 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 registre≪d’´etat≫qui 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
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 siglefortransignifie≪formulatranslator≫(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 dite≪structur´ee≫s’´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´e≪la mitrailleuse≫! 8. Les programmes ´ecrits en fortran77 peuvent ˆetre compil´es avec un compilateurfortran95.
9. Le compilateur g95 est ais´ement t´el´echargeable sur http://g95.org/. Le compilateur gnu (Le mot anglais gnu d´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 le≪format 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 fixe≫et 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.