Patrick Cousot.

Introduction à l'algorithmique numérique et à la programmation en Pascal, cours et exercices.

McGraw-Hill, Paris, 1987.
ISBN : 2-7042-1173-6


Maquette de couverture : Françoise Rojare

Programmes Turbo Pascal

Version 1.1 du noyau de base de la bibliothèque MODULOG

Exemples graphiques

Equa. diff. polaire courbe polaire
Équation différentielle polaire R' = R*sin(R*T) Courbe polaire r=cos 9/10 t, t dans [-10pi,10 pi]
ÈpicycloÔde Èqua. diff.
Épicycloïde Courbes intégrales d'un système d'équa. diff.
Surface 1 Surface 2
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]

Préface de Michel Demazure

L'introduction d'une épreuve d'informatique au concours d'entrée à l'Ecole Polytechnique a fait couler beaucoup d'encre et de salive - sinon de sang - dans le petit monde des Grandes Écoles Scientifiques et de leurs classes préparatoires. Pour évidente qu'apparaisse à l'extérieur cette décision, elle n'en a pas moins suscité chez les professeurs de ces classes critiques et inquiétudes. Certaines critiques justifiées (opposant notamment le "modernisme" de cette mesure à l'archaïsme qui rêgne en d'autres matières - dessin industriel!), certaines inquiétudes légitimes (surcharge de la préparation et du concours, inégalité des chances) ne doivent cependant pas cacher l'évidence : une telle évolution est inévitable et bienvenue.

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


Avant-propos

Ce livre est destiné aux élèves et professeurs des classes préparatoires aux grandes écoles scientifiques. Il est conforme au programme d'informatique des classes de mathématiques supérieures et mathématiques spéciales M, M', P, P', T et T' (défini par l'arrêté du 17 juillet 1987 paru page 9809 du Journal Officiel du 27 août 1987), en particulier en ce qui concerne le sous-ensemble du langage Pascal, les bibliothèques de logiciels, l'environnement de programmation et les exercices corrigés d'application aux mathématiques et aux sciences physiques. À l'intention des professeurs nous avons inclus quelques sujets hors programme et des exercices relevant plus des logiciels graphiques d'application que des exercices facilement programmables en un temps limité par les élèves. C'est donc à la fois un ouvrage introductif et un manuel de référence qu'il convient de lire de manière sélective en se laissant guider par les indications de niveaux de difficulté. Au fil des expériences pédagogiques, chacun pourra en dégager l'essentiel.

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.


Table des matières

   Les paragraphes marqués du signe dièse (#) ne sont pas au programme des classes préparatoires et peuvent donc être omis par les élèves. Les exercices correspondant à des algorithmes au programme des classes préparatoires sont signalés par le signe paragraphe (§). les exercices sont classés par niveaux de difficulté croissante avec une (*), deux (**) ou trois (***) étoiles.

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


Retour à / back to: Index, Institutions, Enseignement / Teaching, Recherche / Research, Services
Email: cousot@di.ens.fr, cousotp@acm.org
Dernière mise à jour / Last modified : Wednesday, 04-Jun-2003 12:29:51 CEST