318

GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Embed Size (px)

DESCRIPTION

XCAS, Scilab, Bc, Gp, GnuPlot, Maxima, MuPAD

Citation preview

Page 1: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 2: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

GUIDE DU CALCUL AVECLES LOGICIELS LIBRES

XCAS, Scilab, Bc,Gp, GnuPlot, Maxima, MuPAD

Page 3: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 4: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

GUIDE DU CALCUL AVECLES LOGICIELS LIBRES

XCAS, Scilab, Bc,Gp, GnuPlot, Maxima, MuPAD

Guillaume ConnanProfesseur agrégé de mathématiques

au lycée Jean Perrin (Rezé)

Stéphane GrognetMaître de conférences à l’Université de Nantes

et directeur de l’IREM des Pays de la Loire

Page 5: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Illustration de couverture : Digital vision

© Dunod, Paris, 2008ISBN 978-2-10-053934-5

Page 6: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Table des matières

INTRODUCTION 1

1 Généralités 1a. Public visé 1b. Organisation 1

2 Pourquoi des logiciels libres ? 23 Liste des logiciels abordés 24 Vive le calcul ! 3

Partie I INTERFACE 5CHAPITRE 1 : AIDE 7

1.1 Installer les logiciels 71.2 Obtenir de l’aide 7

a. Aide en ligne de commande 7b. Aide en ligne locale 8c. Aide en ligne par internet 8d. Documentation internet 8

1.3 Promenade avec bc 81.4 Promenade avec XCAS 9

CHAPITRE 2 : COMMUNICATION 13

2.1 Communiquer avec un logiciel de calcul 13a. Écriture des nombres 13b. Saisie des instructions au clavier 13c. Mise en forme des résultats au format instruction 14

2.2 Obtenir des sorties compatibles avec le logiciel de typographie LATEX 15a. LATEX et les calculs avec XCAS 15b. LATEX et les sorties graphiques de XCAS 18c. LATEX et GnuPlot 20d. Combiner Bc, GnuPlot et LATEX 23

2.3 Utiliser des logiciels de calcul avec TeXmacs 262.4 Utiliser les logiciels de calcul en mode texte sous Emacs 272.5 Faire communiquer deux logiciels de calcul 29

Page 7: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

a. Le copier-coller à la souris 29b. Communication via des fichiers 29c. Appel à l’interpréteur de commandes du système (shell) 29d. Un bon outil : la gestion des chaînes de caractères 30

2.6 Programmation interactive 30

CHAPITRE 3 : LA PROGRAMMATION 31

3.1 Avec XCAS 31a. Les procédures 31b. for 32c. while 33d. if 33e. Listes,ensembles et chaînes 33f. Programmation en français 36

Pour 36tantque 36si 36

3.2 Avec MuPAD 37a. Les procédures 37b. for 38c. while 39d. if 39e. Listes, ensembles et chaînes 39

3.3 Avec Scilab 41

Partie II CALCUL 43CHAPITRE 4 : ARITHMÉTIQUE 45

4.1 Calcul en précision arbitraire 45a. Avec Bc 45b. Avec XCAS 46c. Avec Maxima 46d. Avec gp 46e. Avec Yacas 46

4.2 Erreurs d’arrondi avec GnuPlot 474.3 Changement de base avec Bc 484.4 Congruences 494.5 Nombres premiers 50

a. Théorème des nombres premiers 50

b. La fonction Li :x �→∫x

2

1

ln tdt et les nombres premiers 52

4.6 Nombres p-adiques 53

CHAPITRE 5 : ÉQUATIONS 55

5.1 Avec XCAS 55

vi

Page 8: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

5.2 Avec MuPAD 58

CHAPITRE 6 : POLYNÔMES 61

6.1 Avec Scilab 616.2 Avec Maxima 626.3 Avec XCAS 636.4 Avec Gp 646.5 Avec Yacas 65

CHAPITRE 7 : FONCTIONS 67

7.1 Avec Gp 677.2 Avec Maxima 677.3 Avec XCAS 68

a. Cas général 68b. Définir des fonction non numériques : un exemple en géométrie en classe de

Seconde 697.4 Avec Bc 727.5 Avec Scilab 72

a. Cas général 72b. Évaluation en rafale 73

7.6 Avec Yacas 737.7 Avec Octave 74

CHAPITRE 8 : ALGÈBRE LINÉAIRE 75

8.1 Avec Scilab 75a. Opérations élémentaires 75b. Résolution d’un système d’équations linéaires 76c. Réduction d’endomorphismes 76

8.2 Avec Octave 778.3 Avec Maxima 778.4 Avec XCAS, au gré d’activités diverses 78

a. Déterminer un projecteur 78b. Puissances de matrices 79c. Inverse de matrices 79d. Trouver l’inverse d’une matrice avec la méthode de Gauss-Jordan 80e. Chaînes de Markov 83f. Chiffrement de Hill 86

Codage 87Décodage 88

CHAPITRE 9 : GÉOMÉTRIE AFFINE 91

9.1 Avec Scilab 91a. Équation de droite dans le plan 91b. Équation de plan dans l’espace tridimensionnel 91

9.2 Avec XCAS 91a. Propriétés géométriques 92

vii

Page 9: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

Dans le plan 92Dans l’espace 93

b. Une activité de 2nde 959.3 Avec GnuPlot 96

CHAPITRE 10 : STATISTIQUES 99

10.1 Des statistiques sans tableur... 99a. Le problème du Duc de Toscane 99

Un peu de (petite) histoire 99Simulation de l’expérience 99Simulation à grande échelle 100

b. Lancers de dés 101c. Un problème d’ivrogne 103

10.2 Générateurs aléatoires 10510.3 Régression linéaire 10510.4 Statistiques 10510.5 Application 106

a. Loi uniforme 106b. Loi normale 108c. Pile ou face 109d. Jeu de dés 110

CHAPITRE 11 : CALCUL DIFFÉRENTIEL 113

11.1 Premiers contacts 113a. Avec Scilab 113b. Avec Maxima 114c. Avec XCAS 114d. Avec Gp 116e. Avec Yacas 116

11.2 Calcul différentiel multidimensionnel 11611.3 Courbes 11711.4 Surfaces 11911.5 Étude métrique des surfaces 12511.6 Extrema d’une fonction de R2 dans R avec XCAS 132

a. Extremum sous contrainte et multiplicateur de Lagrange 132b. Condition nécessaire et suffisante d’existence d’un extremum 135

CHAPITRE 12 : INTÉGRATION 139

12.1 Primitives 139a. Avec Yacas 139b. Avec Maxima 139c. Décomposition en éléments simples 140d. Avec Scilab 142e. Avec XCAS 143f. Avec MuPAD 143

12.2 Changement de variable et intégration par parties 144

viii

Page 10: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

a. Avec XCAS 144

Changement de variables 144

Intégration par parties 144

Intégrale de Wallis 145

b. Avec MuPAD 147

12.3 Calcul approché d’intégrales 148

a. Méthode des rectangles avec XCAS 148

b. Application au calcul d’une approximation de π avec XCAS 149

CHAPITRE 13 : DÉVELOPPEMENTS LIMITÉS 153

13.1 Avec Yacas 153

13.2 Avec Gp 153

13.3 Avec Maxima 154

13.4 Avec XCAS 154

a. Généralités 154

b. Visualisation de l’approximation d’une fonction par le polynôme de Taylor 155

CHAPITRE 14 : ÉQUATIONS DIFFÉRENTIELLES ORDINAIRES 157

14.1 Avec Scilab 157

a. Résolution d’une équation du premier ordre unidimensionnelle 157

b. Résolution d’une équation du premier ordre multidimensionnelle 157

c. Résolution d’une équation du deuxième ordre unidimensionnelle 160

d. Résolution d’une équation d’ordre et de dimension quelconques 161

14.2 Avec Octave 161

14.3 Avec XCAS 161

a. Résolution exacte 161

b. Résolution approchée 162

c. Méthode d’Euler : cas général 162

d. Méthode d’Euler et exponentielle : TP en Terminale S 163

Approximation affine 163

Subdivision 163

Tracé d’une ligne brisée 163

Tracé en boucle 164

Procédure 164

À vous de jouer 165

Estimation de l’erreur 165

14.4 Résolution exacte avec Maxima 166

14.5 Avec MuPAD 167

CHAPITRE 15 : TRANSFORMÉE DE LAPLACE 169

15.1 Avec Maxima 169

15.2 Avec XCAS 170

ix

Page 11: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

Partie III THÈMES 171THÈME 1 : XCAS AU LYCÉE ? 173

1.1 XCAS et la géométrie dynamique au lycée 1731.2 XCAS et les suites 1731.3 Ce que ni le tableur, ni un logiciel de géométrie ne peuvent faire 179

a. Preuve d’un théorème 179b. Illustration graphique 182c. Bilan de cette activité 183

1.4 Moralité... 183

THÈME 2 : LOGIQUE ÉLÉMENTAIRE 185

2.1 Premiers contacts 1852.2 Algèbre de Boole 1852.3 Le raisonnement par l’absurde 186

THÈME 3 : THÉORÈMES DE MÉNÉLAÜS ET PAPPUS 189

3.1 Coordonnées barycentriques 189a. Une condition d’alignement 189b. Une démonstration rapide du théorème de Ménélaüs 190

3.2 Problème du Monde 1923.3 Cercles de Pappus 193

a. Approche historique 193b. Résolution astucieuse de représentations paramétriques et d’une inversion 196

THÈME 4 : SUITES ET CHAOS 199

4.1 Modélisation 2004.2 Observation chiffrée 2004.3 Observation graphique 2014.4 Diagramme de bifurcation 203

THÈME 5 : CONIQUES 205

5.1 Étude algébrique des coniques 205a. Étude mathématique au niveau Bac+1 205

Premier cas : ab = 0 205second cas : ab �= 0 206

b. Étude mathématique au niveau Bac+2 208Écriture matricielle de l’équation 208Exemple 209

c. Étude informatique 2105.2 Étude analytique des coniques 211

a. Ellipse d’équation x2

a2 + y2

b2 = 1 211

b. Hyperbole d’équation x2

a2 − y2

b2 = 1 2135.3 Ensemble des points M du plan tels que MF = eMH 2145.4 Foyer et directrice d’une conique 214

x

Page 12: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

a. Cas de l’ellipse 214b. Cas de l’hyperbole 215

5.5 Construction de la tangente à une conique 215a. Le théorème 215b. L’observation par XCAS 215c. La preuve par XCAS 217

5.6 Activités géométriques sur les paraboles 218a. Tracé d’une parabole à la règle et au compas 218b. Pourquoi les antennes paraboliques sont-elles paraboliques ? 219

5.7 Coniques et cônes 220a. Section d’un cône par un plan d’équation x = t 221b. Section d’un cône par un plan d’équation x = t +k · z 222

THÈME 6 : SÉRIES DE FOURIER 225

6.1 Exploration 2256.2 Interprétation physique 2286.3 Phénomène de Gibbs 229

THÈME 7 : MUSIQUE 235

7.1 Construction d’une gamme avec Scilab 235a. Génération de gammes candidates 235b. Élimination des permutations circulaires de colonnes 236c. Fonction principale : mode d’emploi 237

7.2 Fabrication de sons 238

THÈME 8 : CARRÉS MAGIQUES 241

THÈME 9 : CODES CORRECTEURS D’ERREURS 247

9.1 Méthode naïve 248a. Liste des éléments de Fk

2 248b. Distance de Hamming 248c. La procédure de test et de correction 249d. Code t-correcteur 251

9.2 Codes cycliques et polynôme générateur 2539.3 Corps de Galois - Création de polynômes générateurs 255

THÈME 10 : SURFACES DONT LA PROJECTION EST IMPOSÉE 259

10.1 Introduction 25910.2 Construction du polynôme adapté 260

a. Définition mathématique 260b. Construction informatique 260

10.3 Définition semi-algébrique d’un polygone convexe régulier 262a. Le polygone a un nombre pair de côtés 262b. Le polygone a un nombre impair de côtés 263c. Traduction informatique 264

10.4 Construction de l’ensemble algébrique à partir de la définition semi-algébrique 265

xi

Page 13: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� ������

a. Carré 265b. Hexagone 266

10.5 Prolongements 267

THÈME 11 : TACHES DES ANIMAUX 269

11.1 Introduction 26911.2 Affichage des données 27011.3 Construction sur un rectangle 27311.4 Construction sur un tore 27611.5 Construction sur un cylindre 277

Partie IV ANNEXES 279TABLEAUX COMPARATIFS 281

BIBLIOGRAPHIE 289

INDEX GÉNÉRAL 291

INDEX DES COMMANDES 297

xii

Page 14: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Remerciements

Je remercie chaleureusement Bernard PARISSE, d’une part pour développer demanière si active le logiciel XCAS, et d’autre part pour avoir bien voulu relire etaméliorer bon nombre des algorithmes présents dans cet ouvrage.

Je tiens également à m’excuser auprès de Claire, Marie, François, Suzanne etRose à qui j’ai tourné le dos tant de jours pour faire face à mon écran et lesremercie pour leur patience.

Guillaume CONNAN

Page 15: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Introduction

� ���������

�� ������ ��

Cet ouvrage aborde les niveaux :

➥ collège

➥ lycée

➥ supérieur

tant pour les notions mathématiques que pour les capacités informatiques nécessaires.L’ouvrage est destiné :

➥ à l’élève ou l’étudiant qui cherche une vision différente des notions abordées en cours,ou qui désire se cultiver,

➥ à l’enseignant qui cherche une aide soit pour préparer des illustrations pour son cours,soit pour préparer des activités sur machine en travaux pratiques,

➥ au candidat professeur qui souhaite illustrer une leçon mathématique en utilisant desprogrammes de quelques lignes sans rentrer dans une programmation fastidieuse,

➥ au technicien et au scientifique de n’importe quelle discipline qui souhaite manipulerles objets mathématiques dont il a besoin.

�� � ���������

Cet ouvrage aborde trois domaines de travail :

➥ Comment utiliser le plus confortablement possible les logiciels de calcul ?

➥ Quelles sont les connaissances de bases qui permettent à un non-initié d’aborder chaquelogiciel ?

➥ Comment traiter avec les machines quelques thèmes mathématiques un peu plus éla-borés ?

Les textes de confort découlent de notre pratique ; ils sont destinés à ceux qui s’intéressentaux mathématiques sans expérience de la programmation et correspondent à la partie 4.Les textes de recettes de base de la partie 3.3 répondent aux questions que nous nous sommesnous-mêmes posées : pour illustrer tel ou tel domaine des mathématiques, quels logicielschoisir, quels sont les outils minimums qu’on peut acquérir sans gros travail d’apprentissagepour manipuler les objets mathématiques ?

Page 16: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Les thèmes d’étude de la partie 15.2 nous paraissent instructifs pour plusieurs raisons.

On peut utiliser les logiciels de calcul pour faciliter le travail dans un domaine mathématiqueque l’on connaît. Mais il apparaît que les logiciels libres disponibles sont suffisamment richeset suffisamment documentés pour qu’on puisse aussi découvrir un domaine mathématiqueà travers eux. La manière de penser l’échange de connaissances s’en trouve modifiée.

L’utilisation d’un logiciel pour résoudre un problème ambitieux mène à une utilisation pous-sée : le logiciel libère sa puissance ; des routines sont créées, qui peuvent être utilisées dansbien d’autres situations ; la solution apportée fait naître d’autres envies et apporte de fécondessuggestions.

� � ���� � �� � ������ ����� �

Les logiciels libres publient les sources de leur programmes, ce qui leur offre différents avan-tages.

Le fait que tout un chacun puisse apporter des corrections est un gage de stabilité.

Le développement de certains logiciels peut être repris par de nouvelles équipes sans que lesavoir-faire ne soit perdu : c’est un gage de pérennité.

Leurs concepteurs visent la compatibilité avec les versions antérieures et le respect des normesinformatiques. Les logiciels libres sont destinés à communiquer entre eux, et le fait de pouvoircumuler la puissance de plusieurs logiciels pour un projet de calcul est précieux.

Le fait de pouvoir les dupliquer légalement est bénéfique pour le budget de l’État ou des en-treprises.

� ��� �� � ������ �� ���

Plusieurs logiciels sont utilisés dans cet ouvrage. Nous pointons les différences de syntaxe ;elles ne doivent pas rebuter le néophyte car elles ont leur raison d’être, et le fait d’apprendreplusieurs logiciels de calcul en même temps apporte un recul profitable à l’assimilation desrègles d’utilisation. Des tableaux comparatifs sont présentés en annexe page 281.

Les logiciels libres présentés ici sont bien dans la philosophie des logiciels libres et des sys-tèmes d’exploitation libres de la lignée UNIX ; à l’opposé de la stratégie commerciale des lo-giciels propriétaires, les logiciels libres ne cherchent pas à tout faire, mais à agir dans un do-maine déterminé le plus proprement possible : ce qu’ils font, ils le font bien.

Toujours dans la philosophie UNIX, les logiciels utilisent des modes de communication ou-verts (ils peuvent lire et écrire des fichiers texte ou dans des formats ouverts, lancer des com-mandes système et donc n’importe quel autre logiciel), et collaborent entre eux. Tel logicielde calcul formel utilise un autre logiciel de dessin pour ses graphismes, et un autre logiciel decalcul numérique pour ses calculs approchés.

Cette coopération apporte une puissance et un confort d’utilisation introuvables dans les lo-giciels propriétaires.

2

Page 17: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Fonctionne Fonctionne

en mode en mode

Logiciel Type Licence texte graphique

Bc calculette en précision arbitraire GPL oui

GnuPlot traceur de figures mathématiques GPL oui

Gp(pari) calculateur formel orienté corps de nombres GPL oui

Maxima calculateur formel GPL oui oui

MuPAD calculateur formel Propriétaire oui

Octave calculateur numérique matriciel GPL oui

Scilab calculateur numérique matriciel cecill oui oui

XCAS(giac) calculateur formel GPL oui(iacas) oui

Yacas calculateur formel GPL oui���� ��� Logiciels abordés

Les logiciels qui fonctionnent en mode texte présentent deux avantages : ils peuvent être ins-tallés et (modérément) utilisés sur des machines peu performantes, et peuvent être utilisés àdistance par ssh via une liaison lente. Ils fonctionnent évidemment sur un terminal en modegraphique.Les relations des logiciels de calcul avec le logiciel de typographie LATEX sont abordées ici.

� ���� �� ������ �

Nous remercions les auteurs des logiciels libres qui diffusent leur savoir à l’ensemble de l’hu-manité depuis des décennies. Les systèmes libres Linux et *BSD sont des outils de travail re-marquables.Nous remercions l’IREM des Pays de la Loire, le Département de mathématiques de l’Univer-sité de Nantes, le laboratoire Jean Leray pour leurs aides diverses.Nous remercions Bernard Parisse pour ses réponses aux questions sur XCAS.Nous aurions aimé aborder d’autres logiciels, tels que geogebra, axiom, xfig, R. . .Cet ouvrage vise à encourager les utilisateurs à parcourir la riche documentation des logicielslibres, il ne vise surtout pas à la remplacer.Nous espérons que le lecteur prendra autant de plaisir que nous à découvrir les logiciels libresde calcul mathématique, et utilisera ce livre en expérimentant directement les logiciels decalcul sur sa machine, en n’oubliant pas son éditeur de texte préféré pour créer et ajuster sespropres programmes.

3

Page 18: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 19: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Première partie

INTERFACE

Page 20: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 21: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Aide

Logiciel(s) abordé(s) : Bc GnuPlot Gp Maxima Octave Scilab XCASYacas

Problématique : Comment obtenir le mode d’emploi ?

��� ������� �� � ������

À part MuPAD, les logiciels décrits ici sont libres, c’est-à-dire librement copiables avec leursprogrammes-sources.Ils sont souvent dans l’arborescence de logiciels disponibles sous votre système d’exploitationLinux ou *BSD préféré.Sous MacOSX, il est bon d’utiliser Fink, qui les place dans le répertoire \sw. Mais certains logi-ciels ne sont pas disponibles par Fink : ils sont souvent sur internet sous forme déjà compiléepour MacIntosh.Sous Microsoft Windows, les logiciels sont à télécharger sur internet. On peut avoir besoind’un simulateur UNIX comme CygWin.Dans tous les cas, il ne faut pas hésiter à consulter les sites internet correspondants et à télé-charger la documentation.

��� ������ �� ������

�� ���� �� ����� �� ��������

Certains logiciels fournissent une aide sommaire en ligne de commande avec une instructiondu type programme -h :ou programme -help.

bc --helpgnuplot --helpgp --helpmaxima --helpoctave --helpscilab --help

Ceci peut varier suivant la version du logiciel installé sur la machine.

Page 22: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ���

Certains fournissent une aide dans la norme UNIX avec la commande man de l’interpréteurde commande (Shell) : man programme.

��� bc��� gnuplot��� gp��� maxima��� octave

Quelques logiciels fournissent une aide substantielle avec la commande info du shell :

���� gnuplot���� maxima���� octave

�� ���� �� ����� ������

Certains logiciels offrent une aide en ligne, soit en appuyant un bouton en mode graphique,soit en tapant une commande du type help, comme Octave, Maxima, Scilab, un point d’in-terrogation, comme GnuPlot, XCAS, Yacas, deux points d’interrogation, comme Gp.Par exemple le programme Yacas lance le navigateur en mode texte ���; le logiciel Gp avecdeux points d’interrogation lance le visualiseur �� sur un document d’aide (en mode gra-phique).Il arrive que l’aide fournisse une précieuse recherche par mot-clé.

�� ���� �� ����� �� ���� ���

Certains logiciels proposent leur aide en ligne par un navigateur qui va chercher ses donnéessur le réseau. Ceci pose problème quand on travaille hors ligne. . .

�� ������������� ���� ���

Une grande quantité de documents est disponible sur internet dans de nombreuses langues.Il est intéressant de télécharger ces documents et de les consulter en travaillant.

��� �� ����� ���� ��

Pour obtenir l’aide de Bc taper dans un terminal :

man bc

on obtient une réponse du genre :

Réponse du logiciel

bc(1) bc(1)

NAMEbc - An arbitrary precision calculator language

8

Page 23: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������� �� ����

SYNTAXbc [ -lwsqv ] [long-options] [ file ... ]

VERSIONThis man page documents GNU bc version 1.04.

DESCRIPTIONbc is a language that supports arbitrary precision numbers with inter-active execution of statements. There are some similarities in thesyntax to the C programming language. A standard math library isavailable by command line option. If requested, the math library isdefined before processing any files. bc starts by processing code fromall the files listed on the command line in the order listed. Afterall files have been processed, bc reads from the standard input. Allcode is executed as it is read. (If a file contains a command to haltthe processor, bc will never read from the standard input.)

This version of bc contains several extensions beyond traditional bcimplementations and the POSIX draft standard. Command line options cancause these extensions to print a warning or to be rejected. This doc-ument describes the language accepted by this processor. Extensionswill be identified as such.

OPTIONS-l Define the standard math library.

-w Give warnings for extensions to POSIX bc.

-s Process exactly the POSIX bc language.

-q Do not print the normal GNU bc welcome.

-v Print the version number and copyright and quit.

--mathlibDefine the standard math library.

--warn Give warnings for extensions to POSIX bc.

--standardProcess exactly the POSIX bc language.

On se déplace dans le visualiseur avec ↑ , ↓ , ou bien � , � , ��� - � , ��� - � . Onquitte le visualiseur en tapant � .

��� �� ����� ���� !"#$

L’aide est très fournie sur XCAS.

➥ Il existe tout d’abord un index des commandes qui donne un rapide résumé des fonc-tionnalités. Par exemple, pour se rappeler la syntaxe de ����� , on tape limite puis

−−−→−−−→On obtient :

9

Page 24: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ���

➥ Pour une aide plus détaillée, on peut cliquer sur Détails si on avait déjà ouvert l’indexd’aide ; on peut y accéder directement en tapant � puis en indiquant la notion quinous intéresse dans la fenêtre.

➥ Pour une aide plus générale, il existe des manuels d’aide sur les grands sujets généraux.Par exemple, si on clique sur l’icône interface du menu d’Aide, on obtient le résumésuivant à la section... Aide :

Réponse du logiciel

LE MENU AIDECe menu contient les différentes formes d’aide possible.

* INTERFACE contient ce manuel, donc l’aide concernant l’interface de Xcas.

* MANUELS1. CALCUL FORMEL contient l’aide générale qui concerne toutes les fonctions

de calcul formel, de géométrie, de statistiques mais qui ne concerne pasles instructions de programmation, ni les instructions déplaçant la tortue.

10

Page 25: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������� �� ����

2. ALGORITHMES décrit une partie des mathématiques utilisées pour programmerun logiciel de calcul formel

3. GÉOMÉTRIE contient une aide plus détaillée pour certaines commandes carcette aide est illustrée par des exercices (mais on n’a pas toutes lesfonctions de géométrie !).

4. PROGRAMMATION contient une aide détaillée des instructions de program-mation. Dans cette partie vous trouverez l’écriture de plusieurs algori-thmes avec la traduction de ces algorithmes en langage Xcas MapleV MuPADTI89/92.

5. TABLEUR,STATISTIQUES contient une aide détaillée concernant le tableur etles fonctions de statistiques ainsi que leurs utilisations dans le tableur.

6. TORTUE contient l’aide concernant les instructions qui sont utiliséesdans l’écran de dessin Tortue. Dans cette partie vous trouverez plusieursactivités que l’on peut faire avec des enfants (du CP au CM2) dans le butde leur faire faire des mathématiques.

7. AMUSEMENTS contient de nombreux exercices mathématiques originaux traitésavec XCAS.

* INTERNET1. FORUM permet d’accéder à un forum de discussion.2. SITE LYCÉE G. CONNAN renvoie vers un site merveilleux...3. RESSOURCES BAC S renvoie vers les sujets de l’épreuve expérimentale du

Bac S.4. RESSOURCES AGRÉGATION renvoie vers les thèmes utiles aux agrégatifs.5. METTRE À JOUR L’AIDE permet de mettre l’aide à jour.

* INDEX donne toutes les commandes utilisables classées par ordre alphabétique avecune ligne d’entrée qui permet de se déplacer facilement dans cette liste :il suffit de taper le début d’un nom dans cette ligne pour avoir le curseurà cet endroit dans la liste, vous pouvez ainsi aller directement à unelettre ou à une commande.

En cliquant sur l’une de ces commandes, vous avez une aide succincte quis’affiche dans le bandeau général à l’endroit des messages, des exemples quel’on peut copier en cliquant sur l’un d’eux et le nom des commandes proches oudes synonymes.

Pour avoir une aide plus complète, cliquez sur le bouton Détails L’aide s’affichesoit dans un navigateur (par défaut Mozilla sous Linux, Internet Explorer sousWindows), soit dans une fenêtre à part. Sous Linux, il est commode d’ouvrirMozilla et de l’icônifier pour pouvoir ouvrir cette aide lorsque cela est néces-saire. Vous pouvez aussi taper ?nom_de_commande pour avoir en réponse l’aidesuccincte sur cette commande.

Notez qu’en tapant sur le bouton bleu ? situé en bas à gauche dans le bandeaugénéral, on ouvre l’Index et, notez aussi qu’en tapant le début d’une commandedans une ligne de commandes puis sur la touche de tabulation ou sur le boutonbleu ?, on ouvre l’Index à la commande commençant par ce début.

* TROUVE recherche le mot demandé dans toutes les pages du manuel Calcul formel.

Tout est dit...

11

Page 26: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 27: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Communication

Logiciel(s) abordé(s) : Bc GnuPlot Gp Maxima Octave Scilab XCASYacas

Problématique : Mettre en forme les productions des logiciels. Fairecommuniquer les logiciels entre eux.

��� " ������� ���� �� � ������ �� ������

�� �� ��� � �� ���� �

En notation scientifique, les nombres apparaisent sous la forme suivante, et ils sont à saisirde même :

-1.23456e-7

représente le nombre −1,23456 ·10−7 dans plusieurs logiciels. Le symbole de la partie expo-nentielle varie suivant les logiciels.

��� �� Notation scientifique

logicielssymboles acceptés pour lapartie exponentielle

Bc Yacas

Gp GnuPlot XCAS e,E

Maxima Scilab Octave d,D,e,E

�� ����� �� ��� ������ �� �����

La plupart des logiciels de calcul obéissent à une ligne de commande que l’utilisateur saisitavec le clavier. La commande n’est exécutée que quand on appuie sur la touche ��� � .

Éditer une commande, c’est modifier la ligne que l’on est en train de saisir.

Certains logiciels présentent des facilités dans ce domaine.La plupart accepte d’effacer le caractère à gauche du curseur quand on appuie sur la touched’effaçage vers la gauche.

Page 28: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

Dans certains logiciels, en utilisant les flèches du clavier, on peut rappeler une commandeprécédente.Des raccourcis-clavier autrefois introduits dans l’interpréteur de commandeC-shell ou l’édi-teur de textes Emacs, et maintenant devenus habituels, sont parfois repris :

➥ ���� - � pour effacer toute la ligne,

➥ ���� - � pour effacer le reste de la ligne à droite du curseur,

➥ ���� - � pour placer le curseur en début de ligne,

➥ ���� - pour placer le curseur en fin de ligne,

➥ ���� - � pour effacer le caractère à droite du curseur

et caetera.L’effet de ces commandes peut varier d’un logiciel à l’autre : il est recommandé de faire desessais.Ces commandes sont tellement pratiques qu’il serait dommage de s’en passer.

Beaucoup de logiciels sont sensibles à la hauteur de casse : dans le logiciel Scilab, l’instruc-tion

���(1)

fonctionne mais l’instruction

Sin(1)

ne fonctionne pas.

�� ��� �� �� �� �� ������ �� �� ��� ��� ������

Pour utiliser le résultat obtenu dans un logiciel comme entrée dans un autre, comme dans lasection a. page 29, il faut que la mise en forme du résultat soit compatible avec la saisie desinstructions.La ligne de commande permet de modifier à la volée les différences mineures de notationd’un logiciel à l’autre.En copier-coller à la souris, on peut utiliser l’étape intermédiaire d’un éditeur de texte pournettoyer l’instruction.En demandant aux logiciels d’écrire et de lire dans un fichier, il est possible d’utiliser des édi-teurs de texte automatisés tels que sed, awk, Perl. . .

��� � Mise en forme du résultat

opérationLogiciel

obtenir la sortie auformat de l’entrée

exempleobtenir la sortie auformat enjolivé

exemple

Scilab �������

x=��(0,’x’)p=xˆ2+1�������(p)

il n’y a rien à faire

Maxima �� ���������� �;xˆ2+1;�� ���������� ��

xˆ2+1;�� �����������;

xˆ2+1;�� �����������;xˆ2+1;

14

Page 29: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

��� � Mise en forme du résultat

opérationLogiciel

obtenir la sortie auformat de l’entrée

exempleobtenir la sortie auformat enjolivé

exemple

Gp il n’y a rien à faire il n’y a rien à faire

Yacas il n’y a rien à faire ��������� PrettyForm(%)

XCAS il n’y a rien à faire il n’y a rien à faire

���� � Chaînes de caractères et instructions

Voici un exemple (Figure 2.2) d’aller-et-retour entre les chaînes de caractères et les instruc-tions dans Scilab.

��� ������ �� ��� � %����� ���� �� � ������ ��&% ���%'�� ��()!

�� ����� �� �� ������ ��� � ��

Il est possible de demander à XCAS de calculer à partir d’un fichierLATEX. Pour cela, il faut com-mencer par indiquer à LATEX qu’on l’autorise à exécuter des tâches externes en modifiant lefichier ( ou l’équivalent sur des systèmes non libres ) /usr/share/texmf/web2c/texmf.cnf.Il suffit d’y remplacer shell_escape=f par shell_escape= t.

15

Page 30: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

Une manière moins drastique est de spécifier à son éditeur ( Kile, TeXmaker...) de compilerle fichier avec l’option shell_escape :

latex --shell-escape fichier.tex

Si on travaille sous Emacs avec AucTeX, il suffit de rajouter à la toute fin du fichier :

%%% L o c a l V a r i a b l e s :

%%% mo d e : l a t e x −− s h e l l − e s c a p e

%%% T e X − m a s t e r : t

%%% E n d :

Ensuite, voici le code LATEX à placer en préambule :

\���� �������[12pt]{article}\�� ������ {fancyvrb}

\��� ��� �� �%c o m m a n d e p o u r f a i r e a p p e l à g i a c

\� �������{\executGiac}[1]{\��� ��� \���� 18{giac <#1 } }\��� ����� �

Remplacer \write18{giac <#1}} par \write18{giac #1}} sur WindowsMicrosoft.

Cette commande permet de s’échapper ( escape... ) momentanément de LATEX pour exécuterune commande externe dans le Shell. Ici, nous appelons giac qui correspond à XCAS enmode texte.Ensuite, il faut créer un script qui sera lu par giac dans son langage.L’environnement � ���������de l’extension ��������permet de placer un script dans unfichier mis en argument, ici Xcass.in :

\� ���{VerbatimOut}{Xcass.��}���� �� (0);Sortie:���� �("xcass.tex");� �("xcass.out");��������(���());Resultat:����(��� (���()[0]));������(Sortie,������ ,Resultat);����� (Sortie);\ �{VerbatimOut}

Nous utilisons ensuite des commandes propres à giac et donc XCAS :

16

Page 31: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

➥ ��� �(nom fichier) qui créer un fichier ;

➥ � �("fichier externe") qui charge un fichier externe;

➥ ��� (commande ou sortie) qui transforme en code LATEX une commande ou un ré-sultat affiché dans XCAS ;

➥ ������(fichier,Unquoted,cible) qui écrit cible sans guillemets dans fichier ;

➥ ����� (nom fichier) qui ferme le fichier.

On crée ensuite un nouvel environnement LATEX qu’on appellera Xcass pour faciliter la saisie.On utilise à nouveau l’environnement VerbatimOut, mais cette fois-ci nous devons spécifierl’option \� �������������� ��pour expliquer à LATEX qu’il s’agit d’un environnement enmode Verbatim :

\� � ������� ��{Xcass}{\� �������������� ��\� ���{VerbatimOut}{xcass.out}}{\ �{VerbatimOut}

\executGiac{Xcass.in}\[\�����{xcass}\]}

On peut maintenant faire des essais :

\� ���{document}

\� ���{Xcass}simplify(1-8*ln(sqrt(1/e))+sqrt(2)+1/2);\ �{Xcass}

\� ���{Xcass}solve(sin(x)�1/2,x)\ �{Xcass}

\� ���{Xcass}desolve([y’+y�sin(x),y(0)�2],y)[0];\ �{Xcass}

\ �{document}

et on remarque que seuls les résultats des commandes sont affichés :

cos (x)+ sin (x)

cos (x)+ sin (x)

cos (x)+ sin (x)

Réponse du logiciel

17

Page 32: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

�� ����� �� �� � ��� � ��!�"�� �� � ��

On peut procéder de la même manière pour obtenir des sorties graphiques produites parXCAS.Il faut donc maintenant placer ces commandes dans le préambule du fichier LATEX.Pour exécuter un programme giac :

\��� ��� �� �\� � �������{\executGiac}[1]{\��� ��� \���� 18{giac <#1 } }\��� ����� �

Pour une sortie de calcul :

\� ���{VerbatimOut}{Xcass.in}maple_mode(0);Sortie:�fopen("xcass.tex");read("xcass.out");Resultat:�cat(latex(ans()[0]));fprint(Sortie,Unquoted,Resultat);fclose(Sortie);\ �{VerbatimOut}

Pour une sortie graphique :

\� ���{VerbatimOut}{xcasf.in}Sortie:�fopen("xcasf.tex");courbe:�read("xcasf.out"):;Resultat:�cat(latex(courbe));fprint(Sortie,Unquoted,Resultat);fclose(Sortie);\ �{VerbatimOut}

Sortie en mode maths :

\� � ������� ��{xcass}{\� �������������� ��\� ���{VerbatimOut}{xcass.out}}{\ �{VerbatimOut}

\executGiac{Xcass.in}�\�����{xcass}�\ }

Sortie en mode maths centré :

\� � ������� ��{Xcass}{\� �������������� ��\� ���{VerbatimOut}{xcass.out}}{\ �{VerbatimOut}

\executGiac{Xcass.in}\[\�����{xcass}\]}

Sortie en mode graphique :

18

Page 33: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

\� � ������� ��{xcasf}{\� �������������� ��\� ���{VerbatimOut}{xcasf.out}}{\ �{VerbatimOut}

\executGiac{xcasf.in}\�����{xcasf}}

Il ne reste plus qu’à faire appel à cet environnement à l’intérieur d’un fichier LATEX :

La solution de l’équation différentielle �y"+y�0� avec les conditionsparticulières �y(0)�y’(0)�1�

est fournie par \Prog{XCAS} grâce à la commande \Com{XCAS}{desolve}. Il s’agit de la fonction

définie par~:

\� ���{Xcass}desolve([y’’+y�0,y(0)�1,y’(0)�1],y)[0];\ �{Xcass}

Nous obtenons également son graphe grâce à la commande \Com{XCAS}{plot}~:

\� ���{xcasf}plot(desolve([y’’+y�0,y(0)�1,y’(0)�1],y)[0],x�-Pi��Pi,color�blue);\ �{xcasf}

qui donne :

19

Page 34: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

La solution de l’équation différentielle y" + y = 0 avec les conditions particulièresy(0) = y ′(0) = 1 est fournie par XCAS grâce à la commande ���� . Il s’agit de lafonction définie par :

cos (x)+ sin (x)

Nous obtenons également son graphe grâce à la commande ���� :

courbe

Réponse du logiciel

�� ����� �� #������

Pour insérer une figure produite par GnuPlotdans un fichierLATEX, rien de plus simple. Il suffittout d’abord d’installer l’extension gnuplottexa .Plusieurs possibilités s’offrent alors à nous :

➥ on insère directement le graphique dans le texte :

Du texte présentant ce graphique~:

\� ���{gnuplot}[scale�1.1]set hidden3dset isosamples 10,10r(x,y)�sqrt(x**2+y**2)f(x,y)�sin(r(x,y))/r(x,y)splot f(x,y)

\ �{gnuplot}

et du texte après.

ce qui donne :

aDisponible sur CTAN : http://tug.ctan.org/tex-archive/macros/latex/contrib/gnuplottex/

20

Page 35: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

Du texte présentant ce graphique :

-10-5

05

10 -10-5

05

10-0.4-0.2

00.20.40.60.8

1

f(x,y)

et du texte après.

Réponse du logiciel

���� �� Compilation directe de la figure GnuPlot

Le problème, c’est que cette méthode « fatigue » très vite la mémoire de LATEX et qu’onne peut pas demander de trop gros calculs à GnuPlot et donc à LATEX.

Ainsi, le dessin produit est peu précis car on ne peut dépasser les valeurs 10 et 10 pour�������� �

➥ Mieux vaut donc passer par l’intermédiaire d’un fichier eps pour laisser LATEX en dehorsdes calculs. On inclut le graphique avec \����� �������� :

\begin{gnuplot}� � � ������ ���������� �� �����

� � ������ ’tempgnu.eps’� � �� ��

� � �������� � 100,100r(x,y)�����(x**2+y**2)f(x,y)����(r(x,y))/r(x,y)����� f(x,y)� � ������

# A p p e l É V E N T U E L à e p s t o p d f p o u r t r a n s f o r m e r l e f i c h i e r e p s e n p d f

s i v o u s t r a v a i l l e z a v e c p d f L a T e X .

epstopdf --outfile�tempgnu_eps.pdf tempgnu. ������

\end{gnuplot}

Du texte présentant ce graphique~:

\includegraphics{tempgnu. ��}

et du texte après.

21

Page 36: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

Du texte présentant ce graphique :f(x,y)

-10-5

0 5

10-10

-5

0

5

10

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

et du texte après.

Réponse du logiciel

���� � Inclusion de la sortie eps produite par GnuPlot

➥ On peut également utiliser MetaPOST : cela économise aussi la mémoire LATEX et permetéventuellement de changer le style de figure en retouchant le fichier .mp :

\begin{gnuplot}� � � ������ mp �����

� � ������ ’tempgnu.mp’� � �� ��

� � �������� � 100,100r(x,y)�����(x**2+y**2)f(x,y)����(r(x,y))/r(x,y)����� f(x,y)

� � ������

# A p p e l e x t é r i e u r p o u r c o m p i l e r l e f i c h i e r m e t a p o s t

mpost tempgnu.mp# A p p e l É V E N T U E L à m p t o p d f p o u r t r a n s f o r m e r l e f i c h i e r p r o d u i t p a r

M e t a P O S T e n p d f s i v o u s t r a v a i l l e z a v e c p d f L a T e X .

mptopdf tempgnu.0����

\end{gnuplot}

\includegraphics{tempgnu.0}

ce qui donne :

22

Page 37: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

Du texte présentant ce graphique :f(x,y)

-10-5

05

10 -10-5

05

10-0.4-0.2

00.20.40.60.8

1

et du texte après.

Réponse du logiciel

���� �� Inclusion de la sortie produite par MetaPOST

�� ������ $�% #������ �� �����

Une possibilité extraordinaire des logiciels libres est de pouvoir faire travailler ensemble plu-sieurs logiciels pour utiliser au mieux chacun dans le domaine où il excelle.Nous allons dans cet exempleb illustrer la convergence de la suite de terme général un =(1− 1

n

)vers 1

e .Partageons les tâches :

➥ Bc va se charger des calculs ;

➥ GnuPlot va se charger de l’illustration ;

➥ LATEX va se charger de la mise en forme des résultats.

Commençons par créer des commandes pour faire exécuter des commandes en dehors deLATEX.D’abord pour Bc :

\��� ��� �� �\� �������{\executBC}[2]{

\��� ��� \���� 18{bc -q -l #1> #2 }}% # 1 f i c h i e r c o n t e n a n t l e s c o m m a n d e d e b c

% # 2 f i c h i e r c o n t e n a n t l e s r é s u l t a t s d e s c a l c u l s

Ensuite pour GnuPlot :

\� �������{\ExecuteGnuPlot}[1]{\��� ��� \���� 18{gnuplot #1} }\��� ����� �

bMerci beaucoup à Dariush GHORBANZADEHhttp://www.cnam.fr/maths/Membres/ghorbanzadeh/

23

Page 38: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

Rentrons maintenant un script Bc qui va créer une liste de valeurs de la suite (un) :

\begin{VerbatimOut}{bcK.bc} ��� somme (n) {���� i,j ;/ * p o u r b c l e s i n d i c e s d é m a r r e n t à 0 * /

��� ( i �0; i <�n; i !!) {x[i]� (1-1/(i+1))^(i+1); / * c a l c u l e ( 1 − 1 / n ) ^ n * /

}��� ( j �0; j <�n-1; j !!) {����� j+1, " ", x[j] , "\n" ;} / * o n c r é e l e s l a b e l s * /

����� n+1, " ", x[n] ;}���� � 6 ; / * 6 c h i f f r e s a p r è s l a v i r g u l e * /

� �� � somme(199); / * 2 0 0 v a l e u r s * /

����

\end{VerbatimOut}

On lance ensuite l’exécution par Bc :

\executBC{bcK.bc}{donnes.dat}

On va ensuire inclure les données calculées par Bc au format attendu par GnuPlot dans lefichier fich.gnu :

\begin{VerbatimOut}{fich.gnu}� � ��� � 1 "exp(-1)�0.3679 " at ����� -0.22, .99, 0.5 � �� ������� back

� ������ lt 3 ������� # On p l a c e e x p ( − 1 ) comme l a b e l a u b o n

e n d r o i t

� � ���� [1:200]� � ����� [0.245:0.37]���� ’donnes.dat’ ����� 1:2 ���� ’’ ��� ��� 4 # p a s d e t i t r e p u i s q u ’ i l

y a u r a l a l é g e n d e L a T e X

� � ��� � 3� � ��� � ’n’ # l a b e l d e s a b s c i s s e s

� � ���� � ’approximation de (1-1/n)^n’ # l a b e l d e s o r d o n n é e s

# i m a g e e n f o r m a t e p s

� � � �� ���������� �� �����

� � out ’fich1.eps’� � ��" 0.8, 0.8� ����

# e x p ( − 1 )� 0 . 3 6 7 9

���� �(-1) ���� ’’ ��� ��� 3 ��

\end{VerbatimOut}

On exécute le fichier fich.gnu dans GnuPlot :

\ExecuteGnuPlot{fich.gnu}

24

Page 39: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������ ��� ������� ��������� �� �� ���� ��� �� ���������� �����

Enfin, on inclut la figure dans le texte :

Voici une illustration expérimentale de la convergence de la suite determe général

$u_n�\� ��(1-\����{1}{n}\�����)^n$ vers $\����{1}{e}$~:\� ���{center}\����� ��������{fich1.eps}\ �{center}On a calculé les 200 premiers termes de la suite. On s’aperçoit que la

convergence est assez rapide.

Ce qui donne :

Voici une illustration expérimentale de la convergence de la suite de terme généralun = (

1− 1n

)nvers 1

e :

0.26

0.28

0.3

0.32

0.34

0.36

20 40 60 80 100 120 140 160 180 200

appr

oxim

atio

n de

(1-

1/n)

^n

n

exp(-1)=0.3679

0.26

0.28

0.3

0.32

0.34

0.36

20 40 60 80 100 120 140 160 180 200

appr

oxim

atio

n de

(1-

1/n)

^n

n

exp(-1)=0.3679

On a calculé les 200 premiers termes de la suite. On s’aperçoit que la convergence estassez rapide.

Réponse du logiciel

���� �� Illustration de limn→∞

(1− 1

n

)n = e−1 avec bc,

GnuPlot et LATEX

25

Page 40: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

De jolis graphiques avec LATEX

Appeler GnuPlot n’est certes pas la seule manière d’insérer des graphiques dans unfichier LATEX.Cela peut même poser des problèmes de cohérence des polices (qui peut se régleren préférant un export MetaPOST par exemple).Il existe en fait des programmes spécialement conçus pour effectuer de magni-fiques dessins en totale cohérence avecLATEX : il s’agit entre autres de PStricks (quiconsiste en fait en une série d’extensions LATEX), de MetaPOST et de Tikz principa-lement. Il créent de magnifiques dessins mais sont limités en capacités de calculdans des cas particuliers d’étude de courbes ou de surfaces. Un nouveau venu joueles trouble-fête depuis peu, Asymptote, qui allie les capacités « esthétiques » de ses« concurrents » avec la puissance de calcul du C++.Pour information, les dessins du présent ouvrage qui ne sont pas produits par deslogiciels de calcul sont créés en MetaPOST, comme les figures des pages 220, 264,193 ou 195 par exemple.

��� *����� �� � ������ �� ������ ���� (�! ��

Le logiciel TeXmacs permet de créer des documents « à la LATEX », mais en « wysiwyg »c. Dansle cas qui nous occupe, il permet également d’insérer dans le texte des sessions de certainslogiciels : giac/XCAS, Maxima, MuPAD, Yacas, PARI/Gp, GnuPlot, Shell,...On peut ensuite exporter le document obtenu au format pdf, ps, html, LATEX.

AVEC XCASVoici un exemple de session XCAS : on l’appelle en cliquant sur Insérer->Session->giac> int(sqrt(1-x^2),x,0,1)14 ×π

La commande s’affiche en bleu et le résultat en noir avec de belles polices. Notezqu’un menu giac apparaît avec les principales commandes.

AVEC MAXIMA

Il en va de même avec Maxima :(%i1) integrate(sqrt(1-x^2),x,0,1)(%o1) π

4

Réponse du logiciel

cWhat You See Is What You Get

26

Page 41: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ������� ��� ���� ���� �� � !� � ���� ��"�� ��!� �� �

On peut également obtenir une sortie graphique avec GnuPlot :

Réponse du logiciel

Il faut toutefois noter que TeXmacs est gourmand en mémoire et provoque des crashs inopi-nés. L’export LATEX n’est pas optimum.Il peut cependant rendre de bons services lorsqu’il s’agit de créer une feuille de TD utilisantl’un des logiciels implantés.

��� *����� �� � ������ �� ������ �� �� �+� �) ��

Plutôt que d’utiliser les éditeurs livrés avec les logiciels (quand il y en a), on peut préférerrester à l’intérieur de son éditeur préféré, Emacs, qui possède des modes permettant d’ouvrir

27

Page 42: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

des sessions XCAS ( en fait giac ), Maxima, MuPAD, Yacas...

Par exemple, pour utiliser Maxima sous Emacs on installe maxima-emacs.el. Les heureux uti-lisateurs de distributions Debian ou Ubuntu peuvent par exemple lancer dans un Shell enmode super-utilisateur :

apt-get install maxima-emacs

Pour XCAS, on installera mupacs.el et on regardera l’aide sur le site XCAS.

Une session XCAS sous Emacs ressemble donc à ça :

Giac CAS for mupacs, released under the GPL license 2.0| (c) 2007 B. Parisse & al (giac), F.Maltey & al (mupacs) |>> TEXTWIDTH:=148:// :2: syntax error, unexpected T_END_INPUT at end of input148:undef

>> int(ln(x),x,1,e) ;1>> nextprime(1234894343132) ;1234894343159>> A:=[[1,2],[3,4]] ;[[1,2],[3,4]]>> A^2 ;[[7,10],[15,22]]>> eigenvals(A) ;(-sqrt(33)+5)/2,(sqrt(33)+5)/2>>

Réponse du logiciel

Il ne faut pas s’occuper des 5 premières lignes.

Pour éditer une saisie précédente, on tape ���� - ↑ .

Pour Maxima, cela donne :

28

Page 43: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��#� $��� ���!�%!�� ��!" ���� ���� �� � !�

Maxima restarted.(%i1) S(x):=1/(x^3+x^2+x+1);

1(%o1) S(x) := ---------------

3 2x + x + x + 1

(%i2) partfrac(S(x),x);

1 x - 1(%o2) --------- - ----------

2 (x + 1) 22 (x + 1)

Réponse du logiciel

��, -���� � ������� ���+ � ������ �� ������

C’est nécessaire quand on a besoin à la fois de calcul formel et de calcul numérique sophisti-qué. En général quand on utilise simultanément deux domaines des mathématiques éloignés,chacun des deux étant traité par deux logiciels distincts, il est nécessaire de les faire commu-niquer.

�� �� ����� &����� ' �� �� �

La souris est utilisable aussi sans environnement graphique (sous UNIX). Les résultats doiventêtre au même format que les instructions (voir la section c. page 14) dans la mesure où lesinstructions voulues coïncident entre les deux logiciels ! Pour changer commodément les hau-teur de casse d’une chaîne de caractères, on pourra passer par l’intermédiaire d’un éditeur detexte comme Emacs.

�� ������������ �� �� (�!��

Beaucoup de logiciels fournissent des instructions pour lire ou écrire des données dans unfichier texte. En écrivant le résultat obtenu par un logiciel dans un fichier, et en lisant ce fichieravec un autre logiciel, on réalise une communication entre logiciels.

�� ����� ' �)���� � ���� �� �������� �� *�+�� ,!���-

L’interpréteur de commande des systèmes UNIX est particulièrement adapté à la communi-cation entre les logiciels grâce au tubage de processus. Certains logiciels de calcul présentent

29

Page 44: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ����������

des commandes pour faire exécuter des instructions par le Shell.Par exemple Scilab fournit la commande ��� �. L’instruction :

��� �(’ls’)

fonctionne souvent mieux que la commande interne �� sur certains systèmes. On peut aussiaugmenter la précision du calcul. . . unix_w("echo ’’4*a(1)’’ | bc -l")

��� �("echo ’’4*a(1)’’ | bc -l")

Il faut noter la manière dont les apostrophes sont protégées ici.

�� .� ��� ����� / �� ������ �� �!�0�� �� �� ���+ �

Pour fabriquer des noms de fichiers où écrire, pour fabriquer des instructions GnuPlot (parexemple) à placer dans un fichier, pour utiliser ce qui précède en général, il est pratique demanipuler les chaînes de caractères dans le logiciel de calcul. Par exemple dans Scilab :

un="echo ’’"deux="*a(1)’’ | bc -l"x=12y=3z=������(x/y)chaine=[’#/bin/sh’;un+z+deux;’exit 0’]instr="date +%d:%m:%Y-%H:%M:%S"D=��� �(instr);nom=’essai’+D+’�sh’���� (nom,chaine)��� �(’sh ’+nom)

Pour inclure la date et l’heure dans le nom du script, on utilise l’instruction ��� �.

��. �� ��� �� � ���������

Des fichiers spéciaux qui ne sont pas des fichiers réguliers sont bien utiles : les entrées-sortiesstandard. On les obtient par les variables #��$%& ; #��$'& dans Scilab; elles peuvent êtreutilisées dans un script Shell par exemple par la commande � �.L’intérêt n’est pas que cosmétique : quand on veut tester beaucoup de paramètres différentspour un calcul donné cela fait gagner beaucoup de temps !

30

Page 45: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

La programmation

Logiciel(s) abordé(s) : MuPAD Scilab XCAS

Problématique : Description des techniques de contrôle de flux dansles instructions et de quelques astuces.

��� #��� !"#$

�� �� � ����� �

La syntaxe est proche de celle du langage C++ :a

Nom_de_la_procedure(variables):�{��.le programme proprement dit��.}

On commence par ouvrir une session programme en tapant simultanément sur ��� et � oupar le menu Edit->Ajouter->Programme.On accède ainsi à l’éditeur de programme. On rentre :

double(x):�{� ����(2*x)}

On clique sur OK pour vérifier si tout va bien. Normalement, on obtient un message encoura-geant :

Réponse du logiciel

Success// Success compiling double

Dans une session de calcul, on rentre alors

aXCAS est écrit en C++, ce qui le rend beaucoup plus maniable et rapide : il peut être facilement exécuté par un autreprogramme et est donc directement compilé par les librairies C++ de l’ordinateur, sans passer par un noyau proprecomme MuPAD ou MAPLE.

Page 46: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �� �����������

double(37)

et on obtient le résultat escompté...

On peut rendre le résultat plus convivial :

double(x):�{� ���� "Le double de "+x+" est "+ 2*x}

On concatène ainsi des chaînes avec un « + ».

�� ��

La syntaxe suit le même principe :

p:�1; / / i n i t i a l i s a t i o n

���( k:�1; k<�7; k:�k+1){ / / k v a r i a n t d e 1 à 7 a v e c un p a s d e 1

p:�p*k; / / p d e v i e n t p * k e t o n r e c o m m e n c e

}

On calcule ainsi 7 !

On aurait pu remplacer l’incrémentation k:=k+1 par l’écriture équivalente k++, comme en...C++.

Mais pour incrémenter d’une valeur différente de 1, on utilise k:=k+incr

Il ne faut pas utiliser i comme variable locale car i est un complexe !

On aurait pu écrire une procédure pour faire plus joli :

factofor(n):�{����� k,p; / / o n i n t r o d u i t d e u x v a r i a b l e s i n t e r n e s a u p r o g r a m m e

p:�1;���( k:�1; k<�n; k:�k+1){p:�p*k;}� ���� n+" �"+p;}

32

Page 47: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&��� ��� ����

Le résultat est certes plus lisible avec la « décoration » du point d’exclamation, maiscela le rend aussi inutilisable par la suite en tant que résultat à l’intérieur d’un autrecalcul.On pourra donc être amené à remplacer return n+"! ="+p; par return p;

�� 1!���

Reprenons le calcul précédent avec un test d’arrêt tant que :

p:�1; k:�1;���� ( k<7){k:�k+1; p:�p*k;}

Ou, sous forme de procédure :

factowhile(n):�{����� k,p;p:�1;k:�1;���� ( k<�n){p:�p*k;k:�k+1;}� ���� p;}

�� ��

On ne change pas une équipe qui gagne :

factif(n):�{�� (n��0) � ���� 1;� ���� n*factif(n-1);

}

et en plus on voit une procédure récursive.

�� ����%������� �� �!�0��

Il faut bien distinguer

➥ les ensembles (set) qui sont des collections « non classées » d’expressions toutes diffé-rentes séparées par des virgules et encadrées par des accolades précédées de % ou bienentre crochets précédés de � �

33

Page 48: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �� �����������

ens1:�� �[2,4,1]; ens2:�%{2,5,8,5%}

On peut effectuer les opérations usuelles sur les ensembles

ens1 ��� �� �� ens2; ens1 ����� ens2; ens1 ����� ens2;

l’ensemble vide se note

� �[]%{%}

➥ les suites (sequence) qui sont des collections « classées » d’expressions (c’est-à-direavec des éléments d’indice 0, 1, etc.), différentes ou non, séparées par des virgules etencadrées ou non par des parenthèses.

s:�5,7,5,1,2,3

On peut aussi utiliser les opérateurs � � et $ pour des suites définies par une formuleexplicite

� �(k^2,k�1��5)(p^2)�(p�1��5)m�5

➥ les listes (l i st ) qui sont des collections classées d’expressions séparées par des virguleset encadrées par des crochets. La différence, c’est que l’on peut avoir des listes de listeset si une instruction a plusieurs arguments, une suite ne peut pas être l’un de ces argu-ments.

Notez au passage quelques fonctions utiles :

s1:�(j)�(j�-2��2); s2:�a,b,c,d,f;��" (s2); / / s i z e comme t a i l l e �� .

s2[0];s2[1��4];s3:�(s1,s2); / / l e s s u i t e s s e c o n c a t è n e n t n a t u r e l l e m e n t

L1:�[s1]; L2:�[s2]; / / u n e l i s t e e s t u n e s u i t e e n t r e c r o c h e t s

��" (L2); / / n o m b r e d ’ o p é r a n d e s

L2[3]; L2[0]; / / n o t e z b i e n q u e l e p r e m i e r o p é r a n d e p o r t e l e

n u m é r o 0

L2[2��4]������(L1,L2)� � �� (x->x>0,L1); � ��� (x->x<0,L1);������(L1,2�32); ������(L2,’3�(�))’); / / p o u r s u b s t i t u e r o u

s u p p r i m e r un o p é r a n d e

���(L2,���);"��((x,y)->x*y,L1,L2);

➥ les chaînes de caractères (str i ng ) sont des juxtapositions de caractères qui ne sont pasévaluées par XCAS si ce n’est en tant que simple sigle « muet ». On place les éléments dela chaines entre guillemets "".

34

Page 49: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&��� ��� ����

C:�"è-&èçé_eàhdslqjbch123+4/*5-6*���^"

On concatène les chaînes avec l’opérateur + :

D:�"tralala"; F:�", pouet pouet "G:�D+F

mid(C,5,2) renvoie une partie de la chaîne C de longueur 2 à partir du 6e caractère :

��(C,5,2)

Pour XCAS, comme pour les mathématiciens, le premier entier naturel est 0.

Pour des utilisations particulières, je vous renvoie à l’aide. Voici par exemple un petitprogramme qui transforme un nombre entier en une chaîne de lettres : on groupe leschiffres deux par deux puis on traduit le nombre obtenu en lettreb en utilisant son codeASCII. Ce programme sert en particulier pour le décodage RSA.

alph(n):�{ / / o n r e n t r e un e n t i e r n

����� l,L;L:�[];l:����(n); / / L e s t u n e l i s t e , c a t t r a n s f o r m e n e n l a

c h a î n e f o r m é e d e s e s c h i f f r e s

��� (k:�0;k<��" (l);k:�k+2){L:�������(L, ��(��(l,k,2))) / / e x p r t r a n s f o r m e u n e c h a î n e e n

n o m b r e

}� ���� ����(L); / / l a l i s t e d e n o m b r e s e s t t r a n s f o r m é e e n

l e t t r e s s e l o n l e s c o d e s A S C I I

}

Ou bien un autre qui écrit en majuscules un mot rentré en minuscules :

majuscule(c):�{C:�""; / / l a f u t u r e c h a î n e m a j u s c u l e , v i d e a u d é p a r t

���(j:�0;j<��" (c);j++){C:�C+����( ���(c[j])-32 )} ;}

Notez que **����� ++(r)envoie la liste des codes ASCII des caractères de la chaîne et����(liste) fait l’inverse. Voir aussi la section f. page 86.

bEn ASCII, les majuscules ne sont codées que par des nombres de deux chiffres.

35

Page 50: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �� �����������

Connaissez-vous le code ASCII ?

La mémoire de l’ordinateur conserve toute donnée sous forme numérique. Pourcoder chaque touche du clavier, on utilise depuis les années 60 le code ASCII (Ame-rican Standard Code for Information Interchange).On dit que c’est un code 7 bits, c’est-à-dire que chaque caractère est codé par uneliste de 7 chiffres égaux à 0 ou 1 : combien de caractères différents peut-on ainsicoder ?...Par exemple les codes 65 à 90 représentent les majuscules, les codes 97 à 122 repré-sentent les minuscules, dans le même ordre. Il suffit donc de soustraire 32 au codede la minuscule pour obtenir la majuscule correspondante.Une fonction XCAS donne ces nombres : ���(“caractère”) et ����([liste denombres]) effectue l’opération réciproque.

�� � �� �������� �� � ��2��

XCAS offre la possibilité d’utiliser les instructions précédentes traduites en français.

����

Les boucles for deviennent des boucles ����, avec la même syntaxe qu’en anglais ou bienavec une syntaxe différente :

s:�0;���� j de 2*1-1 ,���� 2*6-1 ��� 2 ���� s:�s+j;�����;

donne la somme des six premiers entiers naturels impairs.

�����

Les boucles while deviennent des boucles ������ , avec la même syntaxe qu’en anglais oubien avec une syntaxe différente :

k:�1;������ 6^k%11 �1%11 ���� k:�k+1; ������� ;

donne le premier entier naturel non nul k tel que 6k ≡ 1[11].

Et c’est pareil avec �� au lieu de if :

test_syr(u):�{�� u%2�0%2 ����� u:�u/2;����� u:�3*u+1;

36

Page 51: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&��� ��� '!��(

���;}

Ce code effectue un petit test pour construire la suite de Syracuse.

Tortue XCAS : programmation pour petits et grands...

En tapant sur ��� + � on ouvre une fenêtre tortue pour permettre à de jeunesenfants de s’initier à la programmation en dessinant. Vous consulterez l’aide trèscomplète à ce sujet.Voici par exemple des instructions permettant de construire une petite frisegrecque :

n:�100;������ (n>0) ���� ����� n;����� ����� ;n:�n-10;�������

et on obtient :

��� #��� /��#0

�� �� � ����� �

La syntaxe générale:

Nom_de_la_procedure:�����(variables)� ���

���

le programme proprement dit

37

Page 52: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �� �����������

���

� ����

Par exemple

double:�����(x)� ���

2*x � ����

On valide. Normalement, on obtient un message encourageant :

���� double(x)��� �

On rentre alors

double(37)

et on obtient le résultat escompté...On peut rendre le résultat plus convivial :

double:�����(x)� ���

�����(������ , ��'� �(2*x)." est le double de ". ��'� �(n)); � ����

On concatène ainsi des chaînes avec un « . ».

�� ��

La syntaxe suit le même principe :

p:�1:��� k ���� 1 �� 7 �� � 1 �

p:�p*k � ���;

On calcule ainsi 7 !On aurait pu écrire une procédure pour faire plus joli :

factofor:�����(n)����� k,p;� ���

p:�1:��� k ���� 1 �� 7 �� � 1 �

p:�p*k � ���;

�����(������ , ��'� �(n)."!�". ��'� �(p)); � ����

38

Page 53: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&��� ��� '!��(

�� 1!���

Reprenons le calcul précédent avec un test d’arrêt tant que:

p:�1: k:�1:���� k<7 �

k:�k+1: p:�p*k � ���� :p;

Ou, sous forme de procédure :

factowhile:�����(n)����� k,p;� ���

p:�1; k:�1;���� k<7 �

k:�k+1: p:�p*k � ���� :

�����(������ , ��'� �(n)."!�". ��'� �(p)); � ����

�� ��

On ne change pas une équipe qui gagne :

factif:�����(n)� ���

�� n�0 �� � 1 ��

n*factif(n-1) � ��;

� ����:

qui est une procédure récursive.

�� ����% ������� �� �!�0��

C’est un peu le même principe que sous XCAS.

➥ les ensembles

ens1:�{2,4,1}; ens2:�{2,5,8,5};

On peut effectuer les opérations usuelles sur les ensembles

ens1 ��� �� �� ens2; ens1 ����� ens2; ens1 ����� ens2;

l’ensemble vide se note

{}

39

Page 54: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �� �����������

➥ les suites

5,7,5,1,2,3;

On peut aussi utiliser l’ opérateur $ pour des suites définies par une formule explicite :

p^2�p�1��5;m�5;

➥ les listesNotez quelques fonctions utiles :

s1:�i �i�-2��2; s2:�a,b,c,d,e;L1:�[s1]; L2:�[s2];����(L2); / / n o m b r e d ’ o p é r a n d e s

L2[3]; / / e x t r a i t l e 3 ème o p é r a n d e

L2[3��5];� � �� (L1,x->x>0)����(L2,b�32); ������(L1,2�z); ������(L2,5�����()); / / n u l l ( )

é t a n t l a l i s t e v i d e

���(L2,���);"��(L1,L2,(x,y)->x+y);L3:�L1.L2; / / p o u r c o n c a t é n e r

➥ les chaînes de caractères

C:�"è-&èçé_eàhdslqjbch123+4/*5-6*���^";K:�"tralala"; F:�", pouet pouet !"; H:�""G:�K.F.H

���������(C,5,2) renvoie une partie de la chaîne C de longueur 2 à partir du 6e ca-ractère :

���������("123456789",4, 2)

Pour des utilisations particulières, je vous renvoie à l’aide. Voici un petit programme quitransforme un nombre entier en une chaîne de lettres qui peut servir pour le décodageRSA.

alph:�����(n) / / o n r e n t r e un e n t i e r n

����� l,L;� ���

L:�[];l:� ��'� �(n); / / L e s t u n e l i s t e , l l a c h a î n e

f o r m é s d e s c h i f f r e s d e n

��� k ���� 0 �� � ����(l)-1 �� � 2 �

L:�L.[� �' ��(���������(l,k,2))] / / t e x t 2 e x p r t r a n s f o r m e

l a c h a î n e e n n o m b r e

� ���:������--����.����(L); / / l a l i s t e L e s t t r a n s f o r m é e e n c h a î n e d e

l e t t r e s

� ����:

40

Page 55: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&�&� ��� � ���

��� #��� $�����

Pour exécuter un fichier dans Scilab, on peut taper � nomDuFichier. Le logiciel Scilabn’aime pas les appels récursifs à des fichiers pour les exécuter dans des procédures : sa pilesature. Il vaut mieux tout placer dans des fonctions. On exécute les fichiers juste pour définirles fonctions, qui, elles, peuvent être appelées dans des procédures intriquées.Les instructions de contrôle de flux de Scilab sont décrites dans le chapitre Programming del’aide en ligne. La syntaxe n’a rien de surprenant. Voici une boucle qui stocke des nombresdans un tableau vertical, en affichant l’élément à chaque étape.

t�1:3T�[]��� i�t,���(i,’i�’);T�[T;i]; �

T

On construit maintenant une fonction test qui effectue différentes procédures suivant lesvaleurs de la variable. Il faut noter la manière dont sont protégées les apostrophes dans leschaînes de caractères. La première boucle �� est tout ordinaire.

�������� y�test(x)a�"C’’est l’’étape"b�’trois’y�x�� x��3 �� �

���(b,a) ; �

�� or([x��t]) �� � ; �� y�������(x)+" n’’appartient pas à t" �

���������

La seconde boucle �� permet de terminer la fonction rapidement si la variable x appartientau tableau t déja défini. Elle peut être écrite aussi bien

�� and([x~�t]) �� �

y�������(x)+" n’’appartient pas à t" �

Pour exploiter la fonction test, il suffit d’exécuter la boucle

��� i�[3*t t],test(i) �

Le logiciel Scilab travaille essentiellement avec des fonctions, des nombres réels en virguleflottante, des chaînes de caractères, des tableaux formés à partir de ces éléments, et des fonc-tions. En général, il n’y a pas à déclarer de types de variables.

41

Page 56: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 57: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Deuxième partie

CALCUL

Page 58: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 59: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Arithmétique

Logiciel(s) abordé(s) : Gp Yacas XCAS Scilab Octave Maxima BcGnuPlot

��� "����� �� %����� � ���������

�� ��� $�

Pour calculer π avec 1000 décimales, taper dans un terminal :

bc -�;

on obtient une réponse du genre :

Réponse du logiciel

bc 1.05Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type ‘warranty’.

Il suffit de taper

���� �1000

pour obtenir la précision voulue en ajustant la variable ���� , et

4*�(1)

pour obtenir le quadruple d’Arctan(1) :

Réponse du logiciel

3.141592653589793238462643383279502884197169399375105820974944592307\81640628620899862803482534211706798214808651328230664709384460955058\22317253594081284811174502841027019385211055596446229489549303819644\28810975665933446128475648233786783165271201909145648566923460348610\45432664821339360726024914127372458700660631558817488152092096282925\40917153643678925903600113305305488204665213841469519415116094330572\70365759591953092186117381932611793105118548074462379962749567351885\75272489122793818301194912983367336244065664308602139494639522473719\07021798609437027705392171762931767523846748184676694051320005681271\45263560827785771342757789609173637178721468440901224953430146549585\37105079227968925892354201995611212902196086403441815981362977477130\

Page 60: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ��������

99605187072113499999983729780499510597317328160963185950244594553469\08302642522308253344685035261931188171010003137838752886587533208381\42061717766914730359825349042875546873115956286388235378759375195778\18577805321712268066130019278766111959092164201988

Le temps de réponse est variable suivant les machines, et augmente fortement quand on aug-mente encore la précision.Le résultat est-il juste ?

�� ��� � ��

On règle la précision avec /����� ou /01023 qui doit être un nombre entre 1 et 1000

/�����:�1000:;4* ����(����(1))

Voir aussi 5.1 page 56.

�� ��� ��3���

On règle la précision avec ���� �, puis on utilise ������ :

���� � : 1000;������(4*atan(1));

�� ��� ��

La précision d’affichage est donnée ou fixée par l’instruction \�.

\p4�

4*����(1)\p 10004�

Le résultat est-il le même que pour Bc ?

�� ��� 4���

La précision des calculs approchés est donnée par l’instruction

1 �4� ������()

Pour obtenir ponctuellement des calculs en précision arbitraire, il suffit de le demander lorsdu calcul approché.

((4�,1000)

Pour basculer la valeur de la précision, taper

46

Page 61: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ����!�� �)����� �� *!����

4� ������(1000)((4�)

Pour revenir à la précision précédente, taper

4� ������(10)((1/4�)((4�)

Mais la précision maximale est conservée pour la valeur π.

��� )����� ����� ��� ���� �����

Le logiciel GnuPlot pose quelques problèmes avec des nombres trop grands ou trop petitscomme le montre la retranscription de session suivante :

gnuplot> ����� 2**(30)

Réponse du logiciel

1073741824

gnuplot> ����� 2**(31)

Réponse du logiciel

-2147483648

gnuplot> ����� 2**(32)

Réponse du logiciel

0

gnuplot> ����� 2**(-30)

Réponse du logiciel

9.31322574615479e-10

gnuplot> ����� 2**(-31)

Réponse du logiciel

-4.65661287307739e-10

47

Page 62: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ��������

gnuplot> ����� 2**(-32)

Réponse du logiciel

gnuplot> print 2**(-32)^

undefined value

Le logiciel répète la dernière instruction accompagnée d’un commentaire pour avouer sonimpuissance.

��� "'���� �� �� ��� ���� 1�

Le logiciel Bc détecte naturellement une entrée en base 16 avec la saisie des chiffres A, B, C, D,E. Le résultat par défaut est en base 10.Voici un exemple d’addition en base 16 avec le résultat en base 7 :

���� �7F+E

et Bc fournit le résultat 41.Pour rentrer des nombres dans une base différente de 10, il faut changer la variable ���� ,ce qui demande un peu d’attention. Dans la retranscription suivante, les instructions saisiessont repérées par un point-virgule final.

% bc -lq���� ;

Réponse du logiciel

10

���� ;

Réponse du logiciel

10

���� �7;���� ����� ;A;

Réponse du logiciel

13

48

Page 63: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ����!� ��

66+22;

Réponse du logiciel

121

���� �A;���� �A;2*7;

Réponse du logiciel

14

����;

��� " ��������

Les congruences de nombres entiers s’obtiennent souvent dans les logiciels de calcul par uneinstruction qui ressemble à mod(x,p). Les résulats ne sont pas toujours positifs, c’est-à-diredans l’intervalle [0, p −1]∩N.Cherchons à représenter l’entier relatif −5 dans Z/3Z :Avec Gp

5�(-5,3)

Avec Maxima

5�/�)�3:3;��(-5);5�/�)�3:6.)3�;

Avec Octave

mod(-5,3)

Avec Scilab

�����(-5,3)������(-5,3)

Avec Yacas

5�(-5,3)

Avec XCAS

-5%3

On peut bien sûr calculer dans Z/nZ :

49

Page 64: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ��������

x:�7%9; y:�4%9;3*x^2-5*y^2

donne

Réponse du logiciel

4 % 9

Si l’on veut connaître le chiffre des unités de 200820072009, on peut faire :

(2008)^(2007^2009)%10

...mais cela ne donne rien de probant. Mieux vaut travailler tout de suite modulo 10 :

(2008%10)^(2007^2009)

répond instantanément que le reste est 2. On peut préférer demander directement le resteavec la commande �� �(n,p) :

�� �((2008)^(2007^2009),10)

Si l’on veut l’image de p%n par l’application canoniquement associée de Z/nZ sur N, il suffitd’utiliser %0 :

k:�5%11;k^(2785);k^(2785)%0

Pour d’autres utilisations du calcul modulaire, voir le thème 7.2 page 247 et la section f.page 86.

��, 2 ��� %�� ���

�� �!�� +�� �� ���� � � ����

Le sujet est plus que vaste ! Contentons-nous d’une petite expérimentation sur le théorèmedes nombres premiers.

Conjecturé par GAUSS (encore lui !) et LEGENDRE, approché par TCHEBYSHEV, ce théorème afini par être prouvé indépendamment et simultanément par Jacques HADDAMARD et Charles-Jean de LA VALLÉE POUSSIN en 1896.

50

Page 65: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��#� +������ ��������

Théorème des nombres premiersEn définissant, pour tout réel positif x, le nombre π(x) comme le nombre de

nombres premiers inférieurs à x, le théorème des nombres premiers s’énonce de lafaçon suivante :

π(x) ∼ x

ln(x)

Construisons une fonction qui compte le nombre d’entiers premiers inférieurs à un nombredonné n. On utilise �� ���� qui teste si un entier est premier.On peut d’abord penser à une définition récursive :

pir(n):�{��(n<2){� ���� 0;} / / p o u r s a v o i r s ’ a r r ê t e r

�� (�� ���� (n)){� ���� pir(n-1)+1;} / / o n r a j o u t e 1 s i l e n o m b r e e s t

p r e m i e r e t o n d e s c e n d

� ���� pir(n-1);}:;

Ça marche en ayant pris soin de régler le niveau de récursion du CAS au maximum (dans lafenêtre de configuration du CAS).Cependant, le niveau de récursion n’est pas infini et la fonction bloque sur notre ordinateurpour n = 4200.Nous allons donc plutôt utiliser un compteur et une boucle for :

pif(n):�{k:�0;���(j:�0;j<�n;j++){

��(�� ���� (j)){k:�k+1;} / / o n r a j o u t e 1 a u c o m p t e u r s i j e s t

p r e m i e r e t o n r e g a r d e l e s u i v a n t

k}}:;

Mais plutôt que de tester les nombres un par un, on peut utiliser la commande � ����� (n)qui donne le premier nombre premier supérieur à n :

pin(n):�{k:�0;���(j:�2;j<�n;j:�� ����� (j)){k:�k+1;}k}:;

Il est à noter que XCAS utilise en arithmétique la librairie de PARI/Gp.Ainsi, � ����� affiche en réalité le plus petit entier pseudo-premier supérieur ou égal à n.

51

Page 66: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � ��������

Il existe en effet deux tests : ������ (n) et ���� ������ (n). Le premier test est sûr maispeut devenir très lent pour de très grands nombres. Le deuxième est plus rapide mais n’estfiable que pour une réponse négative. S’il répond 1, on peut juste penser que le nombre a « debonnes chances » d’être premier car il a passé un certains nombres de tests de primalitéa.Pour de plus amples renseignements, vous pouvez également consulter le manuel PARI/Gpdisponible dans la rubrique Aide de XCAS.

Maintenant, comparons cette fonction avec x �→ 1

ln(x)−1:

p:�polygone_ouvert(� �(�����([50*k,pin(50*k)]),k�0��2000)) / / o n r e l i e

l e s p o i n t s ( k , p i n ( k ) ) a v e c un

��� de 50 jusqu’à 100 000c:�����(x/(��(x)-1),x�3��100000,���� �������+��� ���� 7)

En 81 secondes, on obtient :

Réponse du logiciel

���� �� Les courbes représentatives de π et x �→ xln x−1

sont extrêmement proches

�� �� �������� �� /x �→∫x

2

1

ln t�t �� �� ���� � � ����

GAUSS conjectura à la fin du XVIIIe siècle que π(x) était équivalent à Li(x) au voisinage de +∞.Établissons un petit tableau comparatif avec XCAS. Mais d’abord, définissons la fonction Li :

Li(x):� ����(���(1/��(t),t,2,x))Li(100000)

aBELABAS , Karim Site officiel de PARI/GP . ⟨URL: http://pari.math.u-bordeaux.fr/⟩.

52

Page 67: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��,� +������ p-��%!��

Nous obtenons :Réponse du logiciel

[9681.171008,9661.54761,9659.001899,9658.438958,9658.302243,9658.268308,9658.25984,9658.257723,9658.257194,9658.257062,9658.257029]

Que se passe-t-il ? XCAS renvoie en fait une série d’approximations plus ou moins fines del’intégrale : méthode des trapèzes, point milieu, Romberg, etc., la plus fine étant la dernière.Modifions donc notre définition de Li :

LI(x):�{r:� ����(���(1/��(t),t,2,x));r[��" (r)-1]; / / o n p r e n d l e d e r n i e r d e l a l i s t e

}

On peut alors créer un tableau comparatif :

[["x","��(x)","Li(x)","1/(��(x)-1)"],� �([10^k,pin(10^k),Li(10^k), ����(1/(��(10^k)-1))],k�2��8)]

et on obtient, après environ 8 minutes de compilation :

⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣

x π(x) Li(x) 1/(ln(x)-1)

100 25 29.1 27.7

1000 168 176.6 169.3

10000 1229 1246.5 1218.0

100000 9592 9658.3 9512.1

1000000 78498 78984.6 78030.4

10000000 664579 668749.5 661469.0

100000000 5761455 5801743.9 5740303.8

⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦

Réponse du logiciel

��. 2 ��� p3������

Le logiciel Gp connaît les nombres p-adiques. Il suffit de les rentrer avec la notation de Landaudes développements limités.

a:a�49+O(5^3)a/5a*5����(a)

53

Page 68: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 69: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Équations numériques

Logiciel(s) abordé(s) : XCAS MuPAD

,�� #��� !"#$

Comme pour de nombreux logiciels de calcul formel, XCAS permet d’obtenir dans certains casles solutions d’une équationa sous forme exacte grâce à la fonction ���� :

���� (x^2+3*x+1�0) / / x e s t l ’ i n c o n n u e p a r d é f a u t

���� (t^2+3*t+1�0,t)���� (x^2+3*x+1) / / �0 p e u t ê t r e o m i s

���� (x^2+x+1�0) / / n e p a s o u b l i e r d e c o c h e r " c o m p l e x " d a n s " C a s

C o n f i g u r a t i o n "

���� (x^2+a*x+1�0,x)���� (x^2+a*x+1�0,a)

Notez que le paramètre a est considéré par défaut comme étant réel. Si l’on veut travailleravec des variables complexes, il faut cocher 8��� ��� dans le menu de configuration cas.

Il faudra alors utiliser la fonction assume pour émettre des hypothèses sur a :

���� (x^2+a*x+1�0,x)� (���� (x^2+a*x+1�0,x)[0]) / / p a r t i e r é e l l e d e l a p r e m i e r e r a c i n e

����� (a,real)� (���� (x^2+a*x+1�0,x)[0]) / / a e s t m a i n t e n a n t s u p p o s é r é e l

Toutefois, nous atteignons parfois les limites du calcul formel :

���� (x+��(x)+100�0)

et c’est une approximation numérique que nous obtenons.

aNous examinerons plus précisément les équations polynomiales à la section 5.2 page 61.

Page 70: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � !������

Configuration du CAS

Selon les cas, il faudra veiller à bien configurer le CAS b :- ����� ou non pour avoir des résultats exacts ou approchés;- 8���� ou non pour avoir des résultats (exacts ou approchés) sous forme réelleou complexe;- 8��� ��� ou non pour travailler avec des variables complexes ou réelles.

Il existe de nombreuses méthodes d’approximation. La plus célèbre est celle de Newton. Onpeut l’utiliser directement sous deux formes :

� ����(x^2-2,x�1) / / x�1 p r é c i s e l e d é p a r t d e l ’ a l g o r i t h m e

���� (x^2-2�0,x�1,newton_solver)

Pour connaître la précision de notre calcul :

� ����(x^2-2,x�1)-����(2)

Nous avons donc 15 bonnes décimales.Si nous en voulons plus, il existe deux appels optionnels à la fonction newton : le nombremaximum d’itérations et la précision minimum recherchée. Par défaut, ces valeurs sont res-pectivement fixées à 12 et 10−8.

� ����(x^2-2,x,1,12,1 -50)-����(2) / / 1 e −5 0 s i g n i f i e 1 0 ^ ( − 5 0 )

XCAS nous affiche -2.828427. Reflexion faite, ce nest pas étonnant : la variable /����� quifixe le nombre de chiffres significatifs est par défaut fixé à 10. Si nous voulons plus de préci-sions, il faut faire varier /����� :

/�����:�100� ����(x^2-2,x,1,12,1 -50)-����(2)

et nous avons 100 bonnes décimales.Nous avons d’ailleurs besoin de moins de 12 itérations pour arriver à ce résultat. Voici un petitprogramme indiquant le nombre d’itérations nécessaires pour obtenir une précision donnée :

Newton(f,pre,u0):�{����� un,aun,fp,k;fp:��������� ���(f);k:�0;aun:� ����(u0);un:� ����(u0-f(u0)/fp(u0));���� (���(un-aun)>pre) {aun:�un; un:� ����(un-f(un)/fp(un));

bDans Cfg -> Cas Configuration

56

Page 71: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� ��� ����

k:�k+1;}� ���� un+" est la solution trouvée à "

+ ����(pre) + " près après "+ k +" itérations";}

Exécutons ce programme :

Newton(x->x^ 2-2,1 -100,2);

Il nous assure que 8 itérations sont nécessaires pour obtenir AU MOINSc 100 bonnes déci-males...Pour des cas plus « lourds », nous pouvons utiliser la méthode de Steffenson qui accélère cellede Newton :

���� (x^2-2�0,x�0,1 -10,steffenson_solver)

Bizarre... C’est qu’en fait la méthode de Steffenson comme celle de Newton est très rapide,mais elle nécessite une bonne première approximation de la racined.Mieux vaut donc rentrer :

���� (x^2-2�0,x�1,1 -10,steffenson_solver)

Cet inconvénient est encore plus mis en valeur avec l’équation x + ln(x)+100 = 0. En effet, sion appelle f la fonction associée, lim

x→0f (x) = −∞ et f

(e−100

) = e−100 −100+100 > 0, donc la

solution appartient à l’intervalle ]0 ; e−100[, ce qui indique que la solution est assez petite...

���� (x+��(x)+100�0,x� �(-100))- �(-100)

nous indique que nous sommes malgré tout assez proche de e−100.

Pour un choix de la méthode de résolution numérique d’un système d’équations linéaires ounon, voir l’exemple page 196.

Format de nombre

Le format de nombre approché utilisé par XCAS est par défaut le format double (53bits de précision relative, soit environ 10−16). Si /01023<16 (la precision est alorsindependante de Digits, seul l’affichage change). Si /01023� 16, la librairie multi-précision mpfr est utilisée. Donc on peut demander la précision souhaitée jusqu’àDIGITS:=1000.

cC’est un-aun ( c’est-à-dire un+1 −un ) qui doit être inférieur à la précision dans notre programme : cela est suffisantmais pas nécessaire pour avoir la précision voulue.

dVoici un problème qui déborde du cadre de ce livre, mais qu’il serait très intéressant d’explorer, par exemple enétudiant MARLE , Charles-Michel/PILIBOSSIAN , Philippe Méthodes numériques itératives . Paris: Ellipses, 2006

57

Page 72: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � !������

Calcul avec des flottants

Attention au calcul avec des flottants : l’addition n’est pas toujours associative, 1−xavec x de l’ordre de 10−100 peut être égal à 1, enfin (0,1×3)−0,3 n’est pas forcémentnul car les nombres sont codés en base 2, donc seuls les entiers et les rationnelsdont le dénominateur est une puissance de 2 peuvent être représentés exactement.Ceci entraîne des résultats qui peuvent surprendre. Voir le cours de maths assistéespar ordinateur de Bernard Parisse sur http://www-fourier.ujf-grenoble.fr/~parisse/francais.html\//mat249

,�� #��� /��#0

L’outil général est solve :

���� (x^2-4*x+3�0,x); ���� (x^2-x+3�0,x);

C’est assez classique. Ce qui l’est moins, c’est la capacité de résoudre des équations dépen-dant de paramètres.

S:����� (x^2 - s*x+p�0,x):

Vous avez remarqué que les solutions des premiers exemples sont affichées entre accolades.Interrogeons MuPAD :

��� (���� (x^2-4*x+3�0,x));

La réponse /�5 3�2nous indique qu’il s’agit d’un ensemble. Ceci a une grande importance sinous voulons réinvestir les solutions trouvées. Pour en revenir à notre équation du deuxièmedegré, l’ensemble des solutions comportera deux éléments, ou plutôt opérandes en langageMuPAD. Nous pouvons demander le premier élément de cet ensemble grâce à la commande :

��(S,1);

qui affiche le premier opérande de l’ensemble S.Nous pouvons être également amenés à résoudre des équations non pas sur C mais sur unintervalle donné. Par exemple, si nous voulons résoudre l’équation x2 = 4 sur R+, nous indi-querons à MuPAD que notre x doit être positif :

����� (x>0);

���� (x^2�4,x);

On peut sinon utiliser les ensembles habituels avec les notations suivantes :

58

Page 73: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� ��� '!��(

N NonNegInt N∗ PosInt −N∗ NegInt

Z Integer 2Z Even 2Z+1 Odd

Q Rational Q∗+ PosRat Q∗− NegRat

R Real R+ NonNegative Q+ NonNegRat

R∗+ Positive R∗− Negative C∗ NonZero

iR∗ Imaginary iZ∗ IntImaginary P Prime���� ��� Ensembles de nombres et MuPAD

����� (x �� 2�� --4������ ):���� (x^2-4�0,x);

Une autre ruse permet de selectionner les solutions :

S :� ���� (���(x*PI/7) � 0, x);S ��� �� �� /��--0�� ����(-22, 22)

/ / o n d e m a n d e d e s s o l u t i o n s d a n s [ − 2 2 , 2 2 ]

On peut résoudre également des systèmes linéaires :

� � �():���� ({x+2*y+a*z�-1,a*x+y+z�2,2*x+a*y-z�3},{x,y,z});

Il existe des outils d’algèbre linéaire plus adaptés que nous verrons plus tard.On peut résoudre des inéquations

���� (x^2-2*x-4>�2*x,x);

des équations trigonométriques

���� (���(x)����(x),x);

À vous d’imaginer d’autres situations...Un « étudiant » taquin nous a par exemple proposé

���� (����(x)�0*����(x),x);

Pour avoir une approximation de la solution, on utilise float et hold(solve)

�����(���(���� )(x+��(x)+1�0));

ou numeric::solve(equation,inconnue)

��� ���--���� (x+��(x)+1�0,x);

Au-delà, MuPAD semble jetter l’éponge :

�����(���(���� )(x+��(x)+10�0));

puisque la réponse proposée est l’ensemble vide.Mais MuPAD utilise la méthode de Newton et a donc besoin d’une bonne approximation dedépart :

��� ���--���� (x+��(x)+10�0,x�1e-50�������( �(-10)),9 ������ 3 ����);

indique à MuPAD de chercher une approximation de la solution dans [10−50,e−10].

59

Page 74: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 75: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Polynômes

Logiciel(s) abordé(s) : Yacas Gp XCAS Maxima Scilab

Problématique : Manipuler les opérations élémentaires sur les poly-nômes, notamment la recherche de racines.

.�� #��� $�����

Le logiciel Scilab peut traiter les polynômes. On peut définir la variable :

x�����(0,’x’)

définir le polynôme x2 + x +1 :

P�x^2+x+1

et calculer ses racines :

�����(P)

Le polynôme peut être construit avec ses coefficients

Q�����([3 2 1],’x’,’coeff’)�����(Q)

Il est à noter que si l’on ne précise pas le drapeau ’coeff’, le polynôme est défini par sesracines :

R�����([3 2 1],’x’)�����(R)

Le polynôme dérivé s’obtient comme suit :

�����(R)

La matrice compagne du polynôme P est obtenue par :

A����������(P)

On peut retrouver le polynôme :

Page 76: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ " � ���#�$���

�(x* � ()-A)

Les racines de P sont à comparer au spectre de la matrice compagnon (voir le chapitre 7.7) :

�� �(A)

Voici l’exemple d’une session Scilab qui cherche les racines de x3 + x +1 ; les commandessont marquées (->) :

Réponse du logiciel

-->x=poly(0,’x’)x =

x

-->P=x^3+x+1P =

31 + x + x

-->roots(P)ans =

! - 0.6823278 !! 0.3411639 + 1.1615414i !! 0.3411639 - 1.1615414i !

-->

.�� #��� /�+� �

Le logiciel Maxima traite les polynômes et les fractions rationnelles en général. Trouver lesracines du polynôme P se fait comme suit :

P(x):=x^2+2*x+3;���� (P(x),x);

La dérivée est la dérivée formelle de toutes les fonctions :

���(P(x),x);

Voici l’exemple d’une session Maxima qui cherche les racines de x3 + x +1 ; les commandessont marquées (Ci) et les réponses (Di) :

62

Page 77: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,�&� ��� ����

Réponse du logiciel

(C1) P(x):=x^3+x+1;3

(D1) P(x) := x + x + 1(C2) solve(P(x)=0,x);

SQRT(3) %I 1---------- - -

SQRT(31) 1 1/3 SQRT(3) %I 1 2 2(D2) [x = (--------- - -) (- ---------- - -) - --------------------,

6 SQRT(3) 2 2 2 SQRT(31) 1 1/33 (--------- - -)

6 SQRT(3) 2

SQRT(3) %I 1- ---------- - -

SQRT(31) 1 1/3 SQRT(3) %I 1 2 2x = (--------- - -) (---------- - -) - --------------------,

6 SQRT(3) 2 2 2 SQRT(31) 1 1/33 (--------- - -)

6 SQRT(3) 2

SQRT(31) 1 1/3 1x = (--------- - -) - --------------------]

6 SQRT(3) 2 SQRT(31) 1 1/33 (--------- - -)

6 SQRT(3) 2(C3)

.�� #��� !"#$

Le logiciel XCAS traite les polynômes à plusieurs variables.On rentre le polynôme de manière symbolique :

P(x):�x^2+2*x+3

Trouver les racines du polynôme P se fait comme suit :

�����(P(x))

La dérivée est la dérivée formelle de toutes les fonctions :

���(P(x),x)

On peut obtenir un polynôme aléatoire de variable u, de degré inférieur ou égal à 6 et à coef-ficients entiers de valeur absolue strictement inférieure à 100.

�������(u,6)

Voici l’exemple d’une session XCAS qui cherche les racines de x3 + x+1 ; les commandes sontséparées des réponses par des lignes de tirets :

63

Page 78: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ " � ���#�$���

Réponse du logiciel

P(x):=x**3+x+1------------------------------------------// Parsing P// Success compiling P

3x ->x +x+1------------------------------------------roots(P)------------------------------------------Evaluation time: 0.17 3Unable to isolate x in ([x])->x +x+1

XCAS ne trouve pas de solution exacte. Il peut toutefois trouver des approximations :

�����(P(x))

[−0.682328,0.3411639019+1.1615414∗i,0.3411639019−1.1615414∗i]

Réponse du logiciel

Pour un autre exemple d’activité sur les polynômes, voir aussi la section b. page 151.

.�� #��� �%

Le logiciel Gp traite les polynômes aussi avec des coefficients dans Z/pZ et dans les corps p-adiques.

Trouver les racines du polynôme P se fait comme suit :

P(x)�x^2+2*x+3��������(P(x))

La dérivée est la dérivée formelle de toutes les fonctions :

���(P(x),x)

Voici l’exemple d’une session Gp qui cherche les racines de x3 + x +1 :

64

Page 79: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,�#� ��� . �

Réponse du logiciel

(21:15) gp > P(x)=x^3+x+1(21:15) gp > polroots(P(x))%2 = [-0.6823278038280193273694837397 + 0.E-28*I, 0.3411639019140096636847418698- 1.161541399997251936087917687*I, 0.3411639019140096636847418698 + 1.161541399997251936087917687*I]~(21:15) gp >

.�, #��� 4���

Le logiciel Yacas traite les polynômes comme les logiciels précédents.Trouver les racines du polynôme P se fait comme suit :

P��x^2+2*x+34���� (P,x)

La dérivée est la dérivée formelle de toutes les fonctions :

/(x) P

Voici l’exemple d’une session Yacas qui cherche les racines de x3 + x +1 :

Réponse du logiciel

In> Q:=x^3+x+1Out> x^3+x+1;In> PSolve(Q,x)Out> {(Sqrt(31/108)-1/2)^(1/3)-(1/2+Sqrt(31/108))^(1/3),Complex((1/2+Sqrt(31/108))^(1/3)/2-(Sqrt(31/108)-1/2)^(1/3)/2,Sqrt(3/4)*(Sqrt(31/108)-1/2)^(1/3)+Sqrt(3/4)*(1/2+Sqrt(31/108))^(1/3)),Complex((1/2+Sqrt(31/108))^(1/3)/2-(Sqrt(31/108)-1/2)^(1/3)/2,-(Sqrt(3/4)*(1/2+Sqrt(31/108))^(1/3)+Sqrt(3/4)*(Sqrt(31/108)-1/2)^(1/3)))};In>

Les logiciels traités ici présentent de nombreuses fonctions arithmétiques sur lespolynômes.

65

Page 80: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 81: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Fonctions

Logiciel(s) abordé(s) : Bc Scilab Octave Yacas XCAS Gp Maxima

Notions informatiques : Définir une fonction. Utiliser une fonction.

Problématique : Les fonctions sont centrales dans l’utilisation deslogiciels de calcul. Tous les logiciels n’ont pas les mêmes conven-tions pour définir une fonction mathématique, ni pour l’évaluer enun point. Les fonctions sont construites à partir d’opérations élé-mentaires et des fonctions classiques qui sont dans la bibliothèquedu logiciel. Tous les logiciels n’ont pas la même bibliothèque : lafonction sécante qui est connue de Maxima et XCAS ne l’est paspour Gp ; seul Maxima connaît la sécante hyperbolique. . .. La biblio-thèque de Bc même avec l’option :� est très réduite.

5�� #��� �%

Le logiciel Gp accepte les fonctions comme des expressions données par un égalité-définition.Pour définir la fonction machin, il suffit d’entrer l’instruction :

machin(x)�1/���(x)

Pour calculer sa valeur en 2, on tape

machin(2);

5�� #��� /�+� �

Le logiciel Maxima considère les égalités comme des quantités à évaluer ; une égalité-définitionest indiquée par l’instruction -�.

machin(x):=1/���(x);

L’évaluation demande forcément du travail, suivant le type de résultat que l’on désire.

machin(2);

donne la valeur algébrique ;

Page 82: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ % � &������

�����(machin(2));

donne une valeur approchée et

������(machin(2));

donne un résultat équivalent.

5�� #��� !"#$

�� � ���� ��

Le comportement de XCAS est sans surprise au vu de ce qui précède.

machin(x):�1/log(x)

définit une nouvelle fonction tout comme :

machin:�x->1/log(x)

machin(2)

donne sa valeur algébrique au point 2 et

����(machin(2))

en donne l’approximation tout comme

machin(2.0)

On peut transformer une expression en fonction avec �������(expression,variable)

f:���(x);f(2);f:��������(f,x);f(2);

On peut également définir la fonction dérivée d’une fonction :

fp:��������� ��� (���+2*�);fp(3)

68

Page 83: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/�&� ��� ����

Fonction et expression

Comme en mathématiques, il ne faut pas confondre fonction et expression.Par exemple, �������� ��� attend comme argument une fonction et nonpas une expression. Ainsi le code :

fp:��������� ��� (���(x)+2*x);

renvoie une erreur.Si l’on préfère travailler sur les expressions, alors mieux vaut utiliser���(expression,variable) :

df(x):����(���(x)+2*x,x);

qui renvoie cos(x)+2, puis :

fp:��������(fp(x),x);

qui renvoie x �→ cos(x)+2ou plus directement :

fp:��������(���(���(x)+2x),x)

qui renvoie x �→ cos(x)+2.Voir aussi c. page 115.

�� ��(�� �� �������� ��� ���� �"�� / �� �3����� �� ������ ���� ���� �� �������

Il existe depuis de nombreuses années des logiciels de géométrie dynamique qui sont utilisésau collège et au lycée. Cependant, n’étant voués qu’à dessiner ou éventuellement à donnerquelques résultats numériques, leur utilisation est limitée et leur syntaxe, par souci d’ergono-mie informatique, éloigne les élèves du problème mathématique.XCAS cependant, par sa puissance et sa souplesse, permet de « coller » au cours de mathéma-tiques tout en permettant d’obtenir des résultats performants.Considérons par exemple le problème classique suivant donné en classe de Seconde :On considère un triangle ABC rectangle en A tel que AC = 3 et AB = 4. Soit M un point quel-conque du segment [AC]. On construit le rectangle AMNP tel que N appartienne à [BC] et P à[AB].Étudiez l’aire du rectangle AMNP en fonction de la position de M.Commençons par ouvrir une fenêtre de géométrie en tapant simultanément sur ��� et �

puis définissons les points A et B dans un repère judicieusement choisi :

A:������(0,0) / / p l a ç o n s A

B:������(0,-4) / / p l a ç o n s B t e l q u e AB�4 e n l a i s s a n t l e 1 e r q u a d r a n t

l i b r e p o u r y t r a c e r l a c o u r b e à l a f i n d e l a s é a n c e

69

Page 84: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ % � &������

Définissons ensuite le point C tel que le triangle ABC soit direct, rectangle en A et que l’on aitAC = 3

4 AB à l’aide de la commande ������� � ������ :

������� � ������ (A,B,3/4,C)

Créons maintenant un réel quelconque de [0; 3] que l’on pourra faire varier à la souris à l’aidede la commande � � �� :

t:� � � ��(0 �� 3)

Définissons maintenant le point M. Nous qui sommes à moitié mathématiciens, nous savonsque nous allons créer en fait une fonction de [0; 3] dans le plan P qui à un réel x de l’intervalle[0 ; 3] associe le point du plan de coordonnées (0 ; x).Pour les élèves, la notation :

M(x):������(x,0)

est naturelle et rappelle que le point M dépend de la donnée de son abscisse x.Pour définir N, commençons par définir la perpendiculaire en M à la droite (AC). La syntaxeest tout à fait naturelle grâce à ������ � (Point,Droite). N’oublions pas qu’en fait d estune fonction de x :

d(x):�� �� �������� (M(x),���� (A,C))

Définissons ensuite N comme l’intersection de d et (BC) grâce à ��� � ����� :

N(x):���� � ����� (d(x),���� (B,C))

Pour obtenir P, nous commençons par définir la parallèle à (AC) passant par N (qui est biensûr une fonction de x) à l’aide de ������ � (Point,Droite) :

D(x):������� � (N(x),���� (A,C));

puis l’intersection de D et (AB) :

P(x):���� � ����� (D(x),���� (A,B))

Il ne reste plus qu’à définir le rectangle APNM grâce à la commande ������� :

R(x):�������� (A,P(x),N(x),M(x))

et à dessiner le rectangle dépendant du paramètre t :

���� ��(R(t),,��� +� ����)

En faisant varier t à la souris, le rectangle « bouge ».Définissons maintenant la fonction qui à x associe l’aire du rectangle :

f(x):���� (R(x))

Donnons son expression simplifiée :

�������� �(f(x))

70

Page 85: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/�&� ��� ����

−4

3x2+4x

Réponse du logiciel

Définissons le point X de la courbe représentative de f d’abscisse t :

X:������(t,f(t))

Traçons enfin la courbe représentative de f à l’aide de la fonction ����� :

����� (f(x),x�0��3,���� ����� �)

Voici une visualisation statique :

���� ��� Le rectangle et la courbe représentative de f

Pour une autre activité géométrique de Seconde, voir section b. page 95.

71

Page 86: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ % � &������

assume ou element ?

Il aurait peut-être été plus simple pour des élèves de faire la construction en lavoyant pas à pas tout en gardant une valeur formelle pour les expressions en uti-lisant ����� au lieu de � � ��.Il suffit, dans le code précédent, de remplacer :

t:� � � ��(0��3)

par :

����� (t�[1,0,3])

où 1 représente une valeur arbitraire modifiable à la souris.On ôte ensuite toute référence à la variable formelle x qui devient inutile puisque tgarde un rôle formel.Par exemple, le code contient :

M:������(t,0)d:�� �� �������� (M,���� (A,C))

5�� #��� 1�

Dans la calculette en mode texte appelée par l’instruction �� :�, la nouvelle fonction estdéfinie comme suit :

��� machin(x){� ���� 1/�(x)}

L’évaluation se fait naturellement.

machin(2)

5�, #��� $�����

�� � ���� ��

Dans le logiciel de calcul matriciel Scilab, la définition d’une fonction est plus délicate.

�������� y�machin(x)y�1/���(x) ���������

L’évaluation se fait naturellement en un point.

72

Page 87: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/�,� ��� . �

machin(2)

�� ��������� �� �����

L’évaluation en rafale qui est possible avec Scilab requiert un peu d’attention. En utilisant cequi précède,

t�2:9machin(t)

ne donne pas le résultat voulu. Les opérations élémentaires peuvent être forcées à la placedes opérations matricielles en les précédant d’un point : �; à la place de ;. L’exponentiellematricielle �� et l’exponentielle coefficient par coefficient � sont distinctes. Pour pour-suivre l’exemple, il faut alors définir la fonction en utilisant la division ponctuelle : attentionà l’espace derrière le nombre 1 !

�������� y�machin(x)y�1 ./���(x) ���������

t�2:9machin(t)

On a le bon résultat, ce qui permet de tracer un graphe directement :

����(t,machin(t))

Le nombre de points d’évaluation est volontairement limité.L’évaluation marche avec des matrices quelconques :

v�1:5u�v’*tmachin(u)

5�. #��� 4���

Le logiciel Yacas définit les fonctions de manière similaire aux autres logiciels de calcul for-mel.

machin(x):�1/)�(x)

Pour calculer sa valeur en 2, on tape :

machin(2)

Pour obtenir une valeur approchée, il suffit de le réclamer pour le résultat précédent.

((%)

73

Page 88: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ % � &������

5�5 #��� �����

Le logiciel Octave traite les matrices. Pour définir des fonctions, la procédure ressemble àcelle de Scilab.

�������� y�machin(x)y�1 ./���(x) ; ���������

machin(2)t�[2;3]machin(t)

Le point-virgule est nécessaire dans le corps de la définition de la fonction, car sinon la ma-chine retournerait deux fois l’évaluation.

74

Page 89: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Algèbre linéaire

Logiciel(s) abordé(s) : Scilab Octave Maxima XCAS

Notions informatiques : Les logiciels Scilab et Octave sont avanttout destinés au calcul matriciel. Maxima peut faire des calculs sur lesmatrices, XCAS est destiné à tout calcul...

Problématique : Calculer avec des matrices.

6�� #��� $�����

�� ��� ����� ��������� �

Construisons un vecteur colonne u et un vecteur ligne v :

u�[2;3;5]v�[7 11 13]

Le produit scalaire t et la matrice A de rang un associée s’obtiennent par multiplication :

t�v*uA�u*v

On obtient les dimensions et le rang directement

��" (u)��" (A)����(A)

Le logiciel Scilab présente une sorte de produit tensoriel �;�

u .*. A

La norme d’un vecteur est par défaut la norme euclidienne ����(v). On peut réclamer lanorme Lp : ����(v,p) ou L∞ : ����(v,’inf’).Pour les matrices, ces instructions donnent les normes linéaires associées aux normes Lp surles vecteurs, au sens des applications linéaires : la norme de A est le maximum des normesde Av pour v parcourant la boule unité. L’instruction ����(A) donne la norme spectrale,c’est-à-dire le maximum des modules des valeurs propres.

Page 90: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

La norme sur les matrices donnée par la formule√

tr(

tA∗A), souvent utilisée, est obtenue

par l’instruction ����(A,’fro’).

�� 5�������� �)�� *�+�� �)�"������ ������ �

On se donne un système de trois équations à trois inconnues dont les données sont aléatoires.

A����(3,3)B����(3,1)V����(A)*B

On vérifie que le vecteur AV−B a des coordonnées proches de la précision de la machine.

A*V-B

On se place maintenant dans un cas dégénéré : on cherche l’espace propre associé à la valeurpropre −1.

A�[0 1 0;1 0 1;1 1 0]R������(����(A,’t’))B�A-R(2)* � (3,3)

L’espace propre est engendré par la famille V ici réduite à un vecteur.

Z�" ���(3,1)[U,V]�������� (B,Z)

Ce cas particulier se résout aussi par l’instruction

V�� �� �(B)

�� 5�������� �)������ �!���

Pour obtenir les vecteurs propres v p et la matrice diagonalisée D correspondant à la ma-trice A, il suffit de taper :

[vp,D]��� �(A)

On vérifie en tapant

A*vp(:,1)/D(1,1)A*vp/D

La décomposition de Schur donne les valeurs propres sur la diagonale de la matrice triangu-laire T.

[U,T]������(A)

76

Page 91: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� � ���

6�� #��� �����

La syntaxe de base d’Octave est commune avec Scilab. Les instructions ci-dessous sont en-core valables.

u�[2;3;5]v�[7 11 13]t�v*uA�u*v��" (u)��" (A)����(A)

Les instructions ci-dessous donnent aussi des résultats similaires.

A����(3,3)B����(3,1)V����(A)*BA*V-B

L’instruction ����(A) donne les coefficients du polynôme caractéristique de A. On peut cal-culer le pseudo-inverse de la matrice dégénérée.

p�����(A)R������(p)B�A-R(2)* � (3,3)c�����(B)c*BB*c

La décomposition de Schur est la même que pour Scilab :

[U,T]������(A)

6�� #��� /�+� �

On définit une matrice avec ����� :

(%i1) �����([1,2],[3,4]);

On calcule son déterminant :

(%i2) � �������(%i1);

Elle est donc inversible. On demande son inverse :

(%i3) ��� ��(%i1);

Calculons le produit pour vérifier. On utilise le produit non commutatif symbolisé par ·, unpoint :

(%i4) )%i1�%o3;

77

Page 92: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

et on obtient bien l’identité.Les valeurs propres s’obtiennent avec �� ����� � :

(%i5) �� ����� �(%i1);

On vérifie qu’il s’agit bien des solutions du polynôme caractéristique donné par �������� :

(%i6) ���� (��������(%i1,x)=0,x);

On calcule la puissance quatrième. On utilise << :

(%i7) (%i1)^^4;

6�� #��� !"#$7 �� ��� �������� ������

�� ���� ���� �� � �6�����

Qu’est-ce que l’endomorphisme de R2 d’expression analytique canonique⎧⎪⎨⎪⎩x′ = −1

5x − 2

5y

y ′ = 3

5x + 6

5y

On détermine la matrice associée :

A:�[[-1/5,-2/5],[3/5,6/5]]

[ −15

−25

35

65

]Réponse du logiciel

On définit donc la matrice en donnant les vecteurs-ligne.Calculons son carré :

A^2

On retrouve A; il s’agit donc de la matrice d’un projecteur déterminée par son noyau :

� �(A)

Réponse du logiciel

[[2,-1]]

c’est-à-dire Vect{

(2 ; −1)}, et son image :

78

Page 93: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

���� (A)

Réponse du logiciel

[[-1,3]]

�� ������� �� ��� ���

Déterminons les puissances entières de B =(

1 a

0 1

)

B:�[[1,a],[0,1]]

Calculons jusqu’à la puissance cinquième :

��������(B^2);��������(B^3);��������(B^4);��������(B^5)

[1 2a

0 1

],

[1 3a

0 1

],

[1 4a

0 1

],

[1 5a

0 1

]Réponse du logiciel

�� 7�� � �� ��� ���

Soit A =

⎛⎜⎜⎝1 0 a

1 a −1

a 0 1

⎞⎟⎟⎠. Pour quelles valeurs de a, la matrice A est-elle inversible ?

A:�[[1,0,a],[1,a,-1],[a,0,1]]

On cherche les valeurs de a qui annulent le déterminant :

���� ( �(A)�0,a);

Réponse du logiciel

[-1,0,1]

Il y en a trois.On peut ensuite déterminer l’inverse de cette matrice :

���(A)

79

Page 94: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

⎡⎢⎢⎢⎢⎣a

−((a)3)+a0

−((a)2)−((a)3)+a

−a−1−((a)3)+a

−((a)2)+1−((a)3)+a

a+1−((a)3)+a

−((a)2)−((a)3)+a

0 a−((a)3)+a

⎤⎥⎥⎥⎥⎦

Réponse du logiciel

�� � ��� �)��� � �)��� ��� ��� ��� �� ���!��� �� #��&8� ���

Créons une matrice :

M:�[[1,0,1],[0,1,1],[1,1,0]]

⎡⎢⎢⎣1 0 1

0 1 1

1 1 0

⎤⎥⎥⎦

Réponse du logiciel

Complétons-la par la matrice identité de même taille. Profitons-en pour créer une petite pro-cédure avec la commande ���� ��(M1,M2) qui place la matrice M2 « au bout » de la matriceM1 si elles ont le même nombre de lignes :

GJ(A):�{n:������(A); / / o n c o m p t e l e n o m b r e d e c o l o n n e s d e a

Id:���(n); / / o n c r é e l a m a t r i c e i d e n t i t é d e t a i l l e c o r r e s p o n d a n t

���� ��(A,Id) / / o n l a m e t a u b o u t

}:;

Ainsi :

T:�GJ(M)

⎡⎢⎢⎣1 0 1 1 0 0

0 1 1 0 1 0

1 1 0 0 0 1

⎤⎥⎥⎦

Réponse du logiciel

80

Page 95: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

Pour effectuer une combinaison linéaire des lignes, on peut utiliser �9��.(k,M,i,j) quirenvoie la matrice construite à partir de M en remplaçant la ligne L j par L j +k×Li . N’oubliezpas que XCAS commence à compter à partir de 0 :

T:��9��.(-1,T,0,2)

⎡⎢⎢⎣1 0 1 1 0 0

0 1 1 0 1 0

0 1 −1 −1 0 1

⎤⎥⎥⎦

Réponse du logiciel

On effectue L3 ← L3 −L2 :

T:��9��.(-1,T,1,2)

⎡⎢⎢⎣1 0 1 1 0 0

0 1 1 0 1 0

0 0 −2 −1 −1 1

⎤⎥⎥⎦

Réponse du logiciel

On multiplie L3 par − 12 avec �=2=,(q)ui remplace L j par k ×L j :

T:��9��(-1/2,T,2)

⎡⎢⎢⎣1 0 1 1 0 0

0 1 1 0 1 0

0 0 1 12

12

−12

⎤⎥⎥⎦

Réponse du logiciel

On effectue L1 ← L1 −L3 :

T:��9��.(-1,T,2,0)

81

Page 96: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

⎡⎢⎢⎣1 0 0 1

2−12

12

0 1 1 0 1 0

0 0 1 12

12

−12

⎤⎥⎥⎦

Réponse du logiciel

et enfin L2 ← L2 −L3 :

T:��9��.(-1,T,2,1)

⎡⎢⎢⎣1 0 0 1

2−12

12

0 1 0 −12

12

12

0 0 1 12

12

−12

⎤⎥⎥⎦

Réponse du logiciel

Il ne reste plus qu’à extraire la matrice de droite avec une petite procédure maison :

JG(A):�{p:������(A);A[0��p-1,p��2*p-1] / / o n e x t r a i t l e s l i g n e s 0 à p −1 e t l e s c o l o n n e s p à 2

p −1

}:;

Ici :

MM:�JG(T)

⎡⎢⎢⎣12

−12

12

−12

12

12

12

12

−12

⎤⎥⎥⎦

Réponse du logiciel

et on a bien le produit des deux matrices :

MM*M

82

Page 97: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

qui vaut :

⎡⎢⎢⎣1 0 0

0 1 0

0 0 1

⎤⎥⎥⎦

Réponse du logiciel

Bien sûr, on aurait pu obtenir la matrice directement avec ���(Matrice) qui donne l’inversed’une matrice :

���(M)

Mais cette session peut être l’occasion de montrer le mécanisme de calcul à des étudiants.

�� !�0�� �� �� 9�

Nous ne rentrerons pas dans les détails probabilistes.Les chaînes de Markov sont issues de la théorie des probabilités et utilisent des outils d’al-gèbre linéaire qui nous intéressent ici. Elles permettent de simuler des phénomènes aléatoiresqui évoluent au cours du temps. Nous allons les découvrir à travers l’étude d’un exemplesimple.Zlot, Brzxxz et Morzgniouf sont trois villes situées respectivement en Syldavie, Bordurie etBouzoukstan. Des trafiquants de photos dédicacées du groupe ABBA prennent leur marchan-dise le matin dans n’importe laquelle de ces villes pour l’apporter le soir dans n’importe quelleautre. On notera pour simplifier V1, V2 et V3 ces villes et pi j la probabilité qu’une marchandiseprise le matin dans la ville Vi soit rendue le soir dans la ville V j . La matrice (pi j )16i6316 j63

est appelée matrice de transition de la chaîne de Markov.Supposons que P soit connue et vaille

P =

⎛⎜⎜⎝0,8 0,3 0,2

0,1 0,2 0,6

0,1 0,5 0,2

⎞⎟⎟⎠Donnons l’information à XCAS :

P:�[[.8,.3,.2],[.1,.2,.6],[.1,.5,.2]]

Vérifions au passage que la somme des éléments de chaque colonne vaut bien 1. On utilise��� :

���(P)

Réponse du logiciel

[1.0,1.0,1.0]

83

Page 98: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

Les trafiquants se promenant de ville en ville, il peut être utile de visualiser leurs déplacementspar le diagramme de transition suivant

V2 V3

V1

0,2

0,8

0,2

0,10,3

0,20,1

0,5

0,6

On notera x(k)i la proportion de trafiquants qui se trouvent au matin du jour k dans la ville Vi .

En probabilités, on appelle vecteur d’état tout élément (x1, · · · , xn ) de R+n tel que x1+·· ·+xn =1.Ainsi, x(k) =

(x(k)

1 , x(k)2 , x(k)

3

)est un vecteur d’état.

On montre que les vecteurs d’état de la chaîne sont liés par la relation

x(k) = P ·x(k−1)

et donc

x(k) = Pk ·x(0)

Supposons que le chef de la mafia locale dispose de 1000 trafiquants qui partent tous le matindu jour 0 de la ville de Zlot.

X:�[[1000],[0],[0]]

Quelle sera la proportion de trafiquants dans chacune des villes au bout d’une semaine ?

P^7*X

⎡⎢⎢⎣563.887400

226.069100

210.043500

⎤⎥⎥⎦

Réponse du logiciel

Le parrain voudrait que la proportion moyenne de trafiquants soit stable d’un jour sur l’autre.Il recherche donc les vecteurs d’état x vérifiant l’équation P ·x = x.

84

Page 99: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

On recherche donc le sous-espace propre associé à la valeur propre 1.Il faudrait d’abord vérifier que 1 est bien une valeur propre :

�� �����(P)

Réponse du logiciel

1.0,0.5472135955,-0.3472135955

On aurait pu chercher les racines du polynôme caractéristique. Comme �������� renvoieles coefficients du polynôme caractéristique, on utilise ����'����(liste,variable) quirenvoie le polynôme sous forme symbolique :

���� (����'����(��������(P),x)�0,x)

On demande maintenant de donner une base du sous-espace propre associé. On utilise ��qui donne une matrice de passage de vecteurs propres quand la matrice est diagonalisable :

��(P)

⎡⎢⎢⎣0.340000 −0.179443 −0.000557

0.140000 0.094721 0.005279

0.130000 0.084721 −0.004721

⎤⎥⎥⎦

Réponse du logiciel

L’ordre correspond aux valeurs données par �� �����. Pour le vérifier, extrayons le premiervecteur colonne avec ���(matrice,numéro de colonne) :

v:����( ��(P),0)P*v

et on retrouve v.On aurait pu trouver ce vecteur autrement en cherchant le noyau de P− Id à l’aide de la com-mande � � :

w:�� �(P-��(3))

Réponse du logiciel

[[-2.615384615,-1.076923077,-1]]

On regarde les doubles crochets : il s’agit donc d’une liste de liste. Il vaut donc mieux définirle vecteur comme étant le premier élément de cette liste :

w:�� �(P-��(3))[0]

85

Page 100: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

Réponse du logiciel

[-2.615384615,-1.076923077,-1]

C’est bien un vecteur cette fois.On peut le rendre unitaire puisqu’il s’agit d’un vecteur d’état avec ����� :

�����(w)

Réponse du logiciel

[-0.8717948718,-0.358974359,-0.3333333333]

Avons-nous défini le même espace vectoriel ? Plusieurs méthodes s’offrent à nous. On peutpar exemple déterminer le sous-espace engendré par ces deux vecteurs avec ������� etvoir quelle est sa dimension :

������� ([v,w])

Réponse du logiciel

[[-2.615384615,-1.076923077,-1]]

Un seul vecteur : v et w sont donc bien liés.On aurait pu tout simplement normaliser v :

�����(v)

Réponse du logiciel

[0.8717948718,0.358974359,0.3333333333]

et la colinéarité saute aux yeux.Pour une étude sur la réduction de formes quadratiques et la recherche de valeurs propres,voir la section b. page 208.

�� !�: ����� �� ;���

Nous ne sommes pas obligés de travailler avec des matrices à coefficients dans R. Survolonspar exemple le chiffrement de Hilla.

aDALANG , Robert C./CHAABOUNI , Amel Algèbre linéaire . Lausanne: Presses polytechniques et universitaires ro-mandes, 2001.

86

Page 101: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

������

On considère les 26 lettres de l’alphabet plus un espace caractérisé par @.On voudrait coder chaque caractère par un nombre, en commençant par 0 pour @, puis 1pour A, 2 pour B, etc. en finissant par 26 pour Z.La commande ��� nous permet d’obtenir le code ASCII d’un caractèreb.Le problème, c’est que A est associé à 65.Nous allons donc « décaler » les codes ASCII pour notre usage :

code(c):������(x->(x-64),���(c))

On soustrait 64 à chaque élément de la liste c. Pour effectuer l’opération inverse, on utilise���� qui renvoie le caractère correspondant au code ASCII :

decode(L):�����(�����(x->x+64,L)) / / o n r a j o u t e 6 4 c e t t e f o i s − c i

On va chiffrer un message à l’aide d’un 3-chiffrement de Hill le message suivant :

Je ne suis pas un numéro, je suis un homme libre !

Nous allons commencer par mettre toutes les lettres en majuscules et enlever les signes deponctuations.On peut ensuite associer au message une liste de nombres :

L:�code("JE>NE>SUIS>PAS>UN>NUMERO>JE>SUIS>UN>HOMME>LIBRE")

On va ensuite regrouper les nombres 3 par 3 en colonnes et travailler dans Z/27Z. On utilise����'���(Liste,nb de colonnes) qui transforme une liste en une matrice ayant un certainnombre de colonnes. On transpose ensuite cette matrice :

clair:��������� (����'���(L,3))%27

On choisit une clé constituée d’une matrice carrée de taille 3 à coefficients dans Z/27Z etinversible :

A:�[[1,22,25],[0,25,1],[25,3,1]]%27

⎡⎢⎢⎣1%27 −5%27 −2%27

0%27 −2%27 1%27

−2%27 3%27 1%27

⎤⎥⎥⎦

Réponse du logiciel

Calculons son déterminant :

�(A)

bCf section e. page 33.

87

Page 102: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ' � ������� ������

Réponse du logiciel

13 % 27

Cette matrice est bien inversible puisque 13 est premier avec 27. On peut donc calculer soninverse :

���(A)

⎡⎢⎢⎣10%27 2%27 −9%27

4%27 6%27 2%27

8%27 13%27 4%27

⎤⎥⎥⎦

Réponse du logiciel

Codons le message clair en multipliant la matrice par A puis en transformant la transposée dela matrice en liste :

cryptemod:����'����(�������� (A*clair))

Le problème, c’est que XCAS utilise les restes symétriques. Nous allons donc ruser en utilisant%0 qui permet d’obtenir le nombre entier associé à la classe modulo 27 puis �� � qui donnele reste de la division euclidienne :

crypte:������(x->�� �(x%0,27),cryptemod)

Il ne reste plus qu’à associer ces nombres à des lettres :

message:�decode(crypte)

Réponse du logiciel

LQVPQNDUGNPENPAEZ@RYUTFEULHYJXVPLEZ@OJOOQPQKETQF

(�������

On crée une liste avec message :

Lb:�code(message)

On crée la matrice à 3 lignes associée :

brouille:��������� (����'���(Lb,3))%27

On utilise l’inverse de la clé pour décoder :

clarifie:�A^(-1)*brouille

88

Page 103: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

0��� ��� ����1 ! ��2 �) �����2� ��������

On transforme en liste :

decryptemod:����'����(�������� (clarifie))

On retourne dans N :

decrypte:������(x->�� �(x%0,27),decryptemod)

On transforme les nombres en lettres :

messageinit:�decode(brouille)

Réponse du logiciel

JE@NE@SUIS@PAS@UN@NUMERO@JE@SUIS@UN@HOMME@LIBRE@

Un espace s’est ajouté au bout pour obtenir un nombre de caractères multiple de 3.Pour une activité plus sophistiquée sur le codage, voir section 7.2 page 247.

89

Page 104: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 105: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Géométrie affine

Logiciel(s) abordé(s) : Scilab XCAS

Problématique : Manipuler des objets élémentaires de géométrie af-fine.

8�� #��� $�����

Utilisons le calcul matriciel dans le logiciel Scilab.

�� �"������ �� � ���� ��� �� ����

On cherche la pente a et l’ordonnée à l’origine b d’une droite passant par deux points A et B.

A�[1;0];B�[-1;2]x�[A(1) B(1)]y�[A(2) B(2)][a,b]�� ����(x,y)

�� �"������ �� ���� ��� �)����� � ������������

On cherche une équation du plan passant par les points A,B,C sous la forme z = a1x+a2 y+b.La matrice U contient les abscisses et ordonnées, la matrice V contient les cotes.

A�[1;0;2];B�[-1;2;3];C�[4;5;6]U�[A(1:2) B(1:2) C(1:2)]V�[A(�) B(�) C(�)][a,b]�� ����(U,V)

On vérifie en tapant :

a*U+b

qui donne V.

8�� #��� !"#$

Les fonctions de géométrie affines sont... innombrables, et l’aide est exhaustive.

Page 106: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ) � *������ �+��

Vous pouvez par exemple tracer une droite de différentes manières. On ouvre une session 2Den tapant ��� � :

���� (2*x+5*y-1�0) / / à p a r t i r d ’ u n e é q u a t i o n c a r t é s i e n n e

���� (�����(1,2),�����(-3,1)) / / p a s s a n t p a r d e u x p o i n t s d o n t o n c o n n a î t

l e s c o o r d o n n é e s

���� (1+�,-3+�) / / p a s s a n t p a r d e u x p o i n t s d o n t o n c o n n a î t l e s a f f i x e s

���� ([5+t,-2+2*t],t) / / p a s s a n t p a r l e p o i n t ( 5 , − 2 ) e t d e v e c t e u r

d i r e c t e u r ( 1 , 2 )

et dans l’espace affine de dimension 3, on ouvre une session 3D en tapant ��� � :

���� ([1,2,3],[-1,2,0]) / / o n c o n n a î t d e u x p o i n t s

���� (x+y+z�0,x�2*y) / / i n t e r s e c t i o n d e d e u x p l a n s

���� ([1+2*t,-1+t,-3+5*t],t) / / r e p r é s e n t a t i o n p a r a m é t r i q u e

�� � �� ���� ������ �"��

(��� �� ����

Étudions par exemple la symétrie orthogonale d’axe la droite d’équation y = x :

d:����� (y�x) / / o n t r a c e l a d r o i t e

M:������(4,2) / / o n t r a c e un p o i n t q u e l c o n q u e

m:���� ��� (d,M) / / o n t r a c e s o n s y m é t r i q u e

Déplacement d’un point à la souris

Notons que l’on peut faire bouger M « à la souris » en se plaçant en mode Pointeur.

On place le pointeur de la souris devant le point M : un symbole� apparaît. Faitesun clic droit en maintenant enfoncé et déplacez à volonté le point M.

P:������(1,-3) / / un a u t r e p o i n t

p:���� ��� (d,P) / / e t s o n i m a g e

�� ����������(d,���� (m,M)) / / l a d r o i t e ( mM ) e s t − e l l e o r t h o g o n a l e à l ’

a x e ? X C A S r é p o n d 1 p o u r

oui et 0 ���� non �� ������ � (���� (m,M),���� (p,P)) / / l e s d r o i t e s ( mM ) e t ( p P ) s o n t −

e l l e s p a r a l l è l e s ?

���� (m,P) / / o n t r a c e l a d r o i t e ( mP )

���� (M,p) / / e t l a d r o i t e ( Mp )

92

Page 107: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3��� ��� ����

est_faisceau_droite(���� (m,P),���� (M,p),d) / / ( mP ) , ( Mp ) e t ( d ) s o n t −e l l e s c o n c o u r a n t e s ?

����� ��(M,P)-����� ��(m,p) / / l e s d i s t a n c e s s o n t − e l l e s c o n s e r v é e s ?

R:������(3,-6);r:���� ��� (d,R) / / un 3 eme p o i n t e t s o n i m a g e

���� (M,P,R) / / u n e m e s u r e e n r a d i a n d e l ’ a n g l e ( MP , MR )

���� (m,p,r) / / u n e m e s u r e d e s o n i m a g e : l e s a n g l e s s e m b l e n t d e m e s u r e

o p p o s é e s

A:� � � ��(� �� ��(P,R)) / / A e s t un é l é m e n t q u e l c o n q u e d e [ PR ]

a:���� ��� (d,A) / / s o n i m a g e

�� � � ��(a,� �� ��(r,p)) / / a a p p a r t i e n t − i l à [ p r ] ? L e s b a r y c e n t r e s

s o n t c o n s e r v é s .

�������(���� (M,P)) / / l ’ é q u a t i o n r é d u i t e d e ( MP )

�������(���� (m,p)) / / l ’ é q u a t i o n r é d u i t e d e ( mp )

��������(���� ( �������(���� (M,P)),x)) / / o n e x p r i m e x e n f o n c t i o n d e y

d a n s l ’ é q u a t i o n d e ( MP ) : l e s r ô l e s d e x e t d e y o n t d o n c é t é

i n v e r s é s p a r l a r é f l e x i o n .

Pour explorer d’autres possibilités, voir la section 5.5 page 215 sur les tangentes à une ellipseet le thème sur le théorème de Pappus page189.

(��� �,������

On ouvre une fenêtre 3D en tapant ��� � . On peut par exemple étudier un cube :

P:������([2,2,-2]) / / un p o i n t P

cube(P,4) / / un c u b e d ’ a r ê t e 4 d e s o m m e t P

M:� � � ��(� �� ��(F,G)) / / M un é l é m e n t q u e l c o n q u e d e [ FG ]

I:������(���� �(H,F))J:������(���� �(F,C))s1:�� �� ��(G,E)s2:�� �� ��(G,B)s3:�� �� ��(H,M)s4:�� �� ��(C,M)N:�(��� �(s1,s3))[0] / / N e s t l ’ i n t e r s e c t i o n d e [ GE ] e t [ HM ]

R:���� �(s2,s4)[0]���� ��(� �� ��(N,R),���� +line_width_2) / / o n t r a c e [ NR ]

���� ��(� �� ��(E,B),���� +line_width_2) �� ������ � (� �� ��(I,J),� �� ��(N,R)) / / l e s d r o i t e s ( I J ) e t ( NR ) s o n t

− e l l e s p a r a l l è l e s ?

���� ��(������� (E,B,G),����+� ����) / / o n c o l o r i e l e p l a n ( EBG )

et on obtient :

93

Page 108: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ) � *������ �+��

���� ���� Parallélisme dans un cubePour faire du calcul formel, on prend une longueur d’arête quelconque. On crée un cube ABC-DEFGH d’arête a :

����� (a>0) / / o n s ’ a s s u r e q u e a e s t p o s i t i f

P:������((E+G)/2) / / u n e a u t r e m a n i è r e d e d é f i n i r l e m i l i e u d e [ EG ]

Q:������((F+C)/2)M:������((P+Q)/2)��������(����� ��(E,P)) / / o n d e m a n d e l a l o n g u e u r E P

1

2

�2a

Réponse du logiciel

On peut demander d’autres longueurs :

��������(����� ��(A,P))��������(����� ��(A,G))

1

2sqrt(6)a a

�3

Réponse du logiciel

Pour obtenir la figure, on fixe une valeur pour a :

94

Page 109: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3��� ��� ����

���� ���� Cube obtenu avec a=5

Pour étudier des sections planes de surfaces avec XCAS, voir section 5.7 page 220.

�� .�� ������� �� <���

Voici par exemple une petite activité :

OAB est un triangle isocèle en O avec OA = 6 cm, OB = 6 cm. On place M sur [OA] et on note x =OM. On place N sur [OB] tel que BN = OM. Quand le point M varie sur [OA], le triangle OMNvarie. On souhaite étudier l’aire du triangle OMN en fonction de x.

On ouvre une fenêtre graphique en tapant ��� + � :

O:������(0,0) / / o n p l a c e l e p o i n t d e c o o r d o n n é e s ( 0 , 0 )

A:������(6,0)B:������(0,-6)� �� ��(A,B) / / t r a c e l e s e g m e n t ( A , B )

a:� � � ��(0 �� 6) / / c h o i s i t un é l é m e n t q u e l c o n q u e e n t r e 0 e t 6

M:������(a,0)N:������(0,-6+a)� �� ��(M,N)�������� (������� (O,M,N),� ��+� ����) / / o n c o l o r i e l e t r i a n g l e e n v e r t

f:�x->��� (������� (�����(0),�����(0,-6+x),�����(x,0))) / / o n d é f i n i t l a

f o n c t i o n " a i r e "

P:������(a,f(a)) / / o n p r e n d l e p o i n t d e l a c o u r b e y� f ( x ) d ’ a b s c i s s e a

������� �(P) / / o n d e m a n d e l e s c o o r d o n n é e s d e P

����(f(x),x�0��6,���� ���� ��) / / o n t r a c e l a c o u r b e y� f ( x )

f(x) / / o n d e m a n d e l a f o r m u l e d o n n a n t l ’ a i r e e n f o n c t i o n d e x

Voici la sortie graphique :

95

Page 110: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ) � *������ �+��

���� ��� Aire maximale d’un trianglePour une autre activité géométrique de Seconde, voir section b. page 69.

8�� #��� �����

Voici par exemple comment tracer une surface avec des lignes de niveauxa

# −−−−−−−−−−−−−−−−−−−−− d é f i n i t i o n d e l a f o n c t i o n

f(x,y)�x*x+y*y

# −−−−−−−−−−−−−−−−−−−−− L i g n e s d e n i v e a u x� x v a l

xval�2dx�0.1lignex(x,y)� (x>� xval-dx && x<�xval ? f(x,y):1/0)

# −−−−−−−−−−−−−−−−−−−−− L i g n e s d e n i v e a u y� y v a l

yval�3dy�0.1ligney(x,y)� (y>� yval-dy && y<�yval ? f(x,y):1/0)

# −−−−−−−−−−−−−−−−−−− l i g n e s d e n i v e a u x z� z v a l

zval�30� � ���� � ’z �%4.3g’# A T T E N T I O N : d é / c o m m e n t e r l e s d e u x l i g n e s s u i v a n t e s p o u r a f f i c h e r /

e n l e v e r l e s l i g n e s d e n i v e a u x

� � ������� ������

� � ��������� levels discrete zval# s i o n v e u t d e s l i g n e s d e n i v e a u x r é g u l i è r e s : d e 1 0 e n

1 0 , d e 0 à 1 0 0

aMerci à Denis LE FUR. Retrouvez sur http://mathsp.tuxfamily.org/spip.php?rubrique39 d’autres conseilsconcernant GnuPlot.

96

Page 111: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3�&� ��� *!����

# s e t c n t r p a r a m l e v e l s i n c r 0 , 1 0 , 1 0 0

# −−−−−−−−−−−−−−−−−−−−− B o r n e d e x e t y

xmin�-5xmax�5� � ���� [xmin:xmax]ymin�-7ymax�7� � ����� [ymin:ymax]

# −−−−−−−−−−−−−−−−−−−− B o r n e d e z

zmin�0zmax�100# s e t z r a n g e [ z m i n : z m a x ]

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− d é f i n i t i o n d u m a i l l a g e

nx�50ny�50� � �������� � nx,ny

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− d é f i n i t i o n d e l a t a i l l e d u g r a p h i q u e

coefx �1coefy � 1� � ��" coefx,coefy

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− G r a d u a t i o n d e s a x e s

� � ���� 1� � ����� 1� � "���� 10

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− A n g l e d e v i e

� � �� � 39,16

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− D é f i n i t i o n d e s l a b e l s

# s e t t i t l e " E x e m p l e d e s u r f a c e "

� � ��� � "x"� � ���� � "y"� � "��� � "z"

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− G e s t i o n d e s p a r t i e s c a c h é e s , d e s

c o u l e u r s

# s e t h i d d e n 3 d

# s e t n o s u r f a c e

# s e t pm3d

# s e t p a l e t t e g r a y

97

Page 112: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ ) � *������ �+��

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− A f f i c h a g e d e l a l é g e n d e

� � ��� � ’P( %0.3g’,xval, ’ ; %0.3g’,yval,’ ; %0.3g’,f(xval,yval)," )"at screen 0.85,0.20 � ��

� � ��� � ’ligne x � %2.3g’,xval tc lt 1 at screen 0.85,0.15 � ��

� � ��� � ’ligne y � %2.3g’,yval tc lt 4 at screen 0.85,0.10 � ��

� � ��� � ’ligne z � %2.3g’,zval tc lt 3 at screen 0.85,0.05 � ��

� � ��� � "P" at xval,yval,f(xval,yval)+5 font " ,24" front � ��

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− A f f i c h a g e d u g r a p h i q u e

����� f(x,y) ���� lines lt 2 notitle,lignex(x,y) ���� lines lt 1 notitle,ligney(x,y) ���� lines lt 4 notitle

# s p l o t f ( x , y ) w i t h l i n e s l t 2

# s p l o t f ( x , y ) w i t h l i n e s l t 2 , l i g n e x ( x , y ) w i t h l i n e s l t 1

# s p l o t f ( x , y ) w i t h l i n e s l t 2 , l i g n e y ( x , y ) w i t h l i n e s l t 1 4

ce qui donne :

Pour une étude similaire avec le logiciel Scilab, voir la section 11.4 page 119

98

Page 113: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Statistiques

Logiciel(s) abordé(s) : XCAS, Scilab

Notions informatiques : Où on apprend qu’il est plus efficace d’étu-dier statistiques et probabilités sans tableur. On profite des capacitésde Scilab pour obtenir de belles sorties graphiques.

Problématique : On simule des expériences aléatoires. On profite descapacités de

�9�� 0� ������ �� ���������

�� �� � ���+�� �� ��� �� ������

-� ��� �� .���/ �����

Cosme II de Médicis (Florence 1590-1621), Duc de Toscane, fut le protecteur de l’illustre Gal-lilée (né à Pise le 15 février 1564 et mort à Florence le 8 janvier 1642), son ancien précepteur.Profitant d’un moment de répit du savant entre l’écriture d’un théorème sur la chute des corpset la création de la lunette astronomique, le Grand Duc lui soumet le problème suivant : il aobservé qu’en lançant trois dés cubiques et en faisant la somme des numéros des faces, onobtient plus souvent 10 que 9, alors qu’il y a autant de façons d’obtenir 9 que 10, à savoir six.Après quelques réflexions, Galilée rédigea un petit mémoire sur les jeux de hasard en 1620expliquant le phénomène.

0������ �� �,�1�������

N’ayant pas la même expérience du jeu que le bon Cosme, nous allons utiliser XCAS poursimuler un grand nombre de parties et étudier statistiquement les résultats obtenus.

1. Nous utiliserons en premier lieu ���(n) qui renvoie un entier appartenant à [0 ; n[.

Comment utiliser cette commande pour obtenir le résultat du lancer d’un dé ?

���(6)+1

Page 114: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

2. Plutôt que d’appuyer 100000 fois sur la touche ��� � , nous allons utiliser une commandeplus pratique, ����(1,nombre d’expériences,’expérience’) qui renvoie une liste denombre d’expériences résultats de l’expérience.

Par exemple ����(1,10000,’rand(3)’) renverra 10000 nombres entiers égaux à 0, 1 ou2.

3. On utilisera également ����� �(n,liste) qui compte le nombre d’apparitions de n dansla liste liste.

4. Pour calculer une moyenne, on forme une liste et on utilise � ��(liste).

5. Pour visualiser les résultats à l’aide d’une boîte à moustache, on utilise �������� (liste).Réponse du logiciel

"Sur 10000000 essais, la fréquence de sortie de 9 est de 11.25786%,et celle de 10 est de 12.53457%"Evaluation time: 147.46

���� ����� Comparaison du nombre de sorties du 9 etdu 10

0������ 3 ������ �������

Voici un exemple de simulation de ce problème :

toscane(taille,essais):�{����� neuf,dix,T,n,d,s,k,mn,md;neuf:�(�)); dix:�(�)); / / o n c r é e 2 l i s t e s v i d e s a u d é p a r t

���(k:�1;k<�essais;k++){ / / o n v a f a i r e p l u s i e u r s e s s a i s

T:�����(1,taille,’���(6)+���(6)+���(6)+3’); / / o n l a n c e ’ t a i l l e ’

f o i s 3 d é s

Pour compter le nombre d’apparitions d’une occurrence dans une liste, on utilise ����� � :

neuf:�neuf,����� �(9,T); / / o n c o m p t e l e s 9

dix:�dix,����� �(10,T); / / o n c o m p t e l e s 1 0

}

On calcule ensuite les moyennes d’apparition de 9 et 10 avec � �� :

n:� ����(� ��([neuf])/taille)*100; / / mea n e n a n g l a i s ?

d:� ����(� ��([dix])/taille)*100;

100

Page 115: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4��� (�� �������%!�� �� ����!����

On totalise le nombre total de lancers :

s:�taille*essais;

On construit les boîtes à moustache correspondant à chaque face :

mn:����� ��(�������� ([neuf]),,��� +� ����+��� ���� �);md:����� ��(�������� ([dix]),�� �+� ����+��� ���� �);

On affiche enfin les résultats et les graphiques :

�����("Sur "+s+" essais, la fréquence de sortie de 9 est de "+n+", etcelle de 10 est de "+d+);

mn,md;}:;

�� ����� �� ��

On lance 10 fois de suite une pièce de monnaie et on s’intéresse au nombre maximal de ré-sultats consécutifs égaux. On crée un programme qui simule autant de séries de lancers quel’on désire, qui calcule la moyenne des résultats obtenus et les résume dans un histogrammeet une boîte à moustaches.

piece(essais):�{����� S,k,P,j,H,m,M,s,p,h;

On crée une liste vide pour y mettre les longueurs maximum des trajets :

S:�(�));

On entame une boucle ayant comme argument le nombre d’essais souhaités :

���(k:�1;k<�essais;k++){

On crée une liste vide pour y mettre les nombres de résultats consécutifs égaux :

s:�(�));

On effectue 10 lancers de 0 ou 1 :

P:����'����(����(1,10,’���(2)’));

On commence à regarder le premier lancer :

p:�0;

Tant qu’on n’est pas au bout de la liste :

���� (p<9){

On regarde le suivant :

j:�p+1;

Et tant que le suivant est égal, on continue :

���� (P[j]��P[p] �� j<9){j:�j+1}

101

Page 116: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

On enlève p à j car on a commencé à p+1 et on colle cette valeur dans notre liste s :

s:�s,j-p;

On va ensuite voir le prochain résultat différent

p:�j;}

Le test terminé, on classe les éléments de s dans l’ordre décroissant grâce à 3���/ :

s:�SortD([s]);

On prend ensuite le premier de la liste car c’est le plus grand en utilisant � � :

h:�� �(s);

On le stocke dans une liste avant de refaire une série de 10 :

S:�S,h;}

On crée l’histogramme correspondant à cette liste avec ���������(liste) :

H:����� ��(���������([S]),,��� +� ����);

On calcule la moyenne de S :

m:� ����(� ��([S]));

On crée la boîte à moustache correspondant en rajoutant un paramètre y donnant sa tailleverticale :

M:����� ��(�������� ([S],y�-0.15��-0.05),�� �+� ����+��� ���� 7);

On affiche une phrase donnant les résultats avec ����� :

�����("Sur "+essais+" séries de 10 lancers, la ��� �� du nombre maximalde résultats consécutifs égaux est "+m);

On trace les deux graphiques :

H,M;}:;

Réponse du logiciel

"Sur 1000 séries de 10 lancers, la moyenne du nombre maximalde résultats consécutifs égaux est 3.513"Evaluation time: 0.55

102

Page 117: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4��� (�� �������%!�� �� ����!����

���� ���� Histogramme et boîte à moustache pour1000 séries de 10 lancers.

On peut même se lancer dans une animation avec... ���������(suite dépendant de u,variations de u)

���������(� �(’piece(10*u)’,u�1��100))

�� .� � ���+�� �)� ����

Un ivrogne fait aléatoirement un pas en avant ou un pas en arrière. Au bout de combien depas aura-t-il avancé de n pas ?Une situation où la médiane est plus « parlante » que la moyenne...On va créer une procédure dépendant du nombre algébrique de pas n et du nombre de simu-lations souhaitées p :

Ivrogne(n,p):�{����� A,B,C,s,k,j,M,Mo,tmp,dir;M:�(�));/ / n o u s a l l o n s f a i r e p s i m u l a t i o n s

���(k:�1;k<�p;k++){

On appelle s le nombre de pas et on crée une liste de 1500 nombres entre 0 et 999 999

s:�0;A:�����(1,1500,1000000)[0];

��� (j:�1;j<1500;j++){

On demande d’arrêter la boucle si le ne arbre est dépassé, en faisant attention au signe de n :

��(n>0){�� (s>�n) �� ��;} �� {�� (s<�n) �� ��;}

Pour simuler la décision aléatoire de reculer ou avancer, on va se référer à la parité du j e termede A : si le j e terme est pair, on avance, sinon on recule.

��(A[j] �� 2��0){s +�1} �� {s+�-1}}

103

Page 118: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

On rajoute ensuite le nombre de pas trouvé à notre liste :

M:�M,j;}

On traduit le signe de n par des instructions plus parlantes et on transforme M en liste pourutiliser les fonctions de statistiques :

��(n>0){dir:�" à ���� "} �� {dir:�" à gauche"}M:�[M];

On construit la boîte à moustache :

Mo:����� ��(�������� (M,y�-0.15��0.15),�� �+� ����+��� ���� 7);

On affiche le message avec ����� et on trace la graphique :

�����("Il a fallu en ��� �� "+�����( ����(� ��(M)))+" ��� à l’ivrogne���� atteindre le "+ n +"-ième arbre "+dir+" et la médiane est "+� ���(M

));Mo;}:;

Réponse du logiciel

"Il a fallu en moyenne 131 pas à l’ivrognepour atteindre le 2-ième arbre à droite et la médiane est 9.0"Evaluation time: 37.51

���� ����� Boîte à moustache correspondant à n = 2

Réponse du logiciel

"Il a fallu en moyenne 113 pas à l’ivrognepour atteindre le -2-ième arbre à gauche et la médiane est 9.0"Evaluation time: 34.34

���� ����� Boîte à moustache correspondant à n =−2

104

Page 119: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4��� *22���!�� �2������

�9�� ��������� ���� ���

Le logiciel Scilab fournit un générateur aléatoire de matrices. Pour savoir quel est le type derépartition par défaut, taper

str����(’info’)

La distribution uniforme donne des nombres réels équirépartis entre 0 et 1. L’instruction

A����(9,3,’normal’)

donne une matrice de nombres répartis suivant la distribution gaussienne de moyenne 0 etde variance 1.

�9�� :����� � ��������

Étant donnés deux familles de nombres x et y de même taille, on cherche la meilleure relationaffine entre les deux, c’est-à-dire le segment de droite qui approxime le mieux le nuage depoints dont les coordonnées sont dans x et y .

x�5*���(1,9)y�3*���(1,9)-2[a,b]�� ����(x,y)����(x,y,’ms’);X�[0,5];����(X,a*X+b)

Les réels a et b représentent respectivement la pente et l’ordonnée à l’origine. Sur le dessin,les points sont représentés par des carrés magenta.La régression linéaire peut être étendue en dimension supérieure ; le nombre de colonnesde x et y doit être le même : c’est le nombre d’échantillons. Les matrices a et b sont censéesapprocher au mieux y par la quantité ax+b. Cette instruction est utilisée pour rechercher deséquations de sous-espaces affines voir f. page 91.

�9�� $������

Le logiciel Scilab fournit de nombreux outils tels la variance et l’écart-type, les moyennesarithmétique, géométrique et harmonique, la médiane, l’échantillonnage aléatoire :

x�5*���(1,9)������� (x)�� �(x)� ��(x)� �� ��(x)���� ��(x)� ���(x)s�sample(22,x)

On peut extraire les fréquences et l’amplitude :

105

Page 120: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

m���� �(s)n������(s)a������� (x)

La répartition par quartiles se fait avec l’instruction :

�����(s)

La répartition par quantiles se fait en utilisant les centiles ; ordonnons d’abord la matrice spour mieux visualiser la situation :

����(s)q�[10 50 90]p�� ����(s,q)

L’analyse en composantes principales existe dans Scilab, elle consiste à approcher des nuagesde points par des ellipsoïdes.

z����(7,8,’normal’)[lambda,facpr,comprinc]�pca(z)

�9�, #%%����� �

�� ��� ����� ��

Pour illustrer la loi de répartition uniforme, on prend mille échantillons. L’histogramme pré-sente une répartition effectivement assez uniforme.

Y����(1,1000);����();bar(Y)

���� ����� Histogramme des valeurs de la variable Y

Un zoom présente le même aspect.

106

Page 121: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4�#� ����� ���

���� ����� Histogramme des valeurs de la variable Y :détail

En classant les échantillons dans l’ordre croissant, on peut tracer la fonction de répartitionpar centile.

X������(Y,’g’,’i’);q�1:99;p�� ����(X,q)x�p(:,1);y�p(:,2);����();����(x,y)

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.00

100

200

300

400

500

600

700

800

900

1000

���� ����� Répartition de la variable Y par centiles

Une répartition proportionnelle à la mesure de Lebesgue donnerait la droite diagonale surle graphique. Un résultat équivalent est obtenu en traçant l’histogramme de l’échantillon or-donné.

����();bar(X)

107

Page 122: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

���� ���� Histogramme des valeurs de la variable X

Les histogrammes par répartition donnent le même résultat indépendamment de l’ordre desvaleurs ; plus le résultat s’approche d’une droite horizontale, plus la répartition est uniforme.

����();��������(100,Y)

���� ���� Histogramme des fréquences normalisées dela variable Y

�� ��� �� ����

Pour illustrer la loi de répartition normale ou gaussienne, il suffit de modifier la première ins-truction ci-dessus en :

Y����(1,1000,’normal’);

108

Page 123: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4�#� ����� ���

Les autres instructions illustrent la fonction de répartition de la loi normale. Le tracé par-dessus le dernier histogramme de la courbe représentative de la fonction

exp(− t 2

2

)�

par la commande

t�-3:.1:3;z� �(-t .^ 2 ./2)/����(2*%pi);����(t,z)

illustre la répartition normale.

���� ��� Histogramme des fréquences normalisées dela variable Y suivant la loi gaussienne, avec le graphe de

la fonction de Gauss

�� ���� �� ����

Une pièce à deux faces ( !) est tirée au hasard 1000 fois.

piece�[’pile’,’face’]echantillon�sample(1000,piece)t������(echantillon)bar(t(2))

La fonction ����� a l’avantage sur la fonction ��� � de pouvoir travailler avec des chaînesde caractères. Le dessin des fréquences nous permet de voir si Scilab est pipé ou pas. . .

109

Page 124: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

���� ���� Premier tirage à pile ou face

���� ��� Deuxième tirage à pile ou face

�� 8�� �� ��

Le tirage de dé s’effectue comme pour le tirage de pile ou face. Comme les échantillons nesont pas des nombres, on applique un effet miroir sur la liste des fréquences pour que lesnuméros correspondent aux noms.

de�[’I’ ’II’ ’III’ ’IV’ ’V’ ’VI’]echantillon�sample(1000,de)t������(echantillon)z�" ���(de);Z�t(2);��� k�1:6,z(k)�Z(7-k); �;

110

Page 125: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4�#� ����� ���

bar(z)

Pour le tirage de deux dés, la machine peut nous donner les fréquences de chaque couple.

couple�[];��� k�de,couple�[couple;de+’ ’+k]; �;echantillon�sample(1000,couple);t������(echantillon);y�t(1);z�t(2);Y�y;Z�z;��� k�1:36,Z(k)�z(37-k);Y(k)�y(37-k); �;Z������(Z,[6,6]);�����(Z)

���� ���� Histogramme des fréquences pour un tiragede deux dés

L’étude des sommes de points se fait aisément, les sommes son calculées ici sans utiliser leretournement Z ci-dessus par souci de généralité.

somme�[12:-1:7 11:-1:6 10:-1:5 9:-1:4 8:-1:3 7:-1:2];�� ��[0];��� k�1:11,ind�vectorfind(somme,k+1,’c’);zz�z(ind);�� ��[�� �;���(zz)]; �;����();bar(�� �)

111

Page 126: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �2 � 0������

���� ���� Histogramme des fréquences pour les sommedes points dans un tirage de deux dés

112

Page 127: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Calcul différentiel

Logiciel(s) abordé(s) : Maxima XCAS Gp Yacas Scilab

Problématique : Calcul différentiel du lycée jusqu’à l’agrégation.

���� ��� ��� � ���

�� ��� ������

Le logiciel Scilab calcule des dérivées approchées par des taux de variation. Pour fabriquerla dérivée de l’application e2x , il est bon de faire exécuter le programme suivant.

�������� y�f(x)y� �(2*x) ���������

�������� y�fprime(x)y� ������� (f,x) ���������

Pour tracer simultanément le graphe de f et de sa dérivée restreintes à l’intervalle [−1;1]comme sur la figure 11.27, il est nécessaire de rentrer les valeurs successives de f ′ dans unvecteur.

t�-1:.1:1;y�[]��� x�ty�[y fprime(x)]; �

����(t,f(t),t,y)

Page 128: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

−1.0 −0.8 −0.6 −0.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.00

5

10

15

���� ���� Une partie de l’hélice

Scilab et les couleurs

Le logiciel Scilab change de couleur automatiquement, la première est toujoursbleue. . . même s’il est difficile de s’en rendre compte sur la figure 11.27.

�� ��� ��3���

Le logiciel Maxima donne des dérivées formelles avec la commande ���. L’instruction

���( �(2*x),x);

donne le résultat escompté.

�� ��� � ��

Le logiciel XCAS se comporte commeMaxima. La même commande ���(expression,variable)est disponible :

���( �(2*x),x)

Elle donne le résultat escompté, mais il y en a d’autres...

114

Page 129: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �������� �� ��

Fonction dérivée et nombre dérivé

XCAS est très à cheval sur la différence entre expression et fonction. Il distinguedonc, comme le mathématicien, nombre dérivé et fonction dérivée.Pour obtenir l’expression générale de la fonction dérivée, qu’on nomme cou-ramment f ′(x) pour une certaine fonction f , on peut utiliser ���, mais aussi ��� (expression,variable) :

derive( �(2*x),x)

On ne peut pas l’utiliser tel quel pour calculer f ′(2). On utilise alors�������� ��� (fonction) :

f:�x-> �(2*x);fd:��������� ��� (f);fd(2)

On peut aussi utiliser des fonctions pré-programmées sur XCAS :

�������� ��� (����>��� +�)

(‘ x‘)->cos(‘ x‘)*1/2*1/(sin(‘ x‘))*sqrt(sin(‘ x‘))+1

Réponse du logiciel

Le symbole @ correspond à la composée de fonction.

On obtient le calcul approché du nombre dérivé avec �/ ���(expression,variable,pas),le pas valant par défaut 0,001, par la méthode du milieu. Par exemple :

�/ ���(��(��(x)),x,0.00001)

Réponse du logiciel

(ln(ln(x+0.001))-ln(ln(x-0.001)))*500.0

et on transforme cette expression en fonction :

fp:��������(���(),x)

pour demander f ′(2) :

fp(2)

115

Page 130: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

�� ��� #�

Le logiciel Gp se comporte différemment.

���( �(2*x),x)

donne un développement limité (voir section b. page 153).

�� ��� 4���

Le logiciel Yacas se comporte sans surprise ; il est toutefois sensible à la hauteur de casse descommandes.

/(x) ��(2*x)

donne le résultat escompté.Le logiciel Yacas connaît quelque chose du calcul différentiel vectoriel.

V(x):�{x^3*y,x^2*z,x*y}8���(V(x,y,z),{x,y,z})

donne le rotationnel du champ de vecteur tridimensionnel V.La suite de ce chapitre utilise Scilab.

���� "����� ��;������� ����� ��� ����

Pour une fonction différentiable f à valeurs réelles, le gradient est le vecteur associé à la dif-férentielle par le produit scalaire euclidien.

�������� y�f(x)y�����(x)^2 ���������

�������� y�g(x)y� ������� (f,x)’ ���������

x�[1;1;1]g(x)

La matrice hessienne est celle de l’application linéaire tangente du gradient dans la base ca-nonique.

�������� H�h(x)[J,H]� ������� (f,x,order�2,H_form�’blockmat’) ���������

x�[1;1;1]h(x)

Le rotationnel est le double de la partie antisymétrique de l’application linéaire tangente d’unchamp de vecteurs.

116

Page 131: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� ��!����

�������� y�V(x)y�����(x)^2*x(1)*x ���������

�������� y�rot(�����,x)J� ������� (�����,x)y�J-J’ ���������

x�[1;1;1]rot(V,x)

Le rotationnel du gradient est nul : on le voit sur l’exemple ���$�=&.

���� " ����

Pour tracer une hélice (figure 11.28), il faut définir séparément les fonction coordonnées.

�������� x�X(t)x����(t) ���������

�������� y�Y(t)y����(t) ���������

�������� z�Z(t)z�t ���������

t�0:.1:3*%pi������(X(t),Y(t),Z(t))

0

1

2

3

4

5

6

7

8

9

10

Z

−1.0−0.6

−0.20.2

0.61.0 X

−1.0−0.6

−0.20.2

0.61.0Y

���� ���� Une partie de l’hélice

117

Page 132: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

On définit le vecteur tangent unitaire :

�������� M�c(t)M�[X(t);Y(t);Z(t)] ���������

�������� v�vitesse(t)v� ������� (c,t) ���������

�������� v�T(t)v�vitesse(t)v�v/����(v) ���������

On définit le vecteur normal et la courbure :

�������� v�Tprime(t)v� ������� (T,t) ���������

�������� y�kappa(t)y�����(Tprime(t))/����(vitesse(t)) ���������

�������� v�N(t)v�Tprime(t)v�v/����(v) ���������

On définit le vecteur binormal grâce au produit vectoriel :

�������� v�B(t)A�T(t)*N(t)’-N(t)*T(t)’z�A(1,2)x�A(2,3)y�A(3,1)v�[x;y;z] ���������

On peut vérifier que la base est orthonormée en un point :

A�[T(1) N(1) B(1)]A*A’

La matrice AA′ doit être proche de l’identité. On définit alors la torsion :

�������� v�Bprime(t)v� ������� (B,t) ���������

�������� y�tau(t)y�Bprime(t)’*N(t)/����(vitesse(t)) ���������

Courbure et torsion devraient être constantes dans le cas de l’hélice ; comme on fait des déri-vées approchées jusqu’à l’ordre trois, il y a beaucoup d’erreur dans la torsion (figure 11.29) ;

118

Page 133: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �!�5 ��

�����'(t,kappa,style�5)�����'(t,tau,style�13)

���� ���� La courbure de l’hélice en rouge et sa torsionen vert

���� $��<���

On se donne un domaine pavé plan et une fonction f de ce rectangle dans R, de classe C 2.Le graphe de f est un exemple de nappe dans R3. Définissons par exemple la selle, dont lacourbure de Gauss est négative :

�������� z�f(x,y)z�x*y ���������

et l’hémisphère unité, dont la courbure de Gauss est constante égale à un :

�������� z�ff(x,y)z�����(1-x^2-y^2) ���������

L’espace tangent en un point de coordonnées (x1, x2, f (x1, x2)) est dirigé par les vecteurs

u(x1, x2) =

⎛⎜⎜⎜⎝1

0∂ f

∂x1(x1, x2)

⎞⎟⎟⎟⎠ , v(x1, x2) =

⎛⎜⎜⎜⎝0

1∂ f

∂x2(x1, x2)

⎞⎟⎟⎟⎠ .

Une nappe paramétrée est une application F de classe C 2 du 2-pavé dans R3. La fonctionsuivante paramètre le graphe

�������� F�nappe(nom)chaine�’M�[x(1);x(2);’+nom+’(x(1),x(2))]’ ��(’M�F(x)’,chaine) ���������

119

Page 134: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

L’argument de la fonction nappe ci-dessus est la chaîne de caractères qui nommela fonction à valeurs réelles.

L’espace tangent en un point de coordonnées M = F(x1, x2) est l’image de l’application linéairetangente de F.

�������� J����� ��(F,x)J� ������� (F,x) ���������

Pour dessiner simplement le graphe d’une fonction de R2 dans R, l’instruction ������ con-vient. L’exemple ci-dessous provient d’un problème du baccalauréat français de juin 2007 ;on évite l’annulation du dénominateur en décalant les valeurs des coordonnées. Les deuxderniers arguments précisent les angles de prise de vue. L’utilisateur peut changer le point devue grâce au bouton �� ���� de la fenêtre graphique. Le résultat est sur la figure 11.30.

x�.1:.3:12;y�x;�������� z�f(x,y)z�3*x*y/(x+y) ���������

����();������(x,y,f,alpha�60,theta�-120)

���� ����� Extrait d’un problème du bac de 2007(France)

L’instruction

������%(x,y,f,alpha�60,theta�-120)

120

Page 135: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �!�5 ��

donne des couleurs qui représentent la cote, donc la valeur de la fonction f (figure 11.31).Pour obtenir le même résultat à partir de la commande ������, il faut appuyer sur le bou-ton ���� de la fenêtre graphique, et choisir Figure properties, cela ouvre une fenêtre de dia-logue. Dans l’arborescence à gauche : descendre jusqu’au dernier élément, puis dans l’on-glet Style de la partie droite de la fenêtre de dialogue, choisir le drapeau de couleur (Colorflag) numéro 1.

���� ����� Extrait d’un problème du bac de 2007(France) : les couleurs représentent la cote

L’exemple suivant est tiré du d’un problème du baccalauréat de juin 2007 en Polynésie fran-çaise.

x�0:.2:6;y�0:.2:8;�������� z�f(x,y)z�2*x^2-8*x+y^2-6*y+18 ���������

a�5t�-130����();������%(x,y,f,alpha�a,theta�t)

Pour dessiner le plan d’équation y = 2, on rajoute un rectangle avec l’instruction ������quidessine des surfaces quadrangulées : une seule cellule suffit. On remarque sur le graphiqueprécédent que la cote varie entre 0 et 60. Il faut prendre garde à respecter les angles de prisede vue.

X�[0 0;6 6];Y�[2 2;2 2];Z�[0 60;0 60];������(X,Y,Z,alpha�a,theta�t)

Pour tracer l’intersection du plan et du graphe de f , il suffit de tracer une partie du graphedont l’amplitude en ordonnée est très réduite autour de la valeur 2.

������(x,[1.9:.01:2.1],f,alpha�a,theta�t)

Pour tracer les points A = (3,2,3) et B = (5,2, f (5,2)), il suffit de tracer des graphes correson-dant à une légère variation horizontale (figure 11.32).

121

Page 136: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

Bun�[4.9:.01:5.1];Bdeux�[1.8:.001:2.2];������(Bun,Bdeux,f,alpha�a,theta�t)�������� z�g(x,y)z�3 ���������

������(Bun-2,Bdeux,g,alpha�a,theta�t)

���� ���� Extrait d’un problème du bac de 2007(Polynésie française) : intersection d’un graphe et du

plan y = 2

Le point B apparaît comme une tache noire. Le point A est caché sous la surface. Il faut ap-puyer sur le bouton ���� de la fenêtre graphique, et choisir Current axes properties, cela ouvreune fenêtre de dialogue. Dans l’arborescence à gauche : le premier élément est sélectionné,dans l’onglet Viewpoint de la partie droite de la fenêtre de dialogue, remplacer la valeur 5de l’angle de rotation par la valeur 185. Par-dessous, on voit maintenant sur la figure 11.33 lasurface, la courbe d’intersection, et les deux points A et B.

���� ����� Extrait d’un problème du bac de 2007(Polynésie française) : intersection d’un graphe et du

plan y = 2, avec deux points

122

Page 137: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �!�5 ��

Si le plan y = 2 était n’importe quelle surface transverse au graphe de f , la procédure seraitplus substantielle. Le paramétrage de la courbe intersection se résout sur une famille T d’abs-cisses t qui subdivise l’intervalle [0;6], en demandant une résolution approchée de l’équationnon linéaire en dimension 3 :

⎧⎪⎪⎨⎪⎪⎩x − t = 0

y −2 = 0

z − f (x, y) = 0

Voici l’ensemble complet des instructions :

x�0:.2:6;y�0:.2:8;�������� z�f(x,y)z�2*x^2-8*x+y^2-6*y+18 ���������

a�5;t�-130;����();������%(x,y,f,alpha�a,theta�t)X�[0 0;6 6];Y�[2 2;2 2];Z�[0 60;0 60];������(X,Y,Z,alpha�a,theta�t)/ / f p l o t 3 d ( x , [ 1 . 9 : . 0 1 : 2 . 1 ] , f , a l p h a�a , t h e t a� t ) / / n ’ e s t p l u s u t i l i s é

Bun�[4.9:.01:5.1];Bdeux�[1.8:.001:2.2];������(Bun,Bdeux,f,alpha�a,theta�t)�������� z�g(x,y)z�3.1 ���������

������(Bun-2,Bdeux,g,alpha�a,theta�t)/ / L a f o n c t i o n q u i d é f i n i t i n t e r s e c t i o n

t�0�������� y�inter(x)y�[x(1)-t,x(2)-2,x(3)-f(x(1),x(2))] ���������

/ / p a r a m é t r a g e d e l ’ i n t e r s e c t i o n

T�0:.1:6;abscisse�[];ordonnee�[];cote�[];��� t�T,M������ ([t;0;0],inter) ;abscisse�[abscisse M(1)];ordonnee�[ordonnee M(2)];cote�[cote M(3)]; �

/ / d e s s i n

������(abscisse,ordonnee,cote,[alpha�a,theta�t])

123

Page 138: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

Les angles de vue ne se rentrent pas de la même manière dans ������ etdans ������ ; de plus l’exécution par le logiciel de la dernière instruction ne res-pecte pas les angles de prises de vue.

Il faut ouvrir la boîte de dialogue des propriétés de la figure. Dans la partie gauche, cliquer surle bouton � de la ligne Axes, sélectionner Polyline, dans la ligne Line, augmenter l’épaisseurdu trait : voir la saisie d’écran 11.34.

���� ���� Boîte de dialogue de la fenêtre graphique deScilab

Dans la ligne Axes, dans l’onglet viewpoint on ramène les angles à 185 et −130 pour obtenir lafigure 11.35. (En sélectionnant les lignes correspondantes, on peut augmenter ou diminuer lagraisse des dessins qui représentent A et B.)

124

Page 139: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� 6�!�� �2���%!� ��� �!�5 ��

���� ����� Extrait d’un problème du bac de 2007 (Poly-nésie française) : nouvelle mouture du dessin

En zoomant sur le point A et en ajustant les angles de prise de vue, on obtient la figure 11.36qui visualise la non-appartenance du point A au graphe de f , comme le montre le calculde f (3,2) par Scilab, qui donne 4.

���� ����� Le point A n’appartient pas au graphe de f

���, =��� ������ �� ��<���

Le vecteur normal unitaire à la surface est défini grâce au produit vectoriel des dérivées par-tielles.

�������� v�n(F,x)J����� ��(F,x)un�J(:,1) ; deux�J(:,2)A�un*deux’-deux*un’z�A(1,2)x�A(2,3)y�A(3,1)

125

Page 140: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

v�[x;y;z]v�v/����(v) ���������

La première forme fondamentale de la surface est la restriction de la forme quadratique eucli-dienne à l’espace tangent.La seconde forme fondamentale de la surface est associée à la matrice des dérivées de la nor-male unitaire dans l’espace tangent de façon à être indépendante du paramétrage. L’applica-tion de Gauss est constituée des dérivées partielles de la normale unitaire.

�������� V�Gauss(F,x)h�1e-4un�[h;0]deux�[0;h]V�[n(F,x+un)-n(F,x) , n(F,x+deux)-n(F,x)]/h ���������

La dérivée de n est à valeurs dans l’espace tangent puisque le produit scalaire de n avec l’unede ses dérivées partielles est la moitié de la dérivée de sa norme, constante égale à un :⟨

n,∂n

∂xi(x1, x2)

⟩= 1

2

∂xi

(‖n‖2)= 0 pour i = 1et 2.

Par commodité, construisons ensuite la matrice N qui envoie les deux premiers vecteurs de labase canonique sur la dérivée de n et le troisième sur la normale unitaire.

�������� V�N(F,x)V�[Gauss(F,x),n(F,x)] ���������

La seconde forme fondamentale est la restriction à l’espace tangent de la forme quadratiquereprésentée par le produit de l’application de Gauss par le pseudo-inverse de l’applicationtangente. Les valeurs propres de la seconde forme fondamentale sont appelées courburesprincipales et se lisent dans la matrices courbures donnée par la fonction elements :

�������� [directions,courbures]�elements(F,x)J����� ��(F,x)G�Gauss(F,x)M�����(J)*G[directions,courbures]��� �(M) ���������

La courbure de Gauss est le produit des valeurs propres. Deux fonctions donnent des résultatsproches.

�������� K�kappa(F,x)J����� ��(F,x)K� �(N(F,x))/����( �(J’*J)) ���������

�������� K�courbure(F,x)

126

Page 141: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� 6�!�� �2���%!� ��� �!�5 ��

[directions,courbures]�elements(F,x)K� �(courbures) ���������

La courbure moyenne est la somme des courbures principales.

�������� K�CM(F,x)[directions,courbures]�elements(F,x)K����� (courbures) ���������

Il ne reste plus qu’à initialiser les paramétrages, et obtenir quelques valeurs...

F�nappe(’f’)FF�nappe(’ff’)x�[.2;.5]y�[-.8;.5]O�" ���(2,1)[directions,courbures]�elements(FF,O)[directions,courbures]�elements(FF,x)[directions,courbures]�elements(FF,y)courbure(FF,O)kappa(FF,O)courbure(FF,x)courbure(FF,y)CM(FF,O)CM(FF,x)CM(FF,y)[directions,courbures]�elements(F,O)[directions,courbures]�elements(F,x)[directions,courbures]�elements(F,y)courbure(F,O)kappa(F,O)courbure(F,x)courbure(F,y)CM(F,O)CM(F,x)CM(F,y)

La pseudosphère est la surface de révolution de la tractrice.

�������� M�H(x)a�x(1);b�x(2)r�����(1-a^2-b^2)c������(r)-rM�[a;b;c] ���������

courbure(H,x)courbure(H,y)

127

Page 142: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

Sa courbure est constante, égale à −1.

courbure(H,x)courbure(H,y)

On dessine maintenant sur une grille soigneusement choisie pour les exemples cités ici.

�������� dessin(F)maille�30I�1:maille;J�I;Z�" ���(maille,maille);couleur�Z;��� t�I��� u�Jpoint�[t/maille-.55;u/maille-.55];z�F(point);Z(t,u)�z(3);couleur(t,u)�courbure(F,point); � ; �

��" (Z)����();X�I/maille-.55;Y�J/maille-.55;surf(X,Y,Z)����();surf(X,Y,couleur)����();surf(X,Y,Z,couleur) ���������

L’instruction

dessin(H)

demande un peu de calcul : la grille contient 900 nœuds. La courbure reste proche de −1.

���� ����� La pseudosphère : les couleurs représententla cote

128

Page 143: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� 6�!�� �2���%!� ��� �!�5 ��

���� ����� La courbure de la pseudosphère : les couleursreprésentent la cote

���� ����� La pseudosphère : les couleurs représententla courbure

Les instructions

dessin(F) ; dessin(FF)

donnent des figures suggestives.

129

Page 144: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

���� ��� � La selle : les couleurs représentent la cote

���� ��� � La courbure de la selle : les couleurs repré-sentent la cote

130

Page 145: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� 6�!�� �2���%!� ��� �!�5 ��

���� ��� La selle : les couleurs représentent la cour-bure

���� ��� � La sphère : les couleurs représentent la cote

131

Page 146: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

���� ��� La courbure de la sphère : les couleurs repré-sentent la cote

���� ��� � La sphère : les couleurs représentent la cour-bure

���. )+�� � ����� < ��� � �� R2 ��� R ���� !"#$

�� �3� ���� �� ���� ����� �� ������������� �� ��� ����

Énonçons ce théorème que nous ne démontrerons pas ici :

132

Page 147: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���,� �"���� �)!� 5� ��� �� R2 �� R �� ����

Extremum sous contrainte

Si f et g sont deux fonctions indépendantes telles que :

➥ f et g ont des dérivées partielles continues dans un voisinage d’un pointP(x0, y0) ;

➥ f présente un extremum au point P sous la contrainte g (x, y) = k, où k estune constante ;

➥−→�g évalué au point P est différent du vecteur nul,

alors−→� f (x0, y0) = λ

−→�g (x0, y0) pour un scalaire λ appelé multiplicateur de Lagrange.Par conséquent, un extremum d’une fonction f soumise à une contrainte g ne peutêtre observé qu’à un point P où les gradients de f et g sont parallèles. La contrainteest alors tangente à la courbe de niveau de f passant par le point P. Pour trouver cetéventuel extremum, il faut résoudre le système :⎧⎪⎨⎪⎩

−→� f (x, y) =λ−→�g (x, y)

g (x, y) = k

On veut par exemple déterminer les extrema de la fonction f : (x, y) �→ y2 − x2 sur le disqueunité.

f:�(x,y)->y^2-x^2

La fonction est continue sur un compact, elle atteint ses extrema en un point intérieur oulimitrophe au disque unité.Les points critiques s’obtiennent en égalant les dérivées partielles à 0 :

���� ([���(f(x,y),x)�0,���(f(x,y),y)�0],[x,y])

Réponse du logiciel

[[0,0]]

Cette fonction n’a qu’un seul point critique à l’intérieur du disque unité.Il faut également trouver les extrema sur la frontière du disque, i.e. sous la contrainte g (x, y) =x2 + y2 = 1. On utilise le théorème précédent et la commande ���(f(x,y),[x,y]) :

g:�(x,y)->x^2+y^2;���� ([���(f(x,y),[x,y])�lambda*���(g(x,y),[x,y]),g(x,y)�1],[x,y,lambda

])

133

Page 148: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

⎡⎢⎢⎢⎢⎢⎣−1 0 −1

1 0 −1

0 −1 1

0 1 1

⎤⎥⎥⎥⎥⎥⎦

Réponse du logiciel

La fonction ne peut donc atteindre un extremum qu’à un des points (0 ; 0), (0 ; 1), (0 ; −1),(−1 ; 0) ou (1 ; 0) :

f(0,0);f(1,0);f(-1,0);f(0,1);f(0,-1)

0,−1,−1,1,1

Réponse du logiciel

Par conséquent la fonction atteint son maximum de 1 aux points (0; 1), (0; −1) et sa valeur mi-nimale −1 aux points (1; 0), (−1; 0). Ces résultats peuvent être confirmés par la représentationgraphique de la surface en utilisant �������� :

��������(f(x,y),[x�-1��1,y�-1��1],�� ��0.05,��� ��0.05,����������+� ����)

���� ��� � Surface d’équation z = y2 − x2

et la représentation des courbes de niveau de la fonction et de la contrainte.On utilise �����������(f(x,y),[x,y],liste des valeurs des lignes) et������������(g(x,y)-1,x,y) :

134

Page 149: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���,� �"���� �)!� 5� ��� �� R2 �� R �� ����

�����������(f(x,y),[x,y],[-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1],�� ��0.05,��� ��0.05),

������������(x^2+y^2-1,x,y)

qui affiche :

x

y

-2 -1 0 1 2

-1

-0.5

0

0.5

1

���� ��� � Courbe de niveau de f avec la contrainteg (x, y) = 1

�� �������� ������ � �� �=���� �)�3������ �)�� �3� ����

Rappelons ce résultat classique que nous ne démontrerons pas :

Test de la dérivée seconde

Soit f : x �→ f (x, y) une fonction telle que :

➥ les dérivées partielles de premier et second ordre sont continues dans un voi-sinage d’un point (x0, y0);

➥−→� f (x0, y0) =−→

0 .

Posons r = f ′′x2 (x0, y0), s = f ′′

x y (x0, y0) = f ′′y x (x0, y0) et t = f ′′

y 2 (x0, y0). Alors, si

➥ δ = r t − s2 > 0 et ∂ f (x,y)∂x2 (x0, y0) < 0 ou ∂ f (x,y)

∂y2 (x0, y0) < 0, alors f atteint un

maximum relatif au point (x0, y0);

➥ δ = r t − s2 > 0 et ∂ f (x,y)∂x2 (x0, y0) > 0 ou ∂ f (x,y)

∂y2 (x0, y0) > 0, alors f atteint un

minimum relatif au point (x0, y0);

➥ δ= r t − s2 < 0, alors f présente un point de selle au point (x0, y0);

➥ δ= r t − s2 = 0, alors le théorème ne permet pas de conclure.

135

Page 150: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � ������ �4������

Cherchons les extrema relatifs de la fonction f : (x, y) �→ 6x y2 −2x3 −3y4 qui est de classeC ∞ sur R2.

f:�(x,y)->6*x*y^2-2*x^3-3*y^4

Cherchons ses points critiques :

���� ([���(f(x,y),x)�0,���(f(x,y),y)�0],[x,y])

⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣

0 0

0 0

1 −1

0 0

1 1

⎤⎥⎥⎥⎥⎥⎥⎥⎥⎦

Réponse du logiciel

Il y a donc trois points critiques. Essayons de les classer avec le théorème précédent.On va utiliser la fonction � �����(()f(x,y),[x,y]) ou ���(f(x*y),[x,y],2) qui donnent lamatrice hessienne de f qui est la matrice des dérivées d’ordre 2, c’est-à-dire :

� �����(F(x,y),[x,y])

⎡⎣ ∂F(x,y)∂x2

∂F(x,y)∂x y

∂F(x,y)∂x y

∂F(x,y)∂y2

⎤⎦Réponse du logiciel

Dérivées partielles et XCAS

On obtient ∂F(x,y)∂x2 en rentrant diff(F(x,y),x,2)

et ∂F(x,y)∂x y en rentrant diff(F(x,y),[x,y],[1,1])

Ici :

136

Page 151: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���,� �"���� �)!� 5� ��� �� R2 �� R �� ����

H:�� �����(f(x,y),[x,y])

[−(6 ·2 ·x) 6 ·2 · y

12 · y 6 ·x ·2− (12 ·3 · (y)2

)]

Réponse du logiciel

Il s’agit de déterminer le déterminant de cette matrice qui, attention, est une expression. Onutilisera donc astucieusement la commande �����(ancien=nouveau) :

delta:�(a,b)->��������(�����( �(H),x�a,y�b)

f2:�(a,b,V)->��������(�����(���(f(x,y),V,2),x�a,y�b)

Alors :

delta(1,1);delta(1,-1);delta(0,0)

et :

f2(1,1,x);f2(1,-1,x);f2(0,0,x)

nous permettent d’affirmer que f atteint un maximum relatif aux points (1 ; 1) et (− ; −1).La représentation graphique va nous permettre de confirmer ce résultat et de constater que(0 ; 0) est un point de selle :

���� ��� � Surface d’équation z = 6x y2 −2x3 −3y4

Pour un exposé vivant, intéressant, abordable, bref québécois de ces notions, voira.

aAMYOTTE , Luc Introduction au calcul avancé et à ses applications en sciences . Québec: ERPI, 2004.

137

Page 152: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 153: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Intégration

Logiciel(s) abordé(s) : Yacas Maxima Scilab XCAS MuPAD

Problématique : Des primitives formelles et des intégrales numé-riques peuvent être obtenues.

���� ��� ����

�� ��� 4���

Pour trouver une primitive avec Yacas, il suffit de taper :

0�� ���� (x) 3��(x)

et pour obtenir son intégrale sur l’intervalle [0,π] :

A:�0�� ���� (x,0,4�()) 3��(x)((A,20)

La dernière commande donne le résultat approché avec une précision arbitraire de vingt dé-cimales. Des primitives plus compliquées ne lui font pas peur :

0�� ���� (x) )�(x)

Mais Yacas a ses limites :

0�� ���� (x) (1+(2��(x))^2)^(1/2)

ne donne rien.

�� ��� ��3���

Pour obtenir une primitive de sin(x), avec le logiciel Maxima, il suffit de taper :

��� ���� (���(x),x);

et pour obtenir son intégrale sur l’intervalle [0,π] :

��� ���� (���(x),x,0,%pi);

Des primitives plus compliquées ne lui font pas peur :

Page 154: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

��� ���� (���(x),x);��� ���� (����(1+(���(x))^2), x);

Pour la dernière, il faut savoir que la notation .30(@ désigne l’argument sinus hyperbolique,noté Argsh en mathématiques. Maxima peut trouver la primitive d’une fraction rationnelle :

R(x):=1/(x^3+x^2+x+1);��� ���� (R(x),x);

Mais une autre fraction rationnelle peut lui faire baisser les bras :

S(x):=1/(x^3+x+1);��� ���� (R(x),x);

Dans ce cas, il y a peut-être une solution en utilisant les bonnes vieilles méthodes de l’âge dupapier et du crayon.

�� ������������ �� ������� �����

La décomposition en éléments simples consiste à décomposer en facteurs irréductibles dansRle dénominateur de la fraction (mise sous forme irréductible) ; la fraction se décompose ensomme de fractions construites à partir de ces facteurs. Intégrer séparément chaque termeest souvent plus facile que le problème de départ. Commençons par le cas dont on connaîtdéja le résultat ;

R(x):=1/(x^3+x^2+x+1);RR(x):=��������(R(x),x);RR(x);

La fraction est décomposée en1

2(x +1)− x −1

2(x2 +1)

L’instruction

��� ���� (RR(x),x);

donne le même résultat que la primitive de R, quoique un peu moins bien simplifié.Prenons maintenant le cas difficile. La décomposition en éléments simples ne fonctionne pasnon plus.

S(x):=1/(x^3+x+1);��������(S(x),x);

La différence, c’est que nous pouvons attaquer le problème sous l’angle des polynômes, où laboîte à outils est bien fournie.

P(x):=x^3+x+1;A:���� (P(x)=0);PP(x):=(x-���(A[1]))*(x-���(A[2]))*(x-���(A[3]));Q(x):=1/PP(x);

140

Page 155: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ����������

La fraction Q est la même que S, sauf que nous avons indiqué à la machine la factorisation dudénominateur.

Attention : à partir du degré 5, il n’y a plus de formule algébrique universelle pourextraire les racines d’un polynôme. . .

T(x):=��������(Q(x));TT(x):=��� ���� (Q(x),x);

donnent des réponses complexes.Pour obtenir des réponses réelles,

� ������(T(x));

entraîne la question de Maxima :

Réponse du logiciel

SQRT(31) 1 1/3 SQRT(31) 1 2/3Is 3 (--------- - -) x - 3 (--------- - -) + 1 positive or negative?

6 SQRT(3) 2 6 SQRT(3) 2

Il faut répondre à l’alternative par exemple :

������� ;

De même, l’instruction

� ������(TT(x));

avec la même réponse que précédemment donne une expression formelle pour une primi-tive de la fonction S. Mais Maxima n’arrive pas à calculer une valeur pour l’intégrale sur unintervalle donné.On peut utiliser alors une fonction de calcul approché pour les intégrales :

���� ��(S(x),x,2,3);

qui donne une valeur numérique.

Attention : L’instruction romberg(Q(x),x,2,3); ne fonctionnerait pas. . .

141

Page 156: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

�� ��� ������

Le logiciel Scilab calcule des intégrales approchées avec l’instruction ���� mais elle n’ac-cepte pas les fonctions internes du logiciel. La commande intg(0,%pi,sin) est invalide. Labonne procédure est la suivante :

function y=f(x)y=���(x)endfunctionintg(0,%pi,f)

Pour tracer le graphe de la primitive du logarithme népérien qui s’annule en 1, on commencepar définir les fonctions nécessaires.

function y=f(x)y=���(x)endfunctionfunction y=F(x)y=intg(1,x,f)endfunctiont=�1:�1:3;

Mais là, aucune des instructions fplot2d(t,F), /plot(t,F(t)), plot(t,t*log(t)-t) n’estvalide. Il faut accumuler les valeurs scalaires dans un vecteur :

Y=[]for x=tY=[Y F(x)];endplot(t,Y)

ce qui donne la figure 12.49.

0.0 0.5 1.0 1.5 2.0 2.5 3.00.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

���� �� � Graphe de x log(x)− x +1

142

Page 157: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ����������

�� ��� � ��

Les instructions de base de XCAS ressemblent à celles de Maxima et les résultats sont similaires.

��� ���� (���(x),x)��� ���� (���(x),x,0,��)

Le passage par les décompositions en éléments simples est plus rapide. Les instructions sui-vantes donnent les mêmes résultats que sous Maxima.

R(x):�1/(x^3+x^2+x+1)��������(R(x),x)��� ���� (R(x),x)S(x):�1/(x^3+x+1)��������(S(x),x)��� ���� (S(x),x)

Mais le logiciel XCAS ne sait pas trouver les racines du dénominateur de S. L’instruction

���� ��(S(x),x,2,3)

donne le calcul approché sans problème. Passons à un calcul de primitive plus intéressant. . .XCAS peut passer le Grand Oral de l’X :

���(����((���(x))^2+1), x)

donne :

−(

ln

(√(tan (x))2+1− (tan (x))

))Réponse du logiciel

�� ��� �����

MuPAD serait lui recaléa :

int(sqrt((tan(x))^2+1), x)

ne répond rien. Mais MuPAD a d’autres arguments :

int(x^n* �(x),x)

donne :

Γ(n+1,−x)

(−1)n

Réponse du logiciel

aC’est ça de ne pas être libre...

143

Page 158: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

���� "'���� �� �� �������� � ������� � %�� %����

�� ��� � ��

��������� �� 5�������

On utilise �����(expression, ancien=nouveau), que vous pouvez comparer à la commandesubsop vue au paragraphe e. page 33 pour les listes.Par exemple :

������ (g(a*x),x,p)-�����((1/a)*������ (g(t),t,p/a),t�x*a)

qui répond :

∫+∞0 g(ax)e−(px)dx−

⎛⎝1a

∫∞0 g(xa)e

−(pxaa

)adx

⎞⎠Réponse du logiciel

nous permet de voir que L[

f (ax)]= 1

aF

(a

p

)pour les transformées de Laplaceb

������� ��� �����

La fonction ����(F(x)*g(x),G(x)) renvoie la liste [F(x)*G(x),-f(x)*G(x)] si G(x)�= 0et ����([F(x),g(x)]) renvoie F(x)+G(x) avec les notation habituellesc.Cela nous permet de construire une procédure ipp(F(x),g(x)) qui renverra

∫F(x)g (x) dx

calculée par une intégration par parties :

ipp(F(x),g(x)):�{����(����(F(x)*g(x),���(g(x),x)),0)}:;

Par exemple :

ipp(��(x),1)

donne :Réponse du logiciel

-x+x*ln(x)

qui est en effet une primitive de 1× ln(x).Si l’on veut l’évaluer sur un intervalle, on peut utiliser à �� ���(F(x),a,b,variable) quirenvoie F(b)-F(a) :

bVoir section 15.2 page 170.cF une primitive de f.

144

Page 159: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ������� �� ������ �� ��2����� �� ������

�� ���(ipp(��(x),1),2,3)

renvoie bien :Réponse du logiciel

3*ln(3)-3-2*ln(2)+2

Mais XCAS n’a pas besoin de nous pour avoir cette idée :

���(��(x));���(��(x),x,2,3)

renvoie directement le résultat.Cette nouvelle procédure peut nous être utile dans un calcul formel.Par exemple :

ipp(f(x),���(g(x),x))

renvoie bien sûr :

∫f′(x)g(x)dx+g(x)f(x)

Réponse du logiciel

qui nous rappelle la formule d’intégration par parties.Mais cette méthode a ses limites, comme nous allons le voir.

������� �� 6����

Ce sont les intégrales du type

Wn =∫π/2

0sinn (x) dx

En particulier ∫π/2

0sinn+2(x) dx =

∫π/2

0sinn (x) dx −

∫π/2

0sinn(x)cos2(x) dx

sachant que sin2(x) = 1−cos2(x). Il faudrait donc calculer∫π/2

0 sinn(x)cos2(x) dx.On pense à une intégration par parties. Mais si on tape :

ipp((���(x))^n*(���(x))^2,(1/(n+1))*(���(x))^(n+1))

cela ne donne rien.Nous allons donc revenir à ibpdv.

r:�����((���(x))^n*(���(x))^2,(1/(n+1))*(���(x))^(n+1))

145

Page 160: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

Le logiciel répond cette fois quelque chose, mais cela reste compliqué.La ruse est de changer sinn+1(x) en 1

n+1 sinn(x)sin(x).Alors

r:�����((���(x))^n*(���(x))^2,(1/(n+1))*(���(x))^(n)*���(x))

répond :

1

n+1(sin (x))n sin (x)cos (x) ,

(sin (x))2 (sin (x))n

n+1

Réponse du logiciel

Nous avons besoin de faire une petite pause pour expliquer ce phénomène...

Comment XCAS traite-t-il xn ?

Si vous interrogez XCAS sur ���(f(x),x), il vous répondra

nxn

x

Réponse du logiciel

sans jamais vouloir simplifier ce résultat en nxn−1.C’est que XCAS fait du calcul formel et considère xn non pas comme un polynômemais comme une variable indépendante.C’est plus simple et plus efficace pour l’ordinateur, même si ça apparaît plus com-pliqué pour les faibles humains que nous sommes.Dans le cas qui nous occupe, en n’introduisant pas sinn+1(x) qui serait une nouvellevariable, on laisse XCAS traiter le problème avec deux variables : sinn(x) et sin(x).Alors XCAS arrive à intégrer par parties et à simplifier le résultat alors que parexemple MuPAD n’y arrive pas alors qu’il traite (ou plutôt parce qu’il traite) le pro-blème plus mathématiquement qu’informatiquement.

On peut encore simplifier le résultat avec la commande ������� qui justement simplifie au-tant que possible une expression trigonométrique en utilisant en priorité des sinus car XCASconsidère les sinus comme des variables.Dans le cas qui nous occupe, après avoir rentré :

146

Page 161: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ������� �� ������ �� ��2����� �� ������

�������(r[1])

on obtient :

(sin (x))2+n

n+1

Réponse du logiciel

Pour revenir aux intégrales de Wallis, il nous reste à évaluer r[0] entre 0 et π2 :

�� ���(r[0],0,Pi/2)

nous renvoie bien 0.Finalement, nous obtenons la relation de récurrence :

Wn+2 = Wn − 1

n+1Wn+2

qui nous permet de calculer les termes pairs et impairs, ou plus directement :

W(n):����((���(x))^n,x,0,Pi/2)� �(W(k),k�0��14)

donne :

π2 ,1, π4 , 23 , 3π16 , 8

15 , 5π32 , 1635 , 35π256 , 128315 , 63π512 , 256693 , 231π2048 , 10243003 , 429π4096 , 20486435 , 6435π65536 , 32768109395 , 12155π131072

Réponse du logiciel

�� ��� �����

Pour l’intégration par parties, on utilise ������--�������(hold(int)(f(x),x= ),v(x)).Ainsi, on peut intégrer par parties

∫10 xn ex dx :

����� (n, 2�� --NonNegInt): ����� (n>0,and_);simplify(intlib--byparts(���(int)(x^n* �(x),x�0��1), �(x)))

qui répond :

e−n∫1

0xn−1ex dx

Réponse du logiciel

147

Page 162: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

���� "����� �%%� �'� ����������

�� ���!��� �� �������� ��� � ��

Pour avoir une approximation de l’aire sous la courbe, on peut l’approcher par des rectanglesélémentaires. Voici une petite procédure de construction :

Rect(f,N,a,b):�{����� RV,RR,R,k,av,ap,C;RV:�(�)); RR:�(�));���(k:�0;k<�N;k++){av:�a+k*(b-a)/N; / / a v a n t�� .

ap:�a+(k+1)*(b-a)/N; / / a p r è s�� .

R:�������� (�����(av,0),�����(av,f(av)),�����(ap,f(av)),�����(ap,0)); / /

l e r e c t a n g l e

RR:�RR,���� ��(R,����+� ����); / / o n r e m p l i t l e s r e c t a n g l e s

RV:�RV,���� ��(R,�� �+��� ���� �); / / l e c o n t o u r e n p l u s é p a i s

}C:�����(f(x),x�a��b,�������� ����� +��� ���� �); / / l a c o u r b e

� ����(RV,RR,C); / / l e s 3 g r a p h e s s u p e r p o s é s

}:;

Pour avoir une vision dynamique, on ouvre une fenêtre graphique et on utilise � � �� :

n:� � � ��(1 �� 100)Rect(x->���(x),n,0,2*Pi)

���� ���� Méthode des rectangles « personnelle »Pour être honnête, il existe déjà ������ �(expr,x=a..b,n,méthode) sur XCAS qui permetd’obtenir ce résultat, où méthode peut-être� ������ ����,� ������ ����� ,���� " ,����� ���� �.

���� ��(������ �(���(x),x�0��2*Pi,20,rectangle_droit),�� �),���� ��(������ �(���(x),x�0��2*Pi,20,rectangle_gauche),� ��)

148

Page 163: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� �� !� ���� �2 �)��2�����

���� ���� Méthode des rectangles « à la XCAS »Ce qui nous intéresse est bien sûr d’avoir une approximation numérique :

aireRect(f,N,a,b):�{ ����(���((b-a)/N*f(a+k*(b-a)/N),k�1��N)); / / s u b d i v i s i o n r é g u l i è r e

}:;

aireRect(x->��(x),100,1,10)

Réponse du logiciel

14.02524361

alors qu’avec par la fonction de calcul approché �0�� :

nInt(��(x),x�1��10))

Réponse du logiciel

14.02585093

Nous avons donc 3 bonnes décimales avec 100 rectanglesd.

�� ����������� �� ������ �)��� ��� �3������� �� π ��� � ��

Il n’est pas trop difficile de trouver un rapport entre la fonction f : x �→�

1− x2 et π :

4*aireRect(x->����(1-x^2),1000000,0,1)

Avec 1000000 de rectangles et 76 secondes, on obtient difficilement 5 décimales de π. . .

dPour avoir des précisions sur le calcul approché d’intégrales avec XCAS, voir la section b. page 52.

149

Page 164: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � �������

Match Scilab/XCAS sur l’approximation d’intégrales

Interrogeons XCAS pour obtenir une approximation de∫1

0

√1− x2 dx :

4*nInt(����(1-x^2),x,0,1)

Réponse du logiciel

[3.141580789,3.14158081,3.141580816,3.141580817,3.141580817,3.141580818,3.141580818]

soit au mieux 4 bonnes décimales. En effet, la singularité de la dérivée en 1 brouilleles algorithmes basés sur la formule d’Euler-Mac Laurin.Quant à Scilab :

�������� y�f(x)y�����(1-x**2) ���������

������(20)4*����(0,1,f)

Réponse du logiciel

ans =

3.1415926535897926719088

alors qu’une valeur approchée de π est :

%pi

Réponse du logiciel

%pi =

3.1415926535897931159980

c’est-à-dire que Scilab donne 16 bonnes décimales : Scilab a gagné ?Eh non... Parfois le calcul formel a du bon ! Si vous demandez à XCAS :

4* ����( ���(����(1-x^2),x,0,1))

il vous donne 1000 bonnes décimales de π, la limite de /�����.

150

Page 165: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� �� !� ���� �2 �)��2�����

Approximation de π avec la formule de Machin

Vous savez bien que

∣∣∣∣∣Arctan(x)−n∑

k=0

(−1)k x2k+1

2k +1

∣∣∣∣∣< x2n+3

2n+3.

On peut donc construire une procédure dépendant d’un nombre ! compris entre 0

et 1 et donnant la plus petite valeur de l’entier n telle queu2n+3

2n+3� 10−p :

mini(u,p):�{����� k;k:�0;���� ( ����((u^(2*k+3))/(2*k+3))>10^(-p)){k:�k+1}}:;

Vous connaissez également la formule du mathématicien anglais MACHIN :

4 arctan1

5−arctan

1

239= π

4

obtenue en montrant que, a et b étant deux réels tels que ab �= 1, on a arctan a +arctanb = arctan

(a+b

1−ab

)+ επ avec ε= 0 si ab < 1, ε= 1 si ab > 1 et a > 0 et ε=−1 si

ab > 1 et a < 0.

On appelle polynôme de GREGORY le polynôme Gn(X) =n∑

k=0

(−1)k X2k+1

2k +1.

On construit donc une procédure qui donne une valeur approchée de Gn(a) à 10−p

près :

greg(n,a,p):�{����� S,k;S:�0;���(k:�0;k<�n+1;k++){S:�S+ ����(((-1)^k*a^(2*k+1))/(2*k+1),p+1);};� ����(S);}:;

La formule de MACHIN faisant intervenir un Arctan(1/5), on va interroger mini :

mini(1/5,100)

qui nous dit qu’il nous faut aller au rang 69 pour avoir 100 bonnes décimales de π :

4*(4*greg(69,1/5,100)-greg(69,1/239,100))

nous donne instantanément le résultat voulu.

151

Page 166: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 167: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Développements limités

Logiciel(s) abordé(s) : Maxima Gp Yacas XCAS

Problématique : Obtenir des développements limités : approxima-tions de fonctions par des polynômes.

���� #��� 4���

Le logiciel Yacas permet de calculer quelques développements limités.

f(x):���(8��(x))4� ���6���(2�����(x,0,9) f(x))

donne le développement limité à l’ordre 9 en 0 de la fonction exp(cos(x)). Il ne faut pas allertrop loin dans l’ordre, car le temps de calcul devient prohibitif.

���� #��� �%

Le logiciel Gp considère les fonctions comme des séries entières ; il est donc bien adapté auxdéveloppements limités. Les deux lignes suivantes donnent le développement à l’ordre 16en 0 de la fonction exp(cos(x)).

f(x)� �(���(x))f(x)

Pour développer à l’ordre 20 il suffit de rajouter :

\ps 20f(x)

Pour obtenir le développement en π2 , il suffit de décaler :

f(x+4�/2)

Le résultat n’a pas besoin d’être converti en polynôme puisque ce n’est qu’une représentationà l’affichage de la fonction.

Page 168: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � (�5���������� ����

���� #��� /�+� �

Le logiciel Maxima donne un résultat moyennement plus lisible que Gp.

f(x):= �(���(x));������(f(x),x,0,20);

Un petit exercice nous permet de comparer une fonction puissance et son développementlimité en 1 aux ordres 2 et 5.

f(x):=(1+x)^10;f(1/100);�����(%);g:������(f(x),x,0,5);�����(��������(1/100,x,g));h:������(f(x),x,0,2);�����(��������(1/100,x,h));ff(y):=�����(��������(y,x,h));����'([f(x),ff(x)],[x,0,0�1]);

���� ���� Comparaison de deux polynômes au voisi-nage de 0

���� #��� !"#$

�� #��� �����

Reprenant le même développement que pour Gp, on obtient un résultat plus lisible.

������( �(���(x)),x�0,6)

Le développement peut etre transformé en polynôme avec l’instruction ���� ��(DL,polynom).En voici tout de suite une application.

154

Page 169: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�&��� ��� ����

�� >���������� �� �)��� �3������� �)��� �������� �� �� ���*�?���� ��*��

Pour comprendre l’aspect local de l’approximation d’une fonction par le polynôme de Taylorassocié, rien de tel qu’une petite procédure qui permet de comparer les graphes de la fonctionet du polynôme selon son degré.Cela permet également de visualiser les fonctions qui admettent un développement en sérieentière de rayon infini ou fini.On construit une procédure dl(f,x,n) qui dépend de la donnée d’une fonction f, d’un ordren et du « point d’observation » x :

dl(f,x,n):�{��������(���� ��(������(f(x),x�0,n),polynom));}:;

On obtient ainsi un polynôme.Par exemple :

dl(���,x,10)

Réponse du logiciel

(62*x^9)/2835+(17*x^7)/315+(2*x^5)/15+(x^3)/3+x

Ensuite, il ne reste plus qu’à visualiser. Attention, notre n variable n’est pas forcément entier.On utilise �����(nombre) qui renvoie la partie entière d’un nombre.

n:� � � ��(1 �� 50)����([dl(���,x,�����(n)),���(x)], / / o n t r a c e c ô t e à c ô t e l e s c o u r b e s

x�-4*Pi��4*Pi,������[���� ,�� �+��� ���� �]) / / o n l e s d i s t i n g u e p a r l e s c o u l e u r s e t

l ’ é p a i s s e u r d u t r a i t

et on obtient pour la fonction cosinus en 0 avec n = 25 :

���� ����� Approximation polynomiale de la fonctioncosinus

155

Page 170: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � (�5���������� ����

On visualise bien que l’intervalle de « validité » de l’approximation croît avec n et semble pou-voir « recouvrir » R, alors que pour la fonction x �→ ln(x+1), l’approximation ne semble valableque pour 0 � x < 1 :

����([dl(x->��(1+x),x,�����(n)),��(1+x)],x�0��2,������[���� ,�� �+��� ���� �])

comme on le voit ici :

���� ���� Approximation polynomiale de x �→ ln(x+1)

Nous verrons d’autres approximations polynomiales lors de l’étude des Polynômes interpo-lateurs de LAGRANGE.

156

Page 171: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������� �

Équations différentielles

Logiciel(s) abordé(s) : Scilab Octave Maxima MuPAD XCAS

Problématique : Résoudre des équations différentielles ordinaires.Utiliser ces équations.

���� #��� $�����

�� 5�������� �)��� �"������ �� � ���� � � � ����������������

L’équation différentielle y ′(t) = 2y(t) + 10cos(10t) est résolue sur l’intervalle [−1,1] avec lacondition initiale 1.

�������� yprime�f(t,y)yprime�2*y+10*���(10*t) ���������

y0�1;t0�-1;t�-1:.1:1

Le graphe de la solution est dessiné.

����()z�� (y0,t0,t,f);����(t,z)

La linéarité de l’équation différentielle n’est pas cruciale.

�� 5�������� �)��� �"������ �� � ���� � � � ������������������

On se donne une matrice antisymétrique d’ordre trois (quelconque) ;

AA����(3,3,’unif’)A�AA’-AA

le sous-groupe de Lie qu’elle engendre dans le groupe spécial orthogonal est construit avecune équation différentielle ordinaire.

�������� yprime�f(t,y)yprime�A*y ���������

Page 172: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � !������ �4��������� ��������

La machine se fait une joie de tracer une partie de l’orbite du premier vecteur de la base ca-nonique.

y0�[1;0;0];t0�-1;t�-1:.1:1����()z�� (y0,t0,t,f);������(z(1,:),z(2,:),z(3,:))

−1.0

−0.6

−0.2

0.2

0.6

1.0

Z

−1.0−0.8

−0.6−0.4

−0.20.0

0.20.4

0.60.8

1.0

X

−0.6−0.4

−0.20.0

0.20.4

Y

���� � ��� Rotation d’un vecteur

Maintenant on trace l’orbite de la base canonique ;

y0�[1;0;0];t0�-1;t�-1:.1:1;����()z�� (y0,t0,t,f);y1�[0;1;0];zz�� (y1,t0,t,f);y2�[0;0;1];zzz�� (y2,t0,t,f);X�z(1,:)’;XX�zz(1,:)’;XXX�zzz(1,:)’;Y�z(2,:)’;YY�zz(2,:)’;YYY�zzz(2,:)’;Z�z(3,:)’;ZZ�zz(3,:)’;ZZZ�zzz(3,:)’;������%([X,XX,XXX],[Y,YY,YYY],����([Z,ZZ,ZZZ],[2,3,6]))

158

Page 173: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� � ���

���� � ��� Rotation de la base

Il faut veiller à mettre les vecteurs collectant les coordonnées en colonnes : le nombre decouleurs (deuxième argument de la fonction ����$&) est celui des colonnes.

On peut comparer avec la solution algébrique.

XXXX�[];YYYY�[];ZZZZ�[];��� u�t-t0G� ��(u*A);XXXX�[XXXX;G(1,:)]; YYYY�[YYYY;G(2,:)];ZZZZ�[ZZZZ;G(3,:)]; �

����()������%(XXXX,YYYY,����(ZZZZ,[2,3,4]))����([X,XX,XXX]-XXXX)

159

Page 174: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � !������ �4��������� ��������

���� � ��� Rotation algébrique de la base

L’exponentielle matricielle réclame l’instruction �� ; sinon c’est une exponentielle appli-quée à chaque coefficient....

�� 5�������� �)��� �"������ �� ���3�+�� � � � ����������������

L’équation différentielle du second degré y ′′ = −100y se résout grâce à la matrice compagnoncomme dans la théorie.

A�[0 1;-100 0]�������� yprime�f(t,y)yprime�A*y ���������

y0�[0;1];t0�-1;t�-1:.01:1;����()zz�� (y0,t0,t,f);z�zz(2,:);����(t,z)

160

Page 175: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ��� � ���

���� � ��� La sinusoïde de pulsation 10 qui résoudl’équation y ′′ = −100y avec la condition initiale voulue

On peut vérifier la valeur de l’approximation quand on connaît la solution théorique :

erreur�����(z-���(10*(t+1)))

�� 5�������� �)��� �"������ �)� � � �� �� �������� "������"��

Le lecteur résoudra aisément cet exercice en s’inspirant des sections précédentes.

���� #��� �����

Le logiciel Octave possède une instruction de résolution approchée ��� pour les équationsde la forme x′ = f (x, t) et une instruction de résolution approchée ���� pour les équationsde la forme f (x′, x, t) = 0.

���� #��� !"#$

�� 5�������� �3����

La machine peut donner une résolution formelle ; on n’est pas obligé de fixer les conditionsinitiales.

���� ([y’’+100*y,y(0)�a,y’(0)�b],y)

renvoieRéponse du logiciel

[a*cos(10*x)+(b*sin(10*x))/10]

161

Page 176: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � !������ �4��������� ��������

Mais on atteint vite les limites du calcul symbolique : l’instruction suivante échoue.

���� ([y’’+y^2,y(0)�a,y’(0)�b],y)

�� 5�������� ��� ��!��

Pour le tracé des équations unidimensionnelles du premier ordre, les instructions ����� et ��� ������ ����� sont très pratiques.

�� ���!��� �)���� / �� ���� ��

Illustrons cette méthode bien connue : on note l’équation différentielle du premier ordre sousla forme

u′(t)= f(u(t), t

)et on l’étudie sur un intervalle [a ; b] avec la condition initiale y(t) = u0 et on utilise l’approxi-mation

u′(t) � u(t +h)−u(t)

h

quand h est « suffisamment petit ». On choisit ici h = b−aN , avec N un nombre arbitrairement

fixé de subdivisions.Cela se traduit par

Eu(f,N,a,b,uo):�{����� S,X,Y,k,Cnum,Cexact,sexact,u,P,t;S:�(�)); / / s u i t e d e s p o i n t s , v i d e a u d é p a r t

X:�a; / / o n p a r t d e x�a

Y:�uo; / / o n p a r t d e y�u o

���(k:�0;k<�N;k++){ / / o n v a c o n s t r u i r e N p o i n t s

Y:�Y+f(Y,X)*(b-a)/N; / / l e p a s e s t d e ( b− a ) / n

X:�a+k*(b-a)/N; / / o n a v a n c e d ’ un p a s

P:������(X,Y);S:�S,P; / / o n r a j o u t e l e n o u v e a u p o i n t

}sexact:����� ([y’�f(y,x),y(0)�uo],y)[0]:; / / o n u t i l i s e d s o l v e p o u r

a v o i r l a s o l u t i o n e x a c t e

Cnum:����� ��(polygone_ouvert(S),���� +line_width_2):; / / o n c o n s t r u i t

n o t r e p o l y g o n e

Cexact:����� ��(����(sexact,x�a��b),�� �+��� ��� ):; / / o n c o n s t r u i t l e

g r a p h e d e l a s o l u t i o n a t t e n d u e

Cnum,Cexact; / / o n t r a c e l e s d e u x g r a p h e s .

}:;

Ensuite, on va faire varier N pour visualiser la convergence, par exemple dans le cas de l’équa-tion y ′(t)=−4y(t)+ t sur [0 ; 3] avec y(0) = 1 :

n:� � � ��(10 �� 500);Eu((u,t)->-4*u+t,n,0,3,1)

162

Page 177: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� ��� ����

donne :

�� ���!��� �)���� �� �3����������� / �� �� �� ������ �

Voici un exemple de découverte de la fonction exponentielle avec la méthode d’Euler sousforme d’un TP pour des élèves de Terminale S débutants en informatique.

�����1���� �+��

On s’intéresse aux fonctions f dérivables sur R satisfaisant la condition

f ′(x) = k · f (x) (1)

pour tout x ∈R, avec k un réel arbitrairement fixé.On va tenter, dans cette section, d’obtenir une approximation de l’allure de la courbe repré-sentative d’une solution de (1).On va pour cela considérer que pour h « suffisamment petit » et pour tout réel a,

f ′(a)� f (a +h)− f (a)

h

Montrez alors que f (a +h) � (1+kh) f (a).

0���5���

Pour obtenir ce tracé, nous allons choisir un réel k, un segment [a; b], nous allons fixer l’imagede a par f pour avoir une solution unique de (1) dans un premier temps.Nous allons subdiviser le segment [a ; b] en N segments de même longueur : quelle sera lalongueur de chaque petit segment ?

����� �,��� ���� �����

Ouvrons une fenêtre de géométrie en tapant simultanément sur ��� et � .On définit un point dont on connaît les coordonnées avec la commande ����� :

163

Page 178: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � !������ �4��������� ��������

A:������(1,2);B:������(3,-1);C:������(4,5);

On relie ces points par des segments de droite grâce à la commande ������� ��� ��(listede points) :

polygone_ouvert(A,B,C)

����� �� ������

Oublions pour un temps notre problème et voyons comment nous pourrions tracer « pointpar point » sur [−3 ; 3] la courbe représentative d’une fonction g vérifiant :

g (b)− g (a)

b −a= 2

pour tous réels distincts a et b de [−3 ; 3] et f (−3) =−1.On peut par exemple subdiviser le segment [−3; 3] en segments de longueurs 0,25 et réfléchirau moyen d’obtenir les images par f de chacune des extrémités des segments de la subdivi-sion.Il suffit de penser que g (x+0,25)−g (x)

x+0,25−x = 2, c’est-à-dire g (x +0,25) = ......+ g (x).On peut donc calculer g (x +0,25) si l’on connaît g (x).On va donc partir du point de coordonnées (−3 ; −1) et obtenir de proche en proche les coor-données de plusieurs points de la courbes en faisant des petits sauts de 0,25 et en s’arrêtant à3 :

S:�(�)); / / o n c r é e u n e s u i t e d e p o i n t s v i d e a u d é p a r t

X:�-3; / / a u d é p a r t X v a u t −3

Y:�-1; / / a u d é p a r t Y v a u t −1

������ X<�3 ���� / / t a n t q u e s ’ é c r i t t a n t q u e e n X C A S

S:�S,�����(X,Y); / / o n r a j o u t e l e p o i n t d e c o o r d o n n é e s ( X , Y ) à n o t r e

l i s t e

X:�X+0.25; / / o n a v a n c e d e 0 , 2 5 à c h a q u e t o u r d e b o u c l e

Y:�0.5+Y; / / o n s a i t q u e g ( X + 0 , 2 5 )� 0 , 5 + g ( X )

������� :; / / f comme f i n d e l a b o u c l e

polygone_ouvert(S); / / o n r e l i e l e s p o i n t s d e l a l i s t e S à l a r è g l e

et on découvre sans surprise qu’il s’agit d’un segment de droite.

���������

Cela fonctionne pour ce cas particulier mais ça devrait aussi « marcher » si l’on change lesvaleurs du pas, du coefficient directeur, des bornes de l’intervalle de définition, de l’image dela borne inférieure de cet intervalle.On a donc envie de créer un fonction informatique, une procédure, qui reprend cette méthodemais dans le cas général, avec des coefficients quelconques qu’on donnera à l’ordinateur. Oncrée ainsi une sorte de fonction de plusieurs variables.

164

Page 179: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� ��� ����

Notons donc h le pas, m le coefficient directeur, [a ; b] l’intervalle de définition et yo l’imagede a.Donnons également un nom à notre procédure, par exemple TraceAffine.On va ouvrir une fenêtre de programmation en tapant ��� � :

TraceAffine(h,m,a,b,yo):�{ / / o n p r é c i s e q u e l s s o n t l e s v a r i a b l e s d e

n o t r e p r o c é d u r e

S:�(�)); / / o n c r é e t o u j o u r s u n e s u i t e d e p o i n t s v i d e a u d é p a r t

X:�a; / / a u d é p a r t X v a u t a c e t t e f o i s

Y:�yo; / / a u d é p a r t Y v a u t y o

������ X<�b ���� / / o n s ’ a r r ê t e à X�b

S:�S,�����(X,Y); / / o n r a j o u t e l e p o i n t d e c o o r d o n n é e s ( X , Y ) à n o t r e

l i s t e

X:�X+h; / / o n a v a n c e d e h à c h a q u e t o u r d e b o u c l e

Y:�h*m+Y; / / o n s a i t q u e g ( X + h )�h * m+ g ( X )

������� :; / / f comme f i n d e l a b o u c l e

polygone_ouvert(S); / / o n r e l i e l e s p o i n t s d e l a l i s t e S à l a r è g l e

}:; / / o n t e r m i n e l a p r o c é d u r e e n f e r m a n t l ’ a c c o l a d e

Pour valider, on clique sur �� .Pour exécuter cette procédure, on place le curseur sur une ligne de commande.Par exemple, pour retrouver le cas précédent, on rentre :

TraceAffine(0.25,2,-3,3,-1)

7 5��� �� 8����

Vous êtes maintenant armés pour adapter ce que nous venons de voir à la méthode d’Eulersachant que cette fois f (X+h) = (1+kh) f (X) comme nous l’avons vu au premier paragraphe.Construisez donc une procédure Euler(h,k,a,b,yo)...

9����� �� �,������

Il est vu en cours de Terminale S que la solution de l’équation différentielle y ′ = y avec y(0) = 1s’appelle la fonction exponentielle qui se note exp pour XCAS.Nous avons utilisé une approximation pour obtenir son tracé par la méthode d’Euler. Il estbien sûr primordial d’avoir un ordre de grandeur de l’erreur commise.Nous avons écrit que exp(a +h) � (1+h)×exp(a).Créons alors une fonction Exp(h,x) qui donne une approximation de ex pour un h donné.Il suffit d’utiliser la procédure précédente en ôtant la partie concernant le tracé et en prenanta = 0, k = 1, b = x :

Exp(h,x):�{X:�0;Y:�1;������ X<�x ����

X:�X+h;Y:�(1+h)*Y;

165

Page 180: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ �� � !������ �4��������� ��������

������� :;}:;

Par exemple, on peut comparer Exp(h,1) et exp(1) pour des valeurs successives de h entre0,1 et 0,0001, puis en prenant d’autres valeurs de x.Étudiez le rapport Exp(0.01,x)−exp(x)

exp(x) pour différentes valeurs de x.Que pensez-vous de l’approximation ?

On peut visualiser l’erreur commise en créant une fonction erreur :

erreur(x):�(1-Exp(0.01,x)/ ����( �(x)))*100

Puis en créant la suite des points de coordonnées (x,erreur(x)) pour x variant de 0 à 100avec un pas de 1.La commande � � comme séquencea permet de créer cette suite de valeurs :

� �(�����(x,erreur(x)),x�0��100)

Des commentaires ?

���� :� ��� � �+��� ���� /�+� �

Dans les équations différentielles ordinaires le logiciel Maxima trahit plus de bouteille que lelogiciel XCAS...Le même problème classique

� '(’���(y,x,2)=-100*y,y,x);

ne donne pas de surprise.

Réponse du logiciel

y=%k1sin(10x)+%k2cos(10x)

Mais le problème non linéaire

� '(’���(y,x,2)=y^2,y,x);

apporte une réponse plus substantielle que le logiciel XCAS

Réponse du logiciel

sqrt(3)*integrate(1/sqrt(y^3+3*%k1),y))/sqrt(2)=x+%k2,(sqrt(3)*integrate(1/sqrt(y^3+3*%k1),y))/sqrt(2)

Le chapitre d’aide sur les équations différentielles décrit d’autres instructions puissantes, no-tamment pour résoudre des conditions initiales et des conditions aux limites.

aC’est-à-dire « suite ».

166

Page 181: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� ��� '!��(

���, #��� /��#0

On obtient la même chose sur MuPADD’une part

ode(y’’(t)�-100*y(t),y(t));���� (%)

Réponse du logiciel

{C1*exp(-100*t) - 1/100*C2}

et

ode(y’’(t)�(y(t))^2,y(t));���� (%)

renvoieRéponse du logiciel

{0} unionsolve(int(1/(y^3 - 3*C20)^(1/2), y) = 1/3*2^(1/2)*3^(1/2)*(C25 + t), y)

unionsolve(int(1/(y^3 - 3*C20)^(1/2), y) = -1/3*2^(1/2)*3^(1/2)*(C28 + t), y)

167

Page 182: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 183: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��������

Transformée de Laplace

Logiciel(s) abordé(s) : Maxima XCAS

Problématique : Premiers contacts avec la transformée de Laplace.

�,�� #��� /�+� �

Le logiciel Maxima donne la transformée de Laplace F(p) de la fonction f (x) conformément àla formule

F(p) =∫+∞

0f (x)e−px d x

avec l’instruction ������ $�$&==�&. La transformée de eax est calculée en saisissant :

g(x):= �(a*x);G(p):=������ (g(x),x,p);G(p);

On retrouve la fonction de départ avec la transformée inverse :

���(G(p),p,x);

La machine connaît la relation élémentaire entre la transformée et celle de sa dérivée :

F(p):=������ (���(f(x),x),x,p);

Résolvons l’équation différentielle ordinaire du premier ordre à coefficient constant :

y ′ = ay +ch(ax)

avec y(0) = 1.

F(p):=������ (���(y(x),x)-a*y(x),x,p);F(p);

nous donne la relation entre la transformée de la fonction inconnue y et celle du secondmembre ch(ax).

g(p):=������ (����(a*x),x,p);y(x):=���((g(p)+1)/(p-a),p,x);y(x);

Page 184: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

������ � � �����:����� �� �������

La résolution d’une équation linéaire à coefficients constants de n’importe quel ordre est si-milaire. Calculons

∫+∞0 sin(x)/x d x. On sait que la transformée de −x f (x) est la dérivée de la

transformée de f (x). Si F(p) est la transformée de sin(x)/x, sa dérivée F′(p) est donnée par :

Fprime(p):=������ (-���(x),x,p);

L’intégrale recherchée est la valeur F(0). Comme F tend vers 0 en +∞, c’est aussi

−∫+∞

0F′(p) d p.

La fonction Arctan est une primitive de −F′, on obtient donc π/2 :

I:��� ���� (Fprime(p),p,���,0);

�,�� #��� !"#$

Le logiciel XCAS a un comportement similaire à Maxima. La transformée inverse s’appelle ������� au lieu de ���.

g(x):� �(a*x)G(p):������� (g(x),x,p)G(p)������� (G(p),p,x)F(p):������� (���(f(x),x),x,p)F(p)

Il ne connaît pas les relations entre transformée et dérivée, mais il peut résoudre aussi l’équa-tion différentielle :

g(p):������� (����(a*x),x,p)y(x):�������� ((g(p)+1)/(p-a),p,x)y(x)

L’intégrale est calculée de la même façon ; attention à la dernière ligne : la définition d’uneconstante et la notation de l’infini diffèrent de Maxima.

Fprime(p):������� (-���(x),x,p)I:���� ���� (Fprime(p),p,+��������,0);

170

Page 185: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Troisième partie

THÈMES

Page 186: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 187: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�����

XCAS au lycée ?

Logiciel(s) abordé(s) : XCAS

Problématique : Comment et pourquoi utiliser XCAS au lycée.

��� !"#$ � �� �� ���� �&�� ���� �� �&���

XCAS existe depuis quelques années mais est très mal connu au lycée car sa puissance faitpeur. XCAS permet en effet de traiter des problèmes très sophistiqués, mais également (cequ’on passe souvent sous silence !) des problèmes très simples qui permettent par exempled’initier des élèves de l’école primaire à la programmation !Nous commencerons par évoquer la géométrie dynamique au lycée car c’est un domaine oùune comparaison avec les logiciels massivement utilisés par les professeurs du secondaire estpossible, ce qui n’est pas le cas du calcul formel, de la programmation et surtout la possibilitéd’associer les trois plus le tableur qui constitue une des grandes forces de XCAS.Un argument souvent soulevé par ses détracteurs est que XCAS fonctionne principalement enligne de commande. Notre expérience avec les élèves nous incitent à dire qu’il ne s’agit pasd’un inconvénient mais plutôt d’un avantage pour eux : les élèves de nos classes sont en effethabitués à dialoguer via leur ordinateur sur les sites de messagerie instantanée. Le petit bémolqu’on pourrait apporter est qu’avec XCAS, il ne faut pas faire de fautes d’orthographe !Les commandes sont de plus en français et adaptées aux besoins des élèves français car crééespar des professeurs de l’Institut Joseph FOURIER de l’Universite Joseph FOURIER de Grenobleet testé grâce à l’IREM. Que dites-vous de :parallele, droite, segment, aire, longueur, angle, resoudre, graphe, cercle,circonscrit, simplifier, factoriser, fonction_derivee,symetrie,... ?Le mode de construction d’une figure et de résolution du problème correspond de même à ladémarche suivie par l’élève sur sa feuille de papier.Pour vous en convaincre, reportez-vous à la section b. page 69.

��� !"#$ � �� ���

Il existe deux types principaux de sujets proposés pour l’épreuve expérimentale du Bac S : lesproblèmes que peuvent traiter les logiciels de géométrie dynamique que nous venons d’étu-dier et l’étude de suites à l’aide du deuxième pilier de l’Éducation Nationale, le tableur.

Page 188: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

Nous allons donc nous intéresser à ce deuxième type de sujet. Voici par exemple le sujet 5 dela banque d’exercices de 2007 :

Étude de la suite un+1 = a ·un +b pour a et b donnés : convergence et valeur de la limite.

On supposera par la suite que a �= 1. En effet, dans le cas contraire, un+1 = un +b : la suite estdonc arithmétique et ne mérite pas une étude poussée...On construit une procédure donnant un en fonction de a, b et le premier terme u0. On traitele cas n = 0 pour initialiser. Ensuite il suffit de rentrer l’expression de un en fonction du termeprécédent :

u(n,a,b,uo):�{�� n��0 ����� � ���� uo;����� a*u(n-1,a,b,uo)+b; / / C ’ e s t −à − d i r e u ( n )�a * u ( n − 1 ) + b

���

}:;

Par exemple, pour a = 0,7, b = 1 et u0 = 1, on obtient :

u(100,.7,1,1);u(500,.7,1,1) / / l e 1 0 0 − ème e t l e 5 0 0 − ème t e r m e

Réponse du logiciel

3.333333333,3.333333333

On peut préférer fixer a,b et u0 hors de la procédure et définir u de manière plusstandard ainsi :

u(n):�{�� n��0 ����� � ���� uo;����� a*u(n-1)+b}:;

et alors :

a:�0.7b:�1uo:�1u(100);

On a l’impression d’avoir de sérieux candidats pour la valeur de la limite. Pour confirmer cetteintuition, représentons graphiquement les premiers termes de la suite. On crée une séquenceS de coordonnées, vide au départ, à laquelle on ajoute les points coordonnées (k,uk ) pour kvariant de 0 à n :

174

Page 189: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ���� �� ��� �!����

AffSuite(n,a,b,uo):�{����� S,k;S:�(�)); / / S e s t v i d e a u d é p a r t : i l n ’ y a p a s e n c o r e d e p o i n t s

�������� (point_carre+���� ); / / p o u r l ’ e s t h é t i q u e�� .

���� k de 0 ,���� n ��� 1 ����

S:�S,�����(k,u(k,a,b,uo)); / / o n r a j o u t e l e p o i n t d e c o o r d o n n é e s ( k , u (

k ) ) à n o t r e l i s t e

�����

}

On affiche les valeurs de la suite ainsi que la limite présumée issue de notre calcul :

AffSuite(20,-.5,1,1),����� (0.66666667,x�0��20,���� ����� �)

et on obtient pour a = 0,7, b = 1 et u0 = 1 :

et pour a =−1/2, b = 1 et u0 = 1 :

Notre intuition est confortée.

175

Page 190: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

Complexité d’un algorithme

Cette manière de procéder peut sembler naturelle et proche d’une démarche« papier-crayon », mais n’est pas optimale informatiquement. On peut, pour laculture des élèves, évoquer le problème crucial de la complexité d’un algorithme.En effet, dans AffSuite, on recalcule u(k,a,b,uo) à chaque tour de boucle : pouraller jusqu’au rang n, on effectue donc 1+2+3+·· · +n = n(n+1)

2 calculs.On dit que la complexité de l’algorithme est de l’ordre de n2.Voici une manière plus « informatique » et efficace de procéder :

AffSuiteBis(n,a,b,u0):�{����� S,k,uk;�������� (point_carre+���� );S:������(0,u0); / / p r e m i e r t e r m e

k:�u0;���� k de 1 ,���� n ��� 1 ����

uk:�a*uk+b;S:�S,�����(k,uk); / / o n r a j o u t e l e p o i n t d e c o o r d o n n é e s ( k , u _ k )

à n o t r e l i s t e

�����

}

On effectue n calculs pour avoir AffSuiteBis(n,a,b,uo) : la complexité est main-tenant de l’ordre de n.Le problème de la complexité est ici accessoire car dans les deux cas l’ordinateureffectue ces calculs simples très rapidement. Cependant, quand les algorithmessont plus sophistiqués, cela peut permettre de sauver beaucoup de temps. On peutmême évoquer le système RSA qui assure la sécurité des transactions sur internetou bancaires et dont la sécurité est basée sur la complexité informatique du cassagedu code théoriquement possible mais hors du temps humain pour l’instant.

Nous pouvons aussi remarquer que un+1 = f (un), avec f (x) = ax +b.

Nous pouvons représenter la suite directement avec la fonctionXCAS ����� �((f(x),u(0),n) :

����� �(0.7*x+1,1,10)

qui affiche un graphe que les élèves de terminales savent interpréter :

176

Page 191: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� ���� �� ��� �!����

Le candidat pour la limite semble être l’intersection des droites d’équations y = ax+b et y = x.On obtient la solution avec � ���� (équation,inconnue) :

� ���� ((7/10)*x+1�x,x)

10

3

Réponse du logiciel

Il ne reste plus qu’à le démontrer...Soit p la solution de ax +b = x. Elle existe bien car on a supposé a �= 1.Alors, en effectuant la différence membre à membre de un+1 = aun + b et p = ap + b, onobtient :

un+1 −p = a(un −p)

Donc la suite (un −p) est géométrique de raison a et de premier terme u0 −p.On obtient donc

un = (u0 −p)an +p

Vérifions :

expu(n,a,b,uo):�{����� p,c;p:�� ���� (a*x+b�x)[0]; / / l a s o l u t i o n d e l ’ é q u a t i o n

c:��������� �(uo-p); / / o n s i m p l i f i e l ’ é c r i t u r e d e u0 −p

� ����(c*a^n+p) / / o n r e n v o i e ( uo −p ) * a ^ n + p

}:;

Par exemple, toujours avec a = 0,7, b = 1 et u0 = 1 :

expu(n,7/10,1,1)

177

Page 192: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

−7 ·(7

10

)n3

+ 10

3

Réponse du logiciel

Comparons maintenant les graphes :

AffSuite(20,7/10,1,1),����� (expu(x,7/10,1,1),x�0��20,���� ����� �)

Et voilà... Nous pouvons même nous payer le luxe de vérifier que expu vérifie la formule derécurrence initiale dans le cas général, c’est-à-dire pour a, b, u0 quelconques !Ce confort n’est bien sûr possible qu’avec un logiciel de calcul formel...

expu(n+1,a,b,uo)-(a*expu(n,a,b,uo)+b)

(a ·uo+b−uo) · 1

a−1· (a)n+1−

(b

a−1

)−(a · ((a ·uo+b−uo) · 1

a−1· (a)n−

(b

a−1

))

)−b

Réponse du logiciel

Oups...

�������� �(���()) / / s i m p l i f i e l e r é s u l t a t p r é c é d e n t

Réponse du logiciel

0

178

Page 193: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��&� �� %!� � �� ����!�1 � ! ���� ��� �� �2��2���� � ��!��� 5���

C’est mieux ! Nous pouvons aller jusqu’à calculer la limite de la suite dans le cas général :

����� (expu(n,a,b,uo),n,+��������)

Mais XCAS ne sait que répondre... Il faut bien sûr distinguer les cas :

����� (a>0) �� ����� (a<1); / / 0<a<1

����� (expu(n,a,b,uo),n,+��������)

−ba−1

Réponse du logiciel

et dans le cas a > 1 :

����� (a>1);����� (expu(n,a,b,uo),n,+��������)

Réponse du logiciel

infinity

Ainsi, XCAS nous permet non seulement d’observer le résultat mais surtout de le démontrergrâce à ses facultés de calcul formel. Nous allons illustrer plus précisément ce point dans leparagraphe suivant.

��� "� ��� �� �� ������7 �� �� � ������ �� �� ���� ��%����� <����

�� � ��� �)�� �!�� +��

Les coniques ne sont plus au programme de terminale mais sont encore sources d’activités.Nous allons ici nous occuper d’un théorème concernant le tracé de la tangente à une coniqueet le prouver à l’aide de XCAS ce qui n’est possible qu’avec un logiciel de calcul formela.

Le théorème initial est le suivant :

aCette activité est traitée plus longuement à la section 5.2 page 211.

179

Page 194: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

Construction de la tangente à une conique

Soit Γ une conique de foyer F et de directrice associée D. La tangente à Γ en toutpoint M qui n’appartient pas à l’axe focal coupe D en un point T tel que l’on ait−−→FM ·−→FT = 0

Nous allons adapter l’énoncé au cas d’une demi-ellipse définie à l’aide d’une fonction :

Soient a et b deux réels strictement positifs tels que a > b et f la fonction définie sur [−a ; a] par

f (x) = b

√1− x2

a2

Notons Γ la courbe représentative de f dans un repère orthonormé(O;−→u ,−→v

).

Soit F le point de coordonnées (�

a2 −b2 ; 0) et D la droite d’équation x = a2�a2−b2

.

Montrez que la tangente à Γ en tout point M d’ordonnée non nulle coupe D en un point T tel

que l’on ait−−→FM ·−→FT = 0

Nous pouvons bien sûr commencer par illustrer des cas particuliers en prenant un point mo-bile sur Γ et en observant que la propriété reste vérifiée.Nous allons sauter cette étape, notre propos étant de montrer comment un logiciel de calculformel permet non seulement d’illustrer mais aussi de prouver un théorème général.Nous commençons par définir la fonction f :

f:�x->b*����(1-(x^2/a^2)):;

Nous allons ensuite considérer un point quelconque de Γ d’abscisse t , avec t ∈]−a ; a[ :

����� (a>0):;����� (t>-a) �� ����� (t<a):;M:������(t,f(t)):;

Pour définir la tangente d à Γ en M, nous allons introduire la fonction dérivée de f que nousnoterons f p. Nous utiliserons les commandes XCAS ������� et ����� qui renvoientl’abscisse et l’ordonnée d’un point bien sûr, et la commande ���� qui permet de définirune droite de multiples façons (par une équation, deux points, comme intersection de deuxplans, une représentation paramétrique...). Nous la définirons ici par l’équation classique y =f ′(x)× (x − xM)+ f (xM) :

fp:��������� ��� (f):;d:����� (y�fp(������� (M))*(x-������� (M))+����� (M)):;

180

Page 195: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��&� �� %!� � �� ����!�1 � ! ���� ��� �� �2��2���� � ��!��� 5���

Mode « muet »

Vous noterez que chaque ligne de commande se termine par :; ce qui indique àXCAS qu’il doit évaluer cette ligne mais sans renvoyer de résultat. En effet, aucuntracé ne peut être effectué pour l’instant car aucune valeur numérique n’est affectéeaux paramètres a, b et t .

Il reste à définir le point F et la droite D :

F:������(����(a^2-b^2),0):;D:����� (x�a^2/����(a^2-b^2)):;

Le point T est l’intersection des droites d et D.On utilise la commande ��� � ����� (ensemble1,ensemble2) :

T:���� � ����� (d,D):;

Il ne reste plus qu’à calculer le produit scalaire−−→FM ·−→FT à l’aide de ������ ������.

������ ������(� �� ��(M,F),� �� ��(T,F))

Calcul vectoriel

Un vecteur pour XCAS est une liste de coordonnées entre deux crochets toutcomme l’est un point. L’opération M−F est donc licite pour XCAS. Pour ne pas se-mer le trouble dans les esprits des élèves du lycée, on peut remplacer M − F parcoordonnees(M)-coordonnees(F), ou bien, pour éviter de calculer avec des sys-tèmes de coordonnées, on peut préférer travailler sur les affixes en rentrant

������ ������(���� (M)-���� (F),���� (T)-���� (F))

On peut également demander à Bernard PARISSE de créer une commandevecteur(M1,M2) synonyme de M2-M1 pour l’ordinateur mais moins choquantepour les élèves. C’est ce que j’ai fait... et obtenu une heure plus tard ! Encore unpoint fort de XCAS...

Ainsi :

������ ������(� �� ��(F,M),� �� ��(F,T))

181

Page 196: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

(t−

�a2−b2

)( (−a4+a2t2)�a2−b2

−a4+a2t2+ (a2−t2)b2−√a2− (b2)

)+

b

√1− t2

a2

(a�a2−t2 ·b3−a3

�a2−t2 ·b+at

�a2−t2 ·b ·

�a2−b2

)−a4+a2t2+ (

a2−t2) ·b2

Réponse du logiciel

Ouh la la... Voici un calcul qui a de quoi déprimer n’importe quel élève de lycée. Heureuse-ment, nous pouvons faire effectuer « le sale boulot » à XCAS grâce à la commande�������� �et se concentrer sur le problème géométrique sans être gêné par les difficultés de calcul algé-brique.

Cette fois-ci :

�������� �(������ ������(� �� ��(M,F),� �� ��(T,F))

renvoie bien 0, ce qui prouve notre théorème car les calculs ont été effectués dans le cas gé-néral.

�� 7���� ����� � ��!�"��

Pour observer ce phénomène en géométrie dynamique, il suffit d’ouvrir une fenêtre de géo-métrie en tapant ��� - � puis en définissant a, b et t comme étant des paramètres que nousferons varier à la souris :

a:� � � ��(0��5)b:� � � ��(0��a)t:� � � ��(-a��a)

le reste des instructions restant inchangé. On obtient :

182

Page 197: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� '�����2���

�� $���� �� ����� �������

Nous voici donc en mesure de tracer n’importe quelle tangente à une ellipse à l’aide d’uneéquerre puisqu’il suffit de tracer la perpendiculaire à (MF) en M puis l’intersection T de cettedroite avec une directrice : la tangente est la droite (TM).Il s’agit d’un problème géométrique. L’ordinateur nous permet de prouver ce théorème en sedispensant de passer trop de temps dans des calculs algébriques compliqués : nous restonsdynamiques mathématiquement sans être perturbés par l’aquisition d’une virtuosité algé-brique ou informatique. Les instructions données correspondent à la démarche mathéma-tique. Nous avons fait des mathématiques et très peu d’informatique en somme. Nous noussommes concentrés sur le raisonnement et l’ordinateur nous a permis de ne pas nous perdredans les calculs.Le travail avec un calculateur formel est donc la continuation logique du travail avec unecalculatrice usuelle, mais en offrant beaucoup plus de possibilités bien sûr.

��� / ��������

On reproche souvent à l’utilisation de l’informatique au lycée d’exister pour elle-même etde semer la confusion dans les esprits des élèves en les incitant à confondre observation etpreuve.On peut également remarquer que sur les 97 propositions de sujets pour l’épreuve expéri-mentale du Bac S 2008, les domaines traités couvrent une très petite partie du programme duBac : essentiellement les suites, la géométrie, voire un peu de probabilités.Ces reproches sont souvent justifiés compte tenu des limitations des logiciels promus offi-ciellement : le tableur et les logiciels de géométrie dynamique, par essence, ne permettent

183

Page 198: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ;��0 �� �#��� <

que d’observer des données numériques ou géométriques et ne peuvent élaborer une preuvegénérale, ce que peut faire un logiciel de calcul formel. Ils ne peuvent non plus aborder lecalcul différentiel, intégrale, algébrique que de manière numérique ou expérimentale et doncpassent à côté de la plus grande partie du programme de terminale S.D’un autre côté, on reproche aux logiciels de calcul formel d’être trop compliqués à utili-ser au lycée. Nous venons de voir que c’est injustifié et qu’au contraire travailler en ligne decommande et ainsi dialoguer naturellement avec l’ordinateur peut en fait être beaucoup plussimple que de naviguer dans des menus, sous-menus et autres sous-sous-menus d’icônes àcliquer.Enfin, de manière plus précise, le logiciel XCAS semble être particulièrement adapté au lycéecar il permet à la fois de faire du calcul formel, de la géométrie dynamique, du tableur et estlargement francisé.Il resterait à parler de l’initiation à la programmation qui devrait faire partie du bagage mi-nimum fourni aux élèves des sections scientifiques (ce qui est le cas dans de nombreux payseuropéens) et qui peut être également abordée grâce à XCAS dès la seconde comme nous enavons fait l’expérience depuis plusieurs années dans nos classes... et même dès l’école pri-maire grâce à la Tortue de XCAS...Pour un autre exemple d’activité au lycée avec XCAS, voir la section d. page 163.

184

Page 199: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�����

Logique élémentaire

Logiciel(s) abordé(s) : Yacas

Problématique : Apprendre les rudiments de logique en s’amusant.

Notions informatiques : Le logiciel Yacas permet un tout petit peude calcul logique avec la commande 8��4��� . Ce calcul est aussiappelé algèbre de Boole.Il n’est pas question de développer ni de simplifier les expressions lo-giques sous Yacas. C’est à l’utilisateur de faire le calcul par lui-mêmepour ensuite demander à la machine de le valider.

��� ��� ��� � ���

Si l’argument de la commande 8��4��� (le prédicat) est une tautologie, la machine répondTrue; et si c’est toujours faux (le contraire d’une tautologie), la machine répond False;. Si lamachine ne peut décider, elle recopie le prédicat.Les opérateurs logiques habituels s’écrivent dans un style assez naturel (en anglais) avec unemajuscule initiale. Il faut bien sûr veiller à respecter les parenthèses qui regroupent les objets.Vérifions d’abord l’axiome du tiers exclu. On suppose que le prédicat A n’a pas été utilisé plusavant dans la session Yacas.

8��4��� (A �� (�� A)

C’est toujours vrai ! La machine connaît aussi l’axiome de non-contradiction :

8��4��� (A .� (�� A)

est toujours faux.

��� #��>��� �� 1 ��

Vérifions une des propriétés élémentaires du calcul logique, la loi de Morgan. Introduisonsd’abord les instructions qui nous permettront de tester nos constructions par la suite, en lesfaisant réexécuter grâce aux flèches du clavier.Nous allons essayer de prouver l’équivalence de deux prédicats P et Q.

Page 200: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ������ ���������

8��4��� (P �> Q)8��4��� (Q �> P)

La machine ne doit pas pouvoir décider maintenant. Elle répond d’ailleurs par la traductionde l’implication =: dans les opérateurs logiques élémentaires qui sont .�, ��, (��.Plus tard, si la machine répond True; aux deux instructions ci-dessus, c’est que les prédicats Pet Q seront devenus équivalents.Voici leur définition :

P:�(�� (A .� B)Q:�(�� A �� (�� B

En réexécutant les tests logiques,

8��4��� (P �> Q)8��4��� (Q �> P)

les deux réponses True; nous affirment la tautologie recherchée :

non (A et B) ≡ non A ou non B.

Vérifions maintenant que la double négation est bien l’identité, c’est-à-dire que la négationest une involution. On efface d’abord Q qui sert à redéfinir P :

Q8� ��(Q)QP:�(�� (�� Q

On vérifie avec le test enjolivé :

8��4��� ( (P �> Q) .� (Q �> P) )

Ce doit être toujours vrai. . .Nous pouvons donc démontrer que l’un des deux axiomes tiers exclu et non-contradiction sedéduit de l’autre grâce aux deux propriétés ci-dessus.

8� ��(A);8� ��(B)P:�(�� (B .� (�� A)Q:�A �� (�� B8��4��� ( (P �> Q) .� (Q �> P) )

Le test démontre que « A ou non B » est la négation de « B et non A ». En remplaçant B par A, onconstate qu’obtenir la première réponse (vrai) de ce chapitre équivaut à obtenir la deuxièmeréponse (faux).

��� �� ��� ��� �� %�� ��������

Le raisonnement par l’absurde consiste à démontrer une implication en démontrant que sacontraposée (c’est-à-dire son contraire) est fausse.Redéfinissons les prédicats P et Q pour réutiliser la procédure de test.

186

Page 201: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��&� �� �������� �� �)��!���

P:� (�� (x �> y)Q:� x .� (�� y8��4��� ( (P �> Q) .� (Q �> P) )

On obtient la technique courante : si l’on réussit à démontrer que la proposition « x et pas y »est fausse, c’est que x implique y .

On ne peut pas renverser le sens de l’implication, le symbole A� signifie inférieur ouégal : ≤ pour Yacas.

187

Page 202: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 203: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Théorème de Pappus

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Nous allons exploiter les capacités calcula-toires de l’ordinateur pour résoudre analytiquement des problèmesgéométriques. >

Problématique : Le traitement algébrique de l’alignement des pointsgrâce aux coordonnées barycentriques va nous permettre de donnerune preuve rapide du théorème de Ménélaüs.Le délicat problème des cercles de Pappus peut être efficacementtraité analytiquement en demandant à XCAS de résoudre des sys-tèmes non linéaires.

��� " �� ���� ���&��������

�� .�� ��������� �)����������

Il est facile de montrer le résultat suivant :

Soient A, B et C trois points non alignés du plan. Alors, pour tout point M du plan,il existe trois réels α, β et γ tels que α+β+γ �= 0 et tels que M soit le barycentre despoints A,B et C affectés des coefficients α, β et γ.

Il suffit d’exprimer le vecteur−−→AM dans la base

(−→AB,

−→AC

). Soient a et b les coordonnées de

−−→AM

dans cette base, on obtient

(1−a −b)−−→AM+a

−−→BM+b

−−→CM =−→

0

On appelle (α,β,γ) un système de coordonnées barycentriques de M dans le repère affine(A,B,C). Si α+β+γ= 1, le système est dit normalisé.

Page 204: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ��������� �� =�����>� � ������

On obtient facilement une condition d’alignement de trois points :

Soit (A,B,C) un repère affine et trois points M1, M2 et M3 de coordonnées barycen-triques normalisées respectives (x1, y1, z1), (x2, y2, z2), et(x3, y3, z3).Alors M1, M2 et M3 sont alignés si, et seulement si∣∣∣∣∣∣∣∣

x1 y1 z1

x2 y2 z2

x3 y3 z3

∣∣∣∣∣∣∣∣= 0

Il suffit de remarquer que∣∣∣∣∣∣∣∣∣x1 y1 z1

x2 y2 z2

x3 y3 z3

∣∣∣∣∣∣∣∣∣=∣∣∣∣∣∣∣∣∣x1 + y1 +z1 y1 z1

x2 + y2 +z2 y2 z2

x3 + y3 +z3 y3 z3

∣∣∣∣∣∣∣∣∣=∣∣∣∣∣∣∣∣∣0 y1 − y3 z1 −z3

0 y2 − y3 z2 −z3

1 y3 z3

∣∣∣∣∣∣∣∣∣= (y1 − y3)(z2 −z3)− (y2 − y3)(z1 −z3)

Ce déterminant est nul si, et seulement si, les vecteurs−−−−→M1M3 et

−−−−→M2M3 sont liés, i.e. les points

sont alignés.Cela nous permet d’avoir un outil calculatoire pour tester l’alignement de points :

xb:�M->1-������� (M)-����� (M); / / d o n n e l a 1 è r e c o o r d o n n é e

b a r y c e n t r i q u e n o r m a l i s é e

yb:�M->������� (M);zb:�M->����� (M);cb:�M->[xb(M),yb(M),zb(M)]; / / d o n n e l e s y s t è m e n o r m a l i s é

align(A,B,C):�{�� �([cb(A),cb(B),cb(C)])��0 ����� � ����("les points sont alignés

");����� � ����("les points ne sont ��� alignés");���;}:;

Alors :

align(�����(1+�),�����(2+2*�),�����(3+3*�))

renvoie :Réponse du logiciel

les points sont alignés

�� .�� ������ ����� ����� �� �!�� +�� �� ������@

Rappelons ce théorème

190

Page 205: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&��� ������2�� ��� ����%!��

Soit ABC un triangle. Soit trois points I, J et K appartenant respectivement auxdroites (BC), (CA), (AB) et distincts des trois sommets A, B et C.Alors I, J et K sont alignés si, et seulement si

IB

IC× JC

JA× KA

KB= 1

Nous allons bien sûr utiliser la condition d’alignement vue précédemmenta. Nous allons tra-vailler dans le repère affine (A,B,C) et mettre en évidence l’appartenance des points aux droites

A:�[1,0,0]:;B:�[0,1,0]:;C:�[0,0,1]:;K:�A+k*B:;J:�j*A+C:;I:�x*B+C:;

Par exemple I admet donc pour coordonnées barycentriques

Réponse du logiciel

[0,x,1]

CONDITION NÉCESSAIRE. On suppose que les points sont alignés. On peut alors traduire cettepropriété par le fait que

∣∣∣∣∣∣∣∣xI yI zI

xJ yJ zJ

xK yK zK

∣∣∣∣∣∣∣∣= 0 (1)

Exprimons alors x en fonction des autres coefficients

x:����� ( �([I,J,K])�0,x)[0]

Effectuons alors le produit proposé

��������((-I[1]/I[2])*(-J[2]/J[0])*(-K[0]/K[1]))

Nous trouvons bien le résultat attendu : XCAS a prouvé la condition nécessaire.

CONDITION SUFFISANTE. On prend soin de « purger » la variable x de la valeur trouvée pré-cédemment

aPour d’autres démonstrations plus classiques, voir SORTAIS , Yvonne/SORTAIS , René La géométrie du triangle . Paris:Hermann, 1987

191

Page 206: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ��������� �� =�����>� � ������

���� (x)

On utilise cette fois-ci l’égalité (1)

x:����� ((-I[1]/I[2])*(-J[2]/J[0])*(-K[0]/K[1])�1,x)[0]

Les points sont-ils alignés ?

�([I,J,K])

Oui, répond XCAS : la preuve est faite !

��� �� ��> � �� / ���

Le 5 août 2007, nous sommes tombés sur la figure suivante parue dans le journal Le Monde

O

c

A B

T

C

M_1M_2

M_3

M_4

M_5

M_6

x

y

-6 -4 -2 0 2 4 6

-1

0

1

2

3

4

5

6

7

���� ���� Problème du Monde du 5 août 2007

La question étant : est-ce que CM6 +AM2 +BM4 = CM3 +BM1 +AM5 ?Il faut préciser que le triangle est équilatéral.Demandons à XCAS

R:� � � ��(0��5);x:� � � ��(-3��3);y:� � � ��(-1��5);O:������(x,y); / / un p o i n t O v a r i a b l e

c:�� ��� (O,R); / / l e c e r c l e c a u s s i

a:� � � ��(0 �� 5,);A:������(-a,0);B:������(a,0);T:����� ��(������� ������ ���(A,B,C),�� �+line_width_2) / / un b e a u

t r i a n g l e b l e u à c ô t é v a r i a b l e

192

Page 207: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&�&� ��� ��� �� ���!�

M_1:���� �(c,T)[0];M_2:���� �(c,T)[1];M_3:���� �(c,T)[2];M_4:���� �(c,T)[3];M_5:���� �(c,T)[4];M_6:���� �(c,T)[5]; / / o n c o n s t r u i t l e s p o i n t s

Il ne reste plus qu’à tester

l1:������ ��(C,M_6)+����� ��(A,M_2)+����� ��(B,M_4);l2:������ ��(C,M_3)+����� ��(A,M_5)+����� ��(B,M_1);

Cela semble concluant... Il ne reste plus qu’à le démontrer.Il suffit de penser à la puissance des sommets par rapport au cercle...On obtient successivement :

➥ CM6CM5 = CM3CM4

➥ AM2AM1= AM5AM6

➥ BM4BM3 = BM1BM2

Puis, en additionnant membre à membre ces égalité et en notant a le côté du triangle

CM6(a −AM5)+AM2(a −BM1)+BM4(a −CM3) = AM5AM6 +BM1BM2 +CM3CM4

et le résultat s’en déduit :

a(CM6+AM2+BM4) = AM5(AM6+CM6)+BM1(BM2+AM2)+CM3(CM4+BM4) = a(AM5+BM1+CM3)

��� "����� �� ��%%�

�� ��� ��!� !��� �"��

D’abord un dessin :

���� ���� Cercles de Pappus

Comment tracer cette figure ?

193

Page 208: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ��������� �� =�����>� � ������

Au IIIe siècle avant J.C., le mathématicien grec Pappus proposa le théorème suivant qui vanous aider dans notre construction. Il s’agit du théorème XV du livre IV de ses Collections ma-thématiques traduites du grec pour la première fois en 1932 seulement par Paul VER EECKEb.

Théorème de Pappus

On considère trois demi-disques (C), (Γ) et (C0) centrés sur une droite (d). On sup-pose que (C) et (C0) sont contenus dans (Γ), tous deux tangents à Gamma et tan-gents entre eux.Soit

{(C1),(C2), . . . , (Cn )

}une suite de cercles tangents à (C) et à (Γ) et tel que chaque

cercle (Ck ) est tangent au cercle suivant (Ck+1).On note rk le rayon du cercle (Ck ) et hk la distance de son centre à la droite (d).Alors hk = 2rk pour tout k ∈ �1 ; n�.

Pour des démonstrations des résultats utilisés, voirc et notammentd qui arrive rapidement aurésultat en considérant des inversions. On montre de la même manière que le lieu des pointsde contact entre les cercles (Ck ) est le cercle bissecteur de (C) et (Γ).Une fois ces résultats en poche, la partie n’est pas gagnée car il reste encore des systèmesdélicats à résoudre. C’est ici que XCAS peut nous aider avec ses capacités de calcul.

On crée un point d’abscisse mobile et des cercles de rayons variables. Par commodité, onplacera les centres des cercles sur l’axe des abscisses :

xO:� � � ��(-5 �� 5);O:������(xO,0);R:� � � ��(0 �� 5);C:����� ��(� ��� (O,R),���� +��� ���� �);r:� � � ��(0 �� 5);o:������(xO-R-r,0);c:�� ��� (o,r);

La position choisie pour o assure que les deux cercles soient tangents. Il s’agit maintenant decréer le cercleΓ. Pour obtenir son centre, on utilise la fonction ����� ��� ([pt,poids],...)

oo:�barycentre([o,r],[O,R]);cc:����� ��(� ��� (oo,r+R),��� ���+��� ���� �);

La figure de base étant faite, intéressons-nous au problème de Pappus : comment déterminerla position du centre O1 du cercle (C1) ?

bPaul ver Eecke - « La Collection Mathématique de Pappus d’Alexandrie », introduction (1932, rééd. 1982) - Libr. A.Blanchard, Paris

cTHÉBAULT , Victor Sur le tranchet d’Archimède . Bulletin de la S.M.F. Tome 72 1944.dABDELJAOUAD , Mahdi Éléments de Géométrie du Plan . Tunis: Association Tunisienne des Sciences Mathématiques,

2000.

194

Page 209: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&�&� ��� ��� �� ���!�

o OX

r

Y/2

Y/2

RY���� ���� Détermination du cercle (C1)

Le théorème de Pappus nous dit que le rayon de (C1) vaut Y/2. Le point O1 est donc l’intersec-tion à ordonnée maximum du cercle de centre o et de rayon r+Y/2 et de celui de centre O etde rayon R+Y/2.

s:����� ([(Y)^2�(r+Y/2)^2-X^2,(Y)^2�(R+Y/2)^2-(R+r-X)^2],[X,Y]);o1:������(������� (o)+s[0][0],s[0][1]); / / s [ 0 ] [ 0 ] e s t l ’ a b s c i s s e d u 1

e r p o i n t .

c1:�� ��� (o1,s[0][1]/2) / / l e r a y o n e s t Y / 2

Et d’un...Pour les autres cercles, nous allons utiliser le deuxième résultat, à savoir que les points decontacts sont sur le cercle médiateur de (C) et Γ. Ce cercle passe par k1, intersection entre(C1) et (C0) :

k1:���� �(c,c1)[0]

et I, le point de contact entre (C) et Γ :

I:���� �(C,cc)[0]

Mais connaître ces deux points ne suffit pas pour tracer le cercle. Appelons a l’abscisse ducentre de ce cercle (son ordonnée est nulle) et b le rayon. Une équation du cercle est donc(x −a)2 + y2 = b2. Exprimons que k1 et I appartiennent à ce cercle que nous nommerons K :

S:����� ([(������� (k1)-a)^2+(����� (k1))^2�b^2,(������� (I)-a)^2+(����� (I))^2�b^2],[a,b]);

K:����� ��(� ��� (�����(S[1][0],0),S[1][1]),�� �);

Ça y est ! Nous avons tous les éléments pour créer une procédure pappus(n) qui tracera les npremiers cercles tangents, et même leurs symétriques par rapport à l’axe (Ox)

pappus(n):�{ks:�(�));ks:�ks,k1; / / u n e l i s t e d e p o i n t s d e c o n t a c t q u i c o n t i e n t d é j à

k 1

cs:�(�));cs:�cs,c1; / / l i s t e d e s c e r c l e s

195

Page 210: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ��������� �� =�����>� � ������

os:�(�));os:�os,o1; / / l i s t e d e s c e n t r e s

css:�(�));css:�css,��� ��� (���� (y�0),c1); / / l i s t e d e s c e r c l e s

s y m é t r i q u e s

���(j:�1;j<�n;j++){ks:�ks,��(������� (��� �(cs[j-1],K)[1])>������� (��� �(cs[j-1],K)[0])

)��� �(cs[j-1],K)[1]; �� ��� �(cs[j-1],K)[0]; / / p o u r p r e n d r e l e b o n p o i n t d e c o n t a c t

oj:������(xx,yy); / / un p o i n t i n c o n n u

���� (x); / / o n v i d e l a v a r i a b l e x u t i l i s é e d a n s s o l v e

eqj:�����( �������(���� (os[j-1],ks[j]))[2],x�xx); / / c e c i p e r m e t d ’

o b t e n i r l ’ o r d o n n é e d e o j s a c h a n t q u e c e p o i n t a p p a r t i e n t à l a

d r o i t e ( O _ j −1 K _ j )

���� (x); / / o n r e − v i d e c a r o n v a u t i l i s e r à n o u v e a u s o l v e

Ici, une pause s’impose : nous allons exprimer que O j est tel que O j−1O j = O j−1K j + r j , avec

r j = h j

2( j+1) comme nous l’affirme le théorème de Pappus. C’est un système peu évident à ré-soudre. Nous allons donner une indication à XCAS : la solution est proche de k j . Nous luidemanderons ensuite d’utiliser la méthode de Newton :

fs:������ ([����� ��(os[j-1],oj)������ ��(os[j-1],ks[j])+0.5*yy/(j+1),yy�eqj],[xx,yy],[������� (ks[j]),����� (ks[j])],dnewton_solver);

Il ne reste plus qu’à rajouter nos cercles :

���� (xx,yy);os:�os,�����(fs[0],fs[1]); / / l e n o u v e a u c e n t r e

cs:�cs,� ��� (os[j],����� ��(os[j],ks[j])); / / l e n o u v e a u c e r c l e

css:�css,��� ��� (���� (y�0),� ��� (os[j],����� ��(os[j],ks[j])));/ / s o n s y m é t r i q u e

};� ����(cs,css) / / o n t r a c e l e s d e u x s é r i e s d e c e r c l e s

}:;

�� 5�������� �������� �� �� ��������� �� ���� �"�� �� �)������ ���

La méthode précédente est intéressante informatiquement et mathématiquement : elle estcependant gourmande en temps de calcul.On peut cependant voir les cercles de Pappus comme des billes molles dans un tube moudont on aurait recollé les extrémités, ce qui nous fait bien sûr penser à... une inversion quitransforme certaines droites en des cerclese.XCAS possède une commande ��� �����(pôle,rapport,point) qui calcule les coordon-nées de l’image d’un point par une inversion. Le problème, c’est que nous aimerions obtenir

eMerci à IVALDI , Philippe ressources Asymptote . ⟨URL: http://piprim.tuxfamily.org/asymptote/travaux/index.html⟩.

196

Page 211: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

&�&� ��� ��� �� ���!�

les images d’ensembles de points et non pas de points isolés. L’idée est d’utiliser des représen-tations paramétriques de ces ensembles. Nous profiterons de l’existence sur XCAS des com-mandes ����� �(courbe) qui renvoie l’écriture paramétrique complexe d’une courbe et����� ����� ����� (affixe,paramètre). Par exemple :

����(����� �(� ��� (�����(x+iy),r))) / / e v a l c r e n v o i e l a f o r m e

a l g é b r i q u e

(−r) ·cos(t)+x+i · ((−r) ·sin (t)+y)

Réponse du logiciel

Nous allons donc créer une procédure inv_courbe(C,k,g) avec C le pôle de l’inversion, kson rapport et g l’ensemble de point après avoir ouvert une fenêtre de programmation entapant sur ��� et � :

inv_courbe(C,k,g):�{����� paramg,paramG;paramg:������ �(g); / / g s o u s f o r m e p a r a m é t r i q u e .

paramG:���� �����(C,k,paramg); / / s o n i m a g e p a r l ’ i n v e r s i o n : a t t e n t i o n

L e r é s u l t a t e s t un p o i n t d o n t i l f a u t « e x t r a i r e » l ’ a f f i x e .

� ����(courbe_parametrique(���� (paramG),t�-500��500,tstep�0.5),g); / /

o n a f f i c h e g e t s o n i m a g e p a r l ’ i n v e r s i o n .

}:;

On ouvre une fenêtre de géométrie avec ��� et � .

On définit le pôle :

C:������(-5)

On définit les images des bords du « tube » :

inv_courbe(C,10,���� (x�-1));inv_courbe(C,10,���� (x�1));

On construit les images d’une vingtaine de « billes » tangentes entre elles et aux parois du« tube ». On prend donc ici des cercles de rayon 1 et de centres situés sur l’axe des ordonnées :

L:�(�));��� (j:�-n; j <� n; j++) {

g:�inv_courbe(C,10,� ��� (�����(0,2*j),1));L:�L,g;}:;L

197

Page 212: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � ��������� �� =�����>� � ������

Cela donne :

���� ��� Cercles de pappus obtenus en utilisant une in-version.

198

Page 213: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Suites et chaos

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Cette brève étude sera l’occasion de dé-couvrir les possibilités offertes par XCAS pour étudier des suites dutype un+1 = f (un ). Nous construirons également une procédure quinécessitera beaucoup d’astuce informatique afin que l’ordinateurdonne un résultat en un temps raisonnable.

Problématique : Vers 1950, le météorologiste américain Edward LO-RENZ étudie la circulation atmosphérique. Il se base pour cela surles travaux des mathématiciens français HADAMARD et POINCARÉ surl’imprédictibilité des systèmes simples. Même en modélisant l’at-mosphère en un système ayant une dizaine de degrés de liberté, ilmontre la sensibilité exponentielle par rapport aux conditions ini-tiales. Il illustre son propos en montrant que le battement d’aile d’unpapillon en un point de la Terre est suffisant pour déclencher deuxsemaines plus tard une tornade à l’autre bout de la planète. Au mêmemoment, le russe Vladimir ARNOLD, disciple de KOLMOGOROV, mo-délise le mouvement d’un fluide parfait comme celui d’un point surune « hypersurface » de dimension infinie. Il part lui aussi de tra-vaux d’HADAMARD sur les trajectoires d’une bille sur certaines sur-faces : par exemple, si on lâche une bille sur un paraboloïde hyperbo-lique (une selle de cheval), sa trajectoire va dépendre énormément desa position de départ, à tel point qu’il s’avère impossible de prévoir satrajectoire au-delà d’un temps très court.Bref, l’effet papillon envahit les esprits et nombre de disciplines pourimposer une vision chaotique d’un monde complexe et imprédic-tible. C’est ce phénomène que nous allons observer et commenteraujourd’hui, non pas en étudiant le domaine des turbulences atmo-sphériques « physiquement » hors de notre portée, mais en explorant,de manière très simplifiée, la dynamique des populations.Nous évoquerons en conclusion les apports récents de la mécaniquestatistique qui replace dans leur contexte les travaux de LORENZ etARNOLD.

Page 214: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � 0��� � �����

��� / ������ �

Comme vous le savez tous, le Zräjdz commun à ailette mouchetée est l’animal emblématiquede la Syldavie. Aussi paisible que les habitants de ce bucolique pays, le Zräjdz se nourrit exclu-sivement des baies du bleurtschzrn, arbre qui pousse en abondance dans les verts sous-boissyldaves. Si l’on ne considérait que cette idéale situation, la population u de Zräjdzs suivraitla loi suivante

un+1 = Run

Cette relation traduit le fait que la population de l’année n +1 est proportionnelle à l’annéen : on applique à un le taux de natalité et le taux de mortalité. Le coefficient R résume cesproportions.Il est assez aisé d’objecter au modèle précédent que l’évolution ne peut pas rester proportion-nelle à la population de l’année précédente : au bout d’un moment la nourriture et l’espacevital, par exemple, viennent à manquer. On peut alors modéliser l’évolution de la populationselon la loi

pn+1 = R pn(1−pn )

avec pn représentant la proportion par rapport à un maximum estimé.

��� ������� � �'�;���

p(R,po,n):�{����� pn,k;pn:�po;����(k:�1;k<�n;k++){

pn:�R*pn*(1-pn);}

}:;

On peut ensuite regarder des séries de valeurs de la suite en faisant varier R :

� �(u(1.5,0.2,10*k),k�1��10)Réponse du logiciel

0.3329912894,0.3333329986,0.333333333,0.3333333333,0.3333333333

� �(u(2.5,0.2,10*k),k�1��5)

Réponse du logiciel

0.6,0.6,0.6,0.6,0.6

� �(u(3.5,0.2,10*k),k�1��5)

200

Page 215: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��&� ��������� �����%!�

Réponse du logiciel

0.8683116395,0.8284245987,0.8749972464,0.8269407066,0.8749972636

� �(u(3.71,0.2,10*k),k�1��5)

Réponse du logiciel

0.6260986177,0.5214383835,0.6950564063,0.2789286664,0.772755663

��� ������� � ���%'����

Observer des séries de résultats chiffrés, un peu comme cela se fait sur les tableurs, n’est pastrès parlant ni efficace.Nous allons donc utiliser la commande ����� �(f(x),uo,n) qui donne la représentationclassique des suites définies par une relation un+1 = f (un)a :

����� �(1.6*x*(1-x),x�0.9,5)

���� ��� Étude graphique de un+1 = 1,6un (1−un )Ouvrons une fenêtre de géométrie en tapant ��� + � .

R:� � � ��(0��4) / / o n f a i t v a r i e r R

f:�x->R*x*(1-x) / / o n d é f i n i t f

x1:����� (f(x)�x,x)[1] / / o n d é f i n i t l e p o i n t f i x e n o n n u l d e f

fp:��������� ��� (f) / / l a d é r i v é e d e f

aPour une étude originale de ces suites, on pourra se référer à ROUQUÈS , Jean-Philippe/DOMINGUEZ , Sophie Leçonsparticulières - Cours de Maths . Paris: Ellipses, 2002

201

Page 216: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � 0��� � �����

fp(x1) / / o n v é r i f i e s i l e p o i n t f i x e e s t a t t r a c t i f o u r é p u l s i f

����� �(f(x),x1+0.0000001,2500) / / o n c h o i s i t u o p l u s o u m o i n s p r o c h e d e

x 1

Il ne reste plus qu’à observer des phénomènes très étonnants.Au départ, pas de surprise :

➥ pour 0 < R < 1, 0 est attractif

➥ pour 1 < R < 3, 0 est répulsif et x1 attractif

➥ après 3, les choses se compliquent...

Par exemple, pour R = 3,74471033, on a :

���� �� On observe 4 valeurs d’adhérenceEt pour R = 3,74471034, assez proche de la valeur précédente, on a :

202

Page 217: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���� (������ �� ��5!� ���

���� ��� On n’observe plus de valeurs d’adhérence

On peut également, pour une même valeur de R, observer ce que donne différentes valeursde po, en particulier de très petites variations autour du point fixe x1.

C’est l’illustration du fameux « effet papillon » : un battement d’aile de papillon à Rezé estsusceptible de déclencher beaucoup plus tard une tornade en Syldavie. La très faible pertur-bation créée par le vol d’un papillon pourrait en principe faire varier les conditions initialesdu système atmosphérique et engendrer plus tard un changement climatique en un endroitquelconque de notre planète.

��� 0����� � �� ��<����� �

Ce phénomène est mis plus clairement en évidence par un diagramme de bifurcation.

Cette fois, on étudie les valeurs prises par la suite en fonction de R. Pour ne pas être perturbépar les premiers termes, on s’occupe des 20 termes qui suivent p100 :

Feig(R,N):�{ / / 1 / N e s t l e p a s e n t r e d e u x v a l e u r s d e R

����� k,r,tmp,ligne;tmp:������(R*N);

/ / comme o n a v a n c e à p a s� 1 / N , i l y a u r a R * N p o i n t s t r a c é s

res:�[0�tmp];/ / i l y a u r a 2 0 p o i n t s p a r l i g n e c a r o n f a i t v a r i e r k d e 1 0 0 à 1 2 0

ligne:�[0�20];��� (r:�0;r<R;r+�1/N){

tmp:�0.2;/ / c a l c u l d e u 1 0 0

��� (k:�0;k<100;k++){tmp:�r*tmp*(1-tmp);

}/ / c a l c u l d e s s u i v a n t s e t s t o c k a g e

��� (k:�0;k<20;k++){ligne[k] :� �����(r,tmp);tmp:�r*tmp*(1-tmp); }

res[r*N] �< ligne;}� ���� res;}:;

Si l’on s’y prend mal, il peut être très long d’obtenir le graphique car de nombreux calculsrépétitifs sont nécessaires.

Par exemple, pour N = 5000 et R variant entre 0 et 4 on obtient en 80 secondes sur notreordinateur (400 000 points vont être tracés... ) :

203

Page 218: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � � 0��� � �����

Le papillon bat-il de l’aile

Les résultats de LORENZ et ARNOLD ne semblent pourtant pas avoir sonné le glasdes prévisions météo ! C’est qu’en fait, leurs travaux sont basés sur une échelle mi-croscopique : il est en effet impossible de « suivre » un « petit » élément à long termemais il est tout à fait envisageable de faire des prédictions à long termes à l’échellemacroscopique grâce aux résultats de la physique statistique en considérant desmasses d’air dans leur ensemble.Ce phénomène est similaire à l’observation d’un gaz dans un récipient : il est im-possible de modéliser la trajectoire d’une molécule, mais on peut l’étudier plutôtdes valeurs moyennes et obtenir des quantités statistiques comme la température,la pression du gaz dans le récipient et c’est ce qui nous intéresse en général.La météo reste cependant imprévisible à longue échéance, même si elle est natu-rellement plus prévisible que l’évolution des molécules. Par contre le climat, lui, estplus prévisible, malheureusement pour nous et surtout nos enfants...Le papillon reprend malgré tout son envol pour des conditions initiales critiquesqui font hésiter le système étudié entre deux états finaux distincts.

204

Page 219: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�����

Coniques

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Ce chapitre sera l’occasion de découvrirde nombreuses commandes de calcul formel et de géométrie dyna-mique.

Problématique : Voici un cours assisté par ordinateur : nous explo-rerons un maximum de notions sur les coniques, tant algébriquesque analytiques et géométriques, dans le plan comme dans l’espace.Nous effectuerons des expérimentations bien sûr, mais égalementdes preuves de théorèmes.

,�� =��� ���������� �� � �����

�� ����� ���!�����"�� �� ����� $��AB

Pour nous simplifier la vie, nous étudierons en fait les courbes d’équation :

ax2 +by2 +2cx +2d y +e = 0

Nous travaillerons dans un repère orthonormé(O;−→ı ,−→j

). Nous supposerons que a et b ne

sont pas tous deux nuls.Nous appellerons Γ la courbe d’équation ax2+by2+2cx+2d y+e = 0 dans le repère

(O;−→ı ,−→j

).

Il va falloir distinguer de nombreux cas, comme par exemple...

������ ��� ? ab = 0

Nous supposerons par exemple que c’est b qui est nul. Alors

Si d �= 0. On obtient :

���� (A*x^2+2*C*x+2*D*y+E�0)

Page 220: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

[(−A)·(x)2−(2·x·C)−E

2·D]

Réponse du logiciel

En posant α=− a2d , β=− c

d et γ=− e2d , Γ est donc la courbe d’équation y = αx2 +βx +γ dans(

O;−→ı ,−→j)

avec α �= 0 :

��������� ����(a*x^2+b*x+c)

a · (x+ b2·a

)2+ 4·a·c−((b)2)4·a

Réponse du logiciel

On obtient donc qu’il s’agit de la parabole de sommet S(− β

2α ; 4αγ−β2

).

Si d = 0. Alors Γ admet pour équation :

��������� ����(x^2+2*C/A*x+E/A)

(x+ 2 ·C

2 ·A)2

+4·EA −

((2 ·CA

)2)4

Réponse du logiciel

(x + c

a

)2= c2 −ea

a2

Deux cas doivent encore être distingués :

➥ c2 −ea2 < 0, alors Γ=� ;

➥ c2 −ea � 0, alors Γ est la réunion de deux droites « verticales ».

������ ��� ? ab �= 0

On obtient comme équation équivalente puisque a et b sont non nuls :

��������� ����(A*x^2+2*C*x)+��������� ����(�����(B*y^2+2*D*y,y�x))+E

206

Page 221: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� 6�!�� ��2���%!� ��� ��%!��

A · (x+ 2·C2·A

)2− ((2·C)2

4·A)+B · (x+ 2·D

2·B)2− (

(2·D)2

4·B)+E

Réponse du logiciel

Soit Ω le point de coordonnées(− c

a ; −db

)dans

(O;−→ı ,−→j

).

Posons k =− c2

a − d 2

b +e.

Alors Γ est la courbe d’équation ax2 +by2 +k = 0 dans le repère(Ω;−→ı ,−→j

).

Distinguons à nouveau deux cas :

Si a et b sont de même signe.

➥ k est du signe de a et b, alors Γ=� ;

➥ k est nul, alors Γ=Ω ;

➥ k est du signe contraire de a et b, alors en posant α=√

− ka et β=

√− k

b on obtient quela courbe Γ a pour équation

x2

α2 + y2

β2 = 1

dans(Ω;−→ı ,−→j

);

➥ Si k = 0, alors on peut poser m2 = − ab et Γ a pour équation (y −mx)(y +mx) = 0 dans(

Ω;−→ı ,−→j). Ainsi Γ est la réunion de deux droites ;

➥ Si k �= 0, en posant α=√∣∣∣ k

a

∣∣∣ et β=√∣∣∣ k

b

∣∣∣ on obtient que la courbe Γ a pour équation

x2

α2 − y2

β2 =±1

dans(Ω;−→ı ,−→j

).

Finalement :

�������� @����� à !� ��%!� �)2%!��� ax2+by2+2cx+2d y+e = 0 �� a �� b � ��!� ��!" !���

➥ �� ab = 01 Γ ��� ���� �)������� ����1 ���� � �2!�� �� ��!" �������1 ���� !��������

➥ �� ab > 01 Γ ��� ���� �)������� ����1 ���� ! �������1 ���� !� ��������

➥ �� ab < 01 Γ ��� ���� � �2!�� �� ��!" ������� �2 ���1 ���� !� ����������

207

Page 222: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

�� ����� ���!�����"�� �� ����� $��A<

Pour celles et ceux ayant étudié les formes quadratiques, nous allons pouvoir étudier les Γ

courbes d’équationax2 +2bx y +c y2 +d x +e y +k = 0

dans un repère(O;−→ı ,−→j

)du plan. On supposera que (a,b,c) �= (0,0,0).

On notera f (x, y) = ax2+2bx y+c y2+d x+e y+k = q(x)+ (x)+k, avec q(x) = ax2+2bx y+c y2

la partie quadratique et (x) = d x +e y la partie linéaire.

!����� �������� �� �,������

Posons V =(

x

y

), A =

(a b

b c

)et L =

(d

c

). Alors l’équation de Γ s’écrit

tVAV+ tLV +k = 0

Avec XCAS, �'�(q(x,y),[x,y]) renvoie la matrice associée à la forme quadratique q :

�'�(a*x^2+2*b*x*y+c*y^2,[x,y])

[a b

b c

]Réponse du logiciel

On sait qu’il existe une matrice de rotation P ∈ SO2(R) telle que :

tPAP =(λ 0

0 μ

)= D

Soit(−→u ,−→v )

la base orthonormale de R2 telle que P soit la matrice de pasage de(−→u ,−→v )

à(−→ı ,−→j ). Soit V′ tel que V = PV′, alors dans le repère(O;−→u ,−→v

), Γ a pour équation :

t(PV′)A(PV′)+ tL(PV′)+k = 0

c’est-à-dire :

t(V′)D(V′)+ tL(PV′)+k = 0

ou encore :

λX2 +μY2 +DX+EY+k = 0

et on retrouve le cas étudié à la section a. page 205 modulo un changement de base parrotation.On remarque au passage que det(A)= λμ, donc que :

208

Page 223: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� 6�!�� ��2���%!� ��� ��%!��

➥ si det(A)= 0, Γ est du « type » parabole ;

➥ si det(A)> 0, Γ est du « type » ellipse ;

➥ si det(A)< 0, Γ est du « type » hyperbole.

91�����

Quelle est la nature de la conique Γ : x2 +6x y + y2 +4x = 0 ?

A:��'�(x^2+6*x*y+y^2,[x,y])

nous donne la matrice de la partie quadratique.

����(A)

nous dit que la matrice est de rang 2, donc Γ n’est pas du type parabole.Plus précisément :

�(A)

nous dit que det(A)=−8 et donc que Γ est de type hyperbole.On obtient une matrice de passage dans une base de vecteurs propres :

Q:� �� �� �����(A)

On normalise cette matrice en utilisant �������" (vecteur) qui norme un vecteur et onextrait la colonne n de la matrice M avec ���(M,n) :

u:��������" (���(Q,0));v:��������" (���(Q,1));P:�������(�������� (u),�������� (v))

On obtient la matrice diagonale :

D:� �� ����� �(A)

On introduit le vecteur coordonnées dans la nouvelle base et la partie linéaire :

V:�[[X],[Y]];L:�[[4],[0]]

et on obtient la nouvelle équation :

��������(�������� (V)*D*V+�������� (L)*R*V

c’est-à-dire :

[4 · (X)2+2 ·X ·�2− (2 · (Y)2

)+ (− (2 ·Y)) ·�2]

Réponse du logiciel

Il ne reste plus qu’à réduire cette équation comme nous l’avons vu à la section a. page 205.

209

Page 224: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

�� ����� ���� ����"��

On pourrait construire une procédure qui distingue les 9 cas de la section a. page 205 puisréduire la forme quadratique comme à la section b. page précédente, mais XCAS a déjà fait letravail pour nous...

��������(������ � ��� (x^2+6*x*y+y^2+4x))

donne successivement :

➥ les coordonnées du centre :

[14 , −34

]Réponse du logiciel

➥ la nouvelle base :

⎡⎣ �2

2 −(�

22

)�

22

�2

2

⎤⎦Réponse du logiciel

➥ le fait que la conique soit dégénérée ou non :

1

Réponse du logiciel

➥ une équation dans le nouveau repère :

4 · (x)2− (2 · (y)2

)+ 12 = 0

Réponse du logiciel

➥ et même une représentation paramétrique que nous ne commenterons pas ici.

Pour obtenir le tracé, on tape :

���� ��(������ (x^2+6*x*y+y^2+4*x),gray)

210

Page 225: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� 6�!�� ����%!� ��� ��%!��

ce qui donne

���� ���� Hyperbole tracée avec conique

,�� =��� ����&���� �� � �����

�� ������ �)�"������ x2

a2 + y2

b2 = 1

Nous supposerons dans la suite que a et b sont positifs ce qui n’enlève aucune généralité àl’étude. Il est aisé de vérifier que l’ellipse (E) est globalement invariante par reflexion d’axe(O;−→ı

),(O;−→j

)et par symétrie par rapport à O. Nous pouvons donc nous restreindre à étudier

l’ensemble (E′) des points de (E) d’abscisse et d’ordonnée positives.

(E′) est la courbe représentative de la fonction

f :R+ → R

x �→ b√

1− x2

a2

����� (a>0); / / p o u r e x p l i q u e r à X C A S q u e a e s t p o s i t i f .

f:�x->b*����(1-x^2/a^2)

Cette fonction est définie et continue sur [0 ; a] et dérivable sur [0 ; a[.

��������(���(f(x),x))

(−(�

(a)2−((x)2)))·b·x

(a)3−(a·(x)2)

Réponse du logiciel

On obtient f ′(x) = −bx

a�

a2 − x2pour tout x ∈ [ ; a[.

211

Page 226: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

fp:��������� ��� (f);�����(fp(x),x,a,-1) / / −1 i n d i q u e l a d i r e c t i o n d e l a l i m i t e

On a limx→ax<a

f ′(x) =−∞, donc (E′) admet une demi-tangente verticale au point d’abscisse a.

y:�fp(xo)*(x-xo)+f(xo);

Ouh la la, l’équation de la tangente a l’air très compliquée...Mais rusons un peu !

��������(y*f(xo)/b^2)

Réponse du logiciel

(a^2-x*xo)/(a^2)

Ainsi, la tangente à (E′) en un point d’abscisse xo �= a admet pour équation :

xxo

a2 + y f (xo)

b2 = 1

Il est maintenant aisé d’obtenir une représentation de Γ :

a:�2:;b:�1:;G:���������(f(x),x�0��2):;G1:���� ��� (�����(0),G):;G2:���� ��� (���� (x�0),G):;G3:���� ��� (���� (y�0),G):;���� ��(G,�� �+��� ���� B),���� ��(G1,� ��+��� ���� B),���� ��(G2,����+��� ���� �),���� ��(G3,��� ���)

ce qui donne :

���� ���� Étude analytique de l’ellipse

212

Page 227: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#��� 6�!�� ����%!� ��� ��%!��

On peut visionner l’influence des coefficient a et b en les faisant varier grâce à la commande � � ��(intervalle) :

a:� � � ��(0 �� 10);b:� � � ��(0 �� 10);f:�x->b*����(1-x^2/a^2):;G:���������(f(x),x�0��a):;G1:���� ��� (�����(0),G):;G2:���� ��� (���� (x�0),G):;G3:���� ��� (���� (y�0),G):;���� ��(G,�� �+��� ���� B),���� ��(G1,� ��+��� ���� B),

���� ��(G2,����+��� ���� �),���� ��(G3,��� ���)

�� ;*�� ���� �)�"������ x2

a2 − y2

b2 = 1

On effectue la même étude avec g :R+ → R

x �→ b√

x2

a1 −1:

����� (a>0):;F:�x->b*����(x^2/a^2-1)a:�2:;b:�1:;H:���������(F(x),x�2��5):;H1:���� ��� (�����(0),H):;H2:���� ��� (���� (x�0),H):;H3:���� ��� (���� (y�0),H):;���� ��(H,�� �+��� ���� B),���� ��(H1,� ��+��� ���� B),���� ��(H2,����+��� ���� �),���� ��(H3,��� ���)

ce qui donne :

���� ���� Étude analytique de l’hyperbole

213

Page 228: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

,�� )�� ��� �� % �� / �� %��� �� ��� MF = eMH

Ouvrons une fenêtre de géométrie ��� + � . On crée un point fixe F et un point quelconquede coordonnées (x ; y).

F:������(0,0);M:������(x,y):;

On crée deux éléments variables d, qui caractérise la directrice, et E, l’excentricité.

d:� � � ��((-5) �� 5)E:� � � ��(0 �� 2)

On crée le projeté de M sur la directrice :

H:����, �����(���� (x�d),M)

On trace le lieu du point M vérifiant MF = eMH avec ������������(f(x,y),x,y) qui tracela courbe d’équation implicite f (x, y) = 0 et ����� ��'(A,B) qui calcule le carré de la dis-tance AB.

���� ��(������������(����� ��'(M,F)-E*(����� ��'(M,H)),x,y),���� )

et la directrice :

���� ��(���� (x�d),�� �)

On visualise alors parfaitement les 3 cas : e < 1, e = 1 et e > 1.

,�� - &�� � ��������� ����� � �����

�� � �� �)������

Soit Ω le centre de l’ellipse. Dans le repère orthonormé(Ω;−→ı ,−→j

), avec −→ı un vecteur unitaire

de la droite vectorielle associée au grand axe, l’ellipse admet pour équation x2

a2 + y2

b2 = 1.Les résultats suivants s’obtiennent classiquement avec les notations usuelles dans le cas a >b :

������� @�➥ c =

�a2 −b2 e = c

a

➥ F(c ; 0) F′(−c ; 0)

➥ D: x = a2

c D′ : x =− a2

c

On peut demander à XCAS de faire le travail :

foyer_ellipse(a,b):�{����� c,E;��(a<b){� ����("inversez a et b")}

214

Page 229: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#�#� �����! ��� �� � ����� 7 !� ��%!�

�� {c:�����(a^2-b^2);E:�c/a;� ����("l’excentricité vaut �"+E+"Les foyers ont ���� coordonnées ("+c+",0) et (-"+c+",0)et les directrices ont ���� équations x�"+a^2/c+" et x�-"+a^2/c)}}:;

Alors :

foyer_ellipse(5,3)

donne :Réponse du logiciel

l’excentricité vaut e =4/5Les foyers ont pour coordonnées (4,0) et (-4,0)et les directrices ont pour équations x=25/4 et x=-25/4

�� � �� �)!*�� ����

Il est aisé d’adapter au cas de l’hyperbole.

,�, " ����� � �� �� ������ ? ��� � �����

Nous avons déterminé précédemment page 212 l’équation d’une ellipse.Voyons maintenant une construction de la tangente.

�� �� �!�� +��

�������� @����� à !� ��%!� �� 5���� $ �� �� ���� ��� � ��� �2� (� � ����� 7 à � ��!� ���� '

�� Γ %!� )������� �� 7 �)"� 5� � �!�� ( � ! ���� � ��� %!� �)� ��−−→FM ·−→FT = 0�

�� �)��� ����� �� � ��

Observons ce résultat en ouvrant une fenêtre de géométrie après avoir tapé ��� + � .On définit la conique et on la trace :

a:� � � ��(1��5)b:� � � ��(1.5)E:������� (x^2/a^2+y^2/b^2�1):;���� ��(E,�� �)

215

Page 230: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

On définit maintenant un point quelconque de E avec la fonction � � �� en faisant varierun réel t entre 0 et 2π :

t:� � � ��(0 �� 2*��)M:� � � ��(E,t)���� ��(M,���� +point_width_5)

On définit un foyer et une directrice et le segment [M,F] :

F:������(����(a^2-b^2),0)D:����� ��(���� (x�a^2/����(a^2-b^2)),� ��)���� ��(� �� ��(M,F),���� )

On définit la perpendiculaire à (MF) en M avec � �� �������� (point,droite) :

d:����� ��(� �� �������� (F,���� (M,F)),���� )

et l’intersection de D et d avec ��� � ���� (courbe1,courbe2) :

T:���� � ���� (d,D)���� ��(T,���� +point_width_5)���� ��(���� (T,M),��� ���+��� ���� �)

On demande l’équation de la droite (TM) avec �������(droite) :

�������(���� (T,M))

Puis on se souvient du résultat vu page 212 qui dit que la tangente en M(x0 ; y0) à l’ellipse apour équation xx0

a2 + y y0

b2 = 1. On obtient donc que :

y =(1− xx0

a2

) b2

y0

Nous avons précisé que M n’appartenait pas à l’axe focal et donc y0 �= 0.

Nous utilisons ������� (point) et ����� (point) :

��������((1-(x*������� (M)/a^2))*b^2/����� (M))

On obtient le même résultat. XCAS nous le confirme avec ����(test) qui répond 0 ou 1 à untest booléen :

����(�����( �������(���� (T,M)))����������((1-(x*������� (M)/a^2))*b^2/����� (M)))

À l’écran, on fait varier t , a et b.

216

Page 231: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#�#� �����! ��� �� � ����� 7 !� ��%!�

���� ���� Construction de la tangente à une ellipse

�� �� � ��� �� � ��

Effectuons la preuve dans le cas général grâce aux capacités formelles de XCAS :

C:������� (x^2/a^2+y^2/b^2�1):;M:������(a*���(t),b*���(t)):; / / d é f i n i t un p o i n t d e C

F:������(����(a^2-b^2),0):;D:����� (x�a^2/����(a^2-b^2)):;d:����� (y�(b/����� (M))*(1-x*������� (M)/a)):; / / e n e f f e t x x o / a +

y y o / b�1

T:���� � ���� (d,D):;

Tout est rentré. On teste le résultat grâce à ������ ������(vecteur1,vecteur2) :

��������(������ ������(M-F,T-F))

qui répond bien 0.Nous venons donc de démontrer le théorème puisque les calculs ont été effectués dans le casgénéral.Un développement accessible aux élèves de lycée du même problème est présenté à la sec-tion 1.3 page 179.

217

Page 232: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

,�. #����� �� ������ �� �� %���� ��

Voici une activité qui peut être proposée à des élèves de 2nde car elle ne demande que desconnaissances de base sur les paraboles.

�� � ��� �)��� �� ����� ' �� +��� �� �� �����

Les lycéens l’ignorent, mais nous savons qu’une parabole d’équation x2 = y = 2× 12 x2 admet

pour foyer F(0 ; 14 ) et une directrice d’équation y =− 1

4 .

1. Tracer la droite D d’équation y =−1/4 en vert :

D:����� ��(���� (y�-1/4),� ��)

2. Placer le point F de coordonnées (0 ; 1/4) :

F:����� ��(�����(0,1/4),���� )

3. Créer un nombre s aléatoirement choisi entre −2 et 2 :

s:� � � ��(-2��2)

4. Créer un point m quelconque appartenant à la droite D :

m:����� ��( � � ��(D,s),���� )

5. Tracer p, la perpendiculaire à D passant par m :

p:����� ��(� �� �������� (m,D),,��� )

6. Tracer la médiatrice med du segment [mF] en jaune :

med:����� ��(� ������ (m,F),,��� )

7. Soit M l’intersection de p et de med. Déterminez les coordonnées de M :

M:����� ��(��� � ���� (p,med),���� )

8. Tracez le lieu de M quand s varie :

���� ��(�� �(M,s),��� ���+��� ���� B)

9. Le lieu ressemble à une parabole... Vérifiez que M appartient à la parabole d’équation y =x2 :

����(����� (M)��(������� (M))^2)

Ceci permet de tracer point par point une parabole dont on connaît le foyer F et la directrice D :

218

Page 233: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#�,� � �����2� �2��2���%!�� �!� ��� �������

���� ���� Construction à la règle et au compas d’uneparabole

�� ��� "��� �� ������� �� �����"�� ���&���� �� �����"�� C

Complétons la figure précédente.

1. Tracer maintenant en magenta la perpendiculaire perp à med en M :

perp:����� ��(� �� �������� (M,���� (M,F)),��� ���)

2. Tracer en vert la parallèle à med passant par F :

para:����� ��(������ � (F,med),� ��)

3. Tracer le point mm, intersection de para avec p :

mm:����� ��(��� � ���� (p,para),���� )

4. Tracer en jaune pointillé (jaune+dash_line) la bissectrice ,FMmm : que constatez-vous ?

bis:����� ��(���� ����� (M,F,mm),,��� +��� ��� )

On constate que perp est confondue avec bis.

5. Repassez en bleu avec une épaisseur de trait de 3 (bleu+line_width_3) la demi-droite[M,mm) et le segment [MF] :

���� ��( �� ���� (M,mm),�� �+��� ���� �);���� ��(� �� ��(M,F),�� �+��� ���� �)

219

Page 234: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

Connaissez-vous la loi de Descartes pour la reflexion ?

θ1 θ2

Rayon incident Rayon réfléchiNormale au point d’incidence

���� ���� Loi de Descartes

On a θ1 =−θ2 et donc la normale au point d’incidence représente la bissectrice del’angle géométrique formé par les rayons incident et réfléchi.Si on considère des rayons venant d’un satellite , on peut supposer qu’ils sont tousparallèles étant donné qu’il est très éloigné de l’antenne. Notre petite illustrationmontre alors que tous les rayons incidents sont envoyés vers le foyer.Inversement, si l’on émet de la lumière depuis le foyer, comme c’est la cas parexemple dans le phare d’une voiture, les rayons réfléchis par les parois du pharepartiront tous dans la même direction, ce qui permettra de diriger le faisceau lumi-neux et de ne pas éblouir les voitures venant en face.

���� ��� Pourquoi les antennes sont paraboliques ?

,�5 " ����� � �@��

Nous ne vous apprendrons pas l’origine du mot coniques. Nous allons nous contenter del’illustrer.

220

Page 235: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#�/� ���%!�� �� 8��

�� ������� �)�� �?�� �� �� ���� �)�"������ x = t

On construit un cône de centre l’origine, d’axe (Oz) et de demi-angle au sommet π4 :

K:����� ��(��� ([0,0,0],[0,0,1],��/6,�� ��0.02),�� �)

On construit le plan d’équation x = t avec t variant entre −10 et 10 :

t:� � � ��((-10) �� 10)Q:����� ��(����(x�t),����+� ����)

On demande de tracer l’intersection du cône et du plan :

���� ��(��� �(Q,K),���� +��� ���� B)

���� ���� Intersection d’un cône avec un plan d’équa-tion x =t

Étudions l’intersection de K et du plan x = t . On utilise ��� qui renvoie le réel « flottant » tsous la forme d’un rationnel car inter travaille en calcul formel.

���� ([ �������(K),x� ���(t)],[x,y,z])

nous renvoie (dans le cas t = 1) :

221

Page 236: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� � �������

⎡⎣ 1 y −(√

(y)2 +1)

1 y√

(y)2 +1

⎤⎦Réponse du logiciel

C’est à dire que z =±√y2 +1 ce qui est équivalent à z2 = y2 +1.

Nous reconnaissons bien sûr une hyperbole. XCAS nous le confirme.

Sortons de la fenêtre de géométrie 3D. Comme√

y2 +1 est le troisième élément du secondélément de solve([equation(K),x=1],[x,y,z]), on l’obtient en tapant :

���� ([ �������(K),x�1],[x,y,z])[0][2]

Il ne nous reste plus qu’à utiliser ������������ :

������������(z^2�(���� ([ �������(K),x�1],[x,y,z])[0][2])^2,y,z)

Le logiciel renvoie le tracé et le message :

Réponse du logiciel

Hyperbola of center (0,0)

�� ������� �)�� �?�� �� �� ���� �)�"������ x = t +k · z

Nous allons rajouter un nouveau paramètre, k, qui va nous permettre de visualiser l’évolutiondes sections suivant la « pente » du plan de coupe :

K:���� ([0,0,0],[0,0,1],��/6,��������� ���,�� ��0.01)t:� � � ��((-10) �� 10)k:� � � ��((-2) �� 2)P:�����(x�t+k*z,����������+� ����)���� ��(��� �(K,P),���� +��� ���� B)

En faisant varier k, on visualise le passage de l’hyperbole à l’ellipse puis à la parabole :

222

Page 237: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

#�/� ���%!�� �� 8��

���� ��� Section d’un cône par un plan d’équationx = t + k · z : cas de la parabole

223

Page 238: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 239: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Séries de Fourier

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Les logiciels ont du mal à intégrer les fonc-tions non continues. On s’intéresse ici aux fonctions continues parmorceaux.

Problématique : On explore les développement en série de Fouriertant par le calcul que graphiquement.

.�� )+%� ��� �

Si l’on considère des fonctions intégrables au sens de Lebesgue sur un intervalle [a ; a +T],alors on peut toujours calculer ses coefficients de Fourier :

cn = 1

T

∫a+T

af (t)e

−2iπnt/T dt

Sur XCAS une fonction est pré-programmée :

����� � ��(f(x),variable,période,n,borne inférieure de l’intégrale)

Par exemple, considérons la fonction f , 2π-périodique, paire et telle que f (x) = x2 pour toutx ∈ [0 ; π]. Traçons sa représentation graphique sur une période :

��������(x^2,x�-Pi��Pi)

Page 240: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� " � 0���� �� &�����

���� ���� XCAS : Fonction x �→ x2

Alors :

����� � ��(x^2,x,2*Pi,n,-Pi)

−in2π2einπ+in2π2e−in(−π+2π) +2nπeinπ+2nπe−in(−π+2π)+2ieinπ−2ie−in(−π+2π)

2n3π

Réponse du logiciel

Ce n’est pas très lisible.Il suffit d’expliquer que n est un entier et les exp((-i)*n*(-pi)) vont s’en trouver soula-gées...

����� (n,��� � �)����� � ��(x^2,x,2*Pi,n,-Pi)

renvoie cette fois :

2 · (−1)n

(n)2

Réponse du logiciel

Ça a l’air mieux...Nous pouvons préférer les coefficients réels :

����� � ��(x^2,x,2*Pi,n,-Pi);����� � ��(x^2,x,2*Pi,n,-Pi)

226

Page 241: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,��� �"�������

4 · (−1)n

(n)2,0

Réponse du logiciel

On vérifie bien que les bn sont nuls car la fonction est paire. Il semble y avoir un problèmepour a0... mais XCAS s’en sort encore une fois !

����� � ��(x^2,x,2*Pi,0,-Pi)

qui renvoie bien π2/3, la valeur moyenne de f sur une période.Au fait, vérifions le lemme de Riemann-Lebesgue pour rigoler :

Lemme de Riemann-LebesgueSoit f ∈L 1[a ; a +T]. Alors

limn→+∞

∫a+T

af (t)e

−2iπnt/T dt = 0

cn:������ � ��(x^2,x,2*Pi,n,-Pi);�����(���(cn),n�+��������)

Pour la démonstration, c’est un autre problème...Vérifions maintenant graphiquement la convergence de la série de Fourier :

f4:�t->����� � ��(x^2,x,2*Pi,0,-Pi)+���(����� � ��(x^2,x,2*Pi,n,-Pi)*���(n*t),n�1��4)

crée la fonction t �→ a0 +4∑

n=1an cos(nt).

Est-ce que XCAS sait bien évaluer f4(t) ?

f4(t)

−(4 ·cos (t))+cos(2 ·t)+ −4 ·cos (3 ·t)

9+ cos (4 ·t)

4+ 1

3· (π)2

Réponse du logiciel

Nous voici rassurés... Voyons le résultat graphiquement. Pour cela, il nous suffit de rentrer :

227

Page 242: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� " � 0���� �� &�����

��������([t^2,f4(t)],t�-Pi��Pi,������[red,��� ])

Mais pour l’impression de ce livre, nous avons augmenté l’épaisseur des traits avec la fonction���� �� :

���� ��(��������(t^2,t�-Pi��Pi),line_width_2+red);���� ��(��������(f4(t),t�-Pi��Pi),line_width_2+��� );

���� ���� XCAS : Visualisation de la convergence de lasérie de Fourier

.�� ����%���� � %'&����

Adoptons à présent une vision physicienne du problèmea.Ainsi f est un signal de période T et notons classiquement ω = 2π/T. Supposons que f esttelle que la suite des sommes partielles

fn (t) = a0 +n∑

k=0(ak cos(kωt)+bk sin(kωt))

converge vers f , ou éventuellement sa régulariséeb et dont l’énergie est

E ( f ) = 1

T

∫a+T

af 2(t) dt

On utilise alors la formule de Bessel-Parseval et on obtient classiquement

E ( f ) = a20 +

+∞∑n=1

a2n +b2

n

2

Une des questions physiques est alors de savoir à partir de quelle valeur de n on obtient unpourcentage donné de l’énergie du signal en approximant f par fn .Reprenons notre exemple :

aLes problèmes de convergence et le travail dans un espace de Hilbert ne seront pas traités ici.bVoir le théorème de Dirichlet.

228

Page 243: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,�&� ��2��9� �� *����

E:�(1/(2*��))*(���(t^4,t�-������));��������(E)

nous dit que E ( f ) =π4/5

Notons En ( f ) = a20 +

∑nk=1

a2k +b2

k

2= π4

9+

n∑k=1

16

k4

Nous voudrions savoir à partir de quelle valeur de n nous obtenons En ( f ) = p% de E ( f ) :

efficace(p):�{ao:� ����(����� � ��(x^2,x,2*Pi,0,-Pi));En:�ao^2;k:�0;seuil:� ����(p*E/100);���� (En<seuil){

k:�k+1;En:�En+ ����(.5*16/k^4);

};"Il suffit de prendre n�"+ k+ " ���� obtenir "+p+"% du signal"}

Par exemple :

efficace(99.9)

Réponse du logiciel

Il suffit de prendre n=5 pour obtenir 99.9% du signal

Vérifions :

Energie:�n->��^4/9+���(8/k^4,k�1��n);100* ����(Energie(4))/ ����(E);100* ����(Energie(5))/ ����(E)

ce qui confirme notre résultat.

.�� �'�� >�� �� ����

Occupons-nous à présent d’un signal moins régulier mais important en électronique : la fonc-tion créneau, impaire, de période 1, et telle que f (t) = 1 pour tout t ∈ ]

0 ; 1/2[

et f (0) =f(1/2

)= 0.On peut « rentrer » f de manière explicite :

f:�t->piecewise(t��-.5,0,(-.5<t)��(t<0),-1,t��0,0,(0<t) ��(t<.5),1,t��.5,0)

mais cette fonction n’est pas encore bien intégrée, mise à part l’évaluation et la dérivée. Nousn’utiliserons donc pas fourier_bn, mais nous fabriquerons nos propres procédures.

229

Page 244: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� " � 0���� �� &�����

Représentons d’abord graphiquement des fonctions définies par morceaux en rentrant commearguments la liste des intervalles, la liste des valeurs correspondantes, le nombre d’intervalleset la couleur.

plot_mor(LI,LV,m,���� ��):�{����� P;P:�[];���(k:�0;k<m;k++){P:�������(P,����(LV[k],x�LI[k],���������� ��)); / / o n c r é e u n e l i s t e d e

" m o r c e a u x " d e c o u r b e s

}}

Par exemple :

plot_mor([-1/2��0,0��1/2],[-1,1],2,��� )

donne :

���� ���� XCAS : Tracé d’une fonction définie par mor-ceaux

Pour le calcul de a0 :

four_ao(LI,LV,m,T):�{����� integ,k;integ:�0;���(k:�0;k<m;k++){

integ:�integ+(1/T)*(���(LV[k],x�LI[k]));}

� ���� ��������(integ)}

Dans le cas qui nous occupe :

four_ao([-1/2��0,0��1/2],[-1,1],2,1)

On calcule de même les an :

230

Page 245: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,�&� ��2��9� �� *����

four_an(LI,LV,m,T,p):�{����� integ,k;integ:�0;���(k:�1;k<m;k++){

integ:�integ+(2/T)*(���(LV[k]*���(p*2*Pi*x/T),x�LI[k]));}

� ���� ��������(integ)}

et les bn :

four_bn(LI,LV,m,T,p):�{����� integ,k;integ:�0;���(k:�0;k<m;k++){

integ:�integ+(2/T)*(���(LV[k]*���(p*2*Pi*x/T),x�LI[k]));}

� ���� ��������(integ)}

Ça « marche » pour des valeurs numériques :

four_bn([-1/2��0,0��1/2],[-1,1],2,1,3)

4

π ·3

Réponse du logiciel

mais si l’on demande une formule générale :

four_bn([-1/2��0,0��1/2],[-1,1],2,1,N)

ce n’est pas très lisible...Il faut dans ce cas modifier notre procédure :

four_bn_general(LI,LV,m,T):�{����� integ,k,p;����� (p,��� � �);integ:�0;���(k:�0;k<m;k++){

integ:�integ+(2/T)*(���(LV[k]*���(p*2*Pi*x/T),x�LI[k]));}

� ���� ��������(integ)}

Alors :

four_bn_general([-1/2��0,0��1/2],[-1,1],2,1)

231

Page 246: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� " � 0���� �� &�����

nous donne cette fois un résultat satisfaisant :

−(2 · (−1)p)+2

π ·p

Réponse du logiciel

Ensuite on demande de créer la fonction t �→ a0 +N∑

n=1(an cos(2πnt/T)+bn sin(2πnt/T)) :

s_fourier(LI,LV,m,T,N):�{����� k;��������(four_ao(LI,LV,m,T)+���(four_an(LI,LV,m,T,k)*���(k*2*Pi*x/T)+four_bn(LI,LV,m,T,k)*���(k*2*Pi*x/T),k�1��N))}

Par exemple :

s_fourier([-1/2��0,0��1/2],[-1,1],2,1,5)

192 · (sin (2 ·π ·x))5− (320 · (sin (2 ·π ·x))3

)+180 ·sin (2 ·π ·x)

15 ·π

Réponse du logiciel

On peut demander le tracé de la somme partielle et de la fonction elle-même :

plot_fourier(LI,LV,m,T,xmin,xmax,N):�{����� A,B;A:���������(s_fourier(LI,LV,m,T,N),x�xmin��xmax,��������� ):;B:�plot_mor(LI,LV,m,red):;A,B}

et on obtient pour N = 8 :

232

Page 247: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

,�&� ��2��9� �� *����

���� ���� XCAS : phénomène de Gibbs avec N=8

qui met en évidence de petites crêtes plus grandes près des points de discontinuité.Vérifions un peu plus loin :

plot_fourier([-.5��0,0��0.5],[-1,1],2,1,-.5,.5,16)

et on obtient :

���� ���� XCAS : phénomène de Gibbs avec N=16

Vous pourrez montrer les trois résultats étonnants suivantsc :– la crête est de plus en plus étroite ;– elle se rapproche du point de discontinuité ;– sa hauteur est constante.

cPour la démonstration voir APPEL , Walter Mathématiques pour la physique et les physiciens. Paris: H&K, 2005 p. 274

233

Page 248: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 249: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Musique

Logiciel(s) abordé(s) : Scilab

Problématique : Construire une gamme en utilisant le calcul matri-ciel. Produire des sons pour un séquenceur.

5�� " ����� � ����� �� � ���� $�����

L’ensemble de toutes les notes possibles (partant des gammes classiques de tempéramentégal) contient 12 degrés espacés d’un demi-ton ; le nombre 0 représente do = C, le nombre 1représente do�= C�, etc.On cherche à construire toutes les gamme possibles dans les contraintes suivantes : le nombrede degrés est fixé, seuls certains intervalles sont autorisés, chaque note apparaît au plus unefois, on retombe sur la note initiale à la fin. Par convention, la note initiale est toujours 0.Dans notre construction, la première note est omise et est toujours 0 (do = C) ; on construitune matrice dont chaque ligne représente une gamme. La matrice obtenue à la fin représentedonc toutes les gammes possibles avec les contraintes données.

�� #��� ����� �� ����� ���������

Il est bon de faire l’aller-et-retour entre une gamme et la succession de ses intervalles. Lafonction intervalle donne les intervalles successifs associés aux gammes stockées dans unematrice.

�������� y�intervalle(x)y�x��� j�2:��" (x,2)y(:,j)�������(y(:,j)-x(:,j-1),12) �

���������

La fonction gamme donne les gammes associées aux suites d’intervalles.

�������� y�gamme(x)y�xs���" (x,2)��� j�2:s

Page 250: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� % � =�����

y(:,j)�������(���(x(:,[1:j]),’c’),12) �

���������

Des candidates pour les gammes sont construites par itération ; une bonne partie de l’élimi-nation se fait pendant la génération pour économiser les ressources de l’ordinateur !

�������� z�iteration(y,k,taille,w)W���" (w,1)s���" (y,1) ;z�" ���(s*W,k) ;��� i�s:-1:1 ,��� j�W:-1:1,yy�y(i,k) ;Z������(yy+w(j),12) ;l�W*(i-1)+jz(l,[1:k])�y(i,[1:k]) ; z(l,k+1)�Z ;

/ /

/ / É l i m i n a t i o n d e m a u v a i s e s l i g n e s : o n n e d o i t r e n c o n t r e r

/ / c h a q u e n o t e qu ’ u n e s e u l e f o i s

/ / e t i l n e d o i t p a s y a v o i r d e u x i n t e r v a l l e s s u c c e s s i f s i d e n t i q u e s .

/ /

�� k �� 1 �� � Y�0 ; �� Y�y(i,k-1) ; � ;ZZ�Z-2*yy+Y ;�� or([�����(ZZ,12)��0,Z��0, or(y(i,[1:k])��Z)]) �� � z(l,:)�[] ; �

; � ; � ; ���������

�� ����������� �� �� �������� �� ����� � �� �������

Pour une matrice représentant les intervalles, il faut éliminer les lignes qui sont redondantes àpermutation circulaire près : cela reviendrait à transposer la gamme, ce qui n’apporterait riende nouveau. La fonction pcc opère un cycle élémentaire sur les lignes d’une matrice.

�������� y�pcc(x)y�xs���" (x,2)��� j�1:s-1k�j+1y(:,j)�x(:,k) �

y(:,s)�x(:,1) ���������

On marque les lignes redondantes et on les élimine à la fin.

236

Page 251: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/��� �����! ��� �)!� ���� �� � ���

�������� y�nettoie(x)[l,c]���" (x)marque�[]��� i�1:l-1��� j�i+1:lz�x(i,:)��� k�1:c-1z�pcc(z)�� z��x(j,:) �� � marque�[marque,j] ; � ; �

y�xy(marque,:)�[] ���������

�� D������� � �������� / ���� �)������

Il faut taper z=cherche(t,w), où t est la taille de la gamme, c’est-à-dire le nombre de degrés,et w est la liste des intervalles autorisés. La gamme obtenue sur la première ligne ci-dessousse lit comme indiqué dans la deuxième ligne.

Réponse du logiciel

! 3. 7. 10. 2. 8. 4. !do mib sol sib ré sol# mi

L’instruction intervalle(z) décrit les intervalles entre chaque degré.Prenons par exemple la règle : on peut monter ou descendre d’un triton, d’une tierce mineureou majeure.

w�[3;4;6;8;9]

Le vecteur w représente tous les intervalles possibles en suivant cette règle.Voici le programme principal :

�������� z�cherche(taille,w)taille����(taille,11) / / p o u r s e p r o t é g e r d e s p l a i s a n t i n s

z�w ; ��� i�1:taille-1 , z�iteration(z,i,taille,w) ; � ;/ / I l f a u t r e t o m b e r s u r d o�0

s���" (z,1) ;��� i�s:-1:1 ,�� or(w��z(i,�)) �� � ; �� z(i,:)�[] ; � ; � ;

/ / P o u r é v i t e r d e u x i n t e r v a l l e s i d e n t i q u e s a u x b o u t s d e l a gamme

s���" (z,1) ;��� i�s:-1:1 ,�� �����(z(i,1)+z(i,taille),12)��0 �� � z(i,:)�[] ; � ;

237

Page 252: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� % � =�����

� ;/ / o n é l i m i n e l e s p e r m u t a t i o n s c i r c u l a i r e s

z�gamme(nettoie(intervalle(z)))/ / a f f i c h a g e d u r é s u l t a t

s���" (z,1)/ /

/ / s i w� [ 6 ; 3 ] e t t a i l l e �2 o u 3�� .

/ /

�� s>1 �� � pluriel�’s’ ; �� pluriel�’’ ; � ;chaine�’Il y a ’+������(s)+’ gamme’+pluriel+’ solution’+pluriel���� (%io(2),chaine) ���������

5�� -������� � �� �

Le logiciel Scilab permet de fabriquer des sons sous forme de fichiers d’extension « .wav ».Le son de l’orgue éléctronique modélisé grossièrement ici est produit par des oscillateurs àcircuits bobine-condensateur. Dans le circuit magnétique de chaque bobine tourne une roued’une certaine forme, ce qui change l’auto-inductance de la bobine et donc la fréquence dela note. Les électroniciens appellent cela une modulation de fréquence et les musiciens unvibrato. (Quand la variation de fréquence est plus ample, ils parlent respectivement de wobu-lation et de glissando.)

/ / a t t e n t i o n t n e d o i t p a s ê t r e un t a b l e a u

�������� u�orgue(t,frequence,rotationRoues,profondeur,nuance)omega�(1+profondeur*���(t*rotationRoues*2*%pi))*2*%pi*frequence

/ / p o u r u n e é n e r g i e i n d é p e n d a n t e d e l a f r é q u e n c e

amplitude�nuance/(1+frequence/441)u�amplitude*���(t*omega) ; ���������

La fabrication de la matrice de réels qui représente l’échantillonnage sonore à 44100Hz utilisela fonction précédente. La fonction v ci-dessous sera construite à partir de la fonction orgueci-dessus.

�������� Z�concret(v,duree,frequence,rotationRoues,profondeur,nuance)intervalle�soundsec(duree,44100) ;Z�[]��� k�intervalle,Z�[Z v(k,duree,frequence,rotationRoues,profondeur,nuance)]; �

���������

L’écriture des échantillons numériques dans un fichier sonore se fait automatiquement. L’ins-truction y=[u’,v’] ; wavwrite(y,44100,16,nom) donnerait des résultats bizarres.

�������� y�sortie(u,v,nom)

238

Page 253: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/��� $��� ��� �� ���

y�[u;v] ; ��� ��� (nom,y,44100)y�nom ���������

Il reste à écraser les extrémités pour diminuer les dégâts du jeu en boucle.

�������� y�enveloppe(t,duree,frequence,rotationRoues,profondeur,nuance)�� or([t��0 t��duree]) �� � y �0 ; ��

yy�orgue(t-duree/2,frequence,rotationRoues,profondeur,nuance) ;y�yy*����(100*t)*����(100*(duree-t)); �

���������

Puis à utiliser les fonctions précédentes en initialisant les variables.

rotationRoues�7 / / l e s r o u e s t o u r n e n t à �� . h e r t z

profondeur�.003frequence�441 / / l a d u d i a p a s o n

nuance�.999 / / f f f f o n n e p e u t p a s a l l e r p l u s l o i n�� .

z�concret(enveloppe,2,frequence,rotationRoues,profondeur,nuance);nom�’orgueA3.wav’nom�’orgueBIS.wav’sortie(z,z,nom)

La fabrication automatique du sons peut produire des échantillons pour un séquenceur infor-matique. La grandeur d’une octave pour l’oreille humaine, c’est-à-dire le coefficient multipli-cateur que l’on applique aux notes quand on les élève d’une octave, est légèrement supérieureà deux, et varie en fonction des personnes et des circonstances. Dans le tempérament égal,les douze notes sont équiréparties en moyenne géométrique le long de l’octave. Profitons-enpour construire des fonctions logarithme et exponentielle musicales.

�������� y�lm(x,octave)y����(x)*12/���(octave) ���������

�������� y�em(x,octave)y� �(x*���(octave)/12) ���������

Les fichiers-sons se répartissent au long de la tessiture du séquenceur, qui contient typique-ment 128 notes (dix octaves et demie). On peut aller jusqu’à un échantillon par note ; onse contente ici d’un échantillon par octave : évidemment l’effet vibrato sera hétérogène. . .Pour créer un nouveau répertoire où placer les encombrants fichiers-sons, il suffit d’exécuterdans Scilab une commande shell :

��� �(’mkdir Sons’)

L’automate est prêt à être écrit ; le lecteur pourra aisément modifier la liste et le nombre deséchantillons (le séquenceur risque de rouspéter s’il en charge plus de 128), puisque tout passepar la gestion des chaînes de caractères. Il faut juste repérer la position dans la liste de la notede référence pour le diapason (441Hz).

239

Page 254: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� % � =�����

�������� y�sequence(duree,rotationRoues,profondeur,nuance,octave)n�-2:8;N�������(n)gamme�[’A’]suite�[]��� k�N,suite�[suite gamme+k]; �

��� k�suite,nom�’orgue’+������(k)+’.wav’ ;i�vectorfind(suite,k,’c’)-5 / / 5 e s t l a p l a c e d u l a 3�� .

frequence�441*em(i*12,octave) / / 4 4 1 Hz p o u r l e l a d u d i a p a s o n

z�concret(enveloppe,duree,frequence,rotationRoues,profondeur,nuance) ;sortie(z,z,’Sons/’+nom) ; �

y�suite ���������

Les données nécessaires sont rentrées ; il faut plusieurs secondes sur une machine ordinairepour produire une note d’une seconde. Augmenter le nombre d’échantillons et la durée seragourmand en temps de calcul.

octave�2.01rotationRoues�7 / / l e s r o u e s t o u r n e n t à �� . h e r t z

profondeur�.003nuance�.999 / / f f f f l e ma xi mum�� .

duree�1

Il ne reste plus qu’à se jeter à l’eau.

sequence(duree,rotationRoues,profondeur,nuance,octave)

240

Page 255: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Carrés magiques

Logiciel(s) abordé(s) : Scilab

Problématique : Résoudre des problèmes amusants en apprenant lamanipulation des matrices sans s’en apercevoir.

Les carrés magiques portent aussi un nom japonais imprononçable en français (sudoku).Les problèmes sont des tableaux de 9 lignes et 9 colonnes ; certaines cases sont déja remplies.Le joueur doit remplir les cases restantes en respectant des contraintes géométriques : la suitedes nombres de 1 à 9 doit apparaître exactement dans chaque ligne, dans chaque colonne, etdans chacun des neuf sous-carrés de trois cases par trois découpés dans le tableau.Prenons un problème donné en remplaçant les cases vides par des zéros.

m�" ���(9,9);m(1,[1 4 5 8])�[5 4 8 6];m(2,[4 6 7 9])�[5 2 4 1];m(3,[1 3 5 9])�[7 4 1 2];m(4,[1 5 7 8])�[1 9 2 3];m(5,[3 4 5 6 7])�[9 1 4 8 6];m(6,[2 3 5 9])�[4 7 3 9];m(7,[1 5 7 9])�[9 2 3 6];m(8,[1 3 4 6])�[2 1 6 4];m(9,[2 5 6 9])�[8 7 3 5];m

La dernière instruction affiche la matrice du problème. la matrice m est une matrice 9 par 9dans la quelle on stocke les données et où l’on stockera les réponses progressivement. Lespremiers outils pour manipuler les neuf nombres sont initialisés.

I��� �(9,9) ;u�I; d�2*I; t�3*I; q�4*I; c�5*I; s�6*I; e�7*I; h�8*I; n�9*I;

Un transfert pour faciliter les itérations est nécessaire.

�������� [M,U,D,T,Q,C,S,E,H,N]�egale(m,u,d,t,q,c,s,e,h,n)M�m;U�u;D�d;T�t;Q�q;C�c;S�s;E�e;H�h;N�n; ���������

Un infâme bricolage pour numéroter les matrices extraites ne devrait faire peur à personne.

Page 256: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ' � ������ �������

�������� z�numero(k)kk�������(k,3) ; K�(k-kk)/3 ; zz����(kk,K)+2*K/3 ; z����(�����(zz),2) ���������

Quand une case de la matrice M est remplie, on procède aux éliminations dans la matrice Y,qui sera l’une de celles où sont stockés les nombres encore inutilisés.

�������� Z�annulation(Y,M)Z�Y��� k�1:9��� l�1:9�� M(k,l)~�0 �� �

�� Z(k,l)��M(k,l) �� �

Z(k,:)�0;Z(:,l)�0;Z(k,l)�M(k,l);K�numero(k);L�numero(l);Z(3*K+[1:3],3*L+[1:3])�0;Z(k,l)�M(k,l); �� Z(k,l)�0 ; �

���������

La première action pour remplir la matrice est de vérifier les nombres qui ne sont utilisésqu’une fois dans chaque ligne ou colonne.

�������� M�attribution(m,u,d,t,q,c,s,e,h,n)/ / s ’ i l n ’ y a qu ’ u n e r é p o n s e p a r l i g n e o u p a r c o l o n n e

/ / o n r e m p l i t l a c a s e d e M c o r r e s p o n d a n t e

M�mliste�[’u’,’d’,’t’,’q’,’c’,’s’,’e’,’h’,’n’]compteur�1

/ / b o u c l e 1

��� y�listeY� ����(y)colonne����(Y,’r’) ; ligne����(Y,’c’)

/ / b o u c l e 2

��� j�1:9/ / s i u n e s e u l e r é p o n s e s u r l a c o l o n n e

/ / b o u c l e 3

�� colonne(j)��compteur �� �

/ / b o u c l e 4

��� k�1:9/ / b o u c l e 5

�� M(k,j)��0 �� �

M(k,j)�Y(k,j) �

/ / f i n d e b o u c l e 5

242

Page 257: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/��� $��� ��� �� ���

/ / f i n d e b o u c l e 4

/ / f i n d e b o u c l e 3

/ / f i n d e b o u c l e 2

/ / b o u c l e 2 b i s

��� j�1:9/ / s i u n e s e u l e r é p o n s e s u r l a l i g n e

/ / b o u c l e 3 b i s

�� ligne(j)��compteur �� �

/ / b o u c l e 4 b i s

��� k�1:9/ / b o u c l e 5 b i s

�� M(j,k)��0 �� �

M(j,k)�Y(j,k) �

/ / f i n d e b o u c l e 5 b i s

/ / f i n d e b o u c l e 4 b i s

/ / f i n d e b o u c l e 3 b i s

/ / f i n d e b o u c l e 2 b i s

compteur�compteur+1 �

/ / f i n d e b o u c l e 1

���������

Si tous les nombres sauf un ont été éliminés pour un emplacement donné, l’emplacementpeut être attribué.

�������� M�ATTRIBUTION(m,u,d,t,q,c,s,e,h,n)/ / s i un s e u l c h i f f r e e s t a p p a r a î t

/ / c o m p t e t e n u d e t o u t e s l e s p o s s i b i l i t é s

/ / o n r e m p l i t l a c a s e d e M c o r r e s p o n d a n t e

M�mliste�[’u’,’d’,’t’,’q’,’c’,’s’,’e’,’h’,’n’]

/ / b o u c l e A

��� k�1:9/ / b o u c l e B

��� l�1:9verticale�" ���(9,1)compteur�1

/ / b o u c l e C

��� y�listeY� ����(y)verticale(compteur)�Y(k,l)

243

Page 258: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ' � ������ �������

compteur�compteur+1 �

/ / f i n d e b o u c l e C

test����(verticale)/ / un s e u l c h i f f r e e s t p o s s i b l e ?

/ / b o u c l e C b i s

�� test����(verticale) �� �

M(k,l)�test �

/ / f i n d e b o u c l e C b i s

/ / f i n d e b o u c l e B

/ / f i n d e b o u c l e A

���������

Le travail fait par la fonction attribution suivant les lignes et colonnes est fait dans les ta-bleaux extraits par la fonction attripb.

�������� M�attrib(m,u,d,t,q,c,s,e,h,n)/ / s ’ i l n ’ y a qu ’ u n e r é p o n s e p a r m a t r i c e 3 p a r 3 e x t r a i t e

/ / o n r e m p l i t l a c a s e d e M c o r r e s p o n d a n t e

M�mliste�[’u’,’d’,’t’,’q’,’c’,’s’,’e’,’h’,’n’]compteur�1

/ / b o u c l e 1

��� y�listeY� ����(y)

/ / b o u c l e 2

��� K�0:2/ / b o u c l e 3

��� L�0:2Z�Y(3*K+[1:3],3*L+[1:3])test����(Z)

/ / s i u n e s e u l e r é p o n s e s u r l a m a t r i c e 3 p a r 3 e x t r a i t e

/ / b o u c l e 4

�� test��compteur �� �

/ / b o u c l e 5

��� kk�1:3/ / b o u c l e 6

��� ll�1;3k�3*K+kk ; l�3*L+ll

/ / b o u c l e 7

�� M(k,l)��0 �� �

M(k,l)�Y(k,l) �

/ / f i n d e b o u c l e 7

244

Page 259: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

/��� $��� ��� �� ���

/ / f i n d e b o u c l e 6

/ / f i n d e b o u c l e 5

/ / f i n d e b o u c l e 4

/ / f i n d e b o u c l e 3

/ / f i n d e b o u c l e 2

compteur�compteur+1 �

/ / f i n d e b o u c l e 1

���������

Maintenant vient le travail recherché : toutes les éliminations et les attributions sont rassem-blées.

�������� [M,U,D,T,Q,C,S,E,H,N]�op(m,u,d,t,q,c,s,e,h,n)/ / l a f o n c t i o n p r i n c i p a l e

[M,U,D,T,Q,C,S,E,H,N]�egale(m,u,d,t,q,c,s,e,h,n)liste�[’U’,’D’,’T’,’Q’,’C’,’S’,’E’,’H’,’N’]��� y�listeY� ����(y)Z�annulation(Y,M) ����(y+’�Z’) �

MM�attribution(M,U,D,T,Q,C,S,E,H,N)��� y�listeY� ����(y)Z�annulation(Y,MM) ����(y+’�Z’) �

MMM�ATTRIBUTION(MM,U,D,T,Q,C,S,E,H,N)��� y�listeY� ����(y)Z�annulation(Y,MMM) ����(y+’�Z’) �

M�attrib(MMM,U,D,T,Q,C,S,E,H,N) ���������

Le nombre d’itérations et le drapeau d’arrêt sont initialisés.

stop�0longueur�0

La boucle d’itération utilise les fonctions précédentes.

245

Page 260: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ' � ������ �������

���� stop��0/ / u n e é t a p e d e t r a v a i l

[M,U,D,T,Q,C,S,E,H,N]�op(m,u,d,t,q,c,s,e,h,n) ;/ / m e s u r e d e l ’ e f f o r t

longueur�longueur+1 ;/ / e s t − c e f i n i ?

�� [M,U,D,T,Q,C,S,E,H,N]��[m,u,d,t,q,c,s,e,h,n] �� �

stop�1 ; �

[m,u,d,t,q,c,s,e,h,n]�egale(M,U,D,T,Q,C,S,E,H,N) ; �

Quand la machine s’arrête, le point d’arrivée est affiché avec l’effort fourni.

���(m);���(longueur);

Si ça bloque avant de trouver une solution, c’est qu’on ne peut pas continuer par élimina-tion : il faut fixer une valeur arbitraire dans M (de préférence où la collision est faible). Lesinstructions suivantes donnent des indications.

collision�u+d/2+t/3+q/4+c/5+s/6+e/7+h/8+n/9-1 ;���(u);���(d);���(t);���(q);���(c);���(s);���(e);���(h);���(n)

La valeur candidate est rentrée dans m avec une instruction du type

m([i,j])�valeur

Ensuite il faut réitérer l’ensemble d’instructions :

[m,u,d,t,q,c,s,e,h,n]�op(m,u,d,t,q,c,s,e,h,n) ;collision�u+d/2+t/3+q/4+c/5+s/6+e/7+h/8+n/9-1 ; m

Si un nombre de collision devient strictement négatif, il n’y a pas de solution : la valeur ar-bitraire était mauvaise, il faut tout recommencer avec une autre valeur arbitraire. Ou alors ilfallait archiver sous d’autres noms les dix matrices m, u. . . n avant de rentrer le candidat. . .

246

Page 261: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �

Codes correcteurs d’erreurs

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Les codes correcteurs nous ferons travaillerdans des corps finis (F2 en l’occurence) ce qui nous permettra d’ap-profondir le calcul modulaire. Le travail principal se fera cependantsur la manipulation des matrices. Nous évoquerons également le tra-vail dans les corps de Galois.Nous ne ferons que survoler la partie mathématique (pour un déve-loppement très pédagogique, voir a et pour une étude plus complète,voir b) pour nous concentrer sur l’exploitation informatique.Nous utiliserons XCAS.

Problématique : Une information est codée sous la forme de bits(binary digits), donc d’éléments d’un F2-espace vectoriel. Elle est en-suite transmise puis décodée. Un message sera donc représenté parun vecteur de Fn

2 . La transmission altère parfois l’information : ainsion récupère un vecteur transmis qui n’est pas forcément celui d’ori-gine. Le but de l’activité est d’utiliser un code qui permetttra de dé-tecter les erreurs et même de les corriger : on créera d’abord une pro-cédure « naïve » qui dépendra de la matrice de codage et du vecteur-message à tester et qui dira si ce vecteur a été mal tansmis et par quel« bon » vecteur le remplacer.Nous évoquerons ensuite une procédure plus efficace mais qui neconcernera que les codes de Hamming. Enfin, nous travailleronsdans des corps de Galois pour créer des polynômes générateurs.

aBRUGÈRE , Thierry/MOLLARD , Alain Mathématiques à l’usage des informaticiens. Paris: Ellipses, 2003bBADRIKIAN , Josèphe Mathématiques pour téléinformatique : codes correcteurs. Paris: Ellipses, 2002

Page 262: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ) � ����� ���������� �,�������

8�� /�' �� ��A��

�� ���� �� ������� �� Fk2

Nous voudrions écrire les 2k vecteurs de Fk2 sous forme de listes de longueur k. Plusieurs op-

tions s’offrent à nous. Une des plus simples sur F2 est de compter jusqu’à 2k − 1 en base 2.Par exemple, pour écrire n en base 2, on pourrait utiliser la fonction ���� ��(n,base,b) quiconvertit un nombre n,

L:�[];L:�������(���� ��(n,��� ,2),L);

mais ça nous le donne en sens inverse... On peut aussi faire des divisions euclidiennes suc-cessives.Le problème, c’est que ces vecteurs ont un nombre de composantes variable. Une petite as-tuce fixe le nombre de composantes à k :

Fdeux(n,k):�{����� L;L:�[];���� (n>�2){L:�������([�� �(n,2)],L);n:�����(n,2);}L:�������([n],L);�� (��" (L)<k) L:�[0�(k-��" (L)),��(L)];� ����(L);}

�� ������� �� ;������

Nous voudrions avoir une méthode nous permettant de décider quel est le message correctle plus « proche » du message erroné reçu. Une nouvelles ruse due aux particularités de F2 vanous y aider.Tout d’abord, n’oubliez pas que dans F2, x + y = x − y ! Ainsi, le nombre de « bits » qui diffé-rent entre deux vecteurs de F2 est aussi égal à la somme des coordonnées du vecteur sommerésultant.Si on appelle poids la fonction

ω :Fn

2 → N

m �→ ω(m)=∑ni=1 mi

alors vous vérifierez que l’application

δ :Fn

2 ×Fn2 → N

(m,m′) �→ ω(m +m′) =ω(m −m′)

248

Page 263: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3��� '2����� :��

est une distance, appelée distance de Hamming, qui nous permettra de mesurer l’écart entredeux messages, c’est-à-dire le nombre de bits les différenciant.Il suffit d’utiliser ��� pour effectuer la somme des composantes d’un vecteur :

���([1,2,3,4])

�� �� � ����� � �� ��� �� �� �� ������

Rappelons que nous rentrons une matrice de codage M et un message v et que nous voulonssavoir si v correspond à un message de M. Dans le cas contraire, nous voudrions le remplacerpar le message le plus proche.

Un message est en fait l’image de Fk2 par uM, l’endomorphisme canoniquement associé à M.

Ima:�(�));���(j:�0;j<2^k;j++){

Ima:�Ima,M*Fdeux(j,k)%2;};

Ima:�[Ima];

construit la liste des images des vecteurs de Fk2 par uM. Techniquement, on rajoute à la sé-

quence Ima au départ vide les vecteurs M*Fdeux(j,p). On n’oublie pas le %2 qui symbolise lecalcul modulaire dans F2. L’instruction Ima:=[Ima]; sert alors à transformer la séquence enliste de liste, c’est-à-dire en matrice.Cependant, les composantes des vecteurs sont mis à la queue-leu-leu, sans qu’on puisse dis-tinguer les vecteurs. Il faut donc avoir les idées claires sur les dimensions de nos espaces

p:������(M);n:������(M);

Nous avons donc avec Ima une matrice où chaque ligne représente les 2k vecteurs de l’imagede uM.Dressons à présent la liste des 2n−2k vecteurs de Fn

2 qui n’appartiennent pas à I m(uM). Nousutiliserons la fonction C8.3(member)vecteur,matrice qui renvoie 0 si le vecteur n’appartientpas à la matrice ou bien le numéro de la ligne qui lui correspond sinon.

XCAS commence à compter à 0 ! Par souci de compatibilité, le numéro renvoyé par� �� � est donc le numéro de ligne + 1

���(k:�0;k<2^n;k++){��(� �� �(Fdeux(k,n)%2,Ima)��0)

L:�L,Fdeux(k,n);};

L:�[L];

249

Page 264: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ) � ����� ���������� �,�������

Nous obtenons ainsi une matrice de 2n −2k vecteurs qui ne sont pas des messages : appelonsla famille formée par ces vecteurs (ui ).La ruse est de se dire : « je reçois un message v . C’est un des 2n vecteurs de Fn

2 : si c’est un des

2k vecteurs de I m(uM), tout va bien. Sinon, je peux l’écrire sous la forme v = m + e avec mun vecteur de l’image (un vrai vecteur) et e l’erreur commise. Plus e sera de poids petit, plusm sera près du message transmis et donc je pourrais penser que probablement le véritablemessage transmis était m. »Nous allons donc ordonner les ui par ordre de poids croissant. Ensuite nous formerons lesvecteurs ui +m j : si ce vecteur a déjà été formé auparavant, on l’élimine, sinon, on le garde.On parcourt la liste des lignes, et on ajoute à chaque ligne son poids :

��� (j:�0;j<��" (L);j++){L[j]�<[���(L[j]),��(L[j])];}

On a remplacé -� par �A pour plus de rapidite (=< fait la modification en place dans L, alorsque := crée une copie de la liste a chaque fois).Il ne nous reste plus qu’à trier ces vecteurs selon l’ordre croissant des poids. La fonction ����

qui joue ce rôle. Il faut juste lui expliquer comment classer : ici, c’est l’odre croissant selon lapremière ligne.

����(L,(x,y)->x[0]<y[0]);

On enlève alors la colonne des poids qui ne sert plus à rien : la première, donc la numéro 0...

U:� �����(U,0��0)

On rajoute une ligne nulle qu’on remplacera par les vecteurs de I m(uM)

U:����� ��([[0�n]],U)%2

On forme ensuite la première ligne de notre matrice finale en ajoutant la première ligne de Uà celle de Ima

N:�[(U[0]+Im[g])�(g�0��2^k-1)]:;

Ensuite, on rajoute les ui qui n’ont pas déjà été rajouté avant. On utilise pour cela la com-mande ����������(a,b,liste de a*b matrices) qui forme une matrice de a blocs delongeur b.

h:�1;���� (h<(2^n-2^k)){

��(� �� �(U[h],N)��0)N:�����������(2,1,[N,[(U[h]+Im[g])�(g�0��2^k-1) ]]):; �� h:�h+1;}

Il ne nous reste donc plus qu’à conclure par

��(� �� �(v%2,N[0��2^k]) �0)�����(v+"est bien un mot de code"); �� {q:�(((� �� �(v,N))-1) �� 2^k)%0;

250

Page 265: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3��� '2����� :��

On retrouve un vecteur ui toutes les 2k lignes. Le problème, c’est que le résultat donné parmode est l’entier le plus proche de 2k , donc peut être négatif. Le « passage » de l’entier modulo2k à l’entier tout cours via le %0 comporte donc des risques. On y remédie grâce à

��(q>�0) �����(v+" doit être corrigé en "+Ima[q]%0); �� {q:�q+2^k; �����(v+" doit être corrigé en "+Ima[q]%0);} };

�� ��� �&�� �����

Il reste à vérifier que le choix du message corrigé est justifié. Il s’agit en fait de regarder I m(uM)et plus particulièrement les distances séparant ses différents éléments.S’il existe au plus un élément m de I m(uM), tel que pour tout message erroné m′, on aitω(m −m′) � t , on pourra corriger jusqu’à t erreurs.Cela veut dire que la distance minimum entre deux éléments de I m(uM) doit être au moinségale à 2t +1.Nous en déduisons que t est la partie entière de (PoiMin(M)−1)/2, avec PoiMin la procédurequi donne le poids minimum d’une liste de vecteurs :

PoiMin(M):�{����� L,k;k:������(M);L:�[];���(j:�1;j<2^k;j++){

L:�������(L,���(M*Fdeux(j,k)));}

� ����(���(L));}

Un code t-correcteur est dit parfait si la réunion des boules fermées de centre chaque élémentde I m(uM) et de rayon t donne Fn

2 .Il s’agit en fait pour nous de vérifier que la matrices formées des vecteurs ui a un poids mini-mum inférieur à t .Pour changer, au lieu de construire une séquence puis une matrice en y rajoutant des cro-chets, on est parti d’une liste tout de suite (avec W:=[]), on concatène une autre liste avec������ et on coupe cette liste en tronçons de longueur n pour en faire une matrice grâce à����'���(Liste,n) : c’est plus lourd, mais ça permet de voir un peu de syntaxe...Nous pouvons donc rajouter à notre procédure les lignes suivantes :

X:�N%0;W:�[];���(r:�0;r<�����(X);r:�r+2^k){W:�������(W,X[r]);};W:�����'���(W,n);�����("Le code est "+�����((PoiMin(M)-1)/2)+"-correcteur");��(PoiMin(W)<������((PoiMin(M)-1)/2))�����("Le code est parfait"); �� {�����("Le code n’est ��� parfait")};

251

Page 266: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ) � ����� ���������� �,�������

La procédure sous sa forme finale est donc

decod1(M,v):�{����� Ima,L,P,U,N,W,X,l,j,k,K,g,h,x,y,q,r,p,n,m,current,nbsolutions,pos;k:������(M);n:������(M);��(����(v) �n)�����("Le message n’est ��� de la bonne taille��."); �� {Ima:�(�));L:�(�));P:�[];U:�[];���(j:�0;j<2^k;j++){

Ima:�Ima,M*Fdeux(j,k)%2;};

Ima:�[Ima];���(K:�0;K<2^n;K++){

��(� �� �(Fdeux(K,n)%2,Ima)��0)L:�L,Fdeux(K,n);

};L:�[L];

��� (j:�0;j<��" (L);j++){L[j]�<[���(L[j]),��(L[j])];}

����(L,(x,y)->x[0]<y[0]);U:� �����(L,0��0);U:����� ��([[0�n]],U)%2;N:�[(U[0]+Ima[g])�(g�0��2^k-1)]:;h:�1;���� (h<(2^n-2^k)){

��(� �� �(U[h],N)��0)N:�����������(2,1,[N,[(U[h]+Ima[g])�(g�0��2^k-1) ]]):; �� h:�h+1;}:;

X:�N%0;W:�[];���(r:�0;r<�����(X);r:�r+2^k){W:�������(W,X[r]);};W:�����'���(W,n);�����("Le code est "+�����((PoiMin(M)-1)/2)+"-correcteur");��(PoiMin(W)<������((PoiMin(M)-1)/2))�����("Le code est parfait"); �� {�����("Le code n’est ��� parfait")};

��(� �� �(v%2,N[0��2^k]) �0)� ����(v+"est bien un mot de code"); �� {q:�(((� �� �(v,N))-1) �� 2^k)%0;

252

Page 267: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3��� ����� � ��%!�� �� ����8�� �22���!�

��(q>�0) � ����(v+" doit être corrigé en "+Ima[q]%0); �� {q:�q+2^k; � ����(v+" doit être corrigé en "+Ima[q]%0);} };}

Maintenant, si l’on demande

decod1(A,[1,1,1,0,0,0,0])

on obtient

Réponse du logiciel

"Le code est 1-correcteur""Le code est parfait""[1,1,1,0,0,0,0] doit être corrigé en [1,1,1,0,0,1,0]"Evaluation time: 0.27

Le problème, c’est que cette procédure induit un nombre assez important de calculs qui larendent inefficace pour des codes de longueur assez grande : par exemple, si on choisit n = 32et p = 6, il faut 16 GB pour mémoriser les 232 vecteurs de 32 bits chacun...Il va donc falloir appeler les mathématiques au secours !

8�� " �� �&������ � % �&�@ � ���������

Un code est dit cyclique si, et seulement si, pour tout mot de code m, tout mot obtenu parpermutation circulaire des coordonnées est encore un mot de code.Il s’avérera très pratique de ne plus représenter un mot par un vecteur de Fn

2 mais plutôt parun polynôme de F2[X] : après tout, pour l’ordinateur, c’est dans chaque cas une liste de nopérandes.Des considérations d’algèbre générale c permettent de dire qu’une permutation circulaire dumessage revient à effectuer une multiplication par X modulo Xn +1 du « polynôme message ».On montre alors que I m(uM)[X] est un idéal de l’anneau principal F2[X]/(Xn +1) de la formeg (X) ·F2[X]/(Xn +1).On montre que g (X) divise Xn +1. On appelle g (X) le polynôme générateur du code. Notonsh(X) le quotient de la division euclidienne de Xn +1 par g (X).On montre également que tout mot m du code est une combinaison linéaire des X j g (X), et

donc que m(X) · h(X) = ∑nj=0 m j X j g (X)h(x) =

(∑nj=0 m j X j

)(Xn + 1) qui est nul dans F2[X]/

(Xn +1). On appelle alors h(X) le polynôme de contrôle du code : il porte bien son nom carson produit avec un « polynôme-message » ne s’annule que si le message est un mot du code.

Nous allons étudier un code cyclique particulier : le code de Hamming qui est 1-correcteur etparfait. Pour ces codes, n est de la forme 2r −1, les mots de code ont pour longueur n− r .Nous allons construire une procédure Hamming(n,g,m) où g est un polynôme générateur ducode, m un message qui sera éventuellement corrigé si ce n’est pas un mot de code.On construit le polynôme h(X), quotient de Xn +1 par g .

h(x):����((x^n+1,g(x))%2);

cVoir BRUGÈRE , Thierry/MOLLARD , Alain, ibid. page 321

253

Page 268: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ) � ����� ���������� �,�������

On transforme ensuite h(X) en la liste des coefficients grâce à la fonction ����'���� et onajoute autant de zéros que nécessaires pour former une liste de longueur n :

L:�����'����(h(x)*x^(n-1- �� (h(x))));

On crée ensuite la matrice de contrôle formée du vecteur L et de ses « permutations ciculaires »successives. On utilise la fonction ����� (L,k) qui permet d’effectuer une permutation desk derniers éléments avec le début de la liste si k est négatif. On aurait pu tout aussi bien formerles produits de h(X) par les X j et utiliser ����'����, c’est l’occasion de voir une commandeutile...

H:�(�));���(j:�0;j<n- �� (h(x));j++){H:�H,����� (L,-j)};H:�[H];

Il ne reste plus qu’à former le produit de la matrice de contrôle avec le message et à tester sic’est un mot de code :

mess:�H*m%2;�� (mess��[0�(n- �� (h(x)))]%2) {�����(m+"est bien un mot de code");}

sinon, le vecteur non nul obtenu est le ke vecteur colonne de la matrice de contrôle ce quiindique que l’erreur est faite sur la ke composanted. Puisqu’on travaille dans Fn

2 , il suffit derajouter au message reçu le ke vecteur de la base canonique de Fn

2 :

�� {B:�[1,0�(n-1)];r:�� �� �(mess,�������� (H));corr:�m%2+����� (B,-r+1)%2;corr:�corr%0;�����(m+" doit être corrigé en "+corr);

Le programme complet est donc :

Hamming(n,g,m):�{����� h,g,x,L,H,j,mess,B,r,corr;��(����(m) �n)�����("Le message n’est ��� de la bonne taille��."); �� {h(x):����((x^n+1,g(x))%2);L:�����'����(h(x)*x^(n-1- �� (h(x))));H:�(�));���(j:�0;j<n- �� (h(x));j++){H:�H,����� (L,-j)};H:�[H];mess:�H*m%2;�� (mess��[0�(n- �� (h(x)))]%2) {� ����(m+"est bien un mot de code");

dLe code de Hamming est 1-correcteur

254

Page 269: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3�&� ����� �� *���� - ��2��� �� ����8��� �22���!��

} �� {B:�[1,0�(n-1)];r:�� �� �(mess,�������� (H));corr:�m%2+����� (B,-r+1)%2;corr:�corr%0;� ����(m+" doit être corrigé en "+corr);}}}

et :

Hamming(31,1+x^3+x^5,[1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,1]);

renvoie :Réponse du logiciel

"[1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,1] doit êtrecorrigé en [1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0]"

quasi instantanément, ce qui est donc bien plus efficace que notre premier algorithme.

8�� " �% �� ��� � 3 "���� � �� % �&�@ � ������3���

Pour plus de détails sur les développements mathématiques, vous pourrez par exemple étu-diere. Nous ne ferons ici qu’évoquer certains résultats.

Notre objectif est de créer une procédure donnant un polynôme générateur d’un code cy-clique en fixant sa longueur n et sa capacité de correction t .Nous n’étudierons que des codes dont la longueur s’exprime sous la forme n = 2m −1.Le résultat fondamental est que le corps de Galois de caractéristique 2 et de cardinal 2m (qu’onnotera GF(2,m)) est isomorphe à F2/P(X) avec P(X) un polynôme irréductible sur GF(2,m), dedegré m).Une étude poussée sur les corps finis permet de conclure qu’un polynôme générateur sera dela forme PPCM(μ1(X),μ3(X), · · · ,μ2t−1(X)) avec μk (X) le polynôme minimal de αk , α étant unélément primitif de GF(2,m).On va donc commencer par construire les classes cyclotomiques modulo 2m −1 des αk .

cyclo(k,m):�{����� l,L,n;n:�2^m-1;L:�k%n;l:�2*k%n;���� (l �k%n){

eBADRIKIAN , Josèphe, ibid.

255

Page 270: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� ) � ����� ���������� �,�������

L:�L,l;l:�2*l%n};L:�[L]}

Par exemple,

cyclo(3,5)

renvoie :Réponse du logiciel

[3 % 31,6 % 31,12 % 31,-7 % 31,-14 % 31]

On construit ensuite le polynôme minimal de αk qui est le polynôme normalisé de racines leséléments de la classe cyclotomique de αk :

poly_min(cycle,alpha):�{����� r,k;r:�1;���(k:�0;k<����(cycle);k++){r:�r*(x-alpha^(cycle[k]%0))};�������� �(r)}

On ajoute simplifier pour plus de lisibilité. Cependant, pour pouvoir utiliser cette procé-dure, il faut connaître α.Pour cela, on va construire GF(2,m) grâce à 16(caractéristique,longueur,options).Par exemple, avec :

K:�16(2,5,[x,’K’]);

on obtient :Réponse du logiciel

GF(2,x^5+x^3+1,[x,K],undef)

qui indique que le polynôme irréductible et primitif utilisé est X5 +X3 +1.On va utiliser comme élément primitif générateur de GF(2,5) x, qui est désigné par K(x) :

poly_min(cyclo(3,5),K(x))

renvoie :Réponse du logiciel

x^5+x^3+x^2+x+K(1)

Donc, on peut maintenant créer une procédure gen(t,m) :

256

Page 271: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

3�&� ����� �� *���� - ��2��� �� ����8��� �22���!��

gen(t,m):�{����� g,alpha,j,p;K:�16(2,m,[x,’K’]);alpha:�K(x);p:�������(poly_min(cyclo(2*j-1,m),alpha),j�1��t);��������(p%2);}

et :

gen(3,5)

renvoie :Réponse du logiciel

x^15+x^14+x^13+x^12+x^10+x^8+x^7+x^6+x^5+x^4+K(1) % 2

On peut alors créer une matrice de contrôle assez rapidement. Le problème sera de corrigerl’erreur...Pour des codes 1-correcteurs, notre procédure Hamming suffit. On construit un polynôme gé-nérateur d’un code de Hamming grâce à gen(1,longueur). Pour obtenir des capacités decorrection plus grande, mieux vaut se tourner vers les codes de Reed-Solomon que nous nedévelopperons pas ici. Une procédure concernant ces codes existe dans les exemples fournispar votre distribution XCAS dans Exemples->Poly->reed_sol.xws.

257

Page 272: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 273: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �Surfaces de projectionimposée

Logiciel(s) abordé(s) : XCAS

Notions informatiques : Nous traiterons un problème qui sembleraitplutôt adapté à un langage fonctionnel comme Caml mais qui peutcependant être également traité par XCAS.Nous verrons aussi comment tracer des surfaces définies implicite-ment.

Problématique : On va chercher à donner une « équation » d’un po-lygone régulier de R2 défini normalement à l’aide d’un système d’in-égalités. Pour cela on définira une variété de R3 dont la projection surR2 est le polygone. Ce problème est inspiré d’un sujet de l’épreuve demodélisation de l’agrégation externe, session 2006.

�9�� ��� ���� �

Commençons par descendre d’une dimension pour poser le problème. La demi-droite de R

définie par l’inégalité x � 0 peut être également caractérisée comme étant la projection sur Rde la parabole de R2 d’équation x = t 2.Le problème que nous traiterons ici concernera les polygones réguliers de R2 que nous pou-vons facilement définir ainsi, avec les bi des polynômes :

S = {(x, y, z) ∈R3,b1(x, y, z) � 0, . . . ,bn (x, y, z) � 0

}Il s’agit donc d’ensembles semi-algébriques à comparer aux ensembles algébriques qui sontdes ensembles des zéros d’un système d’équations polynomiales.Il est souvent peu pratique de travailler avec des ensembles semi-algébriques, au moins in-formatiquement parlant, puisqu’il faut tenir compte de n conditions.Nous admettrons alors le résultat suivant :

������� �2@�;� �"���� ! ����8�� �����! ����� � ��� %!�

(x, y, z) ∈S ⇐:∃t ∈R,P(x, y, z, t) = 0

Page 274: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �2 � 0��:���� ��� �� ���8���� �� ������

Notre problème sera donc de trouver de tels polynômes, de tracer la surface d’équation im-plicite P(x, y, z, t) = 0 et de la projeter correctement pour « voir » le polygone.

�9�� " ����� � �� % �&�@ � ���%�

�� ��(������ ���!�����"��

Soit n un entier naturel non nula et k ∈ �0 ; n�. On fabrique une suite de polynômes de lamanière suivante :

(�A��� �2@�� ���� P1(x1,u) = u− x11 X = (x1, . . . , xn ) ��

Pk+1(x1, . . . , xk+1,u) = Pk

(a1(X), . . . , ak (X),

(u− (x1 +·· ·+ xk+1)

)2)

�� ak (X) = xk+1(x1 +·· ·+ xk )

Pour se familiariser avec ces polynômes, on peut construire les premiers à la main.

P2(x, y,u) = P1

(a1(x, y),

(u− (x + y)

)2). Or a1(x, y) = y(x), donc

P2(x, y,u) = P1

(x y,

(u− (x + y)

)2)= (

u− (x + y))2 − x y

�� ��� ������ ���� ����"��

La définition des polynômes ak ne pose pas trop de problème :

a(k,x):�x[k+1]*���(x[j],j,1,k)

Le problème vient surtout de cette définition de polynômes qui dépendent d’un nombre va-riable d’indéterminées et dont la définition est triplement récurrente puisqu’elle dépend dupolynôme d’ordre inférieur, mais aussi d’autres polynômes, les ak et de la somme des indé-terminées qui dépend aussi de k.Un mathématicien un peu informaticien voit ici des « fonctions de fonctions » et pencheraitvers un langage fonctionnel tel que Caml. C’est une manière naturelle de voir les choses, maispeu efficace avec un langage impératif comme celui utilisé par XCAS.Il faut donc apprendre à réfléchir autrement et voir un programme impératif comme un casierà tiroirs dont on peut à volonté modifier le contenu en gardant une même structure. Et pourchanger le contenu des tiroirs, on utilise �����(Expression,ancien,nouveau)b .Par exemple, créons une expression :

L:�a+b-c*d

et remplaçons b par 2 :

aDans le cas qui nous intéresse, n = 3.b����� a d’autres propriétés comme par exemple les changements de variables dans les intégrales.

260

Page 275: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4��� �����! ��� �! ����8�� ���2

L:������(L,b,2)

qui pourrait se lire :« dans L, on remplace b par 2 ». On peut également faire des substitutionsplus conséquentes :

L:������(L,[a,c,d],[1,3,4])

C’est exactement ce que nous allons faire pour nos polynômes. Le secret est de ne pas tra-vailler sur des fonctions mais sur des expressions pour palier au problème du nombre va-riable... de variables.Voici le cœur du programme :

nouveauzarguments:�[� �(a(j,x),j�1��k),(u-���(x[j],j,1,k+1))^2]indeterminees:�[� �(x[j],j�1��k),u];polytemp:������(polytemp,indeterminees,nouveauzarguments);

Au départ, polytemp vaut Pk (x1, . . . , xk ,u).On remplace alors x1, . . . , xk ,u (noté indeterminees) par a1 (X), . . . , ak (X),

(u−(x1+·· ·+xk+1)

)2

(noté nouveauzarguments) dans polytemp, et on recommence...Voici le programme complet :

ListePoly(n):�{����� k,polytemp,nouveauzarguments,indeterminees,liste;polytemp:�u-x[1];liste:�polytemp;��� (k:�1;k<n;k++){

nouveauzarguments:�[� �(a(j,x),j�1��k),(u-���(x[j],j,1,k+1))^2]indeterminees:�[� �(x[j],j�1��k),u];polytemp:������(polytemp,indeterminees,nouveauzarguments);liste:�liste,polytemp;

}� ���� liste;}:;

Le problème, c’est que nous n’avons pas un polynôme, mais une liste de polynômes. Ainsi :

ListePoly(2)

renvoie :

u− (x[1]) , (u− (x[1])− (x[2]))2− (x[2] ·x[1])

Réponse du logiciel

Nous allons utiliser �������(Expression,Variable(s)) qui transforme une expression enfonction de la ou des variable(s).

P2:��������(�����(ListePoly(2)[1],[x[1],x[2]],[x1,x2]),x1,x2,u)

261

Page 276: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �2 � 0��:���� ��� �� ���8���� �� ������

(x1,x2,u)->(u-x1-x2)^2-x2*x1

Réponse du logiciel

et donc :

P2(x,y,t^2)

renvoie :

((t)2−x−y

)2− (y ·x)

Réponse du logiciel

�9�� 0�B��� � � �3���������� ���� % �&� �� � ���+���������

Notre problème est de définir avec un minimum d’inégalités un polygone convexe régulier,ou plus précisément « l’intérieur » du polygone.Une chose est d’abord sûre : les sommets du polygone sont inscriptibles dans un cerclec, doncle polygone est compris dans un disque. Ici, cela nous donne déjà une inégalité :

1− x2 − y2 � 0

En fait, nous allons tenter de n’utiliser qu’une deuxième inégalité.

�� �� ���*���� � �� ���� � ��� �� �?��

Observons un cas particulier.On peut considérer les côtés deux à deux. Par exemple appelons f1 et f2 les fonctions affinesdont les représentations graphiques sont respectivement d1 et d ′

1. On obtient facilement qu’ilexiste deux réels a et b tels que f1(x) = ax +b et f ′

1(x) =−ax −b.Avec un peu d’astuce, on obtient que le polygone peut être caractérisé par le système :

⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩(ax +b)2 − y2 � 0

(ax −b)2 − y2 � 0

c2 − y2 � 0

cNous considèrerons ici qu’il s’agit du cercle de centre O et de rayon 1.

262

Page 277: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4�&� (2<���� ����-��2���%!� �)! ������� ���"� �2�!����

e2iπ×0/n

e2iπ×1/ne2iπ×2/n

e2iπ×3/n

e2iπ×4/n e2iπ×5/n

d1

d ′1

d2

d ′2

d3

d ′3

b

−b

c

−c

���� ����� Hexagone

Et avec énormément d’astuce, tout ceci peut se réduire au système :

⎧⎪⎨⎪⎩((ax +b)2 − y2

)((ax −b)2 − y2

)(c2 − y2

)� 0

1− x2 − y2 � 0

�� �� ���*���� � �� ���� � ����� �� �?��

Observons un autre cas particulier. Avec toujours autant d’astuce, on peut caractériser le po-lygone par le système :

⎧⎪⎨⎪⎩((a1x +b1)2 − y2

)((a2x +b2)2 − y2

)(x −b3

)� 0

1− x2 − y2 � 0

263

Page 278: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �2 � 0��:���� ��� �� ���8���� �� ������

e2iπ×0/n

e2iπ×1/n

e2iπ×2/n

e2iπ×3/n

e2iπ×4/n

d1

d ′1

d2

d ′2

d3

b1

−b1

b2

−b2

b3

���� ����� Pentagone

�� � �������� ���� ����"��

Nous utiliserons la commande ���� (point1,point2)d qui détermine la droite passantpar les points 1 et 2.Nous utiliserons également �������(courbe,[x,y]) qui donne une équation de la courbecourbe.Enfin, la commande �����(egalite)[0] renvoie la partie droite d’une égalité.La lecture du programme suivant devient alors limpide :

b( g ) :� {����� B ;B :����� ;�( k :�1; k<�g / 2; k++) {B[ k−1] :�(�� �(��������(�����(���(�* ( k−1) *2*��/g ) ,���(�*k *2*��/g ) ) , [ x , y ] ) [ 0 ] ) )^2−y^2}�( g ��� 2��0) {����(������(B[ j ] , j�0��g/2−1) ,1−x^2−y^2) }����{����(������(B[ j ] , j�0�����( g /2)−1) * ( x−���(2*��*���( g /2) /g ) ) ,1−x^2−y^2)}} : ;

Par exemple :

b(4)

donne :

dIl y a bien d’autres syntaxes possibles.

264

Page 279: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4��� �����! ��� �� �)������� ��2���%!� 7 ����� �� � �2<���� ����-��2���%!�

((−x+1)2− ((y)2

)) · ((x+1)2− (

(y)2)),1− (

(x)2)− (

(y)2)

Réponse du logiciel

�9�� " ����� � �� ����� ��� ���������� ? %���� ���� ��B��� � � �3����������

Vous pourrez prouver pendant vos temps libres qu’il existe un polynôme P tel que

v ∈S = {X ∈R2,b(X) � 0,c(X) � 0

}⇐:∃z ∈R,P(b(v),c(v), z2) = 0

et que P2 décrit plus haut convient.

Pour visualiser, nous utiliserons la commande ������������(P(x,y),x,y).

�� � �

������������( ����(p2(b(4),z^2)),x�-1��1,y�-1��1,z�0��5,�� ��0.1,��� ��0.1,"�� ��0.1)

���� ���� Variété dont la projection est un carré

Pour obtenir la vue de dessus, on clique sur Menu−→3-d−→vue de dessus z=cst :

265

Page 280: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �2 � 0��:���� ��� �� ���8���� �� ������

���� ����� Carré : projection sur (xOy)

�� ;�3�����

������������( ����(p2(b(6),z^2)),x�-1��1,y�-1��1,z�0��5,�� ��0.1,��� ��0.1,"�� ��0.1)

���� ���� Variété dont la projection est un hexagone

266

Page 281: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�4�#� �����������

Pour obtenir la vue de dessus, on clique sur Menu−→3-d−→vue de dessus z=cst :

���� ����� Hexagone : projection sur (xOy)

�9�, �� � ��� ��

Le texte complet du sujet d’agrégation se trouve à l’adresse

http://agreg.dnsalias.org/Textes/590.pdf

Vous comprendrez alors pourquoi nous avons construit une procédure pour trouver P2 alorsqu’il aurait été plus simple de le déterminer « à la main » : nous n’avons en effet exploré quele cas particulier des polygones convexes réguliers.

267

Page 282: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 283: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�����

Taches des animaux

Logiciel(s) abordé(s) : Scilab

Notions informatiques : Modélisation rudimentaire d’équations auxdérivées partielles par des différences finies

Problématique : Le logiciel Scilab est adapté au calcul approché desystèmes dynamiques faisant intervenir des dérivées partielles.

���� ��� ���� �

Le problème étudié ici est dû à une conjecture développée par Alan Turing concernant laformation des taches sur le pelage des animaux. Le véritable processus biologique n’est pasconnu : voir le livre de Murraya.

Le modèle mathématique est celui de deux hypothétiques substances chimiques A et B quiinteragissent et se diffusent dans la peau de l’embryon d’un animal. À un certain stade dedéveloppement de l’embryon, le processus est figé et la concentration de l’un des deux pro-duits en un endroit donné détermine la couleur de la peau ou des poils quand elle dépasse uncertain seuil.

Les concentrations notées A et B des deux produits dépendent du temps et de l’espace (bidi-mensionnel). L’évolution est conditionnée par le système

⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩∂A

∂t= F(A,B) + DAΔA

∂B

∂t= G(A,B) + DBΔB

Les fonctions F et G décrivent la cinétique chimique. Les laplaciens représentent le phéno-mène de diffusion.

aMURRAY , J. D. Mathematical biology . Berlin: Springer, 1993.

Page 284: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �� � ������ ��� �����1

Le laplacien est la divergence du gradient : c’est un opérateur différentiel du secondordre. La divergence d’un champ de vecteurs est la trace de l’application linéairetangente à ce champ.

Il est important que les deux coefficients de diffusion DA et DB soient différents et non nuls.Le calcul approché sera fait sous Scilab en représentant l’espace par un maillage rectangu-laire. Les concentrations A et B sont représentées par des matrices. Le laplacien est réalisésous forme discrète par un calcul matriciel.Trois formes de domaines sont présentées :

➥ un rectangle ;

➥ un cylindre, c’est-à-dire un rectangle dont deux côtés opposés sont recollés ;

➥ un tore, c’est-à-dire un rectangle ; dont les côtés opposés sont recollés deux-à-deux : uncylindre fermé.

���� #C�'��� �� � ����

Les données sont stockées dans des fichiers. Il faut d’abord récupérer les matrices qui corres-pondent aux dix étapes.

A0�� �(’./A0’,maille,maille)/1e2 ;A1�� �(’./A1’,maille,maille)/1e2 ;A2�� �(’./A2’,maille,maille)/1e2 ;A3�� �(’./A3’,maille,maille)/1e2 ;A4�� �(’./A4’,maille,maille)/1e2 ;A5�� �(’./A5’,maille,maille)/1e2 ;A6�� �(’./A6’,maille,maille)/1e2 ;A7�� �(’./A7’,maille,maille)/1e2 ;A8�� �(’./A8’,maille,maille)/1e2 ;A9�� �(’./A9’,maille,maille)/1e2 ;

B0�� �(’./B0’,maille,maille)/1e2 ;B1�� �(’./B1’,maille,maille)/1e2 ;B2�� �(’./B2’,maille,maille)/1e2 ;B3�� �(’./B3’,maille,maille)/1e2 ;B4�� �(’./B4’,maille,maille)/1e2 ;B5�� �(’./B5’,maille,maille)/1e2 ;B6�� �(’./B6’,maille,maille)/1e2 ;B7�� �(’./B7’,maille,maille)/1e2 ;B8�� �(’./B8’,maille,maille)/1e2 ;B9�� �(’./B9’,maille,maille)/1e2 ;

270

Page 285: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �= ��� ��� ��2��

Les matrices Ai représentent les concentrations en produit A à la date i . On définit les coor-données des noeuds de la grille.

xx�1:Syy�xx

La palette des couleurs est réduite pour des vidéoprojections en toutes conditions, et pourmettre en valeur l’effet de seuil.

� �("colormap",������������(32))r�[0;1];g�[0;1];b�[1;0];h�[r g b];

On affiche la première donnée, concentration en produit A au début.

� �("colormap",h)�����%(xx,yy,A0)

On affiche la deuxième donnée après une demi-seconde.

��� �(’sleep 0.5’)�����%(xx,yy,A1)

Attention ! Certains interpréteurs de commandes (Shell) des systèmes Linux sontmalheureusement francisés pour les données numériques, ce qui oblige soit àchanger les durées 0.5 en 0,5, soit à changer une variable d’environnement lin-guistique. . .

On aurait pu construire une boucle itérative pour toutes ces opérations répétitives, mais pourun film de dix images cela n’en vaut pas la peine.

��� �(’sleep 0.5’)�����%(xx,yy,A2)

��� �(’sleep 0.5’)�����%(xx,yy,A3)

��� �(’sleep 0.5’)�����%(xx,yy,A4)

��� �(’sleep 0.5’)�����%(xx,yy,A5)

271

Page 286: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �� � ������ ��� �����1

��� �(’sleep 0.5’)�����%(xx,yy,A6)

��� �(’sleep 0.5’)�����%(xx,yy,A7)

��� �(’sleep 0.5’)�����%(xx,yy,A8)

��� �(’sleep 0.5’)�����%(xx,yy,A9)

On ouvre une nouvelle fenêtre pour y placer la représentation colorée de la concentration enproduit B. La matrice h des couleurs est déja fixée.

����()

/ / c o u l e u r s

� �("colormap",������������(32))

Il ne reste plus qu’à y placer le film pour B.

� �("colormap",h)�����%(xx,yy,B0)

��� �(’sleep 0.5’)�����%(xx,yy,B1)

��� �(’sleep 0.5’)�����%(xx,yy,B2)

��� �(’sleep 0.5’)�����%(xx,yy,B3)

��� �(’sleep 0.5’)�����%(xx,yy,B4)

��� �(’sleep 0.5’)�����%(xx,yy,B5)

��� �(’sleep 0.5’)�����%(xx,yy,B6)

��� �(’sleep 0.5’)�����%(xx,yy,B7)

��� �(’sleep 0.5’)

272

Page 287: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� �����! ��� �!� ! �� ����

�����%(xx,yy,B8)

��� �(’sleep 0.5’)�����%(xx,yy,B9)

���� " ����� � �� �� ��������

Le laplacien discret appliqué à une matrice carrée A est construit de manière traditionnelle.

�������� D�lap(A)s���" (A)tt�s(1)t�tt-1TT�s(2)T�TT-1j� � (t,t)z�" ���(t,1)kk�[z’,0;j,z]m�2* � (tt,tt)-kk-kk’J� � (T,T)Z�" ���(T,1)KK�[Z’,0;J,Z]M�2* � (TT,TT)-KK-KK’D�m*A+A*M ���������

Il faut définir les données qui interviennent dans l’équation d’évolution.

DA�1DB�2k1�.1k2�.02k3�.03k4�.04

La fonction qui contient le système dynamique s’appelle champ. L’équation d’évolution estconsidérée comme une équation différentielle ordinaire en le temps t .La partie spatiale de l’évolution est contenue dans la fonction champ et la dimension des ma-trices.

�������� ypoint������(t,y)T���" (y,1)S���" (y,2)id� � (S,S) ; un��� �(S,S) ; Z�" ���(S,S)D�[ DA*id , Z ; Z , DB*id ]F�[ -k2*id , Z ; Z , -k4*id ]ypoint����( [ k1*un ; k3*un ]+F*y ) + D*lap(y) ���������

273

Page 288: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �� � ������ ��� �����1

Les conditions initiales sont d’abord initialisées par une répartition spatiale aléatoire.

t�0:.01:.13 ;t0�0 ;maille�10y0�0.00001*���(2*maille,maille) ;

La première photographie de la situation est calculée. Les dimensions S et T sont définies parcommodité.

y�� (y0,t0,t,�����) ;T���" (y,2)S���" (y,1)/2

Les données initiales sont enregistrées dans des fichiers.

A0�y0(1:S,:)B0�y0(S+1:2*S,:)���� (’./A0’,A0)���� (’./B0’,B0)

Les données de la première étape sont enregistrées à leur tour.

Y1�y(:,T-S+1:T)A1�Y1(1:S,:)B1�Y1(S+1:2*S,:)���� (’./A1’,A1)���� (’./B1’,B1)

Les autres étapes sont enregistrées. La facilité d’utilisation de l’éditeur de texte Emacs nous adissuadé de construire une boucle. . .

y2�� (Y1,t0,t,�����) ;Y2�y2(:,T-S+1:T)A2�Y2(1:S,:)B2�Y2(S+1:2*S,:)���� (’./A2’,A2)���� (’./B2’,B2)

y3�� (Y2,t0,t,�����) ;Y3�y3(:,T-S+1:T)A3�Y3(1:S,:)B3�Y3(S+1:2*S,:)���� (’./A3’,A3)���� (’./B3’,B3)

y4�� (Y3,t0,t,�����) ;Y4�y4(:,T-S+1:T)A4�Y4(1:S,:)B4�Y4(S+1:2*S,:)���� (’./A4’,A4)

274

Page 289: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���&� �����! ��� �!� ! �� ����

���� (’./B4’,B4)

y5�� (Y4,t0,t,�����) ;Y5�y5(:,T-S+1:T)A5�Y5(1:S,:)B5�Y5(S+1:2*S,:)���� (’./A5’,A5)���� (’./B5’,B5)

y6�� (Y5,t0,t,�����) ;Y6�y6(:,T-S+1:T)A6�Y6(1:S,:)B6�Y6(S+1:2*S,:)���� (’./A6’,A6)���� (’./B6’,B6)

y7�� (Y6,t0,t,�����) ;Y7�y7(:,T-S+1:T)A7�Y7(1:S,:)B7�Y7(S+1:2*S,:)���� (’./A7’,A7)���� (’./B7’,B7)

y8�� (Y7,t0,t,�����) ;Y8�y8(:,T-S+1:T)A8�Y8(1:S,:)B8�Y8(S+1:2*S,:)���� (’./A8’,A8)���� (’./B8’,B8)

y9�� (Y8,t0,t,�����) ;Y9�y9(:,T-S+1:T)A9�Y9(1:S,:)B9�Y9(S+1:2*S,:)���� (’./A9’,A9)���� (’./B9’,B9)

Les fichiers sont prêts pour l’affichage (voir section 11.2). Si des fichiers Ai,Bi sont déja enre-gistrés, il est bon de les effacer par la commande :

��� �(’rm A[0-9] B[0-9]’)

Le programme de construction peut alors être exécuté.

275

Page 290: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �� � ������ ��� �����1

���� ����� La concentration en produit B à la fin del’animation sur le rectangle

���� " ����� � �� �� ��

Le recollement des arêtes du rectangle affecte seulement la définition du laplacien.

�������� D�lap(A)s���" (A)tt�s(1)t�tt-1TT�s(2)T�TT-1j� � (t,t)z�" ���(t,1)k�[z’,1;j,z]l�2* � (tt,tt)-k-k’J� � (T,T)Z�" ���(T,1)K�[Z’,1;J,Z]L�2* � (TT,TT)-K-K’D�l*A+A*L ���������

Le reste du programme est le même. L’affichage de la concentration finale B donne des valeursmoins élevées.

276

Page 291: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���#� �����! ��� �!� ! ������

���� ����� La concentration en produit B à la fin del’animation sur le tore

���, " ����� � �� �� �&������

La définition du laplacien sur un cylindre est intermédiaire entre le cas du rectangle et celuidu tore.

�������� D�lap(A)s���" (A)tt�s(1)t�tt-1TT�s(2)T�TT-1j� � (t,t)z�" ���(t,1)k�[z’,1;j,z]l�2* � (tt,tt)-k-k’J� � (T,T)Z�" ���(T,1)KK�[Z’,0;J,Z]M�2* � (TT,TT)-KK-KK’D�l*A+A*M ���������

Les données sont modifiées pour rapprocher les deux coefficients de diffusion.

DA�1DB�1.00001k1�.0002

277

Page 292: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����� �� � ������ ��� �����1

k2�.0002k3�0.0002k4�.0002

Les intervalles de temps sont agrandis, le maillage est plus fin.

t�0:.01:.27 ;t0�0 ;maille�20 ;

Le reste du programme est similaire aux autres cas. L’affichage de la concentration finale Bmontre une figure nettement différente.

���� ����� La concentration en produit B à la fin del’animation sur le cylindre

278

Page 293: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Quatrième partie

ANNEXES

Page 294: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 295: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������

Tableaux comparatifs

�D �� � ���� �

Logiciel Licence Site internet

Bc GPL http://www.gnu.org/software/bc/manual/bc.html

Maxima GPL http://maxima.sourceforge.net

MuPAD commerciale http://www.mupad.de

Octave GPL http://www.octave.org

PARI/Gp GPL http://pari.math.u-bordeaux.fr/

Scilab Scilab http://www.scilab.fr

Yacas GPL http://yacas.sourceforge.net

XCAS GPL http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html

GnuPlot GPL http://www.gnuplot.info/

������ � Sites de téléchargement

�� ��� �� �

Logiciel Fichier de configuration

Maxima /.wxMaxima

PARI/Gp /.gprc

Yacas /yacas/yacasinit.ys

XCAS /.xcasrc

������ Où se trouve le fichier de configuration ?

Page 296: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����1�� �������1 �������:�

Logiciel Ensemble Liste Matrice

Maxima [1, 2] [1, 2] matrix([1,2], [3,4])

MuPAD {1, 2} [1, 2] matrix([[1, 2], [3, 4]])

Octave [1 2] [1 2;3 4]

PARI/Gp [1,2] [1,2 ; 3,4]

Scilab [1 2] A=[1 2;3 4]

Yacas {1,2} {1,2},{3,4}}

XCAS set[1,2] [1,2] [[1,2],[3,4]]

%{1,2%} matrix(2,2,(j,k)->j+k)

������ � Entrer une liste ou une matrice

Logiciel Équation Élément d’une liste Élément d’une matrice Longueur d’une liste

Maxima x=0 l[2] m[2, 3] length(l)

MuPAD x=0 l[2] m[2, 3] nops(l)

Octave x=0 l(2) l(2,1)

PARI/Gp x=0 l[2] l[1,2]

Scilab x=0 l(2) l(2,1) length(l)

Yacas x==0 l[2][1]

XCAS x=0 l[2] l[2][1] size(l)

������ Manipulation des listes et matrices

Logiciel True False And Or Not Equal Not equal

Bc 0 1 && || ! ==

Maxima true false and or not = #

MuPAD true false and or not = <>

PARI/Gp 0 1 && || ! ==

Scilab %t %f & or not = == <>

Yacas True False MathAnd MathOr MathNot Equals

XCAS 0 1 and && or || ! == !=

������ � Opérateurs booléens

282

Page 297: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��"�� ����!" ������5�

Logiciel Assignement Définition de fonctions

Bc y=3 define f(x,y) {return(x*y);}

Maxima y:3; f(x, y):= x*y;

MuPAD y:= 3; f:= proc(x, y) begin x*y end_proc;

Octave y=3; function f(x,y)

x*y

endfunction

PARI/Gp y=3 f(x,y)=x*y

Scilab y=3; function f(x,y)

x*y

endfunction

Yacas y:=3; Function(“f”,x,y)[x*y;];

XCAS y:=3 f(x,y):={x*y }

������ � Comment rentrer une fonction ?

Logiciel If+then+else

Bc if(test) ...;...;

Maxima if test then ... else if test then ... else ...

MuPAD if test then ... elif test then ... else ... end_if

Octave if (test) ... else ... endif

PARI/Gp if(test,...,...)

Scilab if test then, ..., else, ..., end

Yacas if(test)..else...

XCAS if(test)...; else ...;

si(test)...; sinon ...;

si test alors ...; sinon ...; fsi

������ � Test if...then...else

283

Page 298: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����1�� �������1 �������:�

Logiciel Boucle for

Bc for(i=1;i<=n;n=n+1){x;y;}

Maxima for i:1 thru n do (x, y);

MuPAD for i from 1 to n do x; y end_for;

Octave for j=1:n x;y; endfor

PARI/Gp for(j=1,n,action)

Scilab for k=1..n, x,end

Yacas ForEach(j,1..n)[x;y;]

XCAS for (k:=1;k<=n;k++)x;y;

pour(k:=1;k<=n;k++)x;y;

pour n de 1 jusque n pas 1 faire x; y; fpour

������ � Boucle for

Logiciel Afficher texte et résultat

Maxima print("sin(",0, ") =", sin(0))$

MuPAD print(Unquoted, "sin(".0.")" = sin(0)):

PARI/Gp print("sin(",0,")=",sin(0))

Yacas Echo("sin(",0,")=",MathSin(0));

XCAS print("sin("+0+")="+sin(0))

������ � Comment afficher un résultat avec du texte ?

/�'� ����� � ���%'����

Logiciel e π i +∞ �2 21/3

Maxima %e %pi %i inf sqrt(2) 2ˆ(1/3)

MuPAD E PI I infinity sqrt(2) 2ˆ(1/3)

Octave e pi i sqrt(2) 2ˆ(1/3)

PARI/Gp exp(1) Pi I sqrt(2) 2ˆ(1/3)

Scilab %e %pi %i sqrt(2) 2ˆ(1/3)

Yacas Exp(1) Pi, Pi() I Infinity Sqrt(2), MathSqrt(2) 2ˆ(1/3)

XCAS e Pi,pi,PI i infinity sqrt(2) 2ˆ(1/3)

284

Page 299: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��"�� ����!" ������5�

������ �� Les principales constantes mathématiques

Logiciel ln Arctan n!

Bc l(x) a(x)

Maxima log(x) atan(x) n!

MuPAD ln(x) atan(x) n!

Octave log(x) atan(x) prod(1:n)

PARI/Gp log(x) atan(x) n!

Scilab log(x) atan(x) factorial(n)

Yacas Ln(x) ArcTan(x) n!

������ �� Les fonctions existantes

Logiciel n mod m

Maxima mod(n, m)

MuPAD n mod m

Octave mod(n,m)

PARI/Gp n%m, Mod(n,m)

Scilab modulo(n,m), pmodulo(n,m)

Yacas Mod(n,m)

XCAS n mod m, m%n

������ � Calcul modulaire

Logiciel Partie réelle Forme algébrique d’un complexe

Maxima realpart(f(z)) rectform(f(z))

MuPAD Re(f(z)) rectform(f(z))

Octave real(z)

PARI/Gp

Scilab real(z)

Yacas Re(z)

XCAS Re(z) evalc(z)

������ �� Calcul avec les complexes

285

Page 300: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����1�� �������1 �������:�

Logiciel Somme :n∑

i=1f (i )

Maxima sum(f(i),i,1,n) ,simpsum

MuPAD sum(f(i), i = 1..n)

Octave

PARI/Gp sum(k=1,n,f(k))

Scilab

Yacas Sum(i,1,n,f(i))

XCAS sum(f(k),k,1,n), sum(f(k),k=1..n)

������ � Calcul de sommes

Logiciel Limites : limx→0− f (x) Développements limités et asymptotiques

Maxima limit(f(x), x, 0, minus) taylor(f(x), x, 0, 3)

MuPAD limit(f(x), x = 0, Left) series(f(x), x = 0, 4)

Octave

PARI/Gp f(x)

Scilab

Yacas Limit(x,0,Left) f(x) Taylor(x,0,4) f(x)

XCAS limit(f(x),x=0,-1) series(f(x), x = 0, 4)

������ �� Calcul de limites

Logiciel Calcul différentiel :d3 f (x, y)

d x3 Intégration :∫1

0f (x)d x

Maxima diff(f(x, y), x, 3) integrate(f(x), x, 0, 1)

MuPAD diff(f(x, y), x$3) int(f(x), x = 0..1)

Octave quad("f",0,pi/2)

PARI/Gp deriv(f(x),x)

Scilab intg(0,1,f)

Yacas D(x,3) f(x,y) Integrate(x,0,1) f(x)

XCAS diff(f(x, y), x$3) int(f(x), x = 0..1)

������ �� Calcul différentiel et intégral

286

Page 301: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

��"�� ����!" ������5�

Logiciel Graphe 2D

Maxima plot(x, x, 0, 1)$ plot(acsch(x), x, 0, 1)$

MuPAD plotfunc(x, acsch(x), x = 0..1):

Octave

PARI/Gp

Scilab fplot2d(x,f)

Yacas Plot2D(x,ArcCos(x),0:1)

XCAS plot([x,acosh(x)],x=1..2,color=[green,red],legende=["x","Argch"])

������ �� Graphe 2D

Logiciel Graphe 3D

Maxima plot3d(abs(x*y), x, 0, 1, y, 0, 1)$

MuPAD plotfunc(abs(x*y), x = 0..1, y = 0..1):

Octave

PARI/Gp

Scilab fplot3d(x,y,f)

Yacas Plot3DS(Abs(x*y), 0:1,0:1)

XCAS plot3d(abs(x*y), x = 0..1, y = 0..1)

������ �� Graphe 3D

287

Page 302: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 303: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

�������

Bibliographie

ABDELJAOUAD , Mahdi: Éléments de Géométrie du Plan . Tunis: Association Tunisienne desSciences Mathématiques, 2000

AMYOTTE , Luc: Introduction au calcul avancé et à ses applications en sciences . Québec: ERPI,2004

APPEL , Walter: Mathématiques pour la physique et les physiciens. Paris: H&K, 2005

BADRIKIAN , Josèphe: Mathématiques pour téléinformatique : codes correcteurs. Paris: Ellipses,2002

BELABAS , Karim: Site officiel de PARI/GP . ⟨URL: http://pari.math.u-bordeaux.fr/⟩BELLOC , J.C./THUILLIER , P.: Mathématiques analyse 3 . Paris: Dunod, 2004

BRUGÈRE , Thierry/MOLLARD , Alain: Mathématiques à l’usage des informaticiens. Paris: El-lipses, 2003

CONNAN , Guillaume/ROUQUÈS , Jean-Philippe: Le simulateur de khôlles de maths . Paris:Ellipses, 2002

DALANG , Robert C./CHAABOUNI , Amel: Algèbre linéaire . Lausanne: Presses polytechniqueset universitaires romandes, 2001, 127–137

INRIA : Site officiel de Scilab . ⟨URL: http://www.scilab.fr⟩IVALDI , Philippe: ressources Asymptote . ⟨URL: http://piprim.tuxfamily.org/

asymptote/travaux/index.html⟩LE FUR , Denis: ressources Gnuplot . ⟨URL: http://mathsp.tuxfamily.org/spip.php?

rubrique39⟩MARLE , Charles-Michel/PILIBOSSIAN , Philippe: Méthodes numériques itératives . Paris: El-

lipses, 2006, 168–185

MONGE , M./AUDOIN-ÉGOROFF , M.C./LMAIRE-BODY, F.: Mathématiques Terminales C et E .Paris: Belin, 1974

MURRAY , J. D.: Mathematical biology . Berlin: Springer, 1993, 372–380

PARISSE , Bernard: Site officiel de XCAS . ⟨URL: http://www-fourier.ujf-grenoble.fr/~parisse/irem.html⟩

ROUQUÈS , Jean-Philippe/DOMINGUEZ , Sophie: Leçons particulières - Cours de Maths . Paris:Ellipses, 2002, 316–328

SORTAIS , Yvonne/SORTAIS , René: La géométrie du triangle . Paris: Hermann, 1987, 16–21

Page 304: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

����1�� B���������

TENENBAUM , Gérald/MENDÈS FRANCE , Michel: Les nombres premiers . Paris: PUF, 1997

THÉBAULT , Victor: Sur le tranchet d’Archimède . Bulletin de la S.M.F. Tome 72 1944, 68–75

WESTER , Michael: Computer Algebra Systems: A Practical Guide . Chichester: John Wiley &Sons, 1999

290

Page 305: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Index général

ABBA, 83Abscisse, 180Affixes, 181, 197Aire, 69, 70Algèbre de Boole, 185Alignement de points, 189Amplitude, 105Analyse en composantes principales, 106Animation, 103Approximation, 165Approximation affine, ix, 163Approximation numérique, 55Arrêter une boucle, 103ASCII, 35, 87assume ou element ?, 72Asymptote(programme), 26awk(programme), 14Axiome, 185

Baccalauréat, 120Base, 85Base 2, 248Base canonique, 158Base, changement de, vi, 48Bc(programme), 3, 7, 8, 13, 23, 24, 45, 46, 48,

67, 281–285Bessel-Parseval, 228Boîte à moustache, 100, 102BSD, 7

C++(programme), 26, 31, 32C-shell(programme), 14Calcul formel, 183Calcul matriciel, 75, 270Calcul modulaire, 247Caml(programme), 260

Centiles, 106Cercle, 197Cercle médiateur, 195Cercles tangents, 194Chaînes de Markov, viiChangement de variable, viii, 144Chaînes de Markov, 83Chiffrement de Hill, 86Chiffres significatifs, 56Classes cyclotomiques, 255Code de Hamming, 247Codes correcteurs, 247Collège, 69Commande externe, 16Concaténation, 38Condition d’alignement, 190Cône, 221Congruences, vi, 49Conique, 180Coniques, 205Contraposée, 186Convergence d’une suite, 174Coordonnées barycentriques, xCoordonnées barycentriques, 189Copier-coller, 14Corps fini, 247, 255Courbe de niveau, 133Courbe paramétrée, 197Courbe représentative, 71, 164Courbure, 118Courbure de Gauss, 126courbures(variable), 126Cube, 94CygWin(programme), 7Cylindre, 270, 277

Page 306: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 �������

Date, 30Dé, 99Décodage, 40Décomposition en éléments simples, 140Démonstration, 180Dérivée, 113Dérivées partielles, 133, 135Dérivées partielles, 125, 269Dessins, 26Déterminant, 77, 87, 190Développement limité, 116, 153Diagramme de bifurcation, 203Différentielle, 116Dimension, 249, 273Dimension d’une matrice, 75Directrice, x, 180, 214Divergence, 270Division euclidienne, 88Droite, 180, 264

Écart-type, 105Échantillon, 105Éditer une commande, 13Éditeur de programme, 31Éditeur de texte, 3, 16Effet papillon, 203Égalité-définition, 67Ellipse, 211Emacs(programme), 14, 16, 27–29, 274Enlever une colonne, 250Ensemble, 58Ensembles de nombres, 58Entrées-sorties standards, 30Environnement, 17, 19Épreuve experimentale, 173Équation aux dérivées partielles, 269Équation de courbe, 264Équation de droite, 92, 216Équation de plan, 91Équation différentielle ordinaire, 169, 273Équation implicite, 214, 260Équations différentielles ordinaires, 157Équations dépendant de paramètres, 58Estimation d’erreur, ix, 165Étude métrique, viiiÉtude métrique, 125

Euler-Mac Laurin, 150Exponentielle matricielle, 160Expression, 115, 261Extremum, 133Extremum relatif, 136

Fabrication de sons, xi, 238Faux, 185Fenêtre 3D, 93Fichier eps, 21Fichiers spéciaux, 30Figure, 20Fink(programme), 7Flottants, 58Fonction, 115Fonction définie par morceaux, 230Fonction dérivée, 115, 180Fonction et expression, 69Fonction exponentielle, 163Format de l’entrée, 14, 15Format double, 57Format enjolivé, 14, 15Forme algébrique, 197Forme exacte, 55Forme quadratique, 126, 208, 210Foyer, x, 180, 214Fraction rationnelle, 62, 140Fréquence, 105, 111

Galois, 247, 255Gauss-Jordan, vii, 80Gaussienne, 108Générateur aléatoire, viiiGénérateur aléatoire, 105Géométrie dynamique, 173giac(programme), 16, 26, 28GnuPlot(programme), 3, 7, 8, 13, 20, 21, 23,

24, 26, 27, 30, 45, 47, 96, 281Gp(programme), 3, 7, 8, 13, 15, 45, 49, 53, 61,

64, 67, 113, 116, 153, 154GPL, 3Gradient, 116, 133Groupe de Lie, 157Groupe spécial orthogonal, 157

Hauteur de casse, 14

292

Page 307: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 �������

Heure, 30Histogramme, 102, 106–108Hyperbole, 215, 222

Image d’une matrice, 78Implication, 187Incrémenter, 32Index des commandes, 9Intégration par parties, viiiInterpréteur de commande, 29Intersection, 70, 121, 177, 216, 218, 219, 221Intégrale, 139Intégrales de Wallis, 147Intégration par parties, 144Inversion, 196Involution, 186Isocèle, 95

Kile(programme), 16

Laplacien, 269, 276, 277LATEX(programme), 15–18, 20–23, 26Lebesgue, 225Lemme de Riemann-Lebesgue, 227licence, 3Ligne brisée, ixLigne brisée, 163Ligne de commande, 14Lignes de niveaux, 96Limite d’une suite, 174Linux, 7Logiciels abordés, vLogiciels abordés, 2Logiciels libres, 2Logique, 185Loi de Morgan, 185Loi de répartition, 108Lycée, 69

MacOSX, 7Manuel d’aide, 10MAPLE(programme), 31Matrice, 235, 241, 249, 254Matrice antisymétrique, 157Matrice compagne, 61Matrice d’endomorphisme, 78Matrice de passage, 209

Matrice extraite, 241Matrice hessienne, 116, 136Matrice inverse, vii, 77, 79Matrice transposée, 87Maxima(programme), 3, 7, 8, 13, 14, 26, 28,

45, 49, 61, 62, 67, 75, 113, 114,139–141, 143, 153, 154, 157, 166,169, 170, 281–287

Médiane, 103, 105Médiatrice, 218Mesure de Lebesgue, 107MetaPOST(programme), 22, 26Méthode d’Euler, ixMéthode d’Euler, 162, 163Méthode de Newton, 56Méthode de Steffenson, 57Méthode des rectangles, ixMéthode des rectangles, 148Mode graphique, 3Mode texte, 3Mot-clé, 8Moyenne, 100, 102Moyenne arithmétique, 105Moyenne géométrique, 105Moyenne harmonique, 105Multiplicateur de Lagrange, viii, 132MuPAD(programme), 3, 7, 26, 28, 31, 55, 58,

59, 139, 143, 146, 157, 167, 281–287

Nappe paramétrée, 119Négation, 186Nombre dérivé, 115Nombres p-adiques, 53, 64Nombres premiers, 50Nombres pseudo-premiers, 51Non-contradiction, 185, 186Normale, 108Norme euclidienne, 75Norme linéaire, 75Norme spectrale, 75Notation scientifique, 13Noyau d’une matrice, 78Nuage de points, 105

Octave(programme), 3, 7, 8, 13, 45, 49, 67,74, 75, 77, 157, 161, 281–287

293

Page 308: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 �������

Opérande, 58Opérations élémentaires sur les lignes d’une

matrice, 81Orbite, 158Ordonnée, 180Ordonnée à l’origine, 91, 105

Palette des couleurs, 271Papier-crayon, 140Parabole, 206, 218Parallèle, 70, 219Paramètre, 70PARI/Gp(programme), 26, 51, 52, 281–287Partie exponentielle, 13Pente, 91, 105Perl(programme), 14Perpendiculaire, 70, 216, 218, 219Phénomène de Gibbs, 233Plan, 221Point, 69Point fixe attractif, 202Point fixe répulsif, 202Points critiques, 136Polices, 26Polygone, xi, 259, 260, 262Polynôme de Taylor, ixPolynôme, 61, 253, 260Polynôme caractéristique, 78, 85Polynôme de Taylor, 155Polynôme dérivé, 61Polynôme irréductible, 255Polynôme minimal, 255Polynôme quotient, 253PPCM, 255Primitive, 139Procédure, ixProcédure, 164Procédure récursive, 33, 39Produit scalaire, 75, 116, 181, 217Produit tensoriel, 75Projecteur, vii, 78Projection, 214Propriétaire, 3Précision, 45Précision d’un calcul, 56Prédicat, 185

Pseudosphère, 127PStricks(programme), 26Puissance d’un point par rapport à un cercle,

193Puissance de matrice, vii, 79

Quantiles, 106Quartiles, 106

Racine d’un polynôme, 141Racines, 61Rajouter une ligne, 250Rang d’une matrice, 75, 209Rectangle, 70Récurrence, 178Récursion, 51Réduction d’endomorphisme, viiRéduction d’endomorphisme, 76réel, 55Répartition, 105, 107, 108Représentation paramétrique, 197, 210Résolution de systèmes non-linéaires, 189Rotationnel, 116RSA, 40

Scilab(programme), 3, 7, 8, 13–15, 30, 31,41, 45, 49, 61, 62, 67, 72–75, 77, 91,98, 99, 105, 106, 109, 113, 114, 116,125, 139, 142, 150, 157, 235, 238,239, 241, 269, 270, 281–287

Sections planes de surfaces, 220sed(programme), 14Séries de Fourier, xiSéries entières, 153Session 2D, 92Shell(programme), 8, 16, 26, 28, 30, 271Simulation d’expérience aléatoire, viiiSimulation d’expérience aléatoire, 99Solutions d’une équation, 55Somme, 249Souris, 70Sous-espace affine, 105Sous-espace propre, 85Sous-espace vectoriel engendré, 86ssh(programme), 3Style de figure, 22

294

Page 309: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 �������

Subdivision, ix, 162, 163Suites récurrentes, 201Surface, 96Syldavie, 203Symétrie orthogonale, 92Syntaxe, 2, 37Syracuse, suite de, 37Système d’équations linéaires, viiSystème d’équations linéaires, 76Système linéaire, 59

Tableaux, 241Tangente, 180, 212, 215Tant que, 164Tautologie, 185Terminale, 163Test booléen, 216Test d’arrêt, 33, 39TeXmacs(programme), 26, 27TeXmaker(programme), 16Théorème de Ménélaüs, xThéorème de Ménélaüs, 190Théorème de Pappus, 195Théorème des nombres premiers, 50Tiers exclu, 185, 186Tikz(programme), 26Tore, xii, 270, 276Torsion, 118Tortue XCAS, 37Trace, 270Tractrice, 127Transformée de Laplace, 169Triangle rectangle, 69

Trier, 250Tubage de processus, 29Turing, Alan, 269

Valeur moyenne, 227Valeur propre, 85Variables complexes, 55Variance, 105Variété, 259Vecteur, 181Vecteur colonne, 75Vecteur ligne, 75Vecteur unitaire, 86Vecteurs propres, 76Vrai, 185

Windows Microsoft(programme), 16

XCAS(programme), xiii, 3, 7–9, 13, 15–18, 20,26, 28, 31, 34–36, 39, 45, 49, 51–53,55–57, 61, 63, 64, 67–69, 75, 81, 83,88, 91, 95, 99, 113–115, 136, 139,143, 145, 146, 148–150, 153, 157,165, 166, 169, 170, 173, 176,179–182, 184, 189, 191, 192, 194,196, 197, 199, 205, 210, 216, 217,222, 225, 227, 247, 249, 257, 259,260, 281–287

Yacas(programme), 3, 7, 8, 13, 15, 26, 28, 45,49, 61, 65, 67, 73, 113, 116, 139, 153,185, 187, 281–287

Zräjdz, 200

295

Page 310: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES
Page 311: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Index des commandes

Bca, 45auto, 24define, 24, 72for, 24ibase, 48, 48, 49l, 45, 72obase, 48, 49print, 24quit, 24, 49return, 72scale, 24, 45, 45temp, 24

GnuPlotborder, 24clabel, 96cntrparam, 96color, 21, 22, 24contour, 96eps, 21, 24exit, 24exp, 24graph, 24hidden3d, 21, 22isosamples, 21, 21, 22, 97label, 24, 98left, 24, 98linetype, 24nopoint, 24norotate, 24output, 21, 22plot, 24postscript, 21, 24print, 47, 48

quit, 21, 22replot, 24set, 21, 22, 24, 96–98sin, 21, 22size, 24, 97splot, 21, 22, 98sqrt, 21, 22surface, 96term, 24terminal, 21, 22textcolor, 24title, 24using, 24view, 97with, 98xlabel, 24, 97xrange, 24, 97xtics, 97ylabel, 24, 97yrange, 24, 97ytics, 97zlabel, 97ztics, 97

Gp\p, 46atan, 46cos, 153deriv, 64, 116exp, 116, 153log, 67Mod, 49Pi, 46, 153polroots, 64sqrt, 53

Page 312: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

LATEX\VerbatimEnvironment, 17\includegraphics, 21fancyvrb, 16VerbatimOut, 16

Maxima:=, 67^^, 78ASINH, 140bfloat, 46, 46, 68charpoly, 78, 78cos, 154cosh, 169determinant, 77diff, 62, 114, 114, 166, 169DISPLAY2D:FALSE, 14DISPLAY2D:FALSE;, 14DISPLAY2D:TRUE, 14eigenvalues, 78, 78exp, 114, 154, 169FALSE, 49float, 68, 154fpprec, 46, 46ilt, 169, 170integrate, 139–141, 170invert, 77laplace, 169, 170laplace(f(x),x,p), 169log, 67, 140, 142matrix, 77, 77mod, 49MODULUS, 49ode2, 166partfrac, 140, 141plot2d, 154positive, 141ratsubst, 154realpart, 141rhs, 140romberg, 141sin, 139, 142, 170solve, 62, 78, 140sqrt, 140tan, 140taylor, 154

MuPADbegin, 37–40DOM_SET, 58else, 39end, 38for, 38, 40from, 38, 40if, 39in, 59intersect, 39, 59intlib::byparts, 147minus, 39proc, 37–40step, 38, 40substring, 40then, 39to, 38, 40union, 39while, 39

Octavedaspk, 161endfunction, 74eye, 77function, 74inv, 77log, 74lsode, 161pinv, 77poly, 77, 77rand, 77rank, 77roots, 77schur, 77size, 77

Scilab*, 73.*, 73.*., 75%io(1), 30%io(2), 30abs, 273atanh, 127champ, 273–275companion, 61

298

Page 313: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

cos, 117, 157, 161deff, 119derivat, 61derivative, 113, 116–118, 120det, 62, 126, 127disp, 41, 246else, 41, 236–239, 242end, 41, 110, 111, 113, 123, 128, 159,

235–240, 242–246endfunction, 41, 72, 73, 113, 116–123,

126–128, 150, 157, 160, 235–245,273, 276, 277

evstr, 242–245exec, 41execstr, 245exp, 73, 109, 113, 239expm, 73, 159, 160eye, 62, 76, 273, 276, 277floor, 242for, 41, 110, 111, 113, 123, 128, 159,

235–238, 240, 242–245format, 150fplot2d, 119fplot3d, 120, 120, 121, 121, 122, 123,

124fplot3d1, 120, 121, 123freq, 111fsolve, 123function, 41, 72, 73, 113, 116–123,

125–128, 150, 157, 160, 235–245,273, 276, 277

geomean, 105graycolormap, 271, 272gsort, 107harmean, 105hist3d, 111histplot, 108if, 41, 41, 236–239, 242–244, 246intg, 142, 150inv, 76kernel, 76linsolve, 76list, 158, 159list(), 159log, 72, 73, 239ls, 30

matrix, 111max, 244mean, 105median, 105min, 237, 242modulo, 49, 236, 237nfreq, 106, 109norm, 75, 76, 116–118, 126, 159, 161ode, 157, 158, 160, 274, 275ones, 241, 273param3d, 117, 123, 124, 158param3d1, 158, 159perctl, 106, 107pinv, 126plot, 73, 105, 107, 109, 113, 157, 160plot3d1, 271–273plot3d3, 121, 121, 123pmodulo, 49, 235, 236, 242poly, 14, 61, 76quart, 106rand, 76, 105, 106, 108, 157, 274rank, 75read, 270reglin, 91, 105roots, 61, 76rot(g,x), 117savewave, 239schur, 76sci2exp, 14sin, 14, 117, 238size, 75, 128, 235–238, 273, 274, 276,

277sort, 106spec, 62, 76, 126sqrt, 109, 119, 126, 127, 150stdev, 105strange, 106string, 30, 41, 238, 240sum, 111, 236, 242, 244tabul, 106, 109, 109, 110, 111tangent, 120, 125, 126tanh, 239then, 41, 236–239, 242–244, 246trace, 127unix_g, 30unix_w, 30

299

Page 314: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

variance, 105while, 246write, 30, 238, 274, 275xbasc, 157, 158, 160xinit, 106–108, 111, 120, 121, 123, 128,

158, 159, 272xset, 271, 272zeros, 76, 110, 127, 128, 236, 241, 243,

273, 276, 277Shell

-l, 67bc -l, 72info, 8lynx, 8man, 8read, 30xdvi, 8

XCAS:=, 250=<, 250“chaine”, 35abs, 56, 227abscisse, 180, 180, 190, 195, 196, 216,

216, 217, 218affichage, 95, 148, 175, 176affixe, 181, 197aire, 70, 95alors, 36, 174, 190and, 101, 179, 180, 229angle, 93animation, 103, 103ans, 16, 115, 178apply, 87–89approx, 56asc, 35, 36, 87, 87assume, 55, 72, 72, 94, 179, 180, 211, 213,

226, 231atan, 46augment, 80, 80, 250, 252avance, 37barycentre, 194begin, 16bissectrice, 219bleu, 71, 101, 102, 104, 148, 155, 156,

162, 175, 178, 192, 195, 212–215,

219, 221blockmatrix, 250, 250, 252blue, 228, 230, 232break, 103cat, 16, 35cercle, 192, 194–197char, 35, 35, 36, 87, 87charpoly, 85, 85Cmplx_var, 55, 56col, 85, 85, 209, 209color, 134, 155, 156, 222, 228, 230, 232Complex, 56concat, 34, 35, 209, 230, 248, 251, 251,

252cone, 221, 222conique, 210, 215, 217contourplot, 134, 135convert, 154, 155, 248, 248coordonnees, 95cos, 34, 145, 146, 148, 154, 155, 217, 227,

231, 232, 264cosh, 170couleur, 52, 70, 71, 93, 95, 101, 102, 104,

148, 162, 175, 178, 192, 194, 195,210, 212–216, 218, 219, 221, 222,228, 228, 230

count_eq, 100courbe_parametrique, 197cyan, 52, 93, 134, 148, 212, 213, 221, 222degree, 254delcols, 250, 252derive, 115desolve, 20, 161, 162det, 79, 87, 137, 190–192, 209diff, 63, 69, 69, 114, 114, 115, 133, 136,

136, 137, 145, 170, 211DIGITS, 46, 57Digits, 46, 46, 56, 56, 150droite, 70, 72, 92, 93, 104, 180, 180, 181,

196, 197, 212–214, 216–219, 264,264

dsolve, 162e, 215egv, 85, 85eigenvals, 85, 85eigenvalues, 209

300

Page 315: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

eigenvectors, 209element, 70, 70, 72, 72, 93, 95, 148, 148,

155, 162, 182, 192, 194, 201, 213,213, 214–216, 216, 218, 221, 222

else, 103, 104, 196, 214, 250–255, 264end, 16equation, 93, 196, 216, 216, 221, 222,

264, 264evalb, 216, 216, 218evalc, 197evalf, 46, 52, 53, 56, 57, 68, 100, 102,

104, 149–151, 166, 229, 265, 266exact, 221, 221exp, 57, 114, 115, 154, 166, 170, 264expr, 35faire, 36, 37, 164, 165, 175, 176fclose, 16, 17floor, 104, 155, 155, 156, 203, 251, 252,

264fonction_derivee, 69, 115fopen, 16, 17for, 32, 35, 51, 100, 101, 103, 148, 151,

162, 196, 197, 203, 230, 231,249–252, 254, 256, 261, 264

fpour, 36, 175, 176fprint, 16, 17fsi, 36, 174, 190fsolve, 196ftantque, 36, 37, 164, 165funcplot, 134GF, 256, 256, 257grad, 133, 133graphe, 71, 71, 175, 178head, 102, 102hessian, 136, 136, 137histogram, 102, 102i, 92, 190, 264ibpdv, 144, 144, 145, 146id, 68, 115idn, 80, 85if, 33, 51, 103, 104, 196, 214, 248–252,

254, 264ilaplace, 170, 170image, 79implicitplot, 134, 135, 265in, 16

infinity, 179, 227int, 52, 53, 143–145, 147, 150, 229–231integer, 226, 231integrate, 143, 170inter, 93, 193, 195, 196, 221, 222inter_droite, 216inter_unique, 70, 181interactive_plotode, 162intersect, 34inv, 79, 83, 83, 88inversion, 196, 197iquo, 248irem, 50, 50, 88, 88, 89, 248is_prime, 51isprime, 52ispseudoprime, 52jaune, 70, 101, 102, 218, 219jusque, 36, 175, 176k,T,j, 81ker, 78, 85, 85laplace, 144, 170latex, 16, 17lieu, 218limit, 212, 227limite, 9, 179list2mat, 87, 87, 88, 251, 251, 252ln, 52, 53, 55, 57, 68, 115, 144, 145, 149,

156local, 32, 33, 35, 56, 100, 101, 103, 148,

151, 162, 175–177, 197, 200, 203,214, 230–232, 248, 251, 252,254–257, 261, 264

longueur, 93, 94, 193, 196longueur2, 214, 214magenta, 194, 212, 213, 216, 218, 219map, 34mat2list, 88, 89, 101mean, 100, 100, 102, 104median, 104mediatrice, 218member, 249, 249, 250, 252, 254, 255mid, 35milieu, 93min, 251minus, 34mod, 103, 250, 252, 264

301

Page 316: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

moustache, 100, 101, 102, 104moyenne, 102, 104mRow, 81mRowAdd, 81, 81, 82ncols, 80, 249, 251, 252nDeriv, 115, 115newton, 56nextprime, 51, 51nInt, 149nops, 252, 254, 256normalize, 209, 209nrows, 82, 249, 251, 252NULL, 34, 100, 101, 103, 148, 162, 164,

165, 175, 195–197, 249, 252, 254,264

op, 248, 250, 252ordonnee, 180, 180, 190, 195, 196, 216,

216, 217, 218parallele, 70, 70, 219parameq, 197, 197partfrac, 143pas, 36, 52, 104, 175, 176, 190, 251, 252,

254perpendiculaire, 70, 72, 216, 216, 218,

219pi, 53, 143, 216, 221, 222, 229, 264plan, 221, 222plot, 20, 52, 95, 148, 155, 156, 162, 230plotarea, 148, 148plotfunc, 134, 212, 213, 225, 228, 232plotimplicit, 214, 214, 222, 222, 265,

266plotode, 162plotseq, 176, 176, 201, 201, 202point, 52, 69–72, 92–95, 148, 162, 163,

164–166, 175, 176, 180, 181, 190,192, 194–197, 203, 212–214,216–218

point_milieu, 148poly2symb, 85, 85polygone, 70, 70, 148polygone_ouvert, 164pour, 36, 36, 92, 104, 175, 176, 200, 215,

229preval, 144, 145, 147

print, 101, 102, 102, 104, 104, 250–252,254

product, 257, 264projection, 214proot, 64purge, 192, 196q2a, 208, 208, 209quo, 253, 254rand, 99, 99, 100, 101randpoly, 63rank, 209ranm, 100, 100, 101, 103re, 55read, 16, 17rectangle_droit, 148rectangle_gauche, 148remove, 34rempli, 70, 93, 95, 101, 102, 104, 134,

148, 221, 222resoudre, 177, 177return, 31–33, 35, 51, 57, 148, 151, 174,

177, 190, 196, 197, 203, 214, 215,230, 231, 248, 251–255, 261, 264

right, 216, 264, 264romberg, 143roots, 63rotate, 254, 254, 255rouge, 93, 148, 162, 175, 176, 194, 214,

216, 218, 219, 221, 222rowspace, 86, 86scalar_product, 181, 217segment, 93, 95, 216, 219select, 34seq, 34, 34, 52, 53, 103, 147, 166, 166,

200, 201, 261set, 33, 34si, 36, 36, 174, 190simplifier, 70, 177, 178, 182, 182, 256simplify, 16, 79, 93, 94, 137, 155, 191,

209–212, 216, 217, 229–232, 257sin, 68, 69, 115, 143, 145–147, 170, 217,

231, 232sinon, 36, 174, 190size, 34, 35, 53, 248, 250, 252solve, 55, 55, 56, 57, 79, 85, 93, 133, 136,

191, 192, 195, 201, 205, 221, 222

302

Page 317: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

���1 ��� ���������

sort, 250, 250, 252SortD, 102sqrt, 56, 115, 143, 149, 150, 180, 181,

211, 213, 215–217subs, 196subsop, 34subst, 137, 137, 144, 144, 206, 260, 261sum, 83, 83, 149, 227, 229, 232, 249, 249,

250–252, 260, 261symb2poly, 254, 254symetrie, 92, 93, 196, 212, 213tan, 143tantque, 36, 36, 37, 164, 165taylor, 154, 155transpose, 87–89, 209, 254, 255trapeze, 148triangle, 93, 95triangle_rectangle, 70trigsin, 146, 147unapply, 68, 68, 69, 115, 261, 261union, 34unitV, 86, 86vecteur, 181, 182vert, 95, 148, 212, 213, 216, 218, 219while, 33, 56, 101, 151, 229, 248, 250,

252, 255xstep, 134, 135, 221, 222, 265, 266

ystep, 134, 135, 265, 266zip, 34zstep, 265, 266

Yacas<=, 187And, 185, 186, 186, 187CanProve, 185, 185, 186, 187Clear, 186Cos, 153Curl, 116D, 65, 116Exp, 116, 153GetPrecision, 46Integrate, 139Ln, 73, 139Mod, 49N, 46, 47, 73, 139Not, 185, 186, 186, 187Or, 185, 186, 186Pi, 47, 139Precision, 47PrettyForm, 15, 153Psolve, 65Sin, 139Tan, 139Taylor, 153

303

Page 318: GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

Le Guide du Calcul avec les logiciels libres vous propose demaîtriser les bases de plusieurs logiciels gratuits de calcul formelet numérique, et de géométrie dynamique : XCAS, Scilab, Bc,Gp, GnuPlot, Maxima, Octave, Yacas, et également MuPAD(non libre). Ces logiciels sont multiplateformes (Windows, Mac,Linux) et s’installent rapidement. La grande originalité de cet ouvrage est de détailler pas à pasl’utilisation de plusieurs logiciels pour plusieurs types de calcul.Il propose ainsi des applications en mathématiques, en physiqueet en sciences de l’ingénieur (par exemple : équationsdifférentielles utilisées en physique, traitement du son...). Il vousaidera à savoir utiliser le bon logiciel au bon moment pourrésoudre le bon problème. Cet ouvrage s’adresse à toute personne voulant utiliser le calculen mathématiques à l’aide de logiciels libres : étudiants enmathématiques ou en informatique, professeurs de lycéesouhaitant utiliser ces outils dans le cadre de leur cours etjusqu’aux candidats à l’agrégation désirant se préparer àl’épreuve de modélisation. Un index thématique et un index des commandes par logicielaident le lecteur à trouver rapidement l’information qu’ilrecherche.

Guillaume ConnanStéphane Grognet

GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

GUILLAUME CONNAN

Professeur agrégé demathématiques au LycéeJean Perrin (Rezé).

STÉPHANE GROGNET

Maître de conférences à l’Université de Nantes,directeur de l’IREM des Pays de la Loire.

MATHÉMATIQUES

PHYSIQUE

CHIMIE

SCIENCES DE L’INGÉNIEUR

INFORMATIQUE

SCIENCES DE LA VIE

SCIENCES DE LA TERRE

www.dunod.comISBN 978-2-10-053934-5