Maquette de couverture : Françoise Rojare
Équation différentielle polaire R' = R*sin(R*T) | Courbe polaire r=cos 9/10 t, t dans [-10pi,10 pi] |
Épicycloïde | Courbes intégrales d'un système d'équa. diff. |
f(x,y) = sin x + cos x, x,y dans [-2pi, 2pi] | Surface z=x2(x-3)-y2, x dans [-1,3], y dans [-2,2] |
Inévitable en effet, car comment s'opposer à ce que les élèves des classes préparatoires - comme le sont déjà la majorité de leurs camarades des premiers cycles scientifiques universitaires - soient exposés à ce qui sera une composante majeure de leur environnement de travail futur. On reproche souvent au programme des classes préparatoires de privilégier dans le choix des matières enseignées la facilité à donner lieu à des exercices de concours aux dépens de l'intérêt de la formation; cela n'est peut être pas entièrement vrai, mais il n'est pas nécessaire de renforcer cette critique par un mauvais combat contre l'informatique.
Cette évolution est bienvenue, et je pense au contraire de certains que les mathématiques - et l'informatique - ont tout à gagner à une cohabitation harmonieuse. On peut certes craindre, suivant une boutade d'un dirigeant industriel que l'industrie française "après avoir tenté dix ans durant de faire résoudre ses problèmes d'informatique par des électroniciens, ne passe dix autres années à tenter de faire résoudre ses problèmes de mathématiques par des informaticiens". La tendance existe et explique une partie de la vogue des "systèmes experts". Qu'est devenue la "cybernétique"? Mais l'existence d'un enseignement d'informatique sérieux est sans doute la meilleure protection contre les illusions futures. Au delà des attitudes défensives, il me semble que la formation des élèves, y compris en mathématiques, a tout à gagner à la mise en place d'un tel enseignement.
D'abord, en effet, les systèmes informatiques forment un univers "concret" dans lequel s'incarnent naturellement les objets des mathématiciens, et à l'inverse les mathématiques fournissent le langage de description et d'étude des objets informatiques. Il y a probablement plus de relations et d'utilité réciproque entre mathématiques et informatique qu'entre mathématiques et toute autre science. Mais il y a plus; mathématiques et informatique sont les seules disciplines scientifiques dont les objets d'étude soient naturellement abstraits : qu'est ce qu'un fichier, une machine virtuelle, un compilateur, un système d'exploitation, sinon des cousins très proches des ensembles, fonctions, etc. des mathématiciens. De ce point de vue, mathématiques et informatique partagent le même regard sur les choses, font appel aux mêmes qualités et encouragent les mêmes défauts.
Qu'on ne se méprenne cependant pas, l'informatique n'est pas que cela; c'est aussi une "culture" mêlant abstrait et concret, matériel et logiciel, approche rigoureuse et créativité échevelée, ... En tout cas, elle ne se réduit pas à la programmation, pas plus que la programmation ne se réduit à la connaissance d'un langage, fût-ce Pascal, et pas plus que Pascal ne se réduit au sous-ensemble qui est au programme de Spéciales.
Car il est temps en effet de parler du manuel que nous offre Patrick Cousot. Dans ce champ restreint et ingrat qu'est l'apprentissage d'un langage, il a su à la fois rester clair et simple, mais jamais schématique - concret et varié, mais toujours rigoureux. De très nombreux exemples, tirés de toutes disciplines, facilitent l'intégration de cet enseignement avec celui des autres matières.
Avec un tel ouvrage, l'informatique dans les classes préparatoires est bien partie. Je leur souhaite à tous les deux le succès qu'ils méritent.
Michel Demazure
Professeur de Mathématiques,
Directeur du Centre de Mathématiques de l'Ecole Polytechnique
Ce livre peut être également utile aux étudiants et enseignants des premiers cycles des universités voire pour certains seconds cycles où l'informatique ne serait pas la principale matière enseignée. On y présente les bases minimales de la programmation des ordinateurs en langage évolué à l'aide d'exemples choisis dans les matières scientifiques fondamentales. Il essaie de faire comprendre que l'ordinateur est un outil permettant de construire des outils qui deviennent vite un complément indispensable pour appréhender, intuitivement ou par l'expérience, des phénomènes mathématiques ou physiques. Il voudrait faire entrevoir les possibilités mais aussi certaines limites de l'informatique dans ce domaine.
J'espère que mes collègues informaticiens, sachant que le matériel de base (en particulier le sous-ensemble de Pascal et les bibliothèques) était imposé, réserveront un accueil favorable à ce livre. S'il reste volontairement très élémentaire sur le plan informatique, il offre des exemples interdisciplinaires souvent absents des ouvrages d'introduction à la programmation. Nous avons évité de faire les développements mathématiques ou physiques qui se trouvent dans des ouvrages classiques. Dans un livre d'informatique, nous avons choisi de nous contenter de très brefs rappels, sans démonstrations.
Je remercie très sincèrement les professeurs de mathématiques et de sciences physiques des classes préparatoires qui ont suivi les stages de formation organisés à l'Ecole Polytechnique. Ils ont été des élèves brillants et enthousiastes proposant des exercices et corrigés que je me suis permis de réutiliser. Je remercie également Philippe Chassignet qui m'a aidé à organiser ces stages, Pierre Belayche qui m'a fait bénéficier de ses conseils de numéricien, Claude Puech qui m'a demandé d'écrire ce livre, Christina Arslan et Yves Tremblay qui l'ont édité, Michel Demazure pour sa préface vivifiante, Michel Guérard et les éditions Robert Laffont qui m'ont autorisé à reproduire une de ses recettes, la société Apple qui a mis un Macintosh SE à ma disposition pour la composition du texte, la société Borland International qui m'a fourni Turbo Pascal pour l'IBM PC et le Macintosh, les auteurs du noyau de base de la bibliothèque MODULOG disponible dans les classes préparatoires : Hervé Lehning (Entrees.Lib), Denis Monasse (Complexe.Lib), Robert Rolland (Math.Lib, Graphe.Lib, Temps.Lib) et René Smajda (Graphe.Lib). Je voudrais associer à ces remerciements Jean-Louis Ovaert qui fut mon professeur de mathématiques et plus récemment un organisateur efficace du travail du groupe chargé d'élaborer le programme d'informatique des classes préparatoires. Que chacun des membres de ce groupe de travail soit également remercié pour sa collaboration. Mes remerciements les plus affectueux vont à mon épouse pour son aide constante et précieuse.
L'informatique apportera certainement de nouvelles difficultés dans un enseignement chargé et difficile. Elle ouvre également de nombreuses possibilités pédagogiques qui, je l'espère, offriront de nouveaux et nombreux plaisirs créatifs aux lecteurs de cet ouvrage. Je les remercie par avance pour leur bienveillante indulgence. Leurs relevés d'erreurs, leurs critiques et leurs suggestions seront toujours les bienvenues.
Pour éviter aux lecteurs un travail de frappe long et fastidieux, les programmes Turbo Pascal de ce livre sont disponibles pour les ordinateurs compatibles IBM PC ou Macintosh sur des disquettes diffusées par le Bureau Diffusion Librairie, Bibliothèque Centrale, Ecole Polytechnique, 91128 Palaiseau Cedex. Ces disquettes comprennent également la version 1.1 du noyau de base de la bibliothèque MODULOG de l'A.L.E.Sup (C.I.R.M., 70 route Léon Lachamp, 13009 Marseille) ainsi qu'une spécification résumée de ce noyau de base.
Préface 1
Avant-propos 3
Introduction 7
1. DÉFINITION DE LA NOTION D'ALGORITHME ET EXEMPLES 11
1.1 Partition musicale 11
1.2 Recette de cuisine 12
1.2.1 Un exemple de recette 12
1.2.2 Description algorithmique d'une recette de cuisine 13
1.2.2.1 Déclarations 13
1.2.2.2 Instructions 13
1.2.2.2.1 Instructions élémentaires 14
1.2.2.2.2 Instructions composées 14
1.2.3 Organisation d'un livre de cuisine en recettes 15
1.2.3.1 Modules 15
1.2.3.2 Objets locaux et globaux 16
1.2.3.3 Paramètres 16
1.3 Un algorithme de calcul du PGCD de deux nombres positifs 17
1.3.1 Langage de description de l'algorithme 17
1.3.2 Un algorithme de calcul du PGCD 18
1.3.3 Trace de l'exécution de l'algorithme 19
1.3.4 Preuve de correction de l'algorithme (#) 19
1.4 Un programme Pascal de calcul du PGCD de deux nombres positifs 20
1.4.1 Notion de variable en Pascal 21
1.4.2 Expression de l'algorithme de calcul du PGCD en Pascal 21
1.5 Une procédure Pascal de calcul du PGCD de deux nombres positifs 23
1.6 Algorithme d'Euclide de calcul du PGCD de deux nombres positifs 25
1.7 Analyse de la complexité de l'algorithme d'Euclide (#) 28
1.8 De la description des algorithmes en Pascal (#) 29
2. SOUS-ENSEMBLE DE PASCAL UTILISÉ DANS LES CLASSES PRÉPARATOIRES 33
2.1 Les objets de base 33
2.1.1 Types et valeurs de base 33
2.1.1.1 Type booléen (Boolean) 34
2.1.1.2 Type entier (integer) 36
2.1.1.2.1 Entiers 36
2.1.1.2.2 Débordements arithmétiques entiers 36
2.1.1.3 Type réel (real) 40
2.1.1.3.1 Réels 40
2.1.1.3.2 Débordements arithmétiques réels 40
2.1.1.3.3 Erreurs d'arrondi 41
2.1.2 Variables 45
2.1.2.1 Variables simples 45
2.1.2.1.1 Nom, type et valeur d'une variable 45
2.1.2.1.2 Déclaration de variable 45
2.1.2.1.3 Valeur initiale d'une variable 46
2.1.2.1.4 Modification de la valeur d'une variable 46
2.1.2.2 Tableaux 47
2.1.2.2.1 Tableaux à une dimension 47
2.1.2.2.1.1 Déclaration de tableau 47
2.1.2.2.1.2 Eléments de tableau 47
2.1.2.2.1.3 Calcul d'indices 47
2.1.2.2.2 Tableaux à deux dimensions 51
2.1.2.2.3 Tableaux de dimensions quelconques 53
2.2 Les opérations de base 57
2.2.1 Calcul de valeurs au moyen d'expressions 57
2.2.1.1 Expressions entières 57
2.2.1.2 Expressions réelles 59
2.2.1.3 Expressions booléennes 60
2.2.1.4 Ordre d'évaluation des expressions 62
2.2.2 Instructions élémentaires 64
2.2.2.1 Lecture d'entiers ou de réels 64
2.2.2.2 Ecriture de chaînes de caractères, d'entiers et de réels 65
2.2.2.3 Lecture et écriture de booléens 68
2.2.2.4 Affectation 69
2.2.2.4.1 Affectation à une variable simple 69
2.2.2.4.2 Affectation à un élément de tableau 70
2.2.2.5 Instruction d'arrêt de l'exécution d'un programme 72
2.3 Enchaînements d'instructions 75
2.3.1 Enchaînement séquentiel 75
2.3.2 Enchaînement conditionnel 76
2.3.3 Enchaînement itératif 77
2.3.3.1 Boucles "pour" (for) 77
2.3.3.2 Boucles "tant que" (while) 80
2.3.3.3 Boucles "jusqu'à" (repeat) 81
2.3.3.4 Terminaison des boucles "tant que" et "jusqu'à" 83
2.3.3.4.1 Erreur de non-terminaison 83
2.3.3.4.2 Preuve de terminaison des boucles "tant que" et "jusqu'à" (#) 84
2.4 Procédures et fonctions 86
2.4.1 Procédures 86
2.4.1.1 Déclaration de procédure 88
2.4.1.2 Appel de procédure 89
2.4.1.3 Passage de paramètres par valeur et par variable 90
2.4.2 Fonctions 93
2.4.2.1 Déclaration de fonction 95
2.4.2.2 Appel de fonction 95
2.4.2.3 Passage de paramètres par valeur 96
2.5 Récursivité (#) 98
2.5.1 Procédures et fonctions récursives (#) 98
2.5.2 Terminaison des procédures et fonctions récursives (#) 100
2.5.3 Appels récursifs inutiles (#) 102
2.5.4 Récursivité mutuelle (#) 103
2.6 Structure des programmes Pascal et visibilité des déclarations 106
2.6.1 Structure des programmes 106
2.6.2 Visibilité des déclarations 107
2.6.3 Usage du point-virgule 109
2.7 Analyse de la complexité des programmes (#) 110
2.7.1 Définition de la complexité d'un programme (#) 110
2.7.2 Notation de Landau (#) 111
2.7.3 Importance pratique de la complexité des programmes (#) 111
2.7.4 Analyse pratique de la complexité d'un programme (#) 112
3. UTILISATION DE COMPOSANTS LOGICIELS (PROCÉDURES OU FONCTIONS PRÉDÉFINIES ET MODULES DE BIBLIOTHÈQUE) 119
3.1 Types, procédures et fonctions prédéfinis (#) 119
3.2 Utilisation de bibliothèques 125
3.2.1 Bibliothèque mathématique 125
3.2.1.1 Utilisation de la bibliothèque mathématique au premier niveau 126
3.2.1.2 Utilisation de la bibliothèque mathématique au deuxième niveau 128
3.2.2 Bibliothèque graphique 132
3.2.2.1 Utilisation de la bibliothèque graphique au premier niveau 132
3.2.2.1.1 Tracé de points et de segments de droite 132
3.2.2.1.2 Fenêtre graphique 137
3.2.2.1.3 Tracé des axes 139
3.2.2.1.4 Tracé de courbes par approximation affine par morceaux 141
3.2.2.2 Utilisation de la bibliothèque graphique au deuxième niveau (#) 146
3.2.3 Bibliothèque d'entrées-sorties 150
3.2.3.1 Forme des entrées symboliques 150
3.2.3.2 Entrée symbolique de booléens, d'entiers ou de réels 151
3.2.3.3 Entrée symbolique et sortie de vecteurs 151
3.2.3.4 Entrée symbolique et sortie de matrices 151
3.2.3.5 Entrée symbolique et évaluation de fonctions 152
3.3 Écriture de bibliothèques : traitement des erreurs (#) 160
3.3.1 Spécification d'un traitement satisfaisant des erreurs à l'exécution d'un module de bibliothèque (#) 160
3.3.1.1 Signaler toutes les erreurs non rattrapables (#) 160
3.3.1.2 Choix du mode de traitement des erreurs non rattrapables (#) 161
3.3.1.3 Messages d'erreurs relatifs aux modules de bibliothèque utilisés dans le programme (#) 161
3.3.1.4 Possibilité de masquage des erreurs rattrapables (#) 161
3.3.2 Traitement des erreurs en cours d'exécution d'un module de bibliothèque (#) 162
3.3.2.1 Comment signaler une erreur se produisant dans un module de; bibliothèque (#) 162
3.3.2.2 Forme d'un module de bibliothèque (#) 163
3.3.2.3 Traitement des erreurs rattrapables (#) 166
3.3.2.4 Numérotation des erreurs signalées dans les modules de bibliothèque (#) 169
4. EXERCICES 173
4.1 Exercices d'application du programme de mathématiques des classes de mathématiques supérieures 173
4.1.1 Algèbre 173
4.1.1.1 Nombres et structures 173
4.1.1.1.1 Groupes 173
4.1.1.1.1.1 Vérification de la structure de groupe fini (***) 173
4.1.1.1.2 Les entiers, les rationnels 176
4.1.1.1.2.1 Triangle de Blaise Pascal (**) 176
4.1.1.1.2.2 Algorithme d'Euclide, identité de Bézout (*) 176
4.1.1.1.2.3 Algorithme binaire de calcul du PGCD (**) 177
4.1.1.1.3 Les réels 177
4.1.1.1.3.1 Perte de précision lors des entrées-sorties (*) 177
4.1.1.1.3.2 Convergence incorrecte (*) 178
4.1.1.1.3.3 Nombres harmoniques (**) 179
4.1.1.1.4 Les complexes 180
4.1.1.1.4.1 Transformation conforme (*) 180
4.1.1.1.4.2 Calcul sur les nombres complexes (**) 180
4.1.1.2 Polynômes et fractions rationnelles 180
4.1.1.2.1 Algorithme de Hörner (§,*) 181
4.1.1.2.2 Division euclidienne de polynômes (§,**) 182
4.1.1.2.3 PGCD de deux polynômes (§,*) 183
4.1.1.2.4 Division de polynômes selon les puissances croissantes (§,**) 183
4.1.1.2.5 Procédures et fonctions de manipulation de polynômes (*) 185
4.1.1.2.6 Approximation de Padé (*) 185
4.1.1.3 Algèbre linéaire et multilinéaire 185
4.1.1.3.1 Matrices 185
4.1.1.3.1.1 Puissance d'une matrice (**) 185
4.1.1.3.2 Résolution numérique d'un système linéaire régulier 185
4.1.1.3.2.1 Méthode d'élimination de Gauss (§,***) 185
4.1.1.3.2.2 Méthode d'élimination de Gauss-Jordan (***) 187
4.1.1.3.2.3 Inversion et calcul du déterminant d'une matrice (***) 189
4.1.2 Analyse 189
4.1.2.1 Suites réelles et complexes 189
4.1.2.1.1 Étude du comportement asymptotique de suites 189
4.1.2.1.1.1 Limite d'une suite récurrente (*) 189
4.1.2.1.1.2 Etude expérimentale de la convergence d'une suite (*) 189
4.1.2.1.2 Approximation d'une solution d'une équation numérique 190
4.1.2.1.2.1 Méthode itérative des approximations successives (§,*) 190
4.1.2.1.2.2 Méthode de Newton-Raphson (§,*) 190
4.1.2.1.2.3 Illustration graphique de la méthode de Newton-Raphson (*) 191
4.1.2.1.2.4 Méthode de la sécante (interpolation linéaire) (§,*) 192
4.1.2.1.2.5 Méthode partielle par dichotomie (§,**) 192
4.1.2.1.2.6 Illustration graphique de la méthode partielle par dichotomie (**) 193
4.1.2.1.2.7 Méthode complète par dichotomie (***) 194
4.1.2.2 Fonctions d'une variable réelle : calcul différentiel et intégral 194
4.1.2.2.1 Développements limités 194
4.1.2.2.1.1 Calcul de ex par son développement en série (*) 194
4.1.2.2.2 Approximation de fonctions 195
4.1.2.2.2.1 Interpolation polynomiale de Lagrange (**) 195
4.1.2.2.3 Méthodes de calcul approché d'intégrales simples 196
4.1.2.2.3.1 Méthode des trapèzes (§,*) 196
4.1.2.2.3.2 Méthode de Simpson (*) 197
4.1.2.2.3.3 Longueur d'un arc de courbe (*) 198
4.1.3 Géométrie 198
4.1.3.1 Géométrie euclidienne du plan 198
4.1.3.1.1 Transformations géométriques d'un polygone (***) 198
4.1.3.2 Construction de courbes planes 199
4.1.3.2.1 Tracé de courbes planes définies par une équation y2 = |f(x)| en coordonnées cartésiennes (**) 199
4.1.3.2.2 Tracé de courbes planes définies par une équation polaire r = r(q) (*) 200
4.1.3.2.3 Tracé de courbes planes définies par une représentation paramétrique en coordonnées cartésiennes (**) 200
4.2 Exercices d'application du programme de mathématiques des classes de mathématiques spéciales 201
4.2.1 Résolution numérique de systèmes d'équations linéaires 201
4.2.1.1 Méthode itérative de Gauss-Seidel (**) 201
4.2.2 Séries 202
4.2.2.1 Suites de fonctions (**) 202
4.2.2.2 Séries de Fourier (***) 202
4.2.3 Résolution numérique des équations différentielles 203
4.2.3.1 Méthode d'Euler (§,*) 204
4.2.3.2 Méthode de Runge-Kutta (**) 204
4.2.3.3 Tracé d'une famille de solutions d'une équation différentielle du premier ordre (**) 205
4.2.3.4 Courbes intégrales d'une équation différentielle polaire (**) 205
4.2.4 Résolution numérique de systèmes d'équations différentielles 206
4.2.4.1 Méthode vectorielle de Runge-Kutta (***) 206
4.2.4.2 Résolution numérique d'une équation différentielle du deuxième ordre (***) 207
4.2.5 Géométrie algorithmique 208
4.2.5.1 Enveloppes de droites dans le plan (**) 208
4.2.5.2 Enveloppe convexe d'un ensemble fini de points dans le plan euclidien (***) 208
4.2.5.3 Représentation d'une surface par une carte coloriée (**) 210
4.2.5.4 Représentation d'une surface en perspective avec élimination des parties cachées (***) 212
4.3 Exercices d'application à la physique 221
4.3.1 Centre d'inertie (*) 221
4.3.2 Oscillateur amorti (*) 221
4.3.3 Mouvement du point pesant sans et avec résistance du milieu (*) 221
4.3.4 Trajectoires dans un champ newtonien (**) 221
4.3.5 Circuit d'addition binaire 223
4.3.5.1 Circuit d'addition de trois bits (*) 223
4.3.5.2 Circuit d'addition de nombres binaires (**) 224
4.3.6 Traitement de données expérimentales (*) 225
4.3.7 Circuit R L parallèle (**) 226
4.3.8 Circuit R C série (**) 227
4.3.9 Electrostatique (***) 227
4.4 Exercices d'application à la chimie 231
4.4.1 pH d'une solution acide (*) 231
4.4.2 Dosage d'un triacide par une base faible (**) 232
4.4.3 Dosage d'un monoacide, diacide ou triacide faible ou fort par une base faible ou forte (***) 233
5. CORRIGES DES EXERCICES 237
5.1 Corrigés des exercices d'application du programme de mathématiques des classes de mathématiques supérieures 237
5.1.1 Algèbre 237
5.1.1.1 Nombres et structures 237
5.1.1.1.1 Groupes 237
5.1.1.1.1.1 Vérification de la structure de groupe fini (***) 237
5.1.1.1.2 Les entiers, les rationnels 247
5.1.1.1.2.1 Triangle de Blaise Pascal (**) 247
5.1.1.1.2.2 Algorithme d'Euclide, identité de Bezout (*) 248
5.1.1.1.2.3 Algorithme binaire de calcul du PGCD (**) 250
5.1.1.1.3 Les réels 252
5.1.1.1.3.1 Perte de précision lors des entrées-sorties (*) 252
5.1.1.1.3.2 Convergence incorrecte (*) 252
5.1.1.1.3.3 Nombres harmoniques (**) 253
5.1.1.1.4 Les complexes 255
5.1.1.1.4.1 Transformation conforme (*) 255
5.1.1.1.4.2 Calcul sur les nombres complexes (**) 259
5.1.1.2 Polynômes et fractions rationnelles 263
5.1.1.2.1 Algorithme de Hörner (§,*) 263
5.1.1.2.2 Division euclidienne de polynômes (§,**) 264
5.1.1.2.3 PGCD de deux polynômes (§,*) 265
5.1.1.2.4 Division de polynômes selon les puissances croissantes (§,**) 266
5.1.1.2.5 Procédures et fonctions de manipulation de polynômes (*) 268
5.1.1.2.6 Approximation de Padé (*) 272
5.1.1.3 Algèbre linéaire et multilinéaire 274
5.1.1.3.1 Matrices 274
5.1.1.3.1.1 Puissance d'une matrice (**) 274
5.1.1.3.2 Résolution numérique d'un système linéaire régulier 277
5.1.1.3.2.1 Méthode d'élimination de Gauss (§,***) 277
5.1.1.3.2.2 Méthode d'élimination de Gauss-Jordan (***) 280
5.1.1.3.2.3 Inversion et calcul du déterminant d'une matrice (***) 284
5.1.2 Analyse 289
5.1.2.1 Suites réelles et complexes 289
5.1.2.1.1 Etude du comportement asymptotique de suites 289
5.1.2.1.1.1 Limite d'une suite récurrente (*) 289
5.1.2.1.1.2 Etude expérimentale de la convergence d'une suite (*) 290
5.1.2.1.2 Approximation d'une solution d'une équation numérique 292
5.1.2.1.2.1 Méthode itérative des approximations successives (§,*) 292
5.1.2.1.2.2 Méthode de Newton-Raphson (§,*) 293
5.1.2.1.2.3 Illustration graphique de la méthode de Newton-Raphson (*) 295
5.1.2.1.2.4 Méthode de la sécante (interpolation linéaire) (§,*) 302
5.1.2.1.2.5 Méthode partielle par dichotomie (§,**) 304
5.1.2.1.2.6 Illustration graphique de la méthode partielle par dichotomie (**) 306
5.1.2.1.2.7 Méthode complète par dichotomie (***) 309
5.1.2.2 Fonctions d'une variable réelle : calcul différentiel et intégral 313
5.1.2.2.1 Développements limités 313
5.1.2.2.1.1 Calcul de ex par son développement en série (*) 313
5.1.2.2.2 Approximation de fonctions 314
5.1.2.2.2.1 Interpolation polynomiale de Lagrange (**) 314
5.1.2.2.3 Méthodes de calcul approché d'intégrales simples 321
5.1.2.2.3.1 Méthode des trapèzes (§,*) 321
5.1.2.2.3.2 Méthode de Simpson (*) 322
5.1.2.2.3.3 Longueur d'un arc de courbe (*) 324
5.1.3 Géométrie 326
5.1.3.1 Géométrie euclidienne du plan 326
5.1.3.1.1 Transformations géométriques d'un polygone (***) 326
5.1.3.2 Construction de courbes planes 333
5.1.3.2.1 Tracé de courbes planes définies par une équation y2 = |f(x)| en coordonnées cartésiennes (**) 333
5.1.3.2.2 Tracé de courbes planes définies par une équation polaire r = r(q) (*) 345
5.1.3.2.3 Tracé de courbes planes définies par une représentation paramétrique en coordonnées cartésiennes (**) 359
5.2 Corrigés des exercices d'application du programme de mathématiques des classes de mathématiques spéciales 368
5.2.1 Résolution numérique de systèmes d'équations linéaires 368
5.2.1.1 Méthode itérative de Gauss-Seidel (**) 368
5.2.2 Séries 370
5.2.2.1 Suites de fonctions (**) 370
5.2.2.2 Séries de Fourier (***) 376
5.2.3 Résolution numérique des équations différentielles 385
5.2.3.1 Méthode d'Euler (§,*) 385
5.2.3.2 Méthode de Runge-Kutta (**) 389
5.2.3.3 Tracé d'une famille de solutions d'une équation différentielle du premier ordre (**) 391
5.2.3.4 Courbes intégrales d'une équation différentielle polaire (**) 400
5.2.4 Résolution numérique de systèmes d'équations différentielles 403
5.2.4.1 Méthode vectorielle de Runge-Kutta (***) 403
5.2.4.2 Résolution numérique d'une équation différentielle du deuxième ordre (***) 416
5.2.5 Géométrie algorithmique 424
5.2.5.1 Enveloppes de droites dans le plan (**) 424
5.2.5.2 Enveloppe convexe d'un ensemble fini de points dans le plan euclidien (***) 430
5.2.5.3 Représentation d'une surface par une carte coloriée (**) 434
5.2.5.4 Représentation d'une surface en perspective avec élimination des parties cachées (***) 445
5.3 Corrigés des exercices d'application à la physique 467
5.3.1 Centre d'inertie (*) 467
5.3.2 Oscillateur amorti (*) 469
5.3.3 Mouvement du point pesant sans et avec résistance du milieu (*) 470
5.3.4 Trajectoires dans un champ newtonien (**) 473
5.3.5 Circuit d'addition binaire 479
5.3.5.1 Circuit d'addition de trois bits (*) 479
5.3.5.2 Circuit d'addition de nombres binaires (**) 480
5.3.6 Traitement de données expérimentales (*) 483
5.3.7 Circuit R L parallèle (**) 485
5.3.8 Circuit R C série (**) 490
5.3.9 Electrostatique (***) 492
5.4 Corrigés des exercices d'application à la chimie 508
5.4.1 pH d'une solution acide (*) 508
5.4.2 Dosage d'un triacide par une base faible (**) 511
5.4.3 Dosage d'un monoacide, diacide ou triacide faible ou fort par une base faible ou forte (***) 515
6. ENVIRONNEMENT DE PROGRAMMATION 527
6.1 Utilisation simplifiée de Turbo Pascal sur les micro-ordinateurs de type PC 527
6.1.1 Touches spéciales du clavier 527
6.1.2 Mise en marche du PC 529
6.1.3 Formattage d'une disquette 529
6.1.4 Mise en oeuvre de Turbo Pascal 531
6.1.5 Exécution d'un programme existant sur disquette 532
6.1.6 Edition du texte d'un programme Pascal et enregistrement de ce programme sur disquette 534
6.1.6.1 Edition d'un programme 534
6.1.6.1.1 Nouveau programme 534
6.1.6.1.2 Ancien programme 535
6.1.6.2 Déplacement du curseur 535
6.1.6.3 Insertion et remplacement de texte 536
6.1.6.4 Suppression de texte 536
6.1.6.5 Recherche d'un texte 537
6.1.6.6 Fin de l'édition de texte et sauvegarde du programme sur disquette 537
6.1.7 Exécution du programme en cours 537
6.1.7.1 Directives de compilation 537
6.1.7.2 Exécution du programme 538
6.1.7.3 Erreurs à la compilation 538
6.1.7.4 Erreurs à l'exécution 538
6.1.7.5 Non-terminaison 539
6.1.8 Utilisation de bibliothèques 539
6.1.9 Programmes graphiques 540
6.1.10 Nombres pseudo-aléatoires 540
6.1.11 Liste du programme 541
6.1.12 Impression des résultats 542
6.2 Utilisation simplifiée de Turbo Pascal sur le micro-ordinateur Macintosh 543
6.2.1 Exécution d'un programme enregistré sur disquette 543
6.2.1.1 Exécution d'un programme Turbo Pascal 543
6.2.1.2 Forme d'un programme Turbo Pascal sur le Macintosh 550
6.2.1.3 Exécution d'un programme Turbo Pascal utilisant une bibliothèque sur le Macintosh 550
6.2.1.4 Génération de nombres pseudo-aléatoires 552
6.2.1.5 Intégration des bibliothèques dans le compilateur Turbo Pascal du Macintosh 552
6.2.2 Manipulation d'une fenêtre 554
6.2.3 Edition du texte d'un programme 555
6.2.3.1 Saisie du texte d'un programme 555
6.2.3.2 Modification du texte d'un programme 556
6.2.3.3 Vérification de la syntaxe d'un programme 556
6.2.4 Exécution et mise au point du programme 557
6.2.5 Impression de la liste du programme et du résultat de son exécution 559
6.2.6 Initialisation d'une disquette vierge 559
6.2.7 Enregistrement d'un programme Pascal sur disquette 560
7. LISTE DES PROGRAMMES ANNEXES 565
8. RÉSUMÉ DU SOUS-ENSEMBLE DE PASCAL AU PROGRAMME DES CLASSES PRÉPARATOIRES 567
8.1 Programmes 567
8.2 Déclarations 567
Noms (identificateurs) 567
Type scalaire 567
Déclaration de type de tableaux 568
Déclaration de variables simples et de tableaux 568
Déclaration de procédure 568
Déclaration de fonction 568
Paramètres formels 569
8.3 Expressions 569
Constantes 569
Opérateurs arithmétiques entiers 569
Opérateurs arithmétiques réels 569
Opérateurs de comparaison d'entiers ou de réels 570
Opérateurs booléens 570
Priorités des opérateurs 570
Appel de fonction 570
Elément de tableau 570
Expressions 570
8.4 Instructions simples 571
Affectation 571
Lecture 571
Ecriture 571
Format d'écriture 572
Appel de procédure 572
Arrêt de l'exécution du programme 572
8.5 Instructions composées 572
Bloc séquentiel 572
Alternative 573
Itération 573
9. RÉSUMÉ DES BIBLIOTHÈQUES DISPONIBLES DANS LES CLASSES PRÉPARATOIRES 575
9.1 Math.Lib 575
9.2 Graphe.Lib 579
9.3 Entrees.Lib 583
9.4 Complexe.Lib 586
9.5 Polynome.lib 589
9.6 Temps.Lib 591
10. PROGRAMME D'INFORMATIQUE DES CLASSES PRÉPARATOIRES AUX GRANDES ÉCOLES SCIENTIFIQUES 593
10.1 Objectifs généraux et lignes directrices du programme d'informatique 593
10.2 Programme d'informatique 594
10.2.1 Algorithmique et programmation 594
10.2.2 Sous-ensemble de Pascal 595
10.2.3 Environnement de programmation 596
10.2.4 Utilisation d'outils informatiques 596
10.2.5 Champs d'application 596
10.2.5.1 Mathématiques 596
10.2.5.2 Sciences physiques 597
11. CONSEILS AUX CANDIDATS 599
12. RÉFÉRENCES ET BIBLIOGRAPHIE 601
13. INDEX DES NOMS ABRÉGÉS DES PROGRAMMES 605
14. INDEX 613