Guide Du Calcul Avec Les Logiciels Libres

  • Published on
    31-Dec-2015

  • View
    134

  • Download
    38

Transcript

  • GUIDE DU CALCUL AVECLES LOGICIELS LIBRES

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

  • GUIDE DU CALCUL AVECLES LOGICIELS LIBRES

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

    Guillaume ConnanProfesseur agrg de mathmatiques

    au lyce Jean Perrin (Rez)

    Stphane GrognetMatre de confrences lUniversit de Nantes

    et directeur de lIREM des Pays de la Loire

  • Illustration de couverture : Digital vision

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

  • Table des matires

    INTRODUCTION 11 Gnralits 1

    a. Public vis 1b. Organisation 1

    2 Pourquoi des logiciels libres ? 23 Liste des logiciels abords 24 Vive le calcul ! 3

    Partie I INTERFACE 5CHAPITRE 1 : AIDE 7

    1.1 Installer les logiciels 71.2 Obtenir de laide 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 132.1 Communiquer avec un logiciel de calcul 13

    a. criture des nombres 13b. Saisie des instructions au clavier 13c. Mise en forme des rsultats 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

  • a. Le copier-coller la souris 29b. Communication via des fichiers 29c. Appel linterprteur de commandes du systme (shell) 29d. Un bon outil : la gestion des chanes de caractres 30

    2.6 Programmation interactive 30

    CHAPITRE 3 : LA PROGRAMMATION 313.1 Avec XCAS 31

    a. Les procdures 31b. for 32c. while 33d. if 33e. Listes,ensembles et chanes 33f. Programmation en franais 36

    Pour 36tantque 36si 36

    3.2 Avec MuPAD 37a. Les procdures 37b. for 38c. while 39d. if 39e. Listes, ensembles et chanes 39

    3.3 Avec Scilab 41

    Partie II CALCUL 43CHAPITRE 4 : ARITHMTIQUE 45

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

    4.2 Erreurs darrondi avec GnuPlot 474.3 Changement de base avec Bc 484.4 Congruences 494.5 Nombres premiers 50

    a. Thorme 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 555.1 Avec XCAS 55

    vi

  • 5.2 Avec MuPAD 58

    CHAPITRE 6 : POLYNMES 616.1 Avec Scilab 616.2 Avec Maxima 626.3 Avec XCAS 636.4 Avec Gp 646.5 Avec Yacas 65

    CHAPITRE 7 : FONCTIONS 677.1 Avec Gp 677.2 Avec Maxima 677.3 Avec XCAS 68

    a. Cas gnral 68b. Dfinir des fonction non numriques : un exemple en gomtrie en classe de

    Seconde 697.4 Avec Bc 727.5 Avec Scilab 72

    a. Cas gnral 72b. valuation en rafale 73

    7.6 Avec Yacas 737.7 Avec Octave 74

    CHAPITRE 8 : ALGBRE LINAIRE 758.1 Avec Scilab 75

    a. Oprations lmentaires 75b. Rsolution dun systme dquations linaires 76c. Rduction dendomorphismes 76

    8.2 Avec Octave 778.3 Avec Maxima 778.4 Avec XCAS, au gr dactivits diverses 78

    a. Dterminer un projecteur 78b. Puissances de matrices 79c. Inverse de matrices 79d. Trouver linverse dune matrice avec la mthode de Gauss-Jordan 80e. Chanes de Markov 83f. Chiffrement de Hill 86

    Codage 87Dcodage 88

    CHAPITRE 9 : GOMTRIE AFFINE 919.1 Avec Scilab 91

    a. quation de droite dans le plan 91b. quation de plan dans lespace tridimensionnel 91

    9.2 Avec XCAS 91a. Proprits gomtriques 92

    vii

  • Dans le plan 92Dans lespace 93

    b. Une activit de 2nde 959.3 Avec GnuPlot 96

    CHAPITRE 10 : STATISTIQUES 9910.1 Des statistiques sans tableur... 99

    a. Le problme du Duc de Toscane 99Un peu de (petite) histoire 99Simulation de lexprience 99Simulation grande chelle 100

    b. Lancers de ds 101c. Un problme divrogne 103

    10.2 Gnrateurs alatoires 10510.3 Rgression linaire 10510.4 Statistiques 10510.5 Application 106

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

    CHAPITRE 11 : CALCUL DIFFRENTIEL 11311.1 Premiers contacts 113

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

    11.2 Calcul diffrentiel multidimensionnel 11611.3 Courbes 11711.4 Surfaces 11911.5 tude mtrique des surfaces 12511.6 Extrema dune fonction de R2 dans R avec XCAS 132

    a. Extremum sous contrainte et multiplicateur de Lagrange 132b. Condition ncessaire et suffisante dexistence dun extremum 135

    CHAPITRE 12 : INTGRATION 13912.1 Primitives 139

    a. Avec Yacas 139b. Avec Maxima 139c. Dcomposition en lments simples 140d. Avec Scilab 142e. Avec XCAS 143f. Avec MuPAD 143

    12.2 Changement de variable et intgration par parties 144

    viii

  • a. Avec XCAS 144

    Changement de variables 144

    Intgration par parties 144

    Intgrale de Wallis 145

    b. Avec MuPAD 147

    12.3 Calcul approch dintgrales 148

    a. Mthode des rectangles avec XCAS 148

    b. Application au calcul dune approximation de avec XCAS 149

    CHAPITRE 13 : DVELOPPEMENTS LIMITS 153

    13.1 Avec Yacas 153

    13.2 Avec Gp 153

    13.3 Avec Maxima 154

    13.4 Avec XCAS 154

    a. Gnralits 154

    b. Visualisation de lapproximation dune fonction par le polynme de Taylor 155

    CHAPITRE 14 : QUATIONS DIFFRENTIELLES ORDINAIRES 157

    14.1 Avec Scilab 157

    a. Rsolution dune quation du premier ordre unidimensionnelle 157

    b. Rsolution dune quation du premier ordre multidimensionnelle 157

    c. Rsolution dune quation du deuxime ordre unidimensionnelle 160

    d. Rsolution dune quation dordre et de dimension quelconques 161

    14.2 Avec Octave 161

    14.3 Avec XCAS 161

    a. Rsolution exacte 161

    b. Rsolution approche 162

    c. Mthode dEuler : cas gnral 162

    d. Mthode dEuler et exponentielle : TP en Terminale S 163

    Approximation affine 163

    Subdivision 163

    Trac dune ligne brise 163

    Trac en boucle 164

    Procdure 164

    vous de jouer 165

    Estimation de lerreur 165

    14.4 Rsolution exacte avec Maxima 166

    14.5 Avec MuPAD 167

    CHAPITRE 15 : TRANSFORME DE LAPLACE 169

    15.1 Avec Maxima 169

    15.2 Avec XCAS 170

    ix

  • Partie III THMES 171THME 1 : XCAS AU LYCE ? 173

    1.1 XCAS et la gomtrie dynamique au lyce 1731.2 XCAS et les suites 1731.3 Ce que ni le tableur, ni un logiciel de gomtrie ne peuvent faire 179

    a. Preuve dun thorme 179b. Illustration graphique 182c. Bilan de cette activit 183

    1.4 Moralit... 183

    THME 2 : LOGIQUE LMENTAIRE 1852.1 Premiers contacts 1852.2 Algbre de Boole 1852.3 Le raisonnement par labsurde 186

    THME 3 : THORMES DE MNLAS ET PAPPUS 1893.1 Coordonnes barycentriques 189

    a. Une condition dalignement 189b. Une dmonstration rapide du thorme de Mnlas 190

    3.2 Problme du Monde 1923.3 Cercles de Pappus 193

    a. Approche historique 193b. Rsolution astucieuse de reprsentations paramtriques et dune inversion 196

    THME 4 : SUITES ET CHAOS 1994.1 Modlisation 2004.2 Observation chiffre 2004.3 Observation graphique 2014.4 Diagramme de bifurcation 203

    THME 5 : CONIQUES 2055.1 tude algbrique des coniques 205

    a. tude mathmatique au niveau Bac+1 205Premier cas : ab = 0 205second cas : ab = 0 206

    b. tude mathmatique au niveau Bac+2 208criture matricielle de lquation 208Exemple 209

    c. tude informatique 2105.2 tude analytique des coniques 211

    a. Ellipse dquation x2

    a2+ y2

    b2= 1 211

    b. Hyperbole dquation x2

    a2 y2

    b2= 1 213

    5.3 Ensemble des points M du plan tels que MF = eMH 2145.4 Foyer et directrice dune conique 214

    x

  • a. Cas de lellipse 214b. Cas de lhyperbole 215

    5.5 Construction de la tangente une conique 215a. Le thorme 215b. Lobservation par XCAS 215c. La preuve par XCAS 217

    5.6 Activits gomtriques sur les paraboles 218a. Trac dune parabole la rgle et au compas 218b. Pourquoi les antennes paraboliques sont-elles paraboliques ? 219

    5.7 Coniques et cnes 220a. Section dun cne par un plan dquation x = t 221b. Section dun cne par un plan dquation x = t +k z 222

    THME 6 : SRIES DE FOURIER 2256.1 Exploration 2256.2 Interprtation physique 2286.3 Phnomne de Gibbs 229

    THME 7 : MUSIQUE 2357.1 Construction dune gamme avec Scilab 235

    a. Gnration de gammes candidates 235b. limination des permutations circulaires de colonnes 236c. Fonction principale : mode demploi 237

    7.2 Fabrication de sons 238

    THME 8 : CARRS MAGIQUES 241

    THME 9 : CODES CORRECTEURS DERREURS 2479.1 Mthode nave 248

    a. Liste des lments de Fk2 248b. Distance de Hamming 248c. La procdure de test et de correction 249d. Code t-correcteur 251

    9.2 Codes cycliques et polynme gnrateur 2539.3 Corps de Galois - Cration de polynmes gnrateurs 255

    THME 10 : SURFACES DONT LA PROJECTION EST IMPOSE 25910.1 Introduction 25910.2 Construction du polynme adapt 260

    a. Dfinition mathmatique 260b. Construction informatique 260

    10.3 Dfinition semi-algbrique dun polygone convexe rgulier 262a. Le polygone a un nombre pair de cts 262b. Le polygone a un nombre impair de cts 263c. Traduction informatique 264

    10.4 Construction de lensemble algbrique partir de la dfinition semi-algbrique 265

    xi

  • a. Carr 265b. Hexagone 266

    10.5 Prolongements 267

    THME 11 : TACHES DES ANIMAUX 26911.1 Introduction 26911.2 Affichage des donnes 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 GNRAL 291

    INDEX DES COMMANDES 297

    xii

  • Remerciements

    Je remercie chaleureusement Bernard PARISSE, dune part pour dvelopper demanire si active le logiciel XCAS, et dautre part pour avoir bien voulu relire etamliorer bon nombre des algorithmes prsents dans cet ouvrage.

    Je tiens galement mexcuser auprs de Claire, Marie, Franois, Suzanne etRose qui jai tourn le dos tant de jours pour faire face mon cran et lesremercie pour leur patience.

    Guillaume CONNAN

  • Introduction

    Cet ouvrage aborde les niveaux :

    collge

    lyce

    suprieur

    tant pour les notions mathmatiques que pour les capacits informatiques ncessaires.Louvrage est destin :

    llve ou ltudiant qui cherche une vision diffrente des notions abordes en cours,ou qui dsire se cultiver,

    lenseignant qui cherche une aide soit pour prparer des illustrations pour son cours,soit pour prparer des activits sur machine en travaux pratiques,

    au candidat professeur qui souhaite illustrer une leon mathmatique en utilisant desprogrammes de quelques lignes sans rentrer dans une programmation fastidieuse,

    au technicien et au scientifique de nimporte quelle discipline qui souhaite manipulerles objets mathmatiques 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 daborder chaquelogiciel ?

    Comment traiter avec les machines quelques thmes mathmatiques un peu plus la-bors ?

    Les textes de confort dcoulent de notre pratique ; ils sont destins ceux qui sintressentaux mathmatiques sans exprience de la programmation et correspondent la partie 4.Les textes de recettes de base de la partie 3.3 rpondent aux questions que nous nous sommesnous-mmes poses : pour illustrer tel ou tel domaine des mathmatiques, quels logicielschoisir, quels sont les outils minimums quon peut acqurir sans gros travail dapprentissagepour manipuler les objets mathmatiques ?

  • Les thmes dtude 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 mathmatiqueque lon connat. Mais il apparat que les logiciels libres disponibles sont suffisamment richeset suffisamment documents pour quon puisse aussi dcouvrir un domaine mathmatique travers eux. La manire de penser lchange de connaissances sen trouve modifie.

    Lutilisation dun logiciel pour rsoudre un problme ambitieux mne une utilisation pous-se : le logiciel libre sa puissance ; des routines sont cres, qui peuvent tre utilises dansbien dautres situations ; la solution apporte fait natre dautres envies et apporte de fcondessuggestions.

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

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

    Le dveloppement de certains logiciels peut tre repris par de nouvelles quipes sans que lesavoir-faire ne soit perdu : cest un gage de prennit.

    Leurs concepteurs visent la compatibilit avec les versions antrieures et le respect des normesinformatiques. Les logiciels libres sont destins communiquer entre eux, et le fait de pouvoircumuler la puissance de plusieurs logiciels pour un projet de calcul est prcieux.

    Le fait de pouvoir les dupliquer lgalement est bnfique pour le budget de ltat ou des en-treprises.

    Plusieurs logiciels sont utiliss dans cet ouvrage. Nous pointons les diffrences de syntaxe ;elles ne doivent pas rebuter le nophyte car elles ont leur raison dtre, et le fait dapprendreplusieurs logiciels de calcul en mme temps apporte un recul profitable lassimilation desrgles dutilisation. Des tableaux comparatifs sont prsents en annexe page 281.

    Les logiciels libres prsents ici sont bien dans la philosophie des logiciels libres et des sys-tmes dexploitation libres de la ligne UNIX ; loppos de la stratgie commerciale des lo-giciels propritaires, les logiciels libres ne cherchent pas tout faire, mais agir dans un do-maine dtermin le plus proprement possible : ce quils 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 systme et donc nimporte 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 numrique pour ses calculs approchs.

    Cette coopration apporte une puissance et un confort dutilisation introuvables dans les lo-giciels propritaires.

    2

  • Fonctionne Fonctionne

    en mode en mode

    Logiciel Type Licence texte graphique

    Bc calculette en prcision arbitraire GPL oui

    GnuPlot traceur de figures mathmatiques GPL oui

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

    Maxima calculateur formel GPL oui oui

    MuPAD calculateur formel Propritaire oui

    Octave calculateur numrique matriciel GPL oui

    Scilab calculateur numrique matriciel cecill oui oui

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

    Yacas calculateur formel GPL oui Logiciels abords

    Les logiciels qui fonctionnent en mode texte prsentent deux avantages : ils peuvent tre ins-talls et (modrment) utiliss sur des machines peu performantes, et peuvent tre utiliss 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 abordes ici.

    Nous remercions les auteurs des logiciels libres qui diffusent leur savoir lensemble de lhu-manit depuis des dcennies. Les systmes libres Linux et *BSD sont des outils de travail re-marquables.Nous remercions lIREM des Pays de la Loire, le Dpartement de mathmatiques de lUniver-sit de Nantes, le laboratoire Jean Leray pour leurs aides diverses.Nous remercions Bernard Parisse pour ses rponses aux questions sur XCAS.Nous aurions aim aborder dautres 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 esprons que le lecteur prendra autant de plaisir que nous dcouvrir les logiciels libresde calcul mathmatique, et utilisera ce livre en exprimentant directement les logiciels decalcul sur sa machine, en noubliant pas son diteur de texte prfr pour crer et ajuster sespropres programmes.

    3

  • Premire partie

    INTERFACE

  • Aide

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

    Problmatique : Comment obtenir le mode demploi ?

    part MuPAD, les logiciels dcrits ici sont libres, cest--dire librement copiables avec leursprogrammes-sources.Ils sont souvent dans larborescence de logiciels disponibles sous votre systme dexploitationLinux ou *BSD prfr.Sous MacOSX, il est bon dutiliser Fink, qui les place dans le rpertoire \sw. Mais certains logi-ciels ne sont pas disponibles par Fink : ils sont souvent sur internet sous forme dj compilepour MacIntosh.Sous Microsoft Windows, les logiciels sont tlcharger sur internet. On peut avoir besoindun simulateur UNIX comme CygWin.Dans tous les cas, il ne faut pas hsiter consulter les sites internet correspondants et tl-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.

  • Certains fournissent une aide dans la norme UNIX avec la commande man de linterprteurde 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 din-terrogation, comme GnuPlot, XCAS, Yacas, deux points dinterrogation, comme Gp.Par exemple le programme Yacas lance le navigateur en mode texte ; le logiciel Gp avecdeux points dinterrogation lance le visualiseur sur un document daide (en mode gra-phique).Il arrive que laide fournisse une prcieuse recherche par mot-cl.

    Certains logiciels proposent leur aide en ligne par un navigateur qui va chercher ses donnessur le rseau. Ceci pose problme quand on travaille hors ligne. . .

    Une grande quantit de documents est disponible sur internet dans de nombreuses langues.Il est intressant de tlcharger ces documents et de les consulter en travaillant.

    Pour obtenir laide de Bc taper dans un terminal :

    man bc

    on obtient une rponse du genre :

    Rponse du logiciel

    bc(1) bc(1)

    NAMEbc - An arbitrary precision calculator language

    8

  • 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 dplace dans le visualiseur avec , , ou bien , , - , - . Onquitte le visualiseur en tapant .

    !"#$

    Laide est trs fournie sur XCAS.

    Il existe tout dabord un index des commandes qui donne un rapide rsum des fonc-tionnalits. Par exemple, pour se rappeler la syntaxe de , on tape limite puis

    On obtient :

    9

  • Pour une aide plus dtaille, on peut cliquer sur Dtails si on avait dj ouvert lindexdaide ; on peut y accder directement en tapant puis en indiquant la notion quinous intresse dans la fentre.

    Pour une aide plus gnrale, il existe des manuels daide sur les grands sujets gnraux.Par exemple, si on clique sur licne interface du menu dAide, on obtient le rsumsuivant la section... Aide :

    Rponse du logiciel

    LE MENU AIDECe menu contient les diffrentes formes daide possible.

    * INTERFACE contient ce manuel, donc laide concernant linterface de Xcas.

    * MANUELS1. CALCUL FORMEL contient laide gnrale qui concerne toutes les fonctions

    de calcul formel, de gomtrie, de statistiques mais qui ne concerne pasles instructions de programmation, ni les instructions dplaant la tortue.

    10

  • 2. ALGORITHMES dcrit une partie des mathmatiques utilises pour programmerun logiciel de calcul formel

    3. GOMTRIE contient une aide plus dtaille pour certaines commandes carcette aide est illustre par des exercices (mais on na pas toutes lesfonctions de gomtrie !).

    4. PROGRAMMATION contient une aide dtaille des instructions de program-mation. Dans cette partie vous trouverez lcriture de plusieurs algori-thmes avec la traduction de ces algorithmes en langage Xcas MapleV MuPADTI89/92.

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

    6. TORTUE contient laide concernant les instructions qui sont utilisesdans lcran de dessin Tortue. Dans cette partie vous trouverez plusieursactivits que lon peut faire avec des enfants (du CP au CM2) dans le butde leur faire faire des mathmatiques.

    7. AMUSEMENTS contient de nombreux exercices mathmatiques originaux traitsavec XCAS.

    * INTERNET1. FORUM permet daccder un forum de discussion.2. SITE LYCE G. CONNAN renvoie vers un site merveilleux...3. RESSOURCES BAC S renvoie vers les sujets de lpreuve exprimentale du

    Bac S.4. RESSOURCES AGRGATION renvoie vers les thmes utiles aux agrgatifs.5. METTRE JOUR LAIDE permet de mettre laide jour.

    * INDEX donne toutes les commandes utilisables classes par ordre alphabtique avecune ligne dentre qui permet de se dplacer facilement dans cette liste :il suffit de taper le dbut dun 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 lune de ces commandes, vous avez une aide succincte quisaffiche dans le bandeau gnral lendroit des messages, des exemples quelon peut copier en cliquant sur lun deux et le nom des commandes proches oudes synonymes.

    Pour avoir une aide plus complte, cliquez sur le bouton Dtails Laide saffichesoit dans un navigateur (par dfaut Mozilla sous Linux, Internet Explorer sousWindows), soit dans une fentre part. Sous Linux, il est commode douvrirMozilla et de licnifier pour pouvoir ouvrir cette aide lorsque cela est nces-saire. Vous pouvez aussi taper ?nom_de_commande pour avoir en rponse laidesuccincte sur cette commande.

    Notez quen tapant sur le bouton bleu ? situ en bas gauche dans le bandeaugnral, on ouvre lIndex et, notez aussi quen tapant le dbut dune commandedans une ligne de commandes puis sur la touche de tabulation ou sur le boutonbleu ?, on ouvre lIndex la commande commenant par ce dbut.

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

    Tout est dit...

    11

  • Communication

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

    Problmatique : 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 mme :

    -1.23456e-7

    reprsente le nombre 1,23456 107 dans plusieurs logiciels. Le symbole de la partie expo-nentielle varie suivant les logiciels.

    Notation scientifique

    logicielssymboles accepts pour lapartie exponentielle

    Bc Yacas

    Gp GnuPlot XCAS e,E

    Maxima Scilab Octave d,D,e,E

    La plupart des logiciels de calcul obissent une ligne de commande que lutilisateur saisitavec le clavier. La commande nest excute que quand on appuie sur la touche .

    diter une commande, cest modifier la ligne que lon est en train de saisir.

    Certains logiciels prsentent des facilits dans ce domaine.La plupart accepte deffacer le caractre gauche du curseur quand on appuie sur la touchedeffaage vers la gauche.

  • Dans certains logiciels, en utilisant les flches du clavier, on peut rappeler une commandeprcdente.Des raccourcis-clavier autrefois introduits dans linterprteur de commandeC-shell ou ldi-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 dbut de ligne,

    - pour placer le curseur en fin de ligne,

    - pour effacer le caractre droite du curseur

    et caetera.Leffet de ces commandes peut varier dun logiciel lautre : il est recommand de faire desessais.Ces commandes sont tellement pratiques quil serait dommage de sen passer.

    Beaucoup de logiciels sont sensibles la hauteur de casse : dans le logiciel Scilab, linstruc-tion

    (1)

    fonctionne mais linstruction

    Sin(1)

    ne fonctionne pas.

    Pour utiliser le rsultat obtenu dans un logiciel comme entre dans un autre, comme dans lasection a. page 29, il faut que la mise en forme du rsultat soit compatible avec la saisie desinstructions.La ligne de commande permet de modifier la vole les diffrences mineures de notationdun logiciel lautre.En copier-coller la souris, on peut utiliser ltape intermdiaire dun diteur de texte pournettoyer linstruction.En demandant aux logiciels dcrire et de lire dans un fichier, il est possible dutiliser des di-teurs de texte automatiss tels que sed, awk, Perl. . .

    Mise en forme du rsultat

    oprationLogiciel

    obtenir la sortie auformat de lentre

    exempleobtenir la sortie auformat enjoliv

    exemple

    Scilab x=(0,x)p=x2+1(p)

    il ny a rien faire

    Maxima ;x2+1;

    x2+1;;

    x2+1;;x2+1;

    14

  • Mise en forme du rsultat

    oprationLogiciel

    obtenir la sortie auformat de lentre

    exempleobtenir la sortie auformat enjoliv

    exemple

    Gp il ny a rien faire il ny a rien faire

    Yacas il ny a rien faire PrettyForm(%)

    XCAS il ny a rien faire il ny a rien faire

    Chanes de caractres et instructions

    Voici un exemple (Figure 2.2) daller-et-retour entre les chanes de caractres et les instruc-tions dans Scilab.

    %

    &%%'

    (

    )

    !

    Il est possible de demander XCAS de calculer partir dun fichierLATEX. Pour cela, il faut com-mencer par indiquer LATEX quon lautorise excuter des tches externes en modifiant lefichier ( ou lquivalent sur des systmes non libres ) /usr/share/texmf/web2c/texmf.cnf.Il suffit dy remplacer shell_escape=f par shell_escape= t.

    15

  • Une manire moins drastique est de spcifier son diteur ( Kile, TeXmaker...) de compilerle fichier avec loption 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 prambule :

    \[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

  • (nom fichier) qui crer 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 cre ensuite un nouvel environnement LATEX quon appellera Xcass pour faciliter la saisie.On utilise nouveau lenvironnement VerbatimOut, mais cette fois-ci nous devons spcifierloption \pour expliquer LATEX quil sagit dun 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+ysin(x),y(0)2],y)[0];\{Xcass}

    \{document}

    et on remarque que seuls les rsultats des commandes sont affichs :

    cos (x)+ sin (x)

    cos (x)+ sin (x)

    cos (x)+ sin (x)

    Rponse du logiciel

    17

  • !"

    On peut procder de la mme manire pour obtenir des sorties graphiques produites parXCAS.Il faut donc maintenant placer ces commandes dans le prambule du fichier LATEX.Pour excuter un programme giac :

    \\{\executGiac}[1]{\\18{giac

  • \{xcasf}{\\{VerbatimOut}{xcasf.out}}{\{VerbatimOut}

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

    Il ne reste plus qu faire appel cet environnement lintrieur dun fichier LATEX :

    La solution de lquation diffrentielle y"+y0 avec les conditionsparticulires y(0)y(0)1

    est fournie par \Prog{XCAS} grce la commande \Com{XCAS}{desolve}. Il sagit de la fonction

    dfinie par~:

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

    Nous obtenons galement son graphe grce la commande \Com{XCAS}{plot}~:

    \{xcasf}plot(desolve([y+y0,y(0)1,y(0)1],y)[0],x-PiPi,colorblue);\{xcasf}

    qui donne :

    19

  • La solution de lquation diffrentielle y" + y = 0 avec les conditions particuliresy(0) = y (0) = 1 est fournie par XCAS grce la commande

    . Il sagit de lafonction dfinie par :

    cos (x)+ sin (x)Nous obtenons galement son graphe grce la commande :

    courbe

    Rponse du logiciel

    #

    Pour insrer une figure produite par GnuPlotdans un fichierLATEX, rien de plus simple. Il suffittout dabord dinstaller lextension gnuplottexa .Plusieurs possibilits soffrent alors nous :

    on insre directement le graphique dans le texte :

    Du texte prsentant ce graphique~:

    \{gnuplot}[scale1.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 aprs.

    ce qui donne :

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

    20

  • Du texte prsentant 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 aprs.

    Rponse du logiciel

    Compilation directe de la figure GnuPlot

    Le problme, cest que cette mthode fatigue trs vite la mmoire de LATEX et quonne peut pas demander de trop gros calculs GnuPlot et donc LATEX.Ainsi, le dessin produit est peu prcis car on ne peut dpasser les valeurs 10 et 10 pour

    Mieux vaut donc passer par lintermdiaire dun 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 --outfiletempgnu_eps.pdf tempgnu.

    \end{gnuplot}

    Du texte prsentant ce graphique~:

    \includegraphics{tempgnu.}

    et du texte aprs.

    21

  • Du texte prsentant 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 aprs.

    Rponse du logiciel

    Inclusion de la sortie eps produite par GnuPlot

    On peut galement utiliser MetaPOST : cela conomise aussi la mmoire LATEX et permetventuellement 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

  • Du texte prsentant 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 aprs.

    Rponse 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 gnral un =(1 1n

    )vers 1e .

    Partageons les tches :

    Bc va se charger des calculs ;

    GnuPlot va se charger de lillustration ;

    LATEX va se charger de la mise en forme des rsultats.

    Commenons par crer des commandes pour faire excuter des commandes en dehors deLATEX.Dabord 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

  • Rentrons maintenant un script Bc qui va crer 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

  • Enfin, on inclut la figure dans le texte :

    Voici une illustration exprimentale de la convergence de la suite determe gnral

    $u_n\(1-\{1}{n}\)^n$ vers $\{1}{e}$~:\{center}\

    {fich1.eps}\{center}On a calcul les 200 premiers termes de la suite. On saperoit que la

    convergence est assez rapide.

    Ce qui donne :

    Voici une illustration exprimentale de la convergence de la suite de terme gnralun =

    (1 1n

    )nvers 1e :

    0.26

    0.28

    0.3

    0.32

    0.34

    0.36

    20 40 60 80 100 120 140 160 180 200

    app

    roxim

    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

    app

    roxim

    atio

    n de

    (1-1/

    n)^n

    n

    exp(-1)=0.3679

    On a calcul les 200 premiers termes de la suite. On saperoit que la convergence estassez rapide.

    Rponse du logiciel

    Illustration de limn

    (1 1n

    )n = e1 avec bc,GnuPlot et LATEX

    25

  • De jolis graphiques avec LATEX

    Appeler GnuPlot nest certes pas la seule manire dinsrer des graphiques dans unfichier LATEX.Cela peut mme poser des problmes de cohrence des polices (qui peut se rgleren prfrant un export MetaPOST par exemple).Il existe en fait des programmes spcialement conus pour effectuer de magni-fiques dessins en totale cohrence avecLATEX : il sagit entre autres de PStricks (quiconsiste en fait en une srie dextensions LATEX), de MetaPOST et de Tikz principa-lement. Il crent de magnifiques dessins mais sont limits en capacits de calculdans des cas particuliers dtude de courbes ou de surfaces. Un nouveau venu joueles trouble-fte depuis peu, Asymptote, qui allie les capacits esthtiques de ses concurrents avec la puissance de calcul du C++.Pour information, les dessins du prsent ouvrage qui ne sont pas produits par deslogiciels de calcul sont crs en MetaPOST, comme les figures des pages 220, 264,193 ou 195 par exemple.

    * (!

    Le logiciel TeXmacs permet de crer des documents la LATEX , mais en wysiwyg c. Dans

    le cas qui nous occupe, il permet galement dinsrer 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 lappelle en cliquant sur Insrer->Session->giac> int(sqrt(1-x^2),x,0,1)14 La commande saffiche en bleu et le rsultat en noir avec de belles polices. Notezquun menu giac apparat avec les principales commandes.

    AVEC MAXIMAIl en va de mme avec Maxima :(%i1) integrate(sqrt(1-x^2),x,0,1)(%o1) 4

    Rponse du logiciel

    cWhat You See Is What You Get

    26

  • ! " !

    On peut galement obtenir une sortie graphique avec GnuPlot :

    Rponse du logiciel

    Il faut toutefois noter que TeXmacs est gourmand en mmoire et provoque des crashs inopi-ns. Lexport LATEX nest pas optimum.Il peut cependant rendre de bons services lorsquil sagit de crer une feuille de TD utilisantlun des logiciels implants.

    * +

    )

    Plutt que dutiliser les diteurs livrs avec les logiciels (quand il y en a), on peut prfrerrester lintrieur de son diteur prfr, Emacs, qui possde des modes permettant douvrir

    27

  • 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 laide 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>>

    Rponse du logiciel

    Il ne faut pas soccuper des 5 premires lignes.

    Pour diter une saisie prcdente, on tape - .

    Pour Maxima, cela donne :

    28

  • # $ !%! !" !

    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)

    Rponse du logiciel

    , - +

    Cest ncessaire quand on a besoin la fois de calcul formel et de calcul numrique sophisti-qu. En gnral quand on utilise simultanment deux domaines des mathmatiques loigns,chacun des deux tant trait par deux logiciels distincts, il est ncessaire de les faire commu-niquer.

    & '

    La souris est utilisable aussi sans environnement graphique (sous UNIX). Les rsultats doiventtre au mme format que les instructions (voir la section c. page 14) dans la mesure o lesinstructions voulues concident entre les deux logiciels ! Pour changer commodment les hau-teur de casse dune chane de caractres, on pourra passer par lintermdiaire dun diteur detexte comme Emacs.

    (!

    Beaucoup de logiciels fournissent des instructions pour lire ou crire des donnes dans unfichier texte. En crivant le rsultat obtenu par un logiciel dans un fichier, et en lisant ce fichieravec un autre logiciel, on ralise une communication entre logiciels.

    ' ) *+ ,!-

    Linterprteur de commande des systmes UNIX est particulirement adapt la communi-cation entre les logiciels grce au tubage de processus. Certains logiciels de calcul prsentent

    29

  • des commandes pour faire excuter des instructions par le Shell.Par exemple Scilab fournit la commande . Linstruction :

    (ls)

    fonctionne souvent mieux que la commande interne sur certains systmes. On peut aussiaugmenter la prcision du calcul. . . unix_w("echo 4*a(1) | bc -l")

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

    Il faut noter la manire dont les apostrophes sont protges ici.

    . / !0 +

    Pour fabriquer des noms de fichiers o crire, pour fabriquer des instructions GnuPlot (parexemple) placer dans un fichier, pour utiliser ce qui prcde en gnral, il est pratique demanipuler les chanes de caractres 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 lheure dans le nom du script, on utilise linstruction .

    .

    Des fichiers spciaux qui ne sont pas des fichiers rguliers sont bien utiles : les entres-sortiesstandard. On les obtient par les variables #$%& ; #$'& dans Scilab; elles peuvent treutilises dans un script Shell par exemple par la commande .Lintrt nest pas que cosmtique : quand on veut tester beaucoup de paramtres diffrentspour un calcul donn cela fait gagner beaucoup de temps !

    30

  • La programmation

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

    Problmatique : Description des techniques de contrle 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 simultanment sur et oupar le menu Edit->Ajouter->Programme.On accde ainsi lditeur de programme. On rentre :

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

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

    Rponse 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 excut par un autreprogramme et est donc directement compil par les librairies C++ de lordinateur, sans passer par un noyau proprecomme MuPAD ou MAPLE.

  • double(37)

    et on obtient le rsultat escompt...

    On peut rendre le rsultat plus convivial :

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

    On concatne ainsi des chanes avec un + .

    La syntaxe suit le mme principe :

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

  • &

    Le rsultat est certes plus lisible avec la dcoration du point dexclamation, maiscela le rend aussi inutilisable par la suite en tant que rsultat lintrieur dun autrecalcul.On pourra donc tre amen remplacer return n+"! ="+p; par return p;

    1!

    Reprenons le calcul prcdent avec un test darrt tant que :

    p:1; k:1;( k

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

    On peut effectuer les oprations usuelles sur les ensembles

    ens1 ens2; ens1 ens2; ens1 ens2;

    lensemble vide se note

    []%{%}

    les suites (sequence) qui sont des collections classes dexpressions (cest--direavec des lments dindice 0, 1, etc.), diffrentes ou non, spares par des virgules etencadres ou non par des parenthses.

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

    On peut aussi utiliser les oprateurs et $ pour des suites dfinies par une formuleexplicite

    (k^2,k15)(p^2)(p15)m5

    les listes (l i st ) qui sont des collections classes dexpressions spares par des virguleset encadres par des crochets. La diffrence, cest que lon peut avoir des listes de listeset si une instruction a plusieurs arguments, une suite ne peut pas tre lun de ces argu-ments.

    Notez au passage quelques fonctions utiles :

    s1:(j)(j-22); s2:a,b,c,d,f;"(s2); / / s i z e comme t a i l l e .s2[0];s2[14];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 tL1:[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 sL2[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[24](L1,L2) (x->x>0,L1); (x->x

  • &

    C:"-&_ehdslqjbch123+4/*5-6*^"

    On concatne les chanes avec loprateur + :

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

    mid(C,5,2) renvoie une partie de la chane C de longueur 2 partir du 6e caractre :

    (C,5,2)

    Pour XCAS, comme pour les mathmaticiens, le premier entier naturel est 0.

    Pour des utilisations particulires, je vous renvoie laide. Voici par exemple un petitprogramme qui transforme un nombre entier en une chane 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 dcodage 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

  • Connaissez-vous le code ASCII ?

    La mmoire de lordinateur conserve toute donne sous forme numrique. Pourcoder chaque touche du clavier, on utilise depuis les annes 60 le code ASCII (Ame-rican Standard Code for Information Interchange).On dit que cest un code 7 bits, cest--dire que chaque caractre est cod par uneliste de 7 chiffres gaux 0 ou 1 : combien de caractres diffrents peut-on ainsicoder ?...Par exemple les codes 65 90 reprsentent les majuscules, les codes 97 122 repr-sentent les minuscules, dans le mme ordre. Il suffit donc de soustraire 32 au codede la minuscule pour obtenir la majuscule correspondante.Une fonction XCAS donne ces nombres : (caractre) et ([liste denombres]) effectue lopration rciproque.

    2

    XCAS offre la possibilit dutiliser les instructions prcdentes traduites en franais.

    Les boucles for deviennent des boucles , avec la mme syntaxe quen anglais ou bienavec une syntaxe diffrente :

    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 mme syntaxe quen anglais oubien avec une syntaxe diffrente :

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

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

    Et cest pareil avec au lieu de if :

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

    36

  • & '!(

    ;}

    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 fentre tortue pour permettre de jeunesenfants de sinitier la programmation en dessinant. Vous consulterez laide trscomplte 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 gnrale:

    Nom_de_la_procedure:(variables)

    le programme proprement dit

    37

  • 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 rsultat escompt...On peut rendre le rsultat plus convivial :

    double:(x)

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

    On concatne ainsi des chanes avec un . .

    La syntaxe suit le mme principe :

    p:1: k 1 7 1 p:p*k

    ;

    On calcule ainsi 7 !On aurait pu crire une procdure pour faire plus joli :

    factofor:(n) k,p;

    p:1: k 1 7 1

    p:p*k

    ;

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

    38

  • & '!(

    1!

    Reprenons le calcul prcdent avec un test darrt tant que:

    p:1: k:1: k

  • les suites

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

    On peut aussi utiliser l oprateur $ pour des suites dfinies par une formule explicite :

    p^2p15;m5;

    les listesNotez quelques fonctions utiles :

    s1:i i-22; 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 sL2[3]; / / e x t r a i t l e 3 me o p r a n d eL2[35]; (L1,x->x>0)(L2,b32); (L1,2z); (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 chanes de caractres

    C:"-&_ehdslqjbch123+4/*5-6*^";K:"tralala"; F:", pouet pouet !"; H:""G:K.F.H

    (C,5,2) renvoie une partie de la chane C de longueur 2 partir du 6e ca-ractre :

    ("123456789",4, 2)

    Pour des utilisations particulires, je vous renvoie laide. Voici un petit programme quitransforme un nombre entier en une chane de lettres qui peut servir pour le dcodageRSA.

    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 ef 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

  • &&

    # $

    Pour excuter un fichier dans Scilab, on peut taper nomDuFichier. Le logiciel Scilabnaime pas les appels rcursifs des fichiers pour les excuter dans des procdures : sa pilesature. Il vaut mieux tout placer dans des fonctions. On excute les fichiers juste pour dfinirles fonctions, qui, elles, peuvent tre appeles dans des procdures intriques.Les instructions de contrle de flux de Scilab sont dcrites dans le chapitre Programming delaide en ligne. La syntaxe na rien de surprenant. Voici une boucle qui stocke des nombresdans un tableau vertical, en affichant llment chaque tape.

    t1:3T[] it,

    (i,i);T[T;i];

    T

    On construit maintenant une fonction test qui effectue diffrentes procdures suivant lesvaleurs de la variable. Il faut noter la manire dont sont protges les apostrophes dans leschanes de caractres. La premire boucle est tout ordinaire.

    ytest(x)a"Cest ltape"btroisyx x3

    (b,a) ;

    or([xt]) ;

    y(x)+" nappartient pas t"

    La seconde boucle permet de terminer la fonction rapidement si la variable x appartientau tableau t dja dfini. Elle peut tre crite aussi bien

    and([x~t]) y(x)+" nappartient pas t"

    Pour exploiter la fonction test, il suffit dexcuter la boucle

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

    Le logiciel Scilab travaille essentiellement avec des fonctions, des nombres rels en virguleflottante, des chanes de caractres, des tableaux forms partir de ces lments, et des fonc-tions. En gnral, il ny a pas dclarer de types de variables.

    41

  • Deuxime partie

    CALCUL

  • Arithmtique

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

    " %

    $

    Pour calculer avec 1000 dcimales, taper dans un terminal :

    bc -;

    on obtient une rponse du genre :

    Rponse 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 prcision voulue en ajustant la variable , et

    4*(1)

    pour obtenir le quadruple dArctan(1) :

    Rponse du logiciel

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

  • 99605187072113499999983729780499510597317328160963185950244594553469\08302642522308253344685035261931188171010003137838752886587533208381\42061717766914730359825349042875546873115956286388235378759375195778\18577805321712268066130019278766111959092164201988

    Le temps de rponse est variable suivant les machines, et augmente fortement quand on aug-mente encore la prcision.Le rsultat est-il juste ?

    On rgle la prcision avec / ou /01023 qui doit tre un nombre entre 1 et 1000

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

    Voir aussi 5.1 page 56.

    3

    On rgle la prcision avec , puis on utilise :

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

    La prcision daffichage est donne ou fixe par linstruction \.\p4

    4*(1)\p 10004

    Le rsultat est-il le mme que pour Bc ?

    4

    La prcision des calculs approchs est donne par linstruction

    14()

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

    ((4,1000)

    Pour basculer la valeur de la prcision, taper

    46

  • ! ) *!

    4(1000)((4)

    Pour revenir la prcision prcdente, taper

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

    Mais la prcision maximale est conserve pour la valeur .

    )

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

    gnuplot> 2**(30)

    Rponse du logiciel

    1073741824

    gnuplot> 2**(31)

    Rponse du logiciel

    -2147483648

    gnuplot> 2**(32)

    Rponse du logiciel

    0

    gnuplot> 2**(-30)

    Rponse du logiciel

    9.31322574615479e-10

    gnuplot> 2**(-31)

    Rponse du logiciel

    -4.65661287307739e-10

    47

  • gnuplot> 2**(-32)

    Rponse du logiciel

    gnuplot> print 2**(-32)^

    undefined value

    Le logiciel rpte la dernire instruction accompagne dun commentaire pour avouer sonimpuissance.

    "' 1

    Le logiciel Bc dtecte naturellement une entre en base 16 avec la saisie des chiffres A, B, C, D,E. Le rsultat par dfaut est en base 10.Voici un exemple daddition en base 16 avec le rsultat en base 7 :

    7F+E

    et Bc fournit le rsultat 41.Pour rentrer des nombres dans une base diffrente de 10, il faut changer la variable ,ce qui demande un peu dattention. Dans la retranscription suivante, les instructions saisiessont repres par un point-virgule final.

    % bc -lq;

    Rponse du logiciel

    10

    ;

    Rponse du logiciel

    10

    7;;A;

    Rponse du logiciel

    13

    48

  • !

    66+22;

    Rponse du logiciel

    121

    A;A;2*7;

    Rponse du logiciel

    14

    ;

    "

    Les congruences de nombres entiers sobtiennent souvent dans les logiciels de calcul par uneinstruction qui ressemble mod(x,p). Les rsulats ne sont pas toujours positifs, cest--diredans lintervalle [0, p 1]N.Cherchons reprsenter lentier 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 sr calculer dans Z/nZ :

    49

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

    donne

    Rponse du logiciel

    4 % 9

    Si lon veut connatre le chiffre des units 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)

    rpond instantanment que le reste est 2. On peut prfrer demander directement le resteavec la commande (n,p) :

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

    Si lon veut limage de p%n par lapplication canoniquement associe de Z/nZ sur N, il suffitdutiliser %0 :

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

    Pour dautres utilisations du calcul modulaire, voir le thme 7.2 page 247 et la section f.page 86.

    , 2 %

    !+

    Le sujet est plus que vaste ! Contentons-nous dune petite exprimentation sur le thormedes nombres premiers.

    Conjectur par GAUSS (encore lui !) et LEGENDRE, approch par TCHEBYSHEV, ce thorme afini par tre prouv indpendamment et simultanment par Jacques HADDAMARD et Charles-Jean de LA VALLE POUSSIN en 1896.

    50

  • # +

    Thorme des nombres premiersEn dfinissant, pour tout rel positif x, le nombre (x) comme le nombre de

    nombres premiers infrieurs x, le thorme des nombres premiers snonce de lafaon suivante :

    (x) xln(x)

    Construisons une fonction qui compte le nombre dentiers premiers infrieurs un nombredonn n. On utilise qui teste si un entier est premier.On peut dabord penser une dfinition rcursive :

    pir(n):{(n

  • Il existe en effet deux tests : (n) et (n). Le premier test est sr maispeut devenir trs lent pour de trs grands nombres. Le deuxime est plus rapide mais nestfiable que pour une rponse ngative. Sil rpond 1, on peut juste penser que le nombre a debonnes chances dtre premier car il a pass un certains nombres de tests de primalita.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 1ln(x)1 :

    p:polygone_ouvert((([50*k,pin(50*k)]),k02000)) / / o n r e l i el 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),x3100000,+ 7)

    En 81 secondes, on obtient :

    Rponse du logiciel

    Les courbes reprsentatives de et x xln x1sont extrmement proches

    /x x

    2

    1

    ln tt

    GAUSS conjectura la fin du XVIIIe sicle que (x) tait quivalent Li(x) au voisinage de +.tablissons un petit tableau comparatif avec XCAS. Mais dabord, dfinissons 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

  • , + p-%!

    Nous obtenons :Rponse 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 srie dapproximations plus ou moins fines delintgrale : mthode des trapzes, point milieu, Romberg, etc., la plus fine tant la dernire.Modifions donc notre dfinition 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 crer un tableau comparatif :

    [["x","(x)","Li(x)","1/((x)-1)"],([10^k,pin(10^k),Li(10^k),(1/((10^k)-1))],k28)]

    et on obtient, aprs 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

    Rponse du logiciel

    . 2 p3

    Le logiciel Gp connat les nombres p-adiques. Il suffit de les rentrer avec la notation de Landaudes dveloppements limits.

    a:a49+O(5^3)a/5a*5(a)

    53

  • quations numriques

    Logiciel(s) abord(s) : XCAS MuPAD

    , # !"#$

    Comme pour de nombreux logiciels de calcul formel, XCAS permet dobtenir dans certains casles solutions dune quationa sous forme exacte grce la fonction :

    (x^2+3*x+10) / / 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+10,t)(x^2+3*x+1) / / 0 p e u t t r e o m i s(x^2+x+10) / / 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+10,x)(x^2+a*x+10,a)

    Notez que le paramtre a est considr par dfaut comme tant rel. Si lon 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 hypothses sur a :

    (x^2+a*x+10,x)((x^2+a*x+10,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+10,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)+1000)

    et cest une approximation numrique que nous obtenons.

    aNous examinerons plus prcisment les quations polynomiales la section 5.2 page 61.

  • !

    Configuration du CAS

    Selon les cas, il faudra veiller bien configurer le CAS b :- ou non pour avoir des rsultats exacts ou approchs;- 8 ou non pour avoir des rsultats (exacts ou approchs) sous forme relleou complexe;- 8 ou non pour travailler avec des variables complexes ou relles.

    Il existe de nombreuses mthodes dapproximation. La plus clbre est celle de Newton. Onpeut lutiliser directement sous deux formes :

    (x^2-2,x1) / / x1 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-20,x1,newton_solver)

    Pour connatre la prcision de notre calcul :

    (x^2-2,x1)-(2)

    Nous avons donc 15 bonnes dcimales.Si nous en voulons plus, il existe deux appels optionnels la fonction newton : le nombremaximum ditrations et la prcision minimum recherche. Par dfaut, ces valeurs sont res-pectivement fixes 12 et 108.

    (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 dfaut fix 10. Si nous voulons plus de prci-sions, il faut faire varier / :

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

    et nous avons 100 bonnes dcimales.Nous avons dailleurs besoin de moins de 12 itrations pour arriver ce rsultat. Voici un petitprogramme indiquant le nombre ditrations ncessaires pour obtenir une prcision donne :

    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

  • #

    k:k+1;} un+" est la solution trouve "

    + (pre) + " prs aprs "+ k +" itrations";}

    Excutons ce programme :

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

    Il nous assure que 8 itrations sont ncessaires pour obtenir AU MOINSc 100 bonnes dci-males...Pour des cas plus lourds , nous pouvons utiliser la mthode de Steffenson qui acclre cellede Newton :

    (x^2-20,x0,1-10,steffenson_solver)

    Bizarre... Cest quen fait la mthode de Steffenson comme celle de Newton est trs rapide,mais elle ncessite une bonne premire approximation de la racined.Mieux vaut donc rentrer :

    (x^2-20,x1,1-10,steffenson_solver)

    Cet inconvnient est encore plus mis en valeur avec lquation x + ln(x)+100 = 0. En effet, sion appelle f la fonction associe, lim

    x0 f (x) = et f(e100

    ) = e100 100+100 > 0, donc lasolution appartient lintervalle ]0 ; e100[, ce qui indique que la solution est assez petite...

    (x+(x)+1000,x(-100))-(-100)

    nous indique que nous sommes malgr tout assez proche de e100.

    Pour un choix de la mthode de rsolution numrique dun systme dquations linaires ounon, voir lexemple page 196.

    Format de nombre

    Le format de nombre approch utilis par XCAS est par dfaut le format double (53bits de prcision relative, soit environ 1016). Si /01023

  • !

    Calcul avec des flottants

    Attention au calcul avec des flottants : laddition nest pas toujours associative, 1xavec x de lordre de 10100 peut tre gal 1, enfin (0,13)0,3 nest pas forcmentnul car les nombres sont cods en base 2, donc seuls les entiers et les rationnelsdont le dnominateur est une puissance de 2 peuvent tre reprsents exactement.Ceci entrane des rsultats qui peuvent surprendre. Voir le cours de maths assistespar ordinateur de Bernard Parisse sur http://www-fourier.ujf-grenoble.fr/~parisse/francais.html\//mat249

    , # /#0

    Loutil gnral est solve :

    (x^2-4*x+30,x); (x^2-x+30,x);

    Cest assez classique. Ce qui lest moins, cest la capacit de rsoudre des quations dpen-dant de paramtres.

    S:(x^2 - s*x+p0,x):

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

    ((x^2-4*x+30,x));

    La rponse /5 32nous indique quil sagit dun ensemble. Ceci a une grande importance sinous voulons rinvestir les solutions trouves. Pour en revenir notre quation du deuximedegr, lensemble des solutions comportera deux lments, ou plutt oprandes en langageMuPAD. Nous pouvons demander le premier lment de cet ensemble grce la commande :

    (S,1);

    qui affiche le premier oprande de lensemble S.Nous pouvons tre galement amens rsoudre des quations non pas sur C mais sur unintervalle donn. Par exemple, si nous voulons rsoudre lquation x2 = 4 sur R+, nous indi-querons MuPAD que notre x doit tre positif :

    (x>0);

    (x^24,x);

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

    58

  • # '!(

    N NonNegInt N PosInt N NegIntZ Integer 2Z Even 2Z+1 OddQ Rational Q+ PosRat Q NegRat

    R Real R+ NonNegative Q+ NonNegRat

    R+ Positive R Negative C NonZeroiR Imaginary iZ IntImaginary P Prime

    Ensembles de nombres et MuPAD

    (x 2--4):(x^2-40,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 rsoudre galement des systmes linaires :

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

    Il existe des outils dalgbre linaire plus adapts que nous verrons plus tard.On peut rsoudre des inquations

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

    des quations trigonomtriques

    ((x)(x),x);

    vous dimaginer dautres 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)+10));

    ou numeric::solve(equation,inconnue)

    --(x+(x)+10,x);

    Au-del, MuPAD semble jetter lponge :

    (()(x+(x)+100));

    puisque la rponse propose est lensemble vide.Mais MuPAD utilise la mthode de Newton et a donc besoin dune bonne approximation dedpart :

    --(x+(x)+100,x1e-50((-10)),93);

    indique MuPAD de chercher une approximation de la solution dans [1050,e10].

    59

  • Polynmes

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

    Problmatique : Manipuler les oprations lmentaires sur les poly-nmes, notamment la recherche de racines.

    . # $

    Le logiciel Scilab peut traiter les polynmes. On peut dfinir la variable :

    x(0,x)

    dfinir le polynme x2 + x +1 :Px^2+x+1

    et calculer ses racines :

    (P)

    Le polynme peut tre construit avec ses coefficients

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

    Il est noter que si lon ne prcise pas le drapeau coeff, le polynme est dfini par sesracines :

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

    Le polynme driv sobtient comme suit :

    (R)

    La matrice compagne du polynme P est obtenue par :

    A(P)

    On peut retrouver le polynme :

  • " #$

    (x*()-A)

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

    (A)

    Voici lexemple dune session Scilab qui cherche les racines de x3 + x +1 ; les commandessont marques (->) :

    Rponse 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 polynmes et les fractions rationnelles en gnral. Trouver lesracines du polynme P se fait comme suit :

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

    La drive est la drive formelle de toutes les fonctions :

    (P(x),x);

    Voici lexemple dune session Maxima qui cherche les racines de x3 + x +1 ; les commandessont marques (Ci) et les rponses (Di) :

    62

  • ,&

    Rponse 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 polynmes plusieurs variables.On rentre le polynme de manire symbolique :

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

    Trouver les racines du polynme P se fait comme suit :

    (P(x))

    La drive est la drive formelle de toutes les fonctions :

    (P(x),x)

    On peut obtenir un polynme alatoire de variable u, de degr infrieur ou gal 6 et coef-ficients entiers de valeur absolue strictement infrieure 100.

    (u,6)

    Voici lexemple dune session XCAS qui cherche les racines de x3 + x+1 ; les commandes sontspares des rponses par des lignes de tirets :

    63

  • " #$

    Rponse 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.1615414i,0.34116390191.1615414i]

    Rponse du logiciel

    Pour un autre exemple dactivit sur les polynmes, voir aussi la section b. page 151.

    . # %

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

    Trouver les racines du polynme P se fait comme suit :

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

    La drive est la drive formelle de toutes les fonctions :

    (P(x),x)

    Voici lexemple dune session Gp qui cherche les racines de x3 + x +1 :

    64

  • ,# .

    Rponse 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 polynmes comme les logiciels prcdents.Trouver les racines du polynme P se fait comme suit :

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

    La drive est la drive formelle de toutes les fonctions :

    /(x) P

    Voici lexemple dune session Yacas qui cherche les racines de x3 + x +1 :Rponse 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 traits ici prsentent de nombreuses fonctions arithmtiques sur lespolynmes.

    65

  • Fonctions

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

    Notions informatiques : Dfinir une fonction. Utiliser une fonction.

    Problmatique : Les fonctions sont centrales dans lutilisation deslogiciels de calcul. Tous les logiciels nont pas les mmes conven-tions pour dfinir une fonction mathmatique, ni pour lvaluer enun point. Les fonctions sont construites partir doprations l-mentaires et des fonctions classiques qui sont dans la bibliothquedu logiciel. Tous les logiciels nont pas la mme bibliothque : lafonction scante qui est connue de Maxima et XCAS ne lest paspour Gp ; seul Maxima connat la scante hyperbolique. . .. La biblio-thque de Bc mme avec loption : est trs rduite.

    5 # %

    Le logiciel Gp accepte les fonctions comme des expressions donnes par un galit-dfinition.Pour dfinir la fonction machin, il suffit dentrer linstruction :

    machin(x)1/(x)

    Pour calculer sa valeur en 2, on tape

    machin(2);

    5 # /+

    Le logiciel Maxima considre les galits comme des quantits valuer ; une galit-dfinitionest indique par linstruction -.

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

    Lvaluation demande forcment du travail, suivant le type de rsultat que lon dsire.

    machin(2);

    donne la valeur algbrique ;

  • % &

    (machin(2));

    donne une valeur approche et

    (machin(2));

    donne un rsultat quivalent.

    5 # !"#$

    Le comportement de XCAS est sans surprise au vu de ce qui prcde.

    machin(x):1/log(x)

    dfinit une nouvelle fonction tout comme :

    machin:x->1/log(x)

    machin(2)

    donne sa valeur algbrique au point 2 et

    (machin(2))

    en donne lapproximation 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 dfinir la fonction drive dune fonction :

    fp:

    (+2*);fp(3)

    68

  • /&

    Fonction et expression

    Comme en mathmatiques, 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 lon prfre 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 annes des logiciels de gomtrie dynamique qui sont utilissau collge et au lyce. Cependant, ntant vous qu dessiner ou ventuellement donnerquelques rsultats numriques, leur utilisation est limite et leur syntaxe, par souci dergono-mie informatique, loigne les lves du problme mathmatique.XCAS cependant, par sa puissance et sa souplesse, permet de coller au cours de mathma-tiques tout en permettant dobtenir des rsultats performants.Considrons par exemple le problme classique suivant donn en classe de Seconde :On considre 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 laire du rectangle AMNP en fonction de la position de M.Commenons par ouvrir une fentre de gomtrie en tapant simultanment sur et puis dfinissons les points A et B dans un repre judicieusement choisi :

    A:(0,0) / / p l a o n s AB:(0,-4) / / p l a o n s B t e l q u e AB4 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

  • % &

    Dfinissons ensuite le point C tel que le triangle ABC soit direct, rectangle en A et que lon aitAC = 34 AB laide de la commande : (A,B,3/4,C)

    Crons maintenant un rel quelconque de [0; 3] que lon pourra faire varier la souris laidede la commande :

    t:(0 3)

    Dfinissons maintenant le point M. Nous qui sommes moiti mathmaticiens, nous savonsque nous allons crer en fait une fonction de [0; 3] dans le plan P qui un rel x de lintervalle[0 ; 3] associe le point du plan de coordonnes (0 ; x).Pour les lves, la notation :

    M(x):(x,0)

    est naturelle et rappelle que le point M dpend de la donne de son abscisse x.Pour dfinir N, commenons par dfinir la perpendiculaire en M la droite (AC). La syntaxeest tout fait naturelle grce (Point,Droite). Noublions pas quen fait d estune fonction de x :

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

    Dfinissons ensuite N comme lintersection de d et (BC) grce :

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

    Pour obtenir P, nous commenons par dfinir la parallle (AC) passant par N (qui est biensr une fonction de x) laide de (Point,Droite) :

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

    puis lintersection de D et (AB) :

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

    Il ne reste plus qu dfinir le rectangle APNM grce la commande :

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

    et dessiner le rectangle dpendant du paramtre t :

    (R(t),,+)

    En faisant varier t la souris, le rectangle bouge .Dfinissons maintenant la fonction qui x associe laire du rectangle :

    f(x):(R(x))

    Donnons son expression simplifie :

    (f(x))

    70

  • /&

    43x2+4x

    Rponse du logiciel

    Dfinissons le point X de la courbe reprsentative de f dabscisse t :

    X:(t,f(t))

    Traons enfin la courbe reprsentative de f laide de la fonction :

    (f(x),x03,)

    Voici une visualisation statique :

    Le rectangle et la courbe reprsentative de f

    Pour une autre activit gomtrique de Seconde, voir section b. page 95.

    71

  • % &

    assume ou element ?

    Il aurait peut-tre t plus simple pour des lves 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 prcdent, de remplacer :

    t:(03)

    par :

    (t[1,0,3])

    o 1 reprsente une valeur arbitraire modifiable la souris.On te ensuite toute rfrence la variable formelle x qui devient inutile puisque tgarde un rle formel.Par exemple, le code contient :

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

    5 # 1

    Dans la calculette en mode texte appele par linstruction :, la nouvelle fonction estdfinie comme suit :

    machin(x){ 1/(x)}

    Lvaluation se fait naturellement.

    machin(2)

    5, # $

    Dans le logiciel de calcul matriciel Scilab, la dfinition dune fonction est plus dlicate.

    ymachin(x)y1/(x)

    Lvaluation se fait naturellement en un point.

    72

  • /, .

    machin(2)

    Lvaluation en rafale qui est possible avec Scilab requiert un peu dattention. En utilisant cequi prcde,

    t2:9machin(t)

    ne donne pas le rsultat voulu. Les oprations lmentaires peuvent tre forces la placedes oprations matricielles en les prcdant dun point : ; la place de ;. Lexponentiellematricielle et lexponentielle coefficient par coefficient sont distinctes. Pour pour-suivre lexemple, il faut alors dfinir la fonction en utilisant la division ponctuelle : attention lespace derrire le nombre 1 !

    ymachin(x)y1 ./(x)

    t2:9machin(t)

    On a le bon rsultat, ce qui permet de tracer un graphe directement :

    (t,machin(t))

    Le nombre de points dvaluation est volontairement limit.Lvaluation marche avec des matrices quelconques :

    v1:5uv*tmachin(u)

    5. # 4

    Le logiciel Yacas dfinit les fonctions de manire 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 approche, il suffit de le rclamer pour le rsultat prcdent.

    ((%)

    73

  • % &

    55 #

    Le logiciel Octave traite les matrices. Pour dfinir des fonctions, la procdure ressemble celle de Scilab.

    ymachin(x)y1 ./(x) ;

    machin(2)t[2;3]machin(t)

    Le point-virgule est ncessaire dans le corps de la dfinition de la fonction, car sinon la ma-chine retournerait deux fois lvaluation.

    74

  • Algbre linaire

    Logiciel(s) abord(s) : Scilab Octave Maxima XCAS

    Notions informatiques : Les logiciels Scilab et Octave sont avanttout destins au calcul matriciel. Maxima peut faire des calculs sur lesmatrices, XCAS est destin tout calcul...

    Problmatique : 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 associe sobtiennent par multiplication :

    tv*uAu*v

    On obtient les dimensions et le rang directement

    "(u)"(A)(A)

    Le logiciel Scilab prsente une sorte de produit tensoriel ;

    u .*. A

    La norme dun vecteur est par dfaut la norme euclidienne (v). On peut rclamer lanorme Lp : (v,p) ou L : (v,inf).Pour les matrices, ces instructions donnent les normes linaires associes aux normes Lp surles vecteurs, au sens des applications linaires : la norme de A est le maximum des normesde Av pour v parcourant la boule unit. Linstruction (A) donne la norme spectrale,cest--dire le maximum des modules des valeurs propres.

  • '

    La norme sur les matrices donne par la formule

    tr(

    tAA), souvent utilise, est obtenuepar linstruction (A,fro).

    5 ) *+ )"

    On se donne un systme de trois quations trois inconnues dont les donnes sont alatoires.

    A(3,3)B(3,1)V(A)*B

    On vrifie que le vecteur AVB a des coordonnes proches de la prcision de la machine.A*V-B

    On se place maintenant dans un cas dgnr : on cherche lespace propre associ la valeurpropre 1.A[0 1 0;1 0 1;1 1 0]R((A,t))BA-R(2)*(3,3)

    Lespace propre est engendr par la famille V ici rduite un vecteur.

    Z"(3,1)[U,V](B,Z)

    Ce cas particulier se rsout aussi par linstruction

    V(B)

    5 )!

    Pour obtenir les vecteurs propres v p et la matrice diagonalise D correspondant la ma-trice A, il suffit de taper :

    [vp,D](A)

    On vrifie en tapant

    A*vp(:,1)/D(1,1)A*vp/D

    La dcomposition de Schur donne les valeurs propres sur la diagonale de la matrice triangu-laire T.

    [U,T](A)

    76

  • 0

    6 #

    La syntaxe de base dOctave est commune avec Scilab. Les instructions ci-dessous sont en-core valables.

    u[2;3;5]v[7 11 13]tv*uAu*v"(u)"(A)(A)

    Les instructions ci-dessous donnent aussi des rsultats similaires.

    A(3,3)B(3,1)V(A)*BA*V-B

    Linstruction (A) donne les coefficients du polynme caractristique de A. On peut cal-culer le pseudo-inverse de la matrice dgnre.

    p(A)R(p)BA-R(2)*(3,3)c(B)c*BB*c

    La dcomposition de Schur est la mme que pour Scilab :

    [U,T](A)

    6 # /+

    On dfinit une matrice avec :

    (%i1) ([1,2],[3,4]);

    On calcule son dterminant :

    (%i2)

    (%i1);

    Elle est donc inversible. On demande son inverse :

    (%i3) (%i1);

    Calculons le produit pour vrifier. On utilise le produit non commutatif symbolis par , unpoint :

    (%i4) )%i1%o3;

    77

  • '

    et on obtient bien lidentit.Les valeurs propres sobtiennent avec :

    (%i5) (%i1);

    On vrifie quil sagit bien des solutions du polynme caractristique donn par :

    (%i6) ((%i1,x)=0,x);

    On calcule la puissance quatrime. On utilise

  • 0 1 ! 2 )

    2

    (A)

    Rponse du logiciel

    [[-1,3]]

    Dterminons les puissances entires de B =(

    1 a

    0 1

    )

    B:[[1,a],[0,1]]

    Calculons jusqu la puissance cinquime :

    (B^2);(B^3);(B^4);(B^5)

    [1 2a

    0 1

    ],

    [1 3a

    0 1

    ],

    [1 4a

    0 1

    ],

    [1 5a

    0 1

    ]Rponse du logiciel

    7

    Soit A =

    1 0 a

    1 a 1a 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 dterminant :

    (

    (A)0,a);

    Rponse du logiciel

    [-1,0,1]

    Il y en a trois.On peut ensuite dterminer linverse de cette matrice :

    (A)

    79

  • '

    a

    ((a)3)+a 0((a)2)

    ((a)3)+aa1

    ((a)3)+a((a)2)+1((a)3)+a

    a+1((a)3)+a

    ((a)2)((a)3)+a 0

    a((a)3)+a

    Rponse du logiciel

    ) ) ! #

    &8

    Crons une matrice :

    M:[[1,0,1],[0,1,1],[1,1,0]]

    1 0 1

    0 1 1

    1 1 0

    Rponse du logiciel

    Compltons-la par la matrice identit de mme taille. Profitons-en pour crer une petite pro-cdure avec la commande (M1,M2) qui place la matrice M2 au bout de la matriceM1 si elles ont le mme 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 aId:(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

    Rponse du logiciel

    80

  • 0 1 ! 2 )

    2

    Pour effectuer une combinaison linaire des lignes, on peut utiliser 9.

    (k,M,i,j) quirenvoie la matrice construite partir de M en remplaant la ligne L j par L j +kLi . Noubliezpas 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

    Rponse 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

    Rponse 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 1212

    12

    Rponse du logiciel

    On effectue L1 L1 L3 :T:9.

    (-1,T,2,0)

    81

  • '

    1 0 0 12

    12

    12

    0 1 1 0 1 0

    0 0 1 1212

    12

    Rponse du logiciel

    et enfin L2 L2 L3 :T:9.

    (-1,T,2,1)

    1 0 0 12

    12

    12

    0 1 0 1212

    12

    0 0 1 1212

    12

    Rponse du logiciel

    Il ne reste plus qu extraire la matrice de droite avec une petite procdure maison :

    JG(A):{p:(A);A[0p-1,p2*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

    Rponse du logiciel

    et on a bien le produit des deux matrices :

    MM*M

    82

  • 0 1 ! 2 )

    2

    qui vaut :

    1 0 0

    0 1 0

    0 0 1

    Rponse du logiciel

    Bien sr, on aurait pu obtenir la matrice directement avec (Matrice) qui donne linversedune matrice :

    (M)

    Mais cette session peut tre loccasion de montrer le mcanisme de calcul des tudiants.

    !0 9

    Nous ne rentrerons pas dans les dtails probabilistes.Les chanes de Markov sont issues de la thorie des probabilits et utilisent des outils dal-gbre linaire qui nous intressent ici. Elles permettent de simuler des phnomnes alatoiresqui voluent au cours du temps. Nous allons les dcouvrir travers ltude dun exemplesimple.Zlot, Brzxxz et Morzgniouf sont trois villes situes respectivement en Syldavie, Bordurie etBouzoukstan. Des trafiquants de photos ddicaces du groupe ABBA prennent leur marchan-dise le matin dans nimporte laquelle de ces villes pour lapporter le soir dans nimporte quelleautre. On notera pour simplifier V1, V2 et V3 ces villes et pi j la probabilit quune marchandiseprise le matin dans la ville Vi soit rendue le soir dans la ville V j . La matrice (pi j )16i6316 j63est appele matrice de transition de la chane 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 linformation XCAS :

    P:[[.8,.3,.2],[.1,.2,.6],[.1,.5,.2]]

    Vrifions au passage que la somme des lments de chaque colonne vaut bien 1. On utilise :

    (P)

    Rponse du logiciel

    [1.0,1.0,1.0]

    83

  • '

    Les trafiquants se promenant de ville en ville, il peut tre utile de visualiser leurs dplacementspar 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 probabilits, on appelle vecteur dtat tout lment (x1, , xn ) deR+n tel que x1+ +xn =1.Ainsi, x(k) =

    (x(k)1 , x

    (k)2 , x

    (k)3

    )est un vecteur dtat.

    On montre que les vecteurs dtat de la chane sont lis par la relation

    x(k) = P x(k1)

    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 dune semaine ?

    P^7*X

    563.887400

    226.069100

    210.043500

    Rponse du logiciel

    Le parrain voudrait que la proportion moyenne de trafiquants soit stable dun jour sur lautre.Il recherche donc les vecteurs dtat x vrifiant lquation P x = x.

    84

  • 0 1 ! 2 )

    2

    On recherche donc le sous-espace propre associ la valeur propre 1.Il faudrait dabord vrifier que 1 est bien une valeur propre :

    (P)

    Rponse du logiciel

    1.0,0.5472135955,-0.3472135955

    On aurait pu chercher les racines du polynme caractristique. Comme renvoieles coefficients du polynme caractristique, on utilise '(liste,variable) quirenvoie le polynme 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.0005570.140000 0.094721 0.005279

    0.130000 0.084721 0.004721

    Rponse du logiciel

    Lordre correspond aux valeurs donnes par . Pour le vrifier, extrayons le premiervecteur colonne avec (matrice,numro 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 laide de la com-mande :

    w:(P-(3))

    Rponse du logiciel

    [[-2.615384615,-1.076923077,-1]]

    On regarde les doubles crochets : il sagit donc dune liste de liste. Il vaut donc mieux dfinirle vecteur comme tant le premier lment de cette liste :

    w:(P-(3))[0]

    85

  • '

    Rponse du logiciel

    [-2.615384615,-1.076923077,-1]

    Cest bien un vecteur cette fois.On peut le rendre unitaire puisquil sagit dun vecteur dtat avec :

    (w)

    Rponse du logiciel

    [-0.8717948718,-0.358974359,-0.3333333333]

    Avons-nous dfini le mme espace vectoriel ? Plusieurs mthodes soffrent nous. On peutpar exemple dterminer le sous-espace engendr par ces deux vecteurs avec etvoir quelle est sa dimension :

    ([v,w])

    Rponse du logiciel

    [[-2.615384615,-1.076923077,-1]]

    Un seul vecteur : v et w sont donc bien lis.On aurait pu tout simplement normaliser v :

    (v)

    Rponse du logiciel

    [0.8717948718,0.358974359,0.3333333333]

    et la colinarit saute aux yeux.Pour une tude sur la rduction de formes quadratiques et la recherche de valeurs propres,voir la section b. page 208.

    !: ;

    Nous ne sommes pas obligs de travailler avec des matrices coefficients dans R. Survolonspar exemple le chiffrement de Hilla.

    aDALANG , Robert C./CHAABOUNI , Amel Algbre linaire . Lausanne: Presses polytechniques et universitaires ro-mandes, 2001.

    86

  • 0 1 ! 2 )

    2

    On considre les 26 lettres de lalphabet plus un espace caractris par @.On voudrait coder chaque caractre par un nombre, en commenant par 0 pour @, puis 1pour A, 2 pour B, etc. en finissant par 26 pour Z.La commande nous permet dobtenir le code ASCII dun caractreb.Le problme, cest que A est associ 65.Nous allons donc dcaler les codes ASCII pour notre usage :

    code(c):(x->(x-64),(c))

    On soustrait 64 chaque lment de la liste c. Pour effectuer lopration inverse, on utilise qui renvoie le caractre 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 laide dun 3-chiffrement de Hill le message suivant :

    Je ne suis pas un numro, 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 constitue dune matrice carre de taille 3 coefficients dans Z/27Z etinversible :

    A:[[1,22,25],[0,25,1],[25,3,1]]%27

    1%27 5%27 2%270%27 2%27 1%272%27 3%27 1%27

    Rponse du logiciel

    Calculons son dterminant :

    (A)

    bCf section e. page 33.

    87

  • '

    Rponse 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%274%27 6%27 2%27

    8%27 13%27 4%27

    Rponse du logiciel

    Codons le message clair en multipliant la matrice par A puis en transformant la transpose dela matrice en liste :

    cryptemod:'((A*clair))

    Le problme, cest que XCAS utilise les restes symtriques. Nous allons donc ruser en utilisant%0 qui permet dobtenir 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)

    Rponse du logiciel

    LQVPQNDUGNPENPAEZ@RYUTFEULHYJXVPLEZ@OJOOQPQKETQF

    (

    On cre une liste avec message :

    Lb:code(message)

    On cre la matrice 3 lignes associe :

    brouille:('(Lb,3))%27

    On utilise linverse de la cl pour dcoder :

    clarifie:A^(-1)*brouille

    88

  • 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)

    Rponse du logiciel

    JE@NE@SUIS@PAS@UN@NUMERO@JE@SUIS@UN@HOMME@LIBRE@

    Un espace sest ajout au bout pour obtenir un nombre de caractres multiple de 3.Pour une activit plus sophistique sur le codage, voir section 7.2 page 247.

    89

  • Gomtrie affine

    Logiciel(s) abord(s) : Scilab XCAS

    Problmatique : Manipuler des objets lmentaires de gomtrie af-fine.

    8 # $

    Utilisons le calcul matriciel dans le logiciel Scilab.

    "

    On cherche la pente a et lordonne lorigine b dune 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 ordonnes, 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 vrifie en tapant :

    a*U+b

    qui donne V.

    8 # !"#$

    Les fonctions de gomtrie affines sont... innombrables, et laide est exhaustive.

  • ) * +

    Vous pouvez par exemple tracer une droite de diffrentes manires. On ouvre une session 2Den tapant :

    (2*x+5*y-10) / / 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 lespace 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+z0,x2*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 symtrie orthogonale daxe la droite dquation y = x :d:(yx) / / o n t r a c e l a d r o i t eM:(4,2) / / o n t r a c e un p o i n t q u e l c o n q u em:(d,M) / / o n t r a c e s o n s y m t r i q u e

    Dplacement dun point la souris

    Notons que lon peut faire bouger M la souris en se plaant en mode Pointeur.

    On place le pointeur de la souris devant le point M : un symbole apparat. Faitesun clic droit en maintenant enfonc et dplacez volont le point M.

    P:(1,-3) / / un a u t r e p o i n tp:(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

  • 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 dautres possibilits, voir la section 5.5 page 215 sur les tangentes une ellipseet le thme sur le thorme de Pappus page189.

    ( ,

    On ouvre une fentre 3D en tapant . On peut par exemple tudier un cube :

    P:([2,2,-2]) / / un p o i n t Pcube(P,4) / / un c u b e d a r t e 4 d e s o m m e t PM:((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

  • ) * +

    Paralllisme dans un cubePour faire du calcul formel, on prend une longueur darte quelconque. On cre un cube ABC-DEFGH darte 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 fP:((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

    Rponse du logiciel

    On peut demander dautres longueurs :

    ((A,P))((A,G))

    1

    2sqrt(6)a a

    3

    Rponse du logiciel

    Pour obtenir la figure, on fixe une valeur pour a :

    94

  • 3

    Cube obtenu avec a=5

    Pour tudier des sections planes de surfaces avec XCAS, voir section 5.7 page 220.

    . (((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),x06,) / / 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

  • ) * +

    Aire maximale dun trianglePour une autre activit gomtrique 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 nf(x,y)x*x+y*y

    # L i g n e s d e n i v e a u x x v a lxval2dx0.1lignex(x,y) (x> xval-dx && x yval-dy && y

  • 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 yxmin-5xmax5 [xmin:xmax]ymin-7ymax7 [ymin:ymax]

    # B o r n e d e zzmin0zmax100# 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 enx50ny50 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 ecoefx 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 sc 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

  • ) * +

    # 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

  • Statistiques

    Logiciel(s) abord(s) : XCAS, Scilab

    Notions informatiques : O on apprend quil est plus efficace dtu-dier statistiques et probabilits sans tableur. On profite des capacitsde Scilab pour obtenir de belles sorties graphiques.

    Problmatique : On simule des expriences alatoires. On profite descapacits de

    9 0

    +

    - ./

    Cosme II de Mdicis (Florence 1590-1621), Duc de Toscane, fut le protecteur de lillustre Gal-lile (n Pise le 15 fvrier 1564 et mort Florence le 8 janvier 1642), son ancien prcepteur.Profitant dun moment de rpit du savant entre lcriture dun thorme sur la chute des corpset la cration de la lunette astronomique, le Grand Duc lui soumet le problme suivant : il aobserv quen lanant trois ds cubiques et en faisant la somme des numros des faces, onobtient plus souvent 10 que 9, alors quil y a autant de faons dobtenir 9 que 10, savoir six.Aprs quelques rflexions, Galile rdigea un petit mmoire sur les jeux de hasard en 1620expliquant le phnomne.

    0 ,1

    Nayant pas la mme exprience du jeu que le bon Cosme, nous allons utiliser XCAS poursimuler un grand nombre de parties et tudier statistiquement les rsultats obtenus.

    1. Nous utiliserons en premier lieu (n) qui renvoie un entier appartenant [0 ; n[.

    Comment utiliser cette commande pour obtenir le rsultat du lancer dun d ?

    (6)+1

  • 2 0

    2. Plutt que dappuyer 100000 fois sur la touche , nous allons utiliser une commandeplus pratique, (1,nombre dexpriences,exprience) qui renvoie une liste denombre dexpriences rsultats de lexprience.

    Par exemple (1,10000,rand(3)) renverra 10000 nombres entiers gaux 0, 1 ou2.

    3. On utilisera galement (n,liste) qui compte le nombre dapparitions de n dansla liste liste.

    4. Pour calculer une moyenne, on forme une liste et on utilise (liste).

    5. Pour visualiser les rsultats laide dune bote moustache, on utilise (liste).Rponse du logiciel

    "Sur 10000000 essais, la frquence 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 problme :

    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

  • 4 ( %! !

    On totalise le nombre total de lancers :

    s:taille*essais;

    On construit les botes moustache correspondant chaque face :

    mn:(([neuf]),,++ );md:(([dix]),++ );

    On affiche enfin les rsultats et les graphiques :

    ("Sur "+s+" essais, la frquence de sortie de 9 est de "+n+", etcelle de 10 est de "+d+);

    mn,md;}:;

    On lance 10 fois de suite une pice de monnaie et on sintresse au nombre maximal de r-sultats conscutifs gaux. On cre un programme qui simule autant de sries de lancers quelon dsire, qui calcule la moyenne des rsultats obtenus et les rsume dans un histogrammeet une bote moustaches.

    piece(essais):{ S,k,P,j,H,m,M,s,p,h;

    On cre une liste vide pour y mettre les longueurs maximum des trajets :

    S:());

    On entame une boucle ayant comme argument le nombre dessais souhaits :

    (k:1;k

  • 2 0

    On enlve 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 rsultat diffrent

    p:j;}

    Le test termin, on classe les lments de s dans lordre dcroissant grce 3/ :

    s:SortD([s]);

    On prend ensuite le premier de la liste car cest le plus grand en utilisant :

    h:(s);

    On le stocke dans une liste avant de refaire une srie de 10 :

    S:S,h;}

    On cre lhistogramme correspondant cette liste avec (liste) :

    H:(([S]),,+);

    On calcule la moyenne de S :

    m:(([S]));

    On cre la bote moustache correspondant en rajoutant un paramtre y donnant sa tailleverticale :

    M:(([S],y-0.15-0.05),++ 7);

    On affiche une phrase donnant les rsultats avec :

    ("Sur "+essais+" sries de 10 lancers, la du nombre maximalde rsultats conscutifs gaux est "+m);

    On trace les deux graphiques :

    H,M;}:;

    Rponse du logiciel

    "Sur 1000 sries de 10 lancers, la moyenne du nombre maximalde rsultats conscutifs gaux est 3.513"Evaluation time: 0.55

    102

  • 4 ( %! !

    Histogramme et bote moustache pour1000 sries de 10 lancers.

    On peut mme se lancer dans une animation avec... (suite dpendant de u,variations de u)

    ((piece(10*u),u1100))

    . + )

    Un ivrogne fait alatoirement un pas en avant ou un pas en arrire. Au bout de combien depas aura-t-il avanc de n pas ?Une situation o la mdiane est plus parlante que la moyenne...On va crer une procdure dpendant du nombre algbrique de pas n et du nombre de simu-lations souhaites 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;kn) ;}{ (s

  • 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 bote moustache :

    Mo:((M,y-0.150.15),++ 7);

    On affiche le message avec et on trace la graphique :

    ("Il a fallu en "+(((M)))+" livrogne atteindre le "+ n +"-ime arbre "+dir+" et la mdiane est "+(M

    ));Mo;}:;

    Rponse du logiciel

    "Il a fallu en moyenne 131 pas livrognepour atteindre le 2-ime arbre droite et la mdiane est 9.0"Evaluation time: 37.51

    Bote moustache correspondant n = 2Rponse du logiciel

    "Il a fallu en moyenne 113 pas livrognepour atteindre le -2-ime arbre gauche et la mdiane est 9.0"Evaluation time: 34.34

    Bote moustache correspondant n =2

    104

  • 4 *22! 2

    9

    Le logiciel Scilab fournit un gnrateur alatoire de matrices. Pour savoir quel est le type derpartition par dfaut, taper

    str(info)

    La distribution uniforme donne des nombres rels quirpartis entre 0 et 1. Linstruction

    A(9,3,normal)

    donne une matrice de nombres rpartis suivant la distribution gaussienne de moyenne 0 etde variance 1.

    9 :

    tant donns deux familles de nombres x et y de mme taille, on cherche la meilleure relationaffine entre les deux, cest--dire le segment de droite qui approxime le mieux le nuage depoints dont les coordonnes sont dans x et y .

    x5*(1,9)y3*(1,9)-2[a,b](x,y)(x,y,ms);X[0,5];(X,a*X+b)

    Les rels a et b reprsentent respectivement la pente et lordonne lorigine. Sur le dessin,les points sont reprsents par des carrs magenta.La rgression linaire peut tre tendue en dimension suprieure ; le nombre de colonnesde x et y doit tre le mme : cest le nombre dchantillons. Les matrices a et b sont censesapprocher au mieux y par la quantit ax+b. Cette instruction est utilise pour rechercher desquations de sous-espaces affines voir f. page 91.

    9 $

    Le logiciel Scilab fournit de nombreux outils tels la variance et lcart-type, les moyennesarithmtique, gomtrique et harmonique, la mdiane, lchantillonnage alatoire :

    x5*(1,9)(x)

    (x)(x)(x)(x)(x)ssample(22,x)

    On peut extraire les frquences et lamplitude :

    105

  • 2 0

    m(s)n(s)a(x)

    La rpartition par quartiles se fait avec linstruction :

    (s)

    La rpartition par quantiles se fait en utilisant les centiles ; ordonnons dabord la matrice spour mieux visualiser la situation :

    (s)q[10 50 90]p(s,q)

    Lanalyse en composantes principales existe dans Scilab, elle consiste approcher des nuagesde points par des ellipsodes.

    z(7,8,normal)[lambda,facpr,comprinc]pca(z)

    9, #%%

    Pour illustrer la loi de rpartition uniforme, on prend mille chantillons. Lhistogramme pr-sente une rpartition effectivement assez uniforme.

    Y(1,1000);();bar(Y)

    Histogramme des valeurs de la variable Y

    Un zoom prsente le mme aspect.

    106

  • 4#

    Histogramme des valeurs de la variable Y :dtail

    En classant les chantillons dans lordre croissant, on peut tracer la fonction de rpartitionpar centile.

    X(Y,g,i);q1:99;p(X,q)xp(:,1);yp(:,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

    Rpartition de la variable Y par centiles

    Une rpartition proportionnelle la mesure de Lebesgue donnerait la droite diagonale surle graphique. Un rsultat quivalent est obtenu en traant lhistogramme de lchantillon or-donn.

    ();bar(X)

    107

  • 2 0

    Histogramme des valeurs de la variable X

    Les histogrammes par rpartition donnent le mme rsultat indpendamment de lordre desvaleurs ; plus le rsultat sapproche dune droite horizontale, plus la rpartition est uniforme.

    ();(100,Y)

    Histogramme des frquences normalises dela variable Y

    Pour illustrer la loi de rpartition normale ou gaussienne, il suffit de modifier la premire ins-truction ci-dessus en :

    Y(1,1000,normal);

    108

  • 4#

    Les autres instructions illustrent la fonction de rpartition de la loi normale. Le trac par-dessus le dernier histogramme de la courbe reprsentative de la fonction

    exp( t 22

    )

    2

    par la commande

    t-3:.1:3;z(-t .^ 2 ./2)/(2*%pi);(t,z)

    illustre la rpartition normale.

    Histogramme des frquences normalises dela variable Y suivant la loi gaussienne, avec le graphe de

    la fonction de Gauss

    Une pice deux faces ( !) est tire au hasard 1000 fois.

    piece[pile,face]echantillonsample(1000,piece)t(echantillon)bar(t(2))

    La fonction a lavantage sur la fonction de pouvoir travailler avec des chanesde caractres. Le dessin des frquences nous permet de voir si Scilab est pip ou pas. . .

    109

  • 2 0

    Premier tirage pile ou face

    Deuxime tirage pile ou face

    8

    Le tirage de d seffectue comme pour le tirage de pile ou face. Comme les chantillons nesont pas des nombres, on applique un effet miroir sur la liste des frquences pour que lesnumros correspondent aux noms.

    de[I II III IV V VI]echantillonsample(1000,de)t(echantillon)z"(de);Zt(2); k1:6,z(k)Z(7-k);

    ;

    110

  • 4#

    bar(z)

    Pour le tirage de deux ds, la machine peut nous donner les frquences de chaque couple.

    couple[]; kde,couple[couple;de+ +k];

    ;echantillonsample(1000,couple);t(echantillon);yt(1);zt(2);Yy;Zz; k1:36,Z(k)z(37-k);Y(k)y(37-k);

    ;Z(Z,[6,6]);(Z)

    Histogramme des frquences pour un tiragede deux ds

    Ltude des sommes de points se fait aisment, les sommes son calcules ici sans utiliser leretournement Z ci-dessus par souci de gnralit.

    somme[12:-1:7 11:-1:6 10:-1:5 9:-1:4 8:-1:3 7:-1:2];[0]; k1:11,indvectorfind(somme,k+1,c);zzz(ind);[;(zz)];

    ;();bar()

    111

  • 2 0

    Histogramme des frquences pour les sommedes points dans un tirage de deux ds

    112

  • Calcul diffrentiel

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

    Problmatique : Calcul diffrentiel du lyce jusqu lagrgation.

    Le logiciel Scilab calcule des drives approches par des taux de variation. Pour fabriquerla drive de lapplication e2x , il est bon de faire excuter le programme suivant.

    yf(x)y(2*x)

    yfprime(x)y

    (f,x)

    Pour tracer simultanment le graphe de f et de sa drive restreintes lintervalle [1;1]comme sur la figure 11.27, il est ncessaire de rentrer les valeurs successives de f dans unvecteur.

    t-1:.1:1;y[] xty[y fprime(x)];

    (t,f(t),t,y)

  • 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 lhlice

    Scilab et les couleurs

    Le logiciel Scilab change de couleur automatiquement, la premire est toujoursbleue. . . mme sil est difficile de sen rendre compte sur la figure 11.27.

    3

    Le logiciel Maxima donne des drives formelles avec la commande . Linstruction

    ((2*x),x);

    donne le rsultat escompt.

    Le logiciel XCAS se comporte commeMaxima. La mme commande (expression,variable)est disponible :

    ((2*x),x)

    Elle donne le rsultat escompt, mais il y en a dautres...

    114

  • Fonction drive et nombre driv

    XCAS est trs cheval sur la diffrence entre expression et fonction. Il distinguedonc, comme le mathmaticien, nombre driv et fonction drive.Pour obtenir lexpression gnrale de la fonction drive, quon 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 lutiliser 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-programmes sur XCAS :

    (> +)

    ( x)->cos( x)*1/2*1/(sin( x))*sqrt(sin( x))+1

    Rponse du logiciel

    Le symbole @ correspond la compose de fonction.

    On obtient le calcul approch du nombre driv avec /(expression,variable,pas),le pas valant par dfaut 0,001, par la mthode du milieu. Par exemple :

    /(((x)),x,0.00001)

    Rponse 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

  • 4

    #

    Le logiciel Gp se comporte diffremment.

    ((2*x),x)

    donne un dveloppement 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 rsultat escompt.Le logiciel Yacas connat quelque chose du calcul diffrentiel 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 diffrentiable f valeurs relles, le gradient est le vecteur associ la dif-frentielle par le produit scalaire euclidien.

    yf(x)y(x)^2

    yg(x)y

    (f,x)

    x[1;1;1]g(x)

    La matrice hessienne est celle de lapplication linaire tangente du gradient dans la base ca-nonique.

    Hh(x)[J,H]

    (f,x,order2,H_formblockmat)

    x[1;1;1]h(x)

    Le rotationnel est le double de la partie antisymtrique de lapplication linaire tangente dunchamp de vecteurs.

    116

  • & !

    yV(x)y(x)^2*x(1)*x

    yrot(,x)J

    (,x)yJ-J

    x[1;1;1]rot(V,x)

    Le rotationnel du gradient est nul : on le voit sur lexemple $=&.

    "

    Pour tracer une hlice (figure 11.28), il faut dfinir sparment les fonction coordonnes.

    xX(t)x(t)

    yY(t)y(t)

    zZ(t)zt

    t0:.1:3*%pi(X(t),Y(t),Z(t))

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    Z

    1.00.6

    0.20.2

    0.61.0 X

    1.00.6

    0.20.2

    0.61.0Y

    Une partie de lhlice

    117

  • 4

    On dfinit le vecteur tangent unitaire :

    Mc(t)M[X(t);Y(t);Z(t)]

    vvitesse(t)v

    (c,t)

    vT(t)vvitesse(t)vv/(v)

    On dfinit le vecteur normal et la courbure :

    vTprime(t)v

    (T,t)

    ykappa(t)y(Tprime(t))/(vitesse(t))

    vN(t)vTprime(t)vv/(v)

    On dfinit le vecteur binormal grce au produit vectoriel :

    vB(t)AT(t)*N(t)-N(t)*T(t)zA(1,2)xA(2,3)yA(3,1)v[x;y;z]

    On peut vrifier que la base est orthonorme en un point :

    A[T(1) N(1) B(1)]A*A

    La matrice AA doit tre proche de lidentit. On dfinit alors la torsion :

    vBprime(t)v

    (B,t)

    ytau(t)yBprime(t)*N(t)/(vitesse(t))

    Courbure et torsion devraient tre constantes dans le cas de lhlice ; comme on fait des dri-ves approches jusqu lordre trois, il y a beaucoup derreur dans la torsion (figure 11.29) ;

    118

  • !5

    '(t,kappa,style5)'(t,tau,style13)

    La courbure de lhlice en rouge et sa torsionen vert

    $

  • 4

    Largument de la fonction nappe ci-dessus est la chane de caractres qui nommela fonction valeurs relles.

    Lespace tangent en un point de coordonnes M = F(x1, x2) est limage de lapplication linairetangente de F.

    J(F,x)J

    (F,x)

    Pour dessiner simplement le graphe dune fonction de R2 dans R, linstruction con-vient. Lexemple ci-dessous provient dun problme du baccalaurat franais de juin 2007 ;on vite lannulation du dnominateur en dcalant les valeurs des coordonnes. Les deuxderniers arguments prcisent les angles de prise de vue. Lutilisateur peut changer le point devue grce au bouton de la fentre graphique. Le rsultat est sur la figure 11.30.

    x.1:.3:12;yx; zf(x,y)z3*x*y/(x+y)

    ();(x,y,f,alpha60,theta-120)

    Extrait dun problme du bac de 2007(France)

    Linstruction

    %(x,y,f,alpha60,theta-120)

    120

  • !5

    donne des couleurs qui reprsentent la cote, donc la valeur de la fonction f (figure 11.31).Pour obtenir le mme rsultat partir de la commande , il faut appuyer sur le bou-ton de la fentre graphique, et choisir Figure properties, cela ouvre une fentre de dia-logue. Dans larborescence gauche : descendre jusquau dernier lment, puis dans lon-glet Style de la partie droite de la fentre de dialogue, choisir le drapeau de couleur (Colorflag) numro 1.

    Extrait dun problme du bac de 2007(France) : les couleurs reprsentent la cote

    Lexemple suivant est tir du dun problme du baccalaurat de juin 2007 en Polynsie fran-aise.

    x0:.2:6;y0:.2:8; zf(x,y)z2*x^2-8*x+y^2-6*y+18

    a5t-130();%(x,y,f,alphaa,thetat)

    Pour dessiner le plan dquation y = 2, on rajoute un rectangle avec linstruction quidessine des surfaces quadrangules : une seule cellule suffit. On remarque sur le graphiqueprcdent 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,alphaa,thetat)

    Pour tracer lintersection du plan et du graphe de f , il suffit de tracer une partie du graphedont lamplitude en ordonne est trs rduite autour de la valeur 2.

    (x,[1.9:.01:2.1],f,alphaa,thetat)

    Pour tracer les points A = (3,2,3) et B = (5,2, f (5,2)), il suffit de tracer des graphes correson-dant une lgre variation horizontale (figure 11.32).

    121

  • 4

    Bun[4.9:.01:5.1];Bdeux[1.8:.001:2.2];(Bun,Bdeux,f,alphaa,thetat) zg(x,y)z3

    (Bun-2,Bdeux,g,alphaa,thetat)

    Extrait dun problme du bac de 2007(Polynsie franaise) : intersection dun graphe et du

    plan y = 2Le point B apparat comme une tache noire. Le point A est cach sous la surface. Il faut ap-puyer sur le bouton de la fentre graphique, et choisir Current axes properties, cela ouvreune fentre de dialogue. Dans larborescence gauche : le premier lment est slectionn,dans longlet Viewpoint de la partie droite de la fentre de dialogue, remplacer la valeur 5de langle de rotation par la valeur 185. Par-dessous, on voit maintenant sur la figure 11.33 lasurface, la courbe dintersection, et les deux points A et B.

    Extrait dun problme du bac de 2007(Polynsie franaise) : intersection dun graphe et du

    plan y = 2, avec deux points

    122

  • !5

    Si le plan y = 2 tait nimporte quelle surface transverse au graphe de f , la procdure seraitplus substantielle. Le paramtrage de la courbe intersection se rsout sur une famille T dabs-cisses t qui subdivise lintervalle [0;6], en demandant une rsolution approche de lquationnon linaire en dimension 3 :

    x t = 0y 2 = 0

    z f (x, y) = 0

    Voici lensemble complet des instructions :

    x0:.2:6;y0:.2:8; zf(x,y)z2*x^2-8*x+y^2-6*y+18

    a5;t-130;();%(x,y,f,alphaa,thetat)X[0 0;6 6];Y[2 2;2 2];Z[0 60;0 60];(X,Y,Z,alphaa,thetat)/ / f p l o t 3 d ( x , [ 1 . 9 : . 0 1 : 2 . 1 ] , f , a l p h aa , 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,alphaa,thetat) zg(x,y)z3.1

    (Bun-2,Bdeux,g,alphaa,thetat)/ / 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

    t0 yinter(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

    T0:.1:6;abscisse[];ordonnee[];cote[]; tT,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,[alphaa,thetat])

    123

  • 4

    Les angles de vue ne se rentrent pas de la mme manire dans etdans ; de plus lexcution par le logiciel de la dernire instruction ne res-pecte pas les angles de prises de vue.

    Il faut ouvrir la bote de dialogue des proprits de la figure. Dans la partie gauche, cliquer surle bouton de la ligne Axes, slectionner Polyline, dans la ligne Line, augmenter lpaisseurdu trait : voir la saisie dcran 11.34.

    Bote de dialogue de la fentre graphique deScilab

    Dans la ligne Axes, dans longlet viewpoint on ramne les angles 185 et 130 pour obtenir lafigure 11.35. (En slectionnant les lignes correspondantes, on peut augmenter ou diminuer lagraisse des dessins qui reprsentent A et B.)

    124

  • # 6! 2%! !5

    Extrait dun problme du bac de 2007 (Poly-nsie franaise) : 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 nappartient pas au graphe de f

    , =

  • 4

    v[x;y;z]vv/(v)

    La premire forme fondamentale de la surface est la restriction de la forme quadratique eucli-dienne lespace tangent.La seconde forme fondamentale de la surface est associe la matrice des drives de la nor-male unitaire dans lespace tangent de faon tre indpendante du paramtrage. Lapplica-tion de Gauss est constitue des drives partielles de la normale unitaire.

    VGauss(F,x)h1e-4un[h;0]deux[0;h]V[n(F,x+un)-n(F,x) , n(F,x+deux)-n(F,x)]/h

    La drive de n est valeurs dans lespace tangent puisque le produit scalaire de n avec lunede ses drives partielles est la moiti de la drive de sa norme, constante gale un :

    n,n

    xi(x1, x2)

    = 1

    2

    xi

    (n2)= 0 pour i = 1et 2.Par commodit, construisons ensuite la matrice N qui envoie les deux premiers vecteurs de labase canonique sur la drive de n et le troisime sur la normale unitaire.

    VN(F,x)V[Gauss(F,x),n(F,x)]

    La seconde forme fondamentale est la restriction lespace tangent de la forme quadratiquereprsente par le produit de lapplication de Gauss par le pseudo-inverse de lapplicationtangente. Les valeurs propres de la seconde forme fondamentale sont appeles courburesprincipales et se lisent dans la matrices courbures donne par la fonction elements :

    [directions,courbures]elements(F,x)J(F,x)GGauss(F,x)M(J)*G[directions,courbures](M)

    La courbure de Gauss est le produit des valeurs propres. Deux fonctions donnent des rsultatsproches.

    Kkappa(F,x)J(F,x)K

    (N(F,x))/(

    (J*J))

    Kcourbure(F,x)

    126

  • # 6! 2%! !5

    [directions,courbures]elements(F,x)K

    (courbures)

    La courbure moyenne est la somme des courbures principales.

    KCM(F,x)[directions,courbures]elements(F,x)K(courbures)

    Il ne reste plus qu initialiser les paramtrages, et obtenir quelques valeurs...

    Fnappe(f)FFnappe(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 pseudosphre est la surface de rvolution de la tractrice.

    MH(x)ax(1);bx(2)r(1-a^2-b^2)c(r)-rM[a;b;c]

    courbure(H,x)courbure(H,y)

    127

  • 4

    Sa courbure est constante, gale 1.courbure(H,x)courbure(H,y)

    On dessine maintenant sur une grille soigneusement choisie pour les exemples cits ici.

    dessin(F)maille30I1:maille;JI;Z"(maille,maille);couleurZ; tI uJpoint[t/maille-.55;u/maille-.55];zF(point);Z(t,u)z(3);couleur(t,u)courbure(F,point);

    ;

    "(Z)();XI/maille-.55;YJ/maille-.55;surf(X,Y,Z)();surf(X,Y,couleur)();surf(X,Y,Z,couleur)

    Linstruction

    dessin(H)

    demande un peu de calcul : la grille contient 900 nuds. La courbure reste proche de 1.

    La pseudosphre : les couleurs reprsententla cote

    128

  • # 6! 2%! !5

    La courbure de la pseudosphre : les couleursreprsentent la cote

    La pseudosphre : les couleurs reprsententla courbure

    Les instructions

    dessin(F) ; dessin(FF)

    donnent des figures suggestives.

    129

  • 4

    La selle : les couleurs reprsentent la cote

    La courbure de la selle : les couleurs repr-sentent la cote

    130

  • # 6! 2%! !5

    La selle : les couleurs reprsentent la cour-bure

    La sphre : les couleurs reprsentent la cote

    131

  • 4

    La courbure de la sphre : les couleurs repr-sentent la cote

    La sphre : les couleurs reprsentent la cour-bure

    . )+ < R2 R !"#$

    3

    nonons ce thorme que nous ne dmontrerons pas ici :

    132

  • , " )! 5 R2 R

    Extremum sous contrainte

    Si f et g sont deux fonctions indpendantes telles que :

    f et g ont des drives partielles continues dans un voisinage dun pointP(x0, y0) ;

    f prsente un extremum au point P sous la contrainte g (x, y) = k, o k estune constante ;

    g valu au point P est diffrent du vecteur nul,

    alors f (x0, y0) = g (x0, y0) pour un scalaire appel multiplicateur de Lagrange.

    Par consquent, un extremum dune fonction f soumise une contrainte g ne peuttre observ qu un point P o les gradients de f et g sont parallles. La contrainteest alors tangente la courbe de niveau de f passant par le point P. Pour trouver cetventuel extremum, il faut rsoudre le systme :

    f (x, y) =g (x, y)g (x, y) = k

    On veut par exemple dterminer 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 intrieur oulimitrophe au disque unit.Les points critiques sobtiennent en galant les drives partielles 0 :

    ([(f(x,y),x)0,(f(x,y),y)0],[x,y])

    Rponse du logiciel

    [[0,0]]

    Cette fonction na quun seul point critique lintrieur du disque unit.Il faut galement trouver les extrema sur la frontire du disque, i.e. sous la contrainte g (x, y) =x2 + y2 = 1. On utilise le thorme prcdent 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

  • 4

    1 0 11 0 10 1 10 1 1

    Rponse 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

    Rponse du logiciel

    Par consquent 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 rsultats peuvent tre confirms par la reprsentationgraphique de la surface en utilisant :

    (f(x,y),[x-11,y-11],0.05,0.05,+)

    Surface dquation z = y2 x2et la reprsentation 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

  • , " )! 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 rsultat classique que nous ne dmontrerons pas :

    Test de la drive seconde

    Soit f : x f (x, y) une fonction telle que : les drives partielles de premier et second ordre sont continues dans un voi-

    sinage dun 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 unmaximum 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 unminimum relatif au point (x0, y0);

    = r t s2 < 0, alors f prsente un point de selle au point (x0, y0); = r t s2 = 0, alors le thorme ne permet pas de conclure.

    135

  • 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 10 0

    1 1

    Rponse du logiciel

    Il y a donc trois points critiques. Essayons de les classer avec le thorme prcdent.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 drives dordre 2, cest--dire :

    (F(x,y),[x,y])

    F(x,y)x2 F(x,y)x yF(x,y)x y

    F(x,y)y2

    Rponse du logiciel

    Drives 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

  • , " )! 5 R2 R

    H:(f(x,y),[x,y])

    [(6 2 x) 6 2 y

    12 y 6 x 2 (12 3 (y)2)]

    Rponse du logiciel

    Il sagit de dterminer le dterminant de cette matrice qui, attention, est une expression. Onutilisera donc astucieusement la commande (ancien=nouveau) :

    delta:(a,b)->((

    (H),xa,yb)

    f2:(a,b,V)->(((f(x,y),V,2),xa,yb)

    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 daffirmer que f atteint un maximum relatif aux points (1 ; 1) et ( ; 1).La reprsentation graphique va nous permettre de confirmer ce rsultat et de constater que(0 ; 0) est un point de selle :

    Surface dquation z = 6x y2 2x3 3y4Pour un expos vivant, intressant, abordable, bref qubcois de ces notions, voira.

    aAMYOTTE , Luc Introduction au calcul avanc et ses applications en sciences . Qubec: ERPI, 2004.

    137

  • Intgration

    Logiciel(s) abord(s) : Yacas Maxima Scilab XCAS MuPAD

    Problmatique : Des primitives formelles et des intgrales num-riques peuvent tre obtenues.

    4

    Pour trouver une primitive avec Yacas, il suffit de taper :

    0(x) 3(x)

    et pour obtenir son intgrale sur lintervalle [0,] :

    A:0(x,0,4()) 3(x)((A,20)

    La dernire commande donne le rsultat approch avec une prcision arbitraire de vingt d-cimales. Des primitives plus compliques 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 intgrale sur lintervalle [0,] :

    ((x),x,0,%pi);

    Des primitives plus compliques ne lui font pas peur :

  • ((x),x);((1+((x))^2), x);

    Pour la dernire, il faut savoir que la notation .30(@ dsigne largument sinus hyperbolique,not Argsh en mathmatiques. Maxima peut trouver la primitive dune 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 mthodes de lge dupapier et du crayon.

    La dcomposition en lments simples consiste dcomposer en facteurs irrductibles dansRle dnominateur de la fraction (mise sous forme irrductible) ; la fraction se dcompose ensomme de fractions construites partir de ces facteurs. Intgrer sparment chaque termeest souvent plus facile que le problme de dpart. Commenons par le cas dont on connatdja le rsultat ;

    R(x):=1/(x^3+x^2+x+1);RR(x):=(R(x),x);RR(x);

    La fraction est dcompose en1

    2(x +1) x 1

    2(x2 +1)Linstruction

    (RR(x),x);

    donne le mme rsultat que la primitive de R, quoique un peu moins bien simplifi.Prenons maintenant le cas difficile. La dcomposition en lments simples ne fonctionne pasnon plus.

    S(x):=1/(x^3+x+1);(S(x),x);

    La diffrence, cest que nous pouvons attaquer le problme sous langle des polynmes, o labote 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

  • La fraction Q est la mme que S, sauf que nous avons indiqu la machine la factorisation dudnominateur.

    Attention : partir du degr 5, il ny a plus de formule algbrique universelle pourextraire les racines dun polynme. . .

    T(x):=(Q(x));TT(x):=(Q(x),x);

    donnent des rponses complexes.Pour obtenir des rponses relles,

    (T(x));

    entrane la question de Maxima :

    Rponse 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 rpondre lalternative par exemple :

    ;

    De mme, linstruction

    (TT(x));

    avec la mme rponse que prcdemment donne une expression formelle pour une primi-tive de la fonction S. Mais Maxima narrive pas calculer une valeur pour lintgrale sur unintervalle donn.On peut utiliser alors une fonction de calcul approch pour les intgrales :

    (S(x),x,2,3);

    qui donne une valeur numrique.

    Attention : Linstruction romberg(Q(x),x,2,3); ne fonctionnerait pas. . .

    141

  • Le logiciel Scilab calcule des intgrales approches avec linstruction mais elle nac-cepte pas les fonctions internes du logiciel. La commande intg(0,%pi,sin) est invalide. Labonne procdure est la suivante :

    function y=f(x)y=(x)endfunctionintg(0,%pi,f)

    Pour tracer le graphe de la primitive du logarithme nprien qui sannule en 1, on commencepar dfinir les fonctions ncessaires.

    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) nestvalide. 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

  • Les instructions de base de XCAS ressemblent celles de Maxima et les rsultats sont similaires.

    ((x),x)((x),x,0,)

    Le passage par les dcompositions en lments simples est plus rapide. Les instructions sui-vantes donnent les mmes rsultats 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 dnominateur de S. Linstruction

    (S(x),x,2,3)

    donne le calcul approch sans problme. Passons un calcul de primitive plus intressant. . .XCAS peut passer le Grand Oral de lX :

    ((((x))^2+1), x)

    donne :

    (

    ln

    ((tan (x))2+1 (tan (x))

    ))Rponse du logiciel

    MuPAD serait lui recala :

    int(sqrt((tan(x))^2+1), x)

    ne rpond rien. Mais MuPAD a dautres arguments :

    int(x^n*(x),x)

    donne :

    (n+1,x)(1)n

    Rponse du logiciel

    aCest a de ne pas tre libre...

    143

  • "' % %

    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),tx*a)

    qui rpond :

    +0 g(ax)e

    (px)dx1a

    0 g(xa)e

    (pxaa

    )adx

    Rponse du logiciel

    nous permet de voir que L[

    f (ax)]= 1

    aF

    (a

    p

    )pour les transformes 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 procdure ipp(F(x),g(x)) qui renverra

    F(x)g (x) dx

    calcule par une intgration par parties :

    ipp(F(x),g(x)):{((F(x)*g(x),(g(x),x)),0)}:;

    Par exemple :

    ipp((x),1)

    donne :Rponse du logiciel

    -x+x*ln(x)

    qui est en effet une primitive de 1 ln(x).Si lon veut lvaluer 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

  • 2

    (ipp((x),1),2,3)

    renvoie bien :Rponse du logiciel

    3*ln(3)-3-2*ln(2)+2

    Mais XCAS na pas besoin de nous pour avoir cette ide :

    ((x));((x),x,2,3)

    renvoie directement le rsultat.Cette nouvelle procdure peut nous tre utile dans un calcul formel.Par exemple :

    ipp(f(x),(g(x),x))

    renvoie bien sr :

    f(x)g(x)dx+g(x)f(x)

    Rponse du logiciel

    qui nous rappelle la formule dintgration par parties.Mais cette mthode a ses limites, comme nous allons le voir.

    6

    Ce sont les intgrales du type

    Wn =/2

    0sinn (x) dx

    En particulier /20

    sinn+2(x) dx =/2

    0sinn (x) dx

    /20

    sinn(x)cos2(x) dx

    sachant que sin2(x) = 1cos2(x). Il faudrait donc calculer /20 sinn(x)cos2(x) dx.On pense une intgration 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

  • Le logiciel rpond cette fois quelque chose, mais cela reste compliqu.La ruse est de changer sinn+1(x) en 1n+1 sin

    n(x)sin(x).Alors

    r:(((x))^n*((x))^2,(1/(n+1))*((x))^(n)*(x))

    rpond :

    1

    n+1 (sin (x))n sin (x)cos (x) ,

    (sin (x))2 (sin (x))n

    n+1

    Rponse du logiciel

    Nous avons besoin de faire une petite pause pour expliquer ce phnomne...

    Comment XCAS traite-t-il xn ?

    Si vous interrogez XCAS sur (f(x),x), il vous rpondra

    nxn

    x

    Rponse du logiciel

    sans jamais vouloir simplifier ce rsultat en nxn1.Cest que XCAS fait du calcul formel et considre xn non pas comme un polynmemais comme une variable indpendante.Cest plus simple et plus efficace pour lordinateur, mme si a apparat plus com-pliqu pour les faibles humains que nous sommes.Dans le cas qui nous occupe, en nintroduisant pas sinn+1(x) qui serait une nouvellevariable, on laisse XCAS traiter le problme avec deux variables : sinn(x) et sin(x).Alors XCAS arrive intgrer par parties et simplifier le rsultat alors que parexemple MuPAD ny arrive pas alors quil traite (ou plutt parce quil traite) le pro-blme plus mathmatiquement quinformatiquement.

    On peut encore simplifier le rsultat avec la commande qui justement simplifie au-tant que possible une expression trigonomtrique en utilisant en priorit des sinus car XCASconsidre les sinus comme des variables.Dans le cas qui nous occupe, aprs avoir rentr :

    146

  • 2

    (r[1])

    on obtient :

    (sin (x))2+n

    n+1

    Rponse du logiciel

    Pour revenir aux intgrales 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 rcurrence :

    Wn+2 =Wn 1n+1 Wn+2

    qui nous permet de calculer les termes pairs et impairs, ou plus directement :

    W(n):(((x))^n,x,0,Pi/2)(W(k),k014)

    donne :

    2 ,1,

    4 ,

    23 ,

    316 ,

    815 ,

    532 ,

    1635 ,

    35256 ,

    128315 ,

    63512 ,

    256693 ,

    2312048 ,

    10243003 ,

    4294096 ,

    20486435 ,

    643565536 ,

    32768109395 ,

    12155131072

    Rponse du logiciel

    Pour lintgration par parties, on utilise --(hold(int)(f(x),x= ),v(x)).Ainsi, on peut intgrer par parties

    10 x

    n ex dx :

    (n, 2--NonNegInt): (n>0,and_);simplify(intlib--byparts((int)(x^n*(x),x01), (x)))

    qui rpond :

    en10xn1ex dx

    Rponse du logiciel

    147

  • " %%'

    !

    Pour avoir une approximation de laire sous la courbe, on peut lapprocher par des rectangleslmentaires. Voici une petite procdure de construction :

    Rect(f,N,a,b):{ RV,RR,R,k,av,ap,C;RV:()); RR:());(k:0;k(x),n,0,2*Pi)

    Mthode des rectangles personnelle Pour tre honnte, il existe dj (expr,x=a..b,n,mthode) sur XCAS qui permetdobtenir ce rsultat, o mthode peut-tre , ,", .

    (((x),x02*Pi,20,rectangle_droit),),(((x),x02*Pi,20,rectangle_gauche),)

    148

  • & ! 2 )2

    Mthode des rectangles la XCAS Ce qui nous intresse est bien sr davoir une approximation numrique :

    aireRect(f,N,a,b):{

    (((b-a)/N*f(a+k*(b-a)/N),k1N)); / / s u b d i v i s i o n r g u l i r e}:;

    aireRect(x->(x),100,1,10)

    Rponse du logiciel

    14.02524361

    alors quavec par la fonction de calcul approch 0 :

    nInt((x),x110))

    Rponse du logiciel

    14.02585093

    Nous avons donc 3 bonnes dcimales avec 100 rectanglesd.

    ) 3

    Il nest 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 dcimales de . . .

    dPour avoir des prcisions sur le calcul approch dintgrales avec XCAS, voir la section b. page 52.

    149

  • Match Scilab/XCAS sur lapproximation dintgrales

    Interrogeons XCAS pour obtenir une approximation de1

    0

    1 x2 dx :

    4*nInt((1-x^2),x,0,1)

    Rponse du logiciel

    [3.141580789,3.14158081,3.141580816,3.141580817,3.141580817,3.141580818,3.141580818]

    soit au mieux 4 bonnes dcimales. En effet, la singularit de la drive en 1 brouilleles algorithmes bass sur la formule dEuler-Mac Laurin.Quant Scilab :

    yf(x)y(1-x**2)

    (20)4*(0,1,f)

    Rponse du logiciel

    ans =

    3.1415926535897926719088

    alors quune valeur approche de est :

    %pi

    Rponse du logiciel

    %pi =

    3.1415926535897931159980

    cest--dire que Scilab donne 16 bonnes dcimales : 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 dcimales de , la limite de /.

    150

  • & ! 2 )2

    Approximation de avec la formule de Machin

    Vous savez bien que

    Arctan(x) nk=0

    (1)k x2k+12k +1

    < x2n+32n+3 .On peut donc construire une procdure dpendant dun nombre ! compris entre 0

    et 1 et donnant la plus petite valeur de lentier n telle queu2n+3

    2n+3 10p :

    mini(u,p):{ k;k:0;(((u^(2*k+3))/(2*k+3))>10^(-p)){k:k+1}}:;

    Vous connaissez galement la formule du mathmaticien anglais MACHIN :

    4 arctan1

    5arctan 1

    239=

    4

    obtenue en montrant que, a et b tant deux rels tels que ab = 1, on a arctan a +arctanb = arctan

    (a+b

    1ab)+ avec = 0 si ab < 1, = 1 si ab > 1 et a > 0 et =1 si

    ab > 1 et a < 0.On appelle polynme de GREGORY le polynme Gn(X) =

    nk=0

    (1)k X2k+12k +1 .

    On construit donc une procdure qui donne une valeur approche de Gn(a) 10pprs :

    greg(n,a,p):{ S,k;S:0;(k:0;k

  • Dveloppements limits

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

    Problmatique : Obtenir des dveloppements limits : approxima-tions de fonctions par des polynmes.

    # 4

    Le logiciel Yacas permet de calculer quelques dveloppements limits.

    f(x):(8(x))46(2(x,0,9) f(x))

    donne le dveloppement limit lordre 9 en 0 de la fonction exp(cos(x)). Il ne faut pas allertrop loin dans lordre, car le temps de calcul devient prohibitif.

    # %

    Le logiciel Gp considre les fonctions comme des sries entires ; il est donc bien adapt auxdveloppements limits. Les deux lignes suivantes donnent le dveloppement lordre 16en 0 de la fonction exp(cos(x)).

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

    Pour dvelopper lordre 20 il suffit de rajouter :

    \ps 20f(x)

    Pour obtenir le dveloppement en 2 , il suffit de dcaler :

    f(x+4/2)

    Le rsultat na pas besoin dtre converti en polynme puisque ce nest quune reprsentation laffichage de la fonction.

  • (5

    # /+

    Le logiciel Maxima donne un rsultat 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 dveloppementlimit 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,01]);

    Comparaison de deux polynmes au voisi-nage de 0

    # !"#$

    #

    Reprenant le mme dveloppement que pour Gp, on obtient un rsultat plus lisible.

    (((x)),x0,6)

    Le dveloppement peut etre transform en polynme avec linstruction (DL,polynom).En voici tout de suite une application.

    154

  • &

    > )3 ) *?

    *

    Pour comprendre laspect local de lapproximation dune fonction par le polynme de Taylorassoci, rien de tel quune petite procdure qui permet de comparer les graphes de la fonctionet du polynme selon son degr.Cela permet galement de visualiser les fonctions qui admettent un dveloppement en srieentire de rayon infini ou fini.On construit une procdure dl(f,x,n) qui dpend de la donne dune fonction f, dun ordren et du point dobservation x :

    dl(f,x,n):{(((f(x),x0,n),polynom));}:;

    On obtient ainsi un polynme.Par exemple :

    dl(,x,10)

    Rponse 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 nest pas forcment entier.On utilise (nombre) qui renvoie la partie entire dun 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 sx-4*Pi4*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

  • (5

    On visualise bien que lintervalle de validit de lapproximation crot avec n et semble pou-voir recouvrir R, alors que pour la fonction x ln(x+1), lapproximation ne semble valableque pour 0 x < 1 :([dl(x->(1+x),x,(n)),(1+x)],x02,[,+

    ])

    comme on le voit ici :

    Approximation polynomiale de x ln(x+1)

    Nous verrons dautres approximations polynomiales lors de ltude des Polynmes interpo-lateurs de LAGRANGE.

    156

  • quations diffrentielles

    Logiciel(s) abord(s) : Scilab Octave Maxima MuPAD XCAS

    Problmatique : Rsoudre des quations diffrentielles ordinaires.Utiliser ces quations.

    # $

    5 ) "

    Lquation diffrentielle y (t) = 2y(t) + 10cos(10t) est rsolue sur lintervalle [1,1] avec lacondition initiale 1.

    yprimef(t,y)yprime2*y+10*(10*t)

    y01;t0-1;t-1:.1:1

    Le graphe de la solution est dessin.

    ()z

    (y0,t0,t,f);(t,z)

    La linarit de lquation diffrentielle nest pas cruciale.

    5 ) "

    On se donne une matrice antisymtrique dordre trois (quelconque) ;

    AA(3,3,unif)AAA-AA

    le sous-groupe de Lie quelle engendre dans le groupe spcial orthogonal est construit avecune quation diffrentielle ordinaire.

    yprimef(t,y)yprimeA*y

  • ! 4

    La machine se fait une joie de tracer une partie de lorbite 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.00.8

    0.60.4

    0.20.0

    0.20.4

    0.60.8

    1.0

    X

    0.60.4

    0.20.0

    0.20.4Y

    Rotation dun vecteur

    Maintenant on trace lorbite 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);Xz(1,:);XXzz(1,:);XXXzzz(1,:);Yz(2,:);YYzz(2,:);YYYzzz(2,:);Zz(3,:);ZZzz(3,:);ZZZzzz(3,:);%([X,XX,XXX],[Y,YY,YYY],([Z,ZZ,ZZZ],[2,3,6]))

    158

  • Rotation de la base

    Il faut veiller mettre les vecteurs collectant les coordonnes en colonnes : le nombre decouleurs (deuxime argument de la fonction $&) est celui des colonnes.

    On peut comparer avec la solution algbrique.

    XXXX[];YYYY[];ZZZZ[]; ut-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

  • ! 4

    Rotation algbrique de la base

    Lexponentielle matricielle rclame linstruction ; sinon cest une exponentielle appli-que chaque coefficient....

    5 ) " 3+

    Lquation diffrentielle du second degr y = 100y se rsout grce la matrice compagnoncomme dans la thorie.

    A[0 1;-100 0] yprimef(t,y)yprimeA*y

    y0[0;1];t0-1;t-1:.01:1;()zz

    (y0,t0,t,f);zzz(2,:);(t,z)

    160

  • La sinusode de pulsation 10 qui rsoudlquation y = 100y avec la condition initiale voulue

    On peut vrifier la valeur de lapproximation quand on connat la solution thorique :

    erreur(z-(10*(t+1)))

    5 ) " ) ""

    Le lecteur rsoudra aisment cet exercice en sinspirant des sections prcdentes.

    #

    Le logiciel Octave possde une instruction de rsolution approche

    pour les quationsde la forme x = f (x, t) et une instruction de rsolution approche pour les quationsde la forme f (x, x, t) = 0.

    # !"#$

    5 3

    La machine peut donner une rsolution formelle ; on nest pas oblig de fixer les conditionsinitiales.

    ([y+100*y,y(0)a,y(0)b],y)

    renvoieRponse du logiciel

    [a*cos(10*x)+(b*sin(10*x))/10]

    161

  • ! 4

    Mais on atteint vite les limites du calcul symbolique : linstruction 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 trs pratiques.

    ! ) /

    Illustrons cette mthode bien connue : on note lquation diffrentielle du premier ordre sousla forme

    u(t)= f (u(t), t)et on ltudie sur un intervalle [a ; b] avec la condition initiale y(t) =u0 et on utilise lapproxi-mation

    u(t) u(t +h)u(t)h

    quand h est suffisamment petit . On choisit ici h = baN , avec N un nombre arbitrairementfix 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 tX:a; / / o n p a r t d e xaY:uo; / / o n p a r t d e yu o(k:0;k-4*u+t,n,0,3,1)

    162

  • &

    donne :

    ! ) 3 /

    Voici un exemple de dcouverte de la fonction exponentielle avec la mthode dEuler sousforme dun TP pour des lves de Terminale S dbutants en informatique.

    1 +

    On sintresse aux fonctions f drivables sur R satisfaisant la condition

    f (x) = k f (x) (1)

    pour tout x R, avec k un rel arbitrairement fix.On va tenter, dans cette section, dobtenir une approximation de lallure de la courbe repr-sentative dune solution de (1).On va pour cela considrer que pour h suffisamment petit et pour tout rel a,

    f (a) f (a+h) f (a)h

    Montrez alors que f (a+h) (1+kh) f (a).

    05

    Pour obtenir ce trac, nous allons choisir un rel k, un segment [a; b], nous allons fixer limagede 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 mme longueur : quelle sera lalongueur de chaque petit segment ?

    ,

    Ouvrons une fentre de gomtrie en tapant simultanment sur et .On dfinit un point dont on connat les coordonnes avec la commande :

    163

  • ! 4

    A:(1,2);B:(3,-1);C:(4,5);

    On relie ces points par des segments de droite grce la commande (listede points) :

    polygone_ouvert(A,B,C)

    Oublions pour un temps notre problme et voyons comment nous pourrions tracer pointpar point sur [3 ; 3] la courbe reprsentative dune fonction g vrifiant :

    g (b) g (a)b a = 2

    pour tous rels 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 rflchirau moyen dobtenir les images par f de chacune des extrmits des segments de la subdivi-sion.Il suffit de penser que g (x+0,25)g (x)x+0,25x = 2, cest--dire g (x +0,25) = ......+ g (x).On peut donc calculer g (x +0,25) si lon connat g (x).On va donc partir du point de coordonnes (3 ; 1) et obtenir de proche en proche les coor-donnes de plusieurs points de la courbes en faisant des petits sauts de 0,25 et en sarrtant 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 tX:-3; / / a u d p a r t X v a u t 3Y:-1; / / a u d p a r t Y v a u t 1 X

  • &

    Notons donc h le pas, m le coefficient directeur, [a ; b] lintervalle de dfinition et yo limagede a.Donnons galement un nom notre procdure, par exemple TraceAffine.On va ouvrir une fentre 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 en 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 tX:a; / / a u d p a r t X v a u t a c e t t e f o i sY:yo; / / a u d p a r t Y v a u t y o X

  • ! 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 dautres valeurs de x.tudiez le rapport Exp(0.01,x)exp(x)exp(x) pour diffrentes valeurs de x.Que pensez-vous de lapproximation ?

    On peut visualiser lerreur commise en crant une fonction erreur :

    erreur(x):(1-Exp(0.01,x)/((x)))*100

    Puis en crant la suite des points de coordonnes (x,erreur(x)) pour x variant de 0 100avec un pas de 1.La commande comme squencea permet de crer cette suite de valeurs :

    ((x,erreur(x)),x0100)

    Des commentaires ?

    :

    + /+

    Dans les quations diffrentielles ordinaires le logiciel Maxima trahit plus de bouteille que lelogiciel XCAS...Le mme problme classique

    '((y,x,2)=-100*y,y,x);

    ne donne pas de surprise.

    Rponse du logiciel

    y=%k1sin(10x)+%k2cos(10x)

    Mais le problme non linaire

    '((y,x,2)=y^2,y,x);

    apporte une rponse plus substantielle que le logiciel XCAS

    Rponse 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 daide sur les quations diffrentielles dcrit dautres instructions puissantes, no-tamment pour rsoudre des conditions initiales et des conditions aux limites.

    aCest--dire suite .

    166

  • # '!(

    , # /#0

    On obtient la mme chose sur MuPADDune part

    ode(y(t)-100*y(t),y(t));(%)

    Rponse du logiciel

    {C1*exp(-100*t) - 1/100*C2}

    et

    ode(y(t)(y(t))^2,y(t));(%)

    renvoieRponse 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

  • Transforme de Laplace

    Logiciel(s) abord(s) : Maxima XCAS

    Problmatique : Premiers contacts avec la transforme de Laplace.

    , # /+

    Le logiciel Maxima donne la transforme de Laplace F(p) de la fonction f (x) conformment la formule

    F(p) =+

    0f (x)epx d x

    avec linstruction $$&==&. La transforme de eax est calcule en saisissant :

    g(x):=(a*x);G(p):=(g(x),x,p);G(p);

    On retrouve la fonction de dpart avec la transforme inverse :

    (G(p),p,x);

    La machine connat la relation lmentaire entre la transforme et celle de sa drive :

    F(p):=((f(x),x),x,p);

    Rsolvons lquation diffrentielle 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 transforme 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);

  • :

    La rsolution dune quation linaire coefficients constants de nimporte quel ordre est si-milaire. Calculons

    +0 sin(x)/x d x. On sait que la transforme de x f (x) est la drive de la

    transforme de f (x). Si F(p) est la transforme de sin(x)/x, sa drive F(p) est donne par :

    Fprime(p):=(-(x),x,p);

    Lintgrale recherche est la valeur F(0). Comme F tend vers 0 en +, cest 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 transforme inverse sappelle 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 connat pas les relations entre transforme et drive, mais il peut rsoudre aussi lqua-tion diffrentielle :

    g(p):((a*x),x,p)y(x):((g(p)+1)/(p-a),p,x)y(x)

    Lintgrale est calcule de la mme faon ; attention la dernire ligne : la dfinition duneconstante et la notation de linfini diffrent de Maxima.

    Fprime(p):(-(x),x,p)I:(Fprime(p),p,+,0);

    170

  • Troisime partie

    THMES

  • XCAS au lyce ?

    Logiciel(s) abord(s) : XCAS

    Problmatique : Comment et pourquoi utiliser XCAS au lyce.

    !"#$ & &

    XCAS existe depuis quelques annes mais est trs mal connu au lyce car sa puissance faitpeur. XCAS permet en effet de traiter des problmes trs sophistiqus, mais galement (cequon passe souvent sous silence !) des problmes trs simples qui permettent par exempledinitier des lves de lcole primaire la programmation !Nous commencerons par voquer la gomtrie dynamique au lyce car cest un domaine oune comparaison avec les logiciels massivement utiliss par les professeurs du secondaire estpossible, ce qui nest pas le cas du calcul formel, de la programmation et surtout la possibilitdassocier les trois plus le tableur qui constitue une des grandes forces de XCAS.Un argument souvent soulev par ses dtracteurs est que XCAS fonctionne principalement enligne de commande. Notre exprience avec les lves nous incitent dire quil ne sagit pasdun inconvnient mais plutt dun avantage pour eux : les lves de nos classes sont en effethabitus dialoguer via leur ordinateur sur les sites de messagerie instantane. Le petit bmolquon pourrait apporter est quavec XCAS, il ne faut pas faire de fautes dorthographe !Les commandes sont de plus en franais et adaptes aux besoins des lves franais car crespar des professeurs de lInstitut Joseph FOURIER de lUniversite Joseph FOURIER de Grenobleet test grce lIREM. Que dites-vous de :parallele, droite, segment, aire, longueur, angle, resoudre, graphe, cercle,circonscrit, simplifier, factoriser, fonction_derivee,symetrie,... ?Le mode de construction dune figure et de rsolution du problme correspond de mme ladmarche suivie par llve sur sa feuille de papier.Pour vous en convaincre, reportez-vous la section b. page 69.

    !"#$

    Il existe deux types principaux de sujets proposs pour lpreuve exprimentale du Bac S : lesproblmes que peuvent traiter les logiciels de gomtrie dynamique que nous venons dtu-dier et ltude de suites laide du deuxime pilier de lducation Nationale, le tableur.

  • ;0 # 0):;(t>-a) (t

  • & %! !1 ! 22 ! 5

    Mode muet

    Vous noterez que chaque ligne de commande se termine par :; ce qui indique XCAS quil doit valuer cette ligne mais sans renvoyer de rsultat. En effet, aucuntrac ne peut tre effectu pour linstant car aucune valeur numrique nest affecteaux paramtres a, b et t .

    Il reste dfinir le point F et la droite D :

    F:((a^2-b^2),0):;D:(xa^2/(a^2-b^2)):;

    Le point T est lintersection des droites d et D.On utilise la commande (ensemble1,ensemble2) :

    T: (d,D):;

    Il ne reste plus qu calculer le produit scalaireFM FT laide de .

    ((M,F),(T,F))

    Calcul vectoriel

    Un vecteur pour XCAS est une liste de coordonnes entre deux crochets toutcomme lest un point. Lopration MF est donc licite pour XCAS. Pour ne pas se-mer le trouble dans les esprits des lves du lyce, on peut remplacer M F parcoordonnees(M)-coordonnees(F), ou bien, pour viter de calculer avec des sys-tmes de coordonnes, on peut prfrer travailler sur les affixes en rentrant

    ((M)-(F),(T)-(F))

    On peut galement demander Bernard PARISSE de crer une commandevecteur(M1,M2) synonyme de M2-M1 pour lordinateur mais moins choquantepour les lves. Cest ce que jai fait... et obtenu une heure plus tard ! Encore unpoint fort de XCAS...

    Ainsi :

    ((F,M),(F,T))

    181

  • ;0 #

    On obtient facilement une condition dalignement de trois points :

    Soit (A,B,C) un repre affine et trois points M1, M2 et M3 de coordonnes barycen-triques normalises respectives (x1, y1, z1), (x2, y2, z2), et(x3, y3, z3).Alors M1, M2 et M3 sont aligns si, et seulement si

    x1 y1 z1

    x2 y2 z2

    x3 y3 z3

    = 0

    Il suffit de remarquer quex1 y1 z1

    x2 y2 z2

    x3 y3 z3

    =x1 + y1 +z1 y1 z1x2 + y2 +z2 y2 z2x3 + y3 +z3 y3 z3

    =0 y1 y3 z1 z30 y2 y3 z2 z31 y3 z3

    = (y1 y3)(z2 z3) (y2 y3)(z1 z3)

    Ce dterminant est nul si, et seulement si, les vecteursM1M3 et

    M2M3 sont lis, i.e. les points

    sont aligns.Cela nous permet davoir un outil calculatoire pour tester lalignement 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 eb 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 aligns

    "); ("les points ne sont aligns");;}:;

    Alors :

    align((1+),(2+2*),(3+3*))

    renvoie :Rponse du logiciel

    les points sont aligns

    . !+ @

    Rappelons ce thorme

    190

  • & 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 aligns si, et seulement si

    IB

    IC JC

    JA KA

    KB= 1

    Nous allons bien sr utiliser la condition dalignement vue prcdemmenta. Nous allons tra-vailler dans le repre affine (A,B,C) et mettre en vidence lappartenance 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 coordonnes barycentriques

    Rponse du logiciel

    [0,x,1]

    CONDITION NCESSAIRE. On suppose que les points sont aligns. On peut alors traduire cetteproprit 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 rsultat attendu : XCAS a prouv la condition ncessaire.

    CONDITION SUFFISANTE. On prend soin de purger la variable x de la valeur trouve pr-cdemment

    aPour dautres dmonstrations plus classiques, voir SORTAIS , Yvonne/SORTAIS , Ren La gomtrie du triangle . Paris:Hermann, 1987

    191

  • =>

    (x)

    On utilise cette fois-ci lgalit (1)

    x:((-I[1]/I[2])*(-J[2]/J[0])*(-K[0]/K[1])1,x)[0]

    Les points sont-ils aligns ?

    ([I,J,K])

    Oui, rpond XCAS : la preuve est faite !

    > /

    Le 5 aot 2007, nous sommes tombs 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

    Problme du Monde du 5 aot 2007

    La question tant : est-ce que CM6 +AM2+BM4 =CM3 +BM1 +AM5 ?Il faut prciser que le triangle est quilatral.Demandons XCAS

    R:(05);x:(-33);y:(-15);O:(x,y); / / un p o i n t O v a r i a b l ec:(O,R); / / l e c e r c l e c a u s s ia:(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

  • && !

    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 dmontrer.Il suffit de penser la puissance des sommets par rapport au cercle...On obtient successivement :

    CM6CM5 = CM3CM4 AM2AM1= AM5AM6 BM4BM3 =BM1BM2Puis, en additionnant membre membre ces galit et en notant a le ct du triangle

    CM6(aAM5)+AM2(aBM1)+BM4(aCM3) = AM5AM6+BM1BM2 +CM3CM4et le rsultat sen dduit :

    a(CM6+AM2+BM4) = AM5(AM6+CM6)+BM1(BM2+AM2)+CM3(CM4+BM4) = a(AM5+BM1+CM3)

    " %%

    ! !"

    Dabord un dessin :

    Cercles de Pappus

    Comment tracer cette figure ?

    193

  • =>

    Au IIIe sicle avant J.C., le mathmaticien grec Pappus proposa le thorme suivant qui vanous aider dans notre construction. Il sagit du thorme XV du livre IV de ses Collections ma-thmatiques traduites du grec pour la premire fois en 1932 seulement par Paul VER EECKEb.

    Thorme de Pappus

    On considre trois demi-disques (C), () et (C0) centrs 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 dmonstrations des rsultats utiliss, voirc et notammentd qui arrive rapidement aursultat en considrant des inversions. On montre de la mme manire que le lieu des pointsde contact entre les cercles (Ck ) est le cercle bissecteur de (C) et ().Une fois ces rsultats en poche, la partie nest pas gagne car il reste encore des systmesdlicats rsoudre. Cest ici que XCAS peut nous aider avec ses capacits de calcul.

    On cre un point dabscisse mobile et des cercles de rayons variables. Par commodit, onplacera les centres des cercles sur laxe 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 sagit maintenant decrer 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, intressons-nous au problme de Pappus : comment dterminerla position du centre O1 du cercle (C1) ?

    bPaul ver Eecke - La Collection Mathmatique de Pappus dAlexandrie , introduction (1932, rd. 1982) - Libr. A.Blanchard, Paris

    cTHBAULT , Victor Sur le tranchet dArchimde . Bulletin de la S.M.F. Tome 72 1944.dABDELJAOUAD , Mahdi lments de Gomtrie du Plan . Tunis: Association Tunisienne des Sciences Mathmatiques,

    2000.

    194

  • && !

    o OX

    r

    Y/2

    Y/2

    RY Dtermination du cercle (C1)

    Le thorme de Pappus nous dit que le rayon de (C1) vaut Y/2. Le point O1 est donc lintersec-tion ordonne 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 dun...Pour les autres cercles, nous allons utiliser le deuxime rsultat, savoir que les points decontacts sont sur le cercle mdiateur 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 connatre ces deux points ne suffit pas pour tracer le cercle. Appelons a labscisse ducentre de ce cercle (son ordonne 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))^2b^2,((I)-a)^2+(

    (I))^2b^2],[a,b]);

    K:(((S[1][0],0),S[1][1]),);

    a y est ! Nous avons tous les lments pour crer une procdure pappus(n) qui tracera les npremiers cercles tangents, et mme leurs symtriques par rapport laxe (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

  • =>

    os:());os:os,o1; / / l i s t e d e s c e n t r e scss:());css:css,((y0),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((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 toj:(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 eeqj:(((os[j-1],ks[j]))[2],xxx); / / 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 simpose : nous allons exprimer que O j est tel que O j1O j = O j1K j + r j , avecr j = h j2( j+1) comme nous laffirme le thorme de Pappus. Cest un systme peu vident r-soudre. Nous allons donner une indication XCAS : la solution est proche de k j . Nous luidemanderons ensuite dutiliser la mthode de Newton :

    fs:([(os[j-1],oj)(os[j-1],ks[j])+0.5*yy/(j+1),yyeqj],[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 ecs:cs,(os[j],(os[j],ks[j])); / / l e n o u v e a u c e r c l ecss:css,((y0),(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 mthode prcdente est intressante informatiquement et mathmatiquement : 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 extrmits, ce qui nous fait bien sr penser ... une inversion quitransforme certaines droites en des cerclese.XCAS possde une commande (ple,rapport,point) qui calcule les coordon-nes de limage dun point par une inversion. Le problme, cest que nous aimerions obtenir

    eMerci IVALDI , Philippe ressources Asymptote . URL: http://piprim.tuxfamily.org/asymptote/travaux/index.html.

    196

  • && !

    les images densembles de points et non pas de points isols. Lide est dutiliser des reprsen-tations paramtriques de ces ensembles. Nous profiterons de lexistence sur XCAS des com-mandes (courbe) qui renvoie lcriture paramtrique complexe dune courbe et (affixe,paramtre). Par exemple :

    ((((x+iy),r))) / / e v a l c r e n v o i e l a f o r m ea l g b r i q u e

    (r) cos(t)+x+i ((r) sin (t)+y)

    Rponse du logiciel

    Nous allons donc crer une procdure inv_courbe(C,k,g) avec C le ple de linversion, kson rapport et g lensemble de point aprs avoir ouvert une fentre 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-500500,tstep0.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 fentre de gomtrie avec et .

    On dfinit le ple :

    C:(-5)

    On dfinit les images des bords du tube :

    inv_courbe(C,10,(x-1));inv_courbe(C,10,(x1));

    On construit les images dune vingtaine de billes tangentes entre elles et aux parois du tube . On prend donc ici des cercles de rayon 1 et de centres situs sur laxe des ordonnes :

    L:()); (j:-n; j

  • =>

    Cela donne :

    Cercles de pappus obtenus en utilisant une in-version.

    198

  • Suites et chaos

    Logiciel(s) abord(s) : XCAS

    Notions informatiques : Cette brve tude sera loccasion de d-couvrir les possibilits offertes par XCAS pour tudier des suites dutype un+1 = f (un). Nous construirons galement une procdure quincessitera beaucoup dastuce informatique afin que lordinateurdonne un rsultat en un temps raisonnable.

    Problmatique : Vers 1950, le mtorologiste amricain Edward LO-RENZ tudie la circulation atmosphrique. Il se base pour cela surles travaux des mathmaticiens franais HADAMARD et POINCAR surlimprdictibilit des systmes simples. Mme en modlisant lat-mosphre en un systme ayant une dizaine de degrs de libert, ilmontre la sensibilit exponentielle par rapport aux conditions ini-tiales. Il illustre son propos en montrant que le battement daile dunpapillon en un point de la Terre est suffisant pour dclencher deuxsemaines plus tard une tornade lautre bout de la plante. Au mmemoment, le russe Vladimir ARNOLD, disciple de KOLMOGOROV, mo-dlise le mouvement dun fluide parfait comme celui dun point surune hypersurface de dimension infinie. Il part lui aussi de tra-vaux dHADAMARD sur les trajectoires dune bille sur certaines sur-faces : par exemple, si on lche une bille sur un parabolode hyperbo-lique (une selle de cheval), sa trajectoire va dpendre normment desa position de dpart, tel point quil savre impossible de prvoir satrajectoire au-del dun temps trs court.Bref, leffet papillon envahit les esprits et nombre de disciplines pourimposer une vision chaotique dun monde complexe et imprdic-tible. Cest ce phnomne que nous allons observer et commenteraujourdhui, non pas en tudiant le domaine des turbulences atmo-sphriques physiquement hors de notre porte, mais en explorant,de manire trs simplifie, la dynamique des populations.Nous voquerons en conclusion les apports rcents de la mcaniquestatistique qui replace dans leur contexte les travaux de LORENZ etARNOLD.

  • 0

    /

    Comme vous le savez tous, le Zrjdz commun ailette mouchete est lanimal emblmatiquede la Syldavie. Aussi paisible que les habitants de ce bucolique pays, le Zrjdz se nourrit exclu-sivement des baies du bleurtschzrn, arbre qui pousse en abondance dans les verts sous-boissyldaves. Si lon ne considrait que cette idale situation, la population u de Zrjdzs suivraitla loi suivante

    un+1 =RunCette relation traduit le fait que la population de lanne n +1 est proportionnelle lannen : on applique un le taux de natalit et le taux de mortalit. Le coefficient R rsume cesproportions.Il est assez ais dobjecter au modle prcdent que lvolution ne peut pas rester proportion-nelle la population de lanne prcdente : au bout dun moment la nourriture et lespacevital, par exemple, viennent manquer. On peut alors modliser lvolution de la populationselon la loi

    pn+1 =R pn(1pn )avec pn reprsentant la proportion par rapport un maximum estim.

    ';

    p(R,po,n):{ pn,k;pn:po;(k:1;k

  • & %!

    Rponse du logiciel

    0.8683116395,0.8284245987,0.8749972464,0.8269407066,0.8749972636

    (u(3.71,0.2,10*k),k15)

    Rponse du logiciel

    0.6260986177,0.5214383835,0.6950564063,0.2789286664,0.772755663

    %'

    Observer des sries de rsultats chiffrs, un peu comme cela se fait sur les tableurs, nest pastrs parlant ni efficace.Nous allons donc utiliser la commande (f(x),uo,n) qui donne la reprsentationclassique des suites dfinies par une relation un+1 = f (un)a :(1.6*x*(1-x),x0.9,5)

    tude graphique de un+1 = 1,6un (1un )Ouvrons une fentre de gomtrie en tapant + .

    R:(04) / / o n f a i t v a r i e r Rf:x->R*x*(1-x) / / o n d f i n i t fx1:(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 ffp:

    (f) / / l a d r i v e d e f

    aPour une tude originale de ces suites, on pourra se rfrer ROUQUS , Jean-Philippe/DOMINGUEZ , Sophie Leonsparticulires - Cours de Maths . Paris: Ellipses, 2002

    201

  • 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 phnomnes trs tonnants.Au dpart, pas de surprise :

    pour 0

  • ( 5!

    On nobserve plus de valeurs dadhrence

    On peut galement, pour une mme valeur de R, observer ce que donne diffrentes valeursde po, en particulier de trs petites variations autour du point fixe x1.

    Cest lillustration du fameux effet papillon : un battement daile de papillon Rez estsusceptible de dclencher beaucoup plus tard une tornade en Syldavie. La trs faible pertur-bation cre par le vol dun papillon pourrait en principe faire varier les conditions initialesdu systme atmosphrique et engendrer plus tard un changement climatique en un endroitquelconque de notre plante.

    0

  • 0

    Le papillon bat-il de laile

    Les rsultats de LORENZ et ARNOLD ne semblent pourtant pas avoir sonn le glasdes prvisions mto ! Cest quen fait, leurs travaux sont bass sur une chelle mi-croscopique : il est en effet impossible de suivre un petit lment long termemais il est tout fait envisageable de faire des prdictions long termes lchellemacroscopique grce aux rsultats de la physique statistique en considrant desmasses dair dans leur ensemble.Ce phnomne est similaire lobservation dun gaz dans un rcipient : il est im-possible de modliser la trajectoire dune molcule, mais on peut ltudier pluttdes valeurs moyennes et obtenir des quantits statistiques comme la temprature,la pression du gaz dans le rcipient et cest ce qui nous intresse en gnral.La mto reste cependant imprvisible longue chance, mme si elle est natu-rellement plus prvisible que lvolution des molcules. Par contre le climat, lui, estplus prvisible, malheureusement pour nous et surtout nos enfants...Le papillon reprend malgr tout son envol pour des conditions initiales critiquesqui font hsiter le systme tudi entre deux tats finaux distincts.

    204

  • Coniques

    Logiciel(s) abord(s) : XCAS

    Notions informatiques : Ce chapitre sera loccasion de dcouvrirde nombreuses commandes de calcul formel et de gomtrie dyna-mique.

    Problmatique : Voici un cours assist par ordinateur : nous explo-rerons un maximum de notions sur les coniques, tant algbriquesque analytiques et gomtriques, dans le plan comme dans lespace.Nous effectuerons des exprimentations bien sr, mais galementdes preuves de thormes.

    , =

    !" $AB

    Pour nous simplifier la vie, nous tudierons en fait les courbes dquation :

    ax2 +by2 +2cx +2d y +e = 0

    Nous travaillerons dans un repre orthonorm(O; ,j

    ). Nous supposerons que a et b ne

    sont pas tous deux nuls.Nous appellerons la courbe dquation ax2+by2+2cx+2d y+e = 0 dans le repre

    (O; ,j

    ).

    Il va falloir distinguer de nombreux cas, comme par exemple...

    ? ab = 0Nous supposerons par exemple que cest b qui est nul. Alors

    Si d = 0. On obtient :(A*x^2+2*C*x+2*D*y+E0)

  • [(A)(x)2(2xC)E

    2D]

    Rponse du logiciel

    En posant = a2d , = cd et = e2d , est donc la courbe dquation y = x2 +x + dans(O; ,j

    )avec = 0 :

    (a*x^2+b*x+c)

    a (x+ b2a )2+ 4ac((b)2)4aRponse du logiciel

    On obtient donc quil sagit de la parabole de sommet S( 2 ;

    424

    ).

    Si d = 0. Alors admet pour quation : (x^2+2*C/A*x+E/A)

    (x+ 2 C

    2 A)2

    +4EA

    ((2 CA

    )2)4

    Rponse du logiciel

    (x + c

    a

    )2= c

    2 eaa2

    Deux cas doivent encore tre distingus :

    c2 ea2 < 0, alors = ; c2 ea 0, alors est la runion de deux droites verticales .

    ? ab = 0On obtient comme quation quivalente puisque a et b sont non nuls :

    (A*x^2+2*C*x)+ ((B*y^2+2*D*y,yx))+E

    206

  • # 6! 2%! %!

    A (x+ 2C2A )2 ( (2C)24A )+B (x+ 2D2B )2 ( (2D)24B )+ERponse du logiciel

    Soit le point de coordonnes( ca ; db

    )dans

    (O; ,j

    ).

    Posons k = c2a d2

    b +e.Alors est la courbe dquation ax2 +by2 +k = 0 dans le repre

    (; ,j

    ).

    Distinguons nouveau deux cas :

    Si a et b sont de mme 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 =

    kb on obtient que

    la courbe a pour quation

    x2

    2+ y

    2

    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 runion de deux droites ;

    Si k = 0, en posant = ka et =

    kb on obtient que la courbe a pour quationx2

    2 y

    2

    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! !" 21 !

    207

  • !" $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 nest pas du type parabole.Plus prcisment :

    (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 coordonnes dans la nouvelle base et la partie linaire :

    V:[[X],[Y]];L:[[4],[0]]

    et on obtient la nouvelle quation :

    ((V)*D*V+(L)*R*V

    cest--dire :

    [4 (X)2+2 X 2 (2 (Y)2)+ ( (2 Y)) 2]Rponse du logiciel

    Il ne reste plus qu rduire cette quation comme nous lavons vu la section a. page 205.

    209

  • "

    On pourrait construire une procdure qui distingue les 9 cas de la section a. page 205 puisrduire la forme quadratique comme la section b. page prcdente, mais XCAS a dj fait letravail pour nous...

    ( (x^2+6*x*y+y^2+4x))

    donne successivement :

    les coordonnes du centre :

    [14 ,

    34

    ]Rponse du logiciel

    la nouvelle base :

    22 (22 )2

    2

    2

    2

    Rponse du logiciel

    le fait que la conique soit dgnre ou non :

    1

    Rponse du logiciel

    une quation dans le nouveau repre :

    4 (x)2 (2 (y)2)+ 12 = 0Rponse du logiciel

    et mme une reprsentation paramtrique que nous ne commenterons pas ici.

    Pour obtenir le trac, on tape :

    ((x^2+6*x*y+y^2+4*x),gray)

    210

  • # 6! %! %!

    ce qui donne

    Hyperbole trace avec conique

    , = &

    )"

    x2

    a2+ y2

    b2= 1

    Nous supposerons dans la suite que a et b sont positifs ce qui nenlve aucune gnralit ltude. Il est ais de vrifier que lellipse (E) est globalement invariante par reflexion daxe(O;

    ),(O;j

    )et par symtrie par rapport O. Nous pouvons donc nous restreindre tudier

    lensemble (E) des points de (E) dabscisse et dordonne positives.(E) est la courbe reprsentative de la fonction

    f :R+ R

    x b

    1 x2a2

    (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 dfinie et continue sur [0 ; a] et drivable sur [0 ; a[.

    ((f(x),x))

    ((

    (a)2((x)2)))bx

    (a)3(a(x)2)

    Rponse du logiciel

    On obtient f (x) = bxa

    a2 x2pour tout x [ ; a[.

    211

  • 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 limxax

  • # 6! %! %!

    On peut visionner linfluence des coefficient a et b en les faisant varier grce la commande

    (intervalle) :

    a:(0 10);b:(0 10);f:x->b*(1-x^2/a^2):;G:(f(x),x0a):;G1:((0),G):;G2:((x0),G):;G3:((y0),G):;(G,+ B),(G1,+ B),

    (G2,+ ),(G3,)

    ;* )"

    x2

    a2 y2

    b2 = 1

    On effectue la mme tude avec g :R+ R

    x b

    x2

    a11

    :

    (a>0):;F:x->b*(x^2/a^2-1)a:2:;b:1:;H:(F(x),x25):;H1:((0),H):;H2:((x0),H):;H3:((y0),H):;(H,+ B),(H1,+ B),(H2,+ ),(H3,)

    ce qui donne :

    tude analytique de lhyperbole

    213

  • , ) % / % MF = eMHOuvrons une fentre de gomtrie + . On cre un point fixe F et un point quelconquede coordonnes (x ; y).

    F:(0,0);M:(x,y):;

    On cre deux lments variables d, qui caractrise la directrice, et E, lexcentricit.

    d:((-5) 5)E:(0 2)

    On cre le projet de M sur la directrice :

    H:,((xd),M)

    On trace le lieu du point M vrifiant MF = eMH avec (f(x,y),x,y) qui tracela courbe dquation 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 :

    ((xd),)

    On visualise alors parfaitement les 3 cas : e < 1, e = 1 et e > 1.

    , -&

    )

    Soit le centre de lellipse. Dans le repre orthonorm(; ,j

    ), avec un vecteur unitaire

    de la droite vectorielle associe au grand axe, lellipse admet pour quation x2

    a2+ y2

    b2= 1.

    Les rsultats suivants sobtiennent classiquement avec les notations usuelles dans le cas a >b :

    @

    c =

    a2 b2 e = ca F(c ; 0) F(c ; 0) D: x = a2c D : x = a

    2

    c

    On peut demander XCAS de faire le travail :

    foyer_ellipse(a,b):{ c,E;(a

  • ## ! 7 ! %!

    {c:(a^2-b^2);E:c/a;("lexcentricit vaut "+E+"Les foyers ont coordonnes ("+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 :Rponse du logiciel

    lexcentricit vaut e =4/5Les foyers ont pour coordonnes (4,0) et (-4,0)et les directrices ont pour quations x=25/4 et x=-25/4

    )!*

    Il est ais dadapter au cas de lhyperbole.

    ,, " ?

    Nous avons dtermin prcdemment page 212 lquation dune ellipse.Voyons maintenant une construction de la tangente.

    !+

    @

    ! %! 5 $ 2 ( 7 ! '

    %! ) 7 )" 5 ! ( ! %! ) FM FT = 0

    )

    Observons ce rsultat en ouvrant une fentre de gomtrie aprs avoir tap + .On dfinit la conique et on la trace :

    a:(15)b:(1.5)E:(x^2/a^2+y^2/b^21):;(E,)

    215

  • On dfinit maintenant un point quelconque de E avec la fonction en faisant varierun rel t entre 0 et 2 :

    t:(0 2*)M:(E,t)(M,+point_width_5)

    On dfinit un foyer et une directrice et le segment [M,F] :

    F:((a^2-b^2),0)D:((xa^2/(a^2-b^2)),)((M,F),)

    On dfinit la perpendiculaire (MF) en M avec (point,droite) :

    d:((F,(M,F)),)

    et lintersection de D et d avec (courbe1,courbe2) :

    T: (d,D)(T,+point_width_5)((T,M),+ )

    On demande lquation de la droite (TM) avec (droite) :

    ((T,M))

    Puis on se souvient du rsultat vu page 212 qui dit que la tangente en M(x0 ; y0) lellipse apour quation xx0

    a2+ y y0

    b2= 1. On obtient donc que :

    y =(1 xx0

    a2

    ) b2y0

    Nous avons prcis que M nappartenait pas laxe focal et donc y0 = 0.Nous utilisons (point) et

    (point) :

    ((1-(x*(M)/a^2))*b^2/

    (M))

    On obtient le mme rsultat. XCAS nous le confirme avec (test) qui rpond 0 ou 1 untest boolen :

    ((((T,M)))((1-(x*(M)/a^2))*b^2/

    (M)))

    lcran, on fait varier t , a et b.

    216

  • ## ! 7 ! %!

    Construction de la tangente une ellipse

    Effectuons la preuve dans le cas gnral grce aux capacits formelles de XCAS :

    C:(x^2/a^2+y^2/b^21):;M:(a*(t),b*(t)):; / / d f i n i t un p o i n t d e CF:((a^2-b^2),0):;D:(xa^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 / b1

    T: (d,D):;

    Tout est rentr. On teste le rsultat grce (vecteur1,vecteur2) :

    ( (M-F,T-F))

    qui rpond bien 0.Nous venons donc de dmontrer le thorme puisque les calculs ont t effectus dans le casgnral.Un dveloppement accessible aux lves de lyce du mme problme est prsent la sec-tion 1.3 page 179.

    217

  • ,. # %

    Voici une activit qui peut tre propose des lves de 2nde car elle ne demande que desconnaissances de base sur les paraboles.

    ) ' +

    Les lycens lignorent, mais nous savons quune parabole dquation x2 = y = 2 12 x2 admetpour foyer F(0 ; 14 ) et une directrice dquation y = 14 .1. Tracer la droite D dquation y =1/4 en vert :

    D:((y-1/4),)

    2. Placer le point F de coordonnes (0 ; 1/4) :

    F:((0,1/4),)

    3. Crer un nombre s alatoirement choisi entre 2 et 2 :s:(-22)

    4. Crer 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 mdiatrice med du segment [mF] en jaune :

    med:((m,F),,)

    7. Soit M lintersection de p et de med. Dterminez les coordonnes de M :

    M:( (p,med),)

    8. Tracez le lieu de M quand s varie :

    ((M,s),+ B)

    9. Le lieu ressemble une parabole... Vrifiez que M appartient la parabole dquation y =x2 :

    (

    (M)((M))^2)

    Ceci permet de tracer point par point une parabole dont on connat le foyer F et la directrice D :

    218

  • #, 2 22%! !

    Construction la rgle et au compas duneparabole

    " " & " C

    Compltons la figure prcdente.

    1. Tracer maintenant en magenta la perpendiculaire perp med en M :

    perp:((M,(M,F)),)

    2. Tracer en vert la parallle 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

  • Connaissez-vous la loi de Descartes pour la reflexion ?

    1 2

    Rayon incident Rayon rflchiNormale au point dincidence

    Loi de Descartes

    On a 1 =2 et donc la normale au point dincidence reprsente la bissectrice delangle gomtrique form par les rayons incident et rflchi.Si on considre des rayons venant dun satellite , on peut supposer quils sont tousparallles tant donn quil est trs loign de lantenne. Notre petite illustrationmontre alors que tous les rayons incidents sont envoys vers le foyer.Inversement, si lon met de la lumire depuis le foyer, comme cest la cas parexemple dans le phare dune voiture, les rayons rflchis par les parois du pharepartiront tous dans la mme 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 lorigine du mot coniques. Nous allons nous contenter delillustrer.

    220

  • #/ %! 8

    ) ? )" x = tOn construit un cne de centre lorigine, daxe (Oz) et de demi-angle au sommet 4 :

    K:(([0,0,0],[0,0,1],/6,0.02),)

    On construit le plan dquation x = t avec t variant entre 10 et 10 :t:((-10) 10)Q:((xt),+)

    On demande de tracer lintersection du cne et du plan :

    ((Q,K),+ B)

    Intersection dun cne avec un plan dqua-tion x =t

    tudions lintersection de K et du plan x = t . On utilise qui renvoie le rel flottant tsous la forme dun rationnel car inter travaille en calcul formel.

    ([(K),x(t)],[x,y,z])

    nous renvoie (dans le cas t = 1) :

    221

  • 1 y ((y)2+1)1 y

    (y)2 +1

    Rponse du logiciel

    Cest dire que z =y2 +1 ce qui est quivalent z2 = y2 +1.Nous reconnaissons bien sr une hyperbole. XCAS nous le confirme.

    Sortons de la fentre de gomtrie 3D. Comme

    y2 +1 est le troisime lment du secondlment de solve([equation(K),x=1],[x,y,z]), on lobtient en tapant :

    ([(K),x1],[x,y,z])[0][2]

    Il ne nous reste plus qu utiliser :

    (z^2(([(K),x1],[x,y,z])[0][2])^2,y,z)

    Le logiciel renvoie le trac et le message :

    Rponse du logiciel

    Hyperbola of center (0,0)

    ) ? )" x = t +k z

    Nous allons rajouter un nouveau paramtre, k, qui va nous permettre de visualiser lvolutiondes 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:(xt+k*z,+)((K,P),+ B)

    En faisant varier k, on visualise le passage de lhyperbole lellipse puis la parabole :

    222

  • #/ %! 8

    Section dun cne par un plan dquationx = t + k z : cas de la parabole

    223

  • Sries de Fourier

    Logiciel(s) abord(s) : XCAS

    Notions informatiques : Les logiciels ont du mal intgrer les fonc-tions non continues. On sintresse ici aux fonctions continues parmorceaux.

    Problmatique : On explore les dveloppement en srie de Fouriertant par le calcul que graphiquement.

    . )+%

    Si lon considre des fonctions intgrables au sens de Lebesgue sur un intervalle [a ; a +T],alors on peut toujours calculer ses coefficients de Fourier :

    cn = 1T

    a+Ta

    f (t)e2int/T dt

    Sur XCAS une fonction est pr-programme :

    (f(x),variable,priode,n,borne infrieure de lintgrale)

    Par exemple, considrons la fonction f , 2-priodique, paire et telle que f (x) = x2 pour toutx [0 ; ]. Traons sa reprsentation graphique sur une priode :

    (x^2,x-PiPi)

  • " 0 &

    XCAS : Fonction x x2

    Alors :

    (x^2,x,2*Pi,n,-Pi)

    in22ein+in22ein(+2) +2nein+2nein(+2)+2iein2iein(+2)2n3

    Rponse du logiciel

    Ce nest pas trs lisible.Il suffit dexpliquer que n est un entier et les exp((-i)*n*(-pi)) vont sen trouver soula-ges...

    (n,) (x^2,x,2*Pi,n,-Pi)

    renvoie cette fois :

    2 (1)n(n)2

    Rponse du logiciel

    a a lair mieux...Nous pouvons prfrer les coefficients rels :

    (x^2,x,2*Pi,n,-Pi); (x^2,x,2*Pi,n,-Pi)

    226

  • , "

    4 (1)n(n)2

    ,0

    Rponse du logiciel

    On vrifie bien que les bn sont nuls car la fonction est paire. Il semble y avoir un problmepour a0... mais XCAS sen sort encore une fois !

    (x^2,x,2*Pi,0,-Pi)

    qui renvoie bien 2/3, la valeur moyenne de f sur une priode.Au fait, vrifions le lemme de Riemann-Lebesgue pour rigoler :

    Lemme de Riemann-LebesgueSoit f L 1[a ; a+T]. Alors

    limn+

    a+Ta

    f (t)e2int/T dt = 0

    cn: (x^2,x,2*Pi,n,-Pi);((cn),n+)

    Pour la dmonstration, cest un autre problme...Vrifions maintenant graphiquement la convergence de la srie de Fourier :

    f4:t-> (x^2,x,2*Pi,0,-Pi)+( (x^2,x,2*Pi,n,-Pi)*(n*t),n14)

    cre 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

    + 13 ()2

    Rponse du logiciel

    Nous voici rassurs... Voyons le rsultat graphiquement. Pour cela, il nous suffit de rentrer :

    227

  • " 0 &

    ([t^2,f4(t)],t-PiPi,[red,])

    Mais pour limpression de ce livre, nous avons augment lpaisseur des traits avec la fonction :

    ((t^2,t-PiPi),line_width_2+red);((f4(t),t-PiPi),line_width_2+);

    XCAS : Visualisation de la convergence de lasrie de Fourier

    . % %'&

    Adoptons prsent une vision physicienne du problmea.Ainsi f est un signal de priode T et notons classiquement = 2/T. Supposons que f esttelle que la suite des sommes partielles

    fn (t) = a0 +n

    k=0(ak cos(kt)+bk sin(kt))

    converge vers f , ou ventuellement sa rgulariseb et dont lnergie est

    E ( f ) = 1T

    a+Ta

    f 2(t) dt

    On utilise alors la formule de Bessel-Parseval et on obtient classiquement

    E ( f ) = a20 ++n=1

    a2n +b2n2

    Une des questions physiques est alors de savoir partir de quelle valeur de n on obtient unpourcentage donn de lnergie du signal en approximant f par fn .Reprenons notre exemple :

    aLes problmes de convergence et le travail dans un espace de Hilbert ne seront pas traits ici.bVoir le thorme de Dirichlet.

    228

  • ,& 29 *

    E:(1/(2*))*((t^4,t-));(E)

    nous dit que E ( f ) =4/5Notons En ( f ) = a20 +

    nk=1

    a2k +b2k2

    = 4

    9+

    nk=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^4/9+(8/k^4,k1n);100*(Energie(4))/(E);100*(Energie(5))/(E)

    ce qui confirme notre rsultat.

    . ' >

    Occupons-nous prsent dun signal moins rgulier mais important en lectronique : la fonc-tion crneau, impaire, de priode 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 manire explicite :

    f:t->piecewise(t-.5,0,(-.5

  • " 0 &

    Reprsentons dabord graphiquement des fonctions dfinies par morceaux en rentrant commearguments la liste des intervalles, la liste des valeurs correspondantes, le nombre dintervalleset la couleur.

    plot_mor(LI,LV,m,):{ P;P:[];(k:0;k

  • ,& 29 *

    four_an(LI,LV,m,T,p):{ integ,k;integ:0;(k:1;k

  • " 0 &

    nous donne cette fois un rsultat satisfaisant :

    (2 (1)p)+2 p

    Rponse du logiciel

    Ensuite on demande de crer la fonction t a0 +N

    n=1(an cos(2nt/T)+bn sin(2nt/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),k1N))}

    Par exemple :

    s_fourier([-1/20,01/2],[-1,1],2,1,5)

    192 (sin (2 x))5 (320 (sin (2 x))3)+180 sin (2 x)15

    Rponse du logiciel

    On peut demander le trac de la somme partielle et de la fonction elle-mme :

    plot_fourier(LI,LV,m,T,xmin,xmax,N):{ A,B;A:(s_fourier(LI,LV,m,T,N),xxminxmax,):;B:plot_mor(LI,LV,m,red):;A,B}

    et on obtient pour N = 8 :

    232

  • ,& 29 *

    XCAS : phnomne de Gibbs avec N=8

    qui met en vidence de petites crtes plus grandes prs des points de discontinuit.Vrifions un peu plus loin :

    plot_fourier([-.50,00.5],[-1,1],2,1,-.5,.5,16)

    et on obtient :

    XCAS : phnomne de Gibbs avec N=16

    Vous pourrez montrer les trois rsultats tonnants suivantsc : la crte est de plus en plus troite ; elle se rapproche du point de discontinuit ; sa hauteur est constante.

    cPour la dmonstration voir APPEL , Walter Mathmatiques pour la physique et les physiciens. Paris: H&K, 2005 p. 274

    233

  • Musique

    Logiciel(s) abord(s) : Scilab

    Problmatique : Construire une gamme en utilisant le calcul matri-ciel. Produire des sons pour un squenceur.

    5 " $

    Lensemble de toutes les notes possibles (partant des gammes classiques de tempramentgal) contient 12 degrs espacs dun demi-ton ; le nombre 0 reprsente do = C, le nombre 1reprsente do=C, etc.On cherche construire toutes les gamme possibles dans les contraintes suivantes : le nombrede degrs est fix, seuls certains intervalles sont autoriss, chaque note apparat au plus unefois, on retombe sur la note initiale la fin. Par convention, la note initiale est toujours 0.Dans notre construction, la premire note est omise et est toujours 0 (do = C) ; on construitune matrice dont chaque ligne reprsente une gamme. La matrice obtenue la fin reprsentedonc toutes les gammes possibles avec les contraintes donnes.

    #

    Il est bon de faire laller-et-retour entre une gamme et la succession de ses intervalles. Lafonction intervalle donne les intervalles successifs associs aux gammes stockes dans unematrice.

    yintervalle(x)yx j2:"(x,2)y(:,j)(y(:,j)-x(:,j-1),12)

    La fonction gamme donne les gammes associes aux suites dintervalles.

    ygamme(x)yxs"(x,2) j2:s

  • % =

    y(:,j)((x(:,[1:j]),c),12)

    Des candidates pour les gammes sont construites par itration ; une bonne partie de llimi-nation se fait pendant la gnration pour conomiser les ressources de lordinateur !

    ziteration(y,k,taille,w)W"(w,1)s"(y,1) ;z"(s*W,k) ; is:-1:1 , jW:-1:1,yyy(i,k) ;Z(yy+w(j),12) ;lW*(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 Y0 ; Yy(i,k-1) ; ;ZZZ-2*yy+Y ; or([(ZZ,12)0,Z0, or(y(i,[1:k])Z)]) z(l,:)[] ;

    ;

    ;

    ;

    Pour une matrice reprsentant les intervalles, il faut liminer les lignes qui sont redondantes permutation circulaire prs : cela reviendrait transposer la gamme, ce qui napporterait riende nouveau. La fonction pcc opre un cycle lmentaire sur les lignes dune matrice.

    ypcc(x)yxs"(x,2) j1:s-1kj+1y(:,j)x(:,k)

    y(:,s)x(:,1)

    On marque les lignes redondantes et on les limine la fin.

    236

  • / ! )!

    ynettoie(x)[l,c]"(x)marque[] i1:l-1 ji+1:lzx(i,:) k1:c-1zpcc(z) zx(j,:) marque[marque,j] ; ;

    yxy(marque,:)[]

    D / )

    Il faut taper z=cherche(t,w), o t est la taille de la gamme, cest--dire le nombre de degrs,et w est la liste des intervalles autoriss. La gamme obtenue sur la premire ligne ci-dessousse lit comme indiqu dans la deuxime ligne.

    Rponse du logiciel

    ! 3. 7. 10. 2. 8. 4. !do mib sol sib r sol# mi

    Linstruction intervalle(z) dcrit les intervalles entre chaque degr.Prenons par exemple la rgle : on peut monter ou descendre dun triton, dune tierce mineureou majeure.

    w[3;4;6;8;9]

    Le vecteur w reprsente tous les intervalles possibles en suivant cette rgle.Voici le programme principal :

    zcherche(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 zw ; i1:taille-1 , ziteration(z,i,taille,w) ; ;

    / / I l f a u t r e t o m b e r s u r d o0

    s"(z,1) ; is:-1:1 , or(wz(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) ; is:-1:1 , (z(i,1)+z(i,taille),12)0 z(i,:)[] ; ;

    237

  • % =

    ;/ / 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

    zgamme(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 pluriels ; pluriel ; ;chaineIl y a +(s)+ gamme+pluriel+ solution+pluriel(%io(2),chaine)

    5 -

    Le logiciel Scilab permet de fabriquer des sons sous forme de fichiers dextension .wav .Le son de lorgue lctronique modlis grossirement ici est produit par des oscillateurs circuits bobine-condensateur. Dans le circuit magntique de chaque bobine tourne une rouedune certaine forme, ce qui change lauto-inductance de la bobine et donc la frquence dela note. Les lectroniciens appellent cela une modulation de frquence et les musiciens unvibrato. (Quand la variation de frquence 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

    uorgue(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

    amplitudenuance/(1+frequence/441)uamplitude*(t*omega) ;

    La fabrication de la matrice de rels qui reprsente lchantillonnage sonore 44100Hz utilisela fonction prcdente. La fonction v ci-dessous sera construite partir de la fonction orgueci-dessus.

    Zconcret(v,duree,frequence,rotationRoues,profondeur,nuance)intervallesoundsec(duree,44100) ;Z[] kintervalle,Z[Z v(k,duree,frequence,rotationRoues,profondeur,nuance)];

    Lcriture des chantillons numriques dans un fichier sonore se fait automatiquement. Lins-truction y=[u,v] ; wavwrite(y,44100,16,nom) donnerait des rsultats bizarres.

    ysortie(u,v,nom)

    238

  • / $

    y[u;v] ; (nom,y,44100)ynom

    Il reste craser les extrmits pour diminuer les dgts du jeu en boucle.

    yenveloppe(t,duree,frequence,rotationRoues,profondeur,nuance) or([t0 tduree]) y 0 ; yyorgue(t-duree/2,frequence,rotationRoues,profondeur,nuance) ;yyy*(100*t)*(100*(duree-t));

    Puis utiliser les fonctions prcdentes en initialisant les variables.

    rotationRoues7 / / l e s r o u e s t o u r n e n t . h e r t zprofondeur.003frequence441 / / l a d u d i a p a s o nnuance.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 .zconcret(enveloppe,2,frequence,rotationRoues,profondeur,nuance);nomorgueA3.wavnomorgueBIS.wavsortie(z,z,nom)

    La fabrication automatique du sons peut produire des chantillons pour un squenceur infor-matique. La grandeur dune octave pour loreille humaine, cest--dire le coefficient multipli-cateur que lon applique aux notes quand on les lve dune octave, est lgrement suprieure deux, et varie en fonction des personnes et des circonstances. Dans le temprament gal,les douze notes sont quirparties en moyenne gomtrique le long de loctave. Profitons-enpour construire des fonctions logarithme et exponentielle musicales.

    ylm(x,octave)y(x)*12/(octave)

    yem(x,octave)y(x*(octave)/12)

    Les fichiers-sons se rpartissent au long de la tessiture du squenceur, qui contient typique-ment 128 notes (dix octaves et demie). On peut aller jusqu un chantillon par note ; onse contente ici dun chantillon par octave : videmment leffet vibrato sera htrogne. . .Pour crer un nouveau rpertoire o placer les encombrants fichiers-sons, il suffit dexcuterdans Scilab une commande shell :

    (mkdir Sons)

    Lautomate est prt tre crit ; le lecteur pourra aisment modifier la liste et le nombre deschantillons (le squenceur risque de rouspter sil en charge plus de 128), puisque tout passepar la gestion des chanes de caractres. Il faut juste reprer la position dans la liste de la notede rfrence pour le diapason (441Hz).

    239

  • % =

    ysequence(duree,rotationRoues,profondeur,nuance,octave)n-2:8;N(n)gamme[A]suite[] kN,suite[suite gamme+k];

    ksuite,nomorgue+(k)+.wav ;ivectorfind(suite,k,c)-5 / / 5 e s t l a p l a c e d u l a 3 .frequence441*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 nzconcret(enveloppe,duree,frequence,rotationRoues,profondeur,nuance) ;sortie(z,z,Sons/+nom) ;

    ysuite

    Les donnes ncessaires sont rentres ; il faut plusieurs secondes sur une machine ordinairepour produire une note dune seconde. Augmenter le nombre dchantillons et la dure seragourmand en temps de calcul.

    octave2.01rotationRoues7 / / l e s r o u e s t o u r n e n t . h e r t zprofondeur.003nuance.999 / / f f f f l e ma xi mum .duree1

    Il ne reste plus qu se jeter leau.

    sequence(duree,rotationRoues,profondeur,nuance,octave)

    240

  • Carrs magiques

    Logiciel(s) abord(s) : Scilab

    Problmatique : Rsoudre des problmes amusants en apprenant lamanipulation des matrices sans sen apercevoir.

    Les carrs magiques portent aussi un nom japonais imprononable en franais (sudoku).Les problmes sont des tableaux de 9 lignes et 9 colonnes ; certaines cases sont dja remplies.Le joueur doit remplir les cases restantes en respectant des contraintes gomtriques : la suitedes nombres de 1 9 doit apparatre exactement dans chaque ligne, dans chaque colonne, etdans chacun des neuf sous-carrs de trois cases par trois dcoups dans le tableau.Prenons un problme donn en remplaant les cases vides par des zros.

    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 dernire instruction affiche la matrice du problme. la matrice m est une matrice 9 par 9dans la quelle on stocke les donnes et o lon stockera les rponses progressivement. Lespremiers outils pour manipuler les neuf nombres sont initialiss.

    I(9,9) ;uI; d2*I; t3*I; q4*I; c5*I; s6*I; e7*I; h8*I; n9*I;

    Un transfert pour faciliter les itrations est ncessaire.

    [M,U,D,T,Q,C,S,E,H,N]egale(m,u,d,t,q,c,s,e,h,n)Mm;Uu;Dd;Tt;Qq;Cc;Ss;Ee;Hh;Nn;

    Un infme bricolage pour numroter les matrices extraites ne devrait faire peur personne.

  • '

    znumero(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 procde aux liminations dans la matrice Y,qui sera lune de celles o sont stocks les nombres encore inutiliss.

    Zannulation(Y,M)ZY k1:9 l1:9 M(k,l)~0 Z(k,l)M(k,l) Z(k,:)0;Z(:,l)0;Z(k,l)M(k,l);Knumero(k);Lnumero(l);Z(3*K+[1:3],3*L+[1:3])0;Z(k,l)M(k,l);

    Z(k,l)0 ;

    La premire action pour remplir la matrice est de vrifier les nombres qui ne sont utilissquune fois dans chaque ligne ou colonne.

    Mattribution(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

    Mmliste[u,d,t,q,c,s,e,h,n]compteur1

    / / b o u c l e 1

    ylisteY(y)colonne(Y,r) ; ligne(Y,c)

    / / b o u c l e 2

    j1: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

    k1: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

  • / $

    / / 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

    j1: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

    k1: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

    compteurcompteur+1

    / / f i n d e b o u c l e 1

    Si tous les nombres sauf un ont t limins pour un emplacement donn, lemplacementpeut tre attribu.

    MATTRIBUTION(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

    Mmliste[u,d,t,q,c,s,e,h,n]

    / / b o u c l e A

    k1:9/ / b o u c l e B

    l1:9verticale"(9,1)compteur1

    / / b o u c l e C

    ylisteY(y)verticale(compteur)Y(k,l)

    243

  • '

    compteurcompteur+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.

    Mattrib(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

    Mmliste[u,d,t,q,c,s,e,h,n]compteur1

    / / b o u c l e 1

    ylisteY(y)

    / / b o u c l e 2

    K0:2/ / b o u c l e 3

    L0:2ZY(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

    testcompteur / / b o u c l e 5

    kk1:3/ / b o u c l e 6

    ll1;3k3*K+kk ; l3*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

  • / $

    / / 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

    compteurcompteur+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-bles.

    [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] ylisteY(y)Zannulation(Y,M)

    (y+Z)

    MMattribution(M,U,D,T,Q,C,S,E,H,N) ylisteY(y)Zannulation(Y,MM)

    (y+Z)

    MMMATTRIBUTION(MM,U,D,T,Q,C,S,E,H,N) ylisteY(y)Zannulation(Y,MMM)

    (y+Z)

    Mattrib(MMM,U,D,T,Q,C,S,E,H,N)

    Le nombre ditrations et le drapeau darrt sont initialiss.

    stop0longueur0

    La boucle ditration utilise les fonctions prcdentes.

    245

  • '

    stop0/ / 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

    longueurlongueur+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] stop1 ;

    [m,u,d,t,q,c,s,e,h,n]egale(M,U,D,T,Q,C,S,E,H,N) ;

    Quand la machine sarrte, le point darrive est affich avec leffort fourni.

    (m);

    (longueur);

    Si a bloque avant de trouver une solution, cest quon ne peut pas continuer par limina-tion : il faut fixer une valeur arbitraire dans M (de prfrence o la collision est faible). Lesinstructions suivantes donnent des indications.

    collisionu+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 rentre dans m avec une instruction du type

    m([i,j])valeur

    Ensuite il faut ritrer lensemble dinstructions :

    [m,u,d,t,q,c,s,e,h,n]op(m,u,d,t,q,c,s,e,h,n) ;collisionu+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 ngatif, il ny a pas de solution : la valeur ar-bitraire tait mauvaise, il faut tout recommencer avec une autre valeur arbitraire. Ou alors ilfallait archiver sous dautres noms les dix matrices m, u. . . n avant de rentrer le candidat. . .

    246

  • Codes correcteurs derreurs

    Logiciel(s) abord(s) : XCAS

    Notions informatiques : Les codes correcteurs nous ferons travaillerdans des corps finis (F2 en loccurence) ce qui nous permettra dap-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 mathmatique (pour un dve-loppement trs pdagogique, voir a et pour une tude plus complte,voir b) pour nous concentrer sur lexploitation informatique.Nous utiliserons XCAS.

    Problmatique : Une information est code sous la forme de bits(binary digits), donc dlments dun F2-espace vectoriel. Elle est en-suite transmise puis dcode. Un message sera donc reprsent parun vecteur de Fn2 . La transmission altre parfois linformation : ainsion rcupre un vecteur transmis qui nest pas forcment celui dori-gine. Le but de lactivit est dutiliser un code qui permetttra de d-tecter les erreurs et mme de les corriger : on crera dabord une pro-cdure nave qui dpendra 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 procdure plus efficace mais qui neconcernera que les codes de Hamming. Enfin, nous travailleronsdans des corps de Galois pour crer des polynmes gnrateurs.

    aBRUGRE , Thierry/MOLLARD , Alain Mathmatiques lusage des informaticiens. Paris: Ellipses, 2003bBADRIKIAN , Josphe Mathmatiques pour tlinformatique : codes correcteurs. Paris: Ellipses, 2002

  • ) ,

    8 /' A

    Fk2

    Nous voudrions crire les 2k vecteurs de Fk2 sous forme de listes de longueur k. Plusieurs op-

    tions soffrent 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 problme, cest 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)

  • 3 '2 :

    est une distance, appele distance de Hamming, qui nous permettra de mesurer lcart entredeux messages, cest--dire le nombre de bits les diffrenciant.Il suffit dutiliser pour effectuer la somme des composantes dun 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 limage de Fk2 par uM, lendomorphisme canoniquement associ M.

    Ima:());(j:0;j

  • ) ,

    Nous obtenons ainsi une matrice de 2n 2k vecteurs qui ne sont pas des messages : appelonsla famille forme par ces vecteurs (ui ).La ruse est de se dire : je reois un message v . Cest un des 2n vecteurs de Fn2 : si cest un des

    2k vecteurs deIm(uM), tout va bien. Sinon, je peux lcrire sous la forme v = m + e avec mun vecteur de limage (un vrai vecteur) et e lerreur commise. Plus e sera de poids petit, plusm sera prs du message transmis et donc je pourrais penser que probablement le vritablemessage 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 dj t form auparavant, on llimine, sinon, on le garde.On parcourt la liste des lignes, et on ajoute chaque ligne son poids :

    (j:0;j

  • 3 '2 :

    On retrouve un vecteur ui toutes les 2k lignes. Le problme, cest que le rsultat donn parmode est lentier le plus proche de 2k , donc peut tre ngatif. Le passage de lentier modulo2k lentier tout cours via le %0 comporte donc des risques. On y remdie grce

    (q>0) (v+" doit tre corrig en "+Ima[q]%0);

    {q:q+2^k; (v+" doit tre corrig en "+Ima[q]%0);} };

    &

    Il reste vrifier que le choix du message corrig est justifi. Il sagit en fait de regarderIm(uM)et plus particulirement les distances sparant ses diffrents lments.Sil existe au plus un lment m de Im(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 lments deIm(uM) doit tre au moinsgale 2t +1.Nous en dduisons que t est la partie entire de (PoiMin(M)1)/2, avec PoiMin la procdurequi donne le poids minimum dune liste de vecteurs :

    PoiMin(M):{ L,k;k:(M);L:[];(j:1;j

  • ) ,

    La procdure 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 nest de la bonne taille.");

    {Ima:());L:());P:[];U:[];(j:0;j

  • 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 lon demande

    decod1(A,[1,1,1,0,0,0,0])

    on obtient

    Rponse 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 problme, cest que cette procdure 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 mmoriser les 232 vecteurs de 32 bits chacun...Il va donc falloir appeler les mathmatiques au secours !

    8 " & %&@

    Un code est dit cyclique si, et seulement si, pour tout mot de code m, tout mot obtenu parpermutation circulaire des coordonnes est encore un mot de code.Il savrera trs pratique de ne plus reprsenter un mot par un vecteur de Fn2 mais plutt parun polynme de F2[X] : aprs tout, pour lordinateur, cest dans chaque cas une liste de noprandes.Des considrations dalgbre gnrale c permettent de dire quune permutation circulaire dumessage revient effectuer une multiplication par X modulo Xn +1 du polynme message .On montre alors queIm(uM)[X] est un idal de lanneau 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 polynme gnrateur 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 linaire 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 polynme de contrle du code : il porte bien son nom carson produit avec un polynme-message ne sannule 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 procdure Hamming(n,g,m) o g est un polynme gnrateur ducode, m un message qui sera ventuellement corrig si ce nest pas un mot de code.On construit le polynme h(X), quotient de Xn +1 par g .h(x):((x^n+1,g(x))%2);

    cVoir BRUGRE , Thierry/MOLLARD , Alain, ibid. page 321

    253

  • ) ,

    On transforme ensuite h(X) en la liste des coefficients grce la fonction ' et onajoute autant de zros que ncessaires pour former une liste de longueur n :

    L:'(h(x)*x^(n-1-

    (h(x))));

    On cre ensuite la matrice de contrle forme du vecteur L et de ses permutations ciculaires successives. On utilise la fonction (L,k) qui permet deffectuer une permutation desk derniers lments avec le dbut de la liste si k est ngatif. On aurait pu tout aussi bien formerles produits de h(X) par les X j et utiliser ', cest loccasion de voir une commandeutile...

    H:());(j:0;j

  • 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 :Rponse 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 instantanment, ce qui est donc bien plus efficace que notre premier algorithme.

    8 "% 3 " %&@ 3

    Pour plus de dtails sur les dveloppements mathmatiques, vous pourrez par exemple tu-diere. Nous ne ferons ici quvoquer certains rsultats.

    Notre objectif est de crer une procdure donnant un polynme gnrateur dun code cy-clique en fixant sa longueur n et sa capacit de correction t .Nous ntudierons que des codes dont la longueur sexprime sous la forme n = 2m 1.Le rsultat fondamental est que le corps de Galois de caractristique 2 et de cardinal 2m (quonnotera GF(2,m)) est isomorphe F2/P(X) avec P(X) un polynme irrductible sur GF(2,m), dedegr m).Une tude pousse sur les corps finis permet de conclure quun polynme gnrateur sera dela forme PPCM(1(X),3(X), ,2t1(X)) avec k (X) le polynme minimal de k , tant unlment 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 , Josphe, ibid.

    255

  • ) ,

    L:L,l;l:2*l%n};L:[L]}

    Par exemple,

    cyclo(3,5)

    renvoie :Rponse du logiciel

    [3 % 31,6 % 31,12 % 31,-7 % 31,-14 % 31]

    On construit ensuite le polynme minimal de k qui est le polynme normalis de racines leslments de la classe cyclotomique de k :

    poly_min(cycle,alpha):{ r,k;r:1;(k:0;k

  • 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),j1t);(p%2);}

    et :

    gen(3,5)

    renvoie :Rponse 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 crer une matrice de contrle assez rapidement. Le problme sera de corrigerlerreur...Pour des codes 1-correcteurs, notre procdure Hamming suffit. On construit un polynme g-nrateur dun code de Hamming grce gen(1,longueur). Pour obtenir des capacits decorrection plus grande, mieux vaut se tourner vers les codes de Reed-Solomon que nous nedvelopperons pas ici. Une procdure concernant ces codes existe dans les exemples fournispar votre distribution XCAS dans Exemples->Poly->reed_sol.xws.

    257

  • Surfaces de projectionimpose

    Logiciel(s) abord(s) : XCAS

    Notions informatiques : Nous traiterons un problme qui sembleraitplutt adapt un langage fonctionnel comme Caml mais qui peutcependant tre galement trait par XCAS.Nous verrons aussi comment tracer des surfaces dfinies implicite-ment.

    Problmatique : On va chercher donner une quation dun po-lygone rgulier de R2 dfini normalement laide dun systme din-galits. Pour cela on dfinira une varit de R3 dont la projection surR2 est le polygone. Ce problme est inspir dun sujet de lpreuve demodlisation de lagrgation externe, session 2006.

    9

    Commenons par descendre dune dimension pour poser le problme. La demi-droite de Rdfinie par lingalit x 0 peut tre galement caractrise comme tant la projection sur Rde la parabole de R2 dquation x = t 2.Le problme que nous traiterons ici concernera les polygones rguliers de R2 que nous pou-vons facilement dfinir ainsi, avec les bi des polynmes :

    S = {(x, y, z) R3,b1(x, y, z) 0, . . . ,bn (x, y, z) 0}Il sagit donc densembles semi-algbriques comparer aux ensembles algbriques qui sontdes ensembles des zros dun systme dquations polynomiales.Il est souvent peu pratique de travailler avec des ensembles semi-algbriques, au moins in-formatiquement parlant, puisquil faut tenir compte de n conditions.Nous admettrons alors le rsultat suivant :

    2@

    ; " ! 8 ! %!

    (x, y, z) S :t R,P(x, y, z, t) = 0

  • 2 0: 8

    Notre problme sera donc de trouver de tels polynmes, de tracer la surface dquation 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 polynmes de lamanire 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 polynmes, 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 dfinition des polynmes ak ne pose pas trop de problme :

    a(k,x):x[k+1]*(x[j],j,1,k)

    Le problme vient surtout de cette dfinition de polynmes qui dpendent dun nombre va-riable dindtermines et dont la dfinition est triplement rcurrente puisquelle dpend dupolynme dordre infrieur, mais aussi dautres polynmes, les ak et de la somme des ind-termines qui dpend aussi de k.Un mathmaticien un peu informaticien voit ici des fonctions de fonctions et pencheraitvers un langage fonctionnel tel que Caml. Cest une manire naturelle de voir les choses, maispeu efficace avec un langage impratif comme celui utilis par XCAS.Il faut donc apprendre rflchir autrement et voir un programme impratif comme un casier tiroirs dont on peut volont modifier le contenu en gardant une mme structure. Et pourchanger le contenu des tiroirs, on utilise (Expression,ancien,nouveau)b .Par exemple, crons une expression :

    L:a+b-c*d

    et remplaons b par 2 :

    aDans le cas qui nous intresse, n = 3.b a dautres proprits comme par exemple les changements de variables dans les intgrales.

    260

  • 4 ! ! 8 2

    L:(L,b,2)

    qui pourrait se lire : dans L, on remplace b par 2 . On peut galement faire des substitutionsplus consquentes :

    L:(L,[a,c,d],[1,3,4])

    Cest exactement ce que nous allons faire pour nos polynmes. Le secret est de ne pas tra-vailler sur des fonctions mais sur des expressions pour palier au problme du nombre va-riable... de variables.Voici le cur du programme :

    nouveauzarguments:[(a(j,x),j1k),(u-(x[j],j,1,k+1))^2]indeterminees:[(x[j],j1k),u];polytemp:(polytemp,indeterminees,nouveauzarguments);

    Au dpart, 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

  • 2 0: 8

    (x1,x2,u)->(u-x1-x2)^2-x2*x1

    Rponse du logiciel

    et donc :

    P2(x,y,t^2)

    renvoie :

    ((t)2xy)2 (y x)

    Rponse du logiciel

    9 0B 3 %& +

    Notre problme est de dfinir avec un minimum dingalits un polygone convexe rgulier,ou plus prcisment lintrieur du polygone.Une chose est dabord sre : les sommets du polygone sont inscriptibles dans un cerclec, doncle polygone est compris dans un disque. Ici, cela nous donne dj une ingalit :

    1 x2 y2 0

    En fait, nous allons tenter de nutiliser quune deuxime ingalit.

    * ?

    Observons un cas particulier.On peut considrer les cts deux deux. Par exemple appelons f1 et f2 les fonctions affinesdont les reprsentations graphiques sont respectivement d1 et d 1. On obtient facilement quilexiste deux rels a et b tels que f1(x) = ax +b et f 1(x) =ax b.Avec un peu dastuce, on obtient que le polygone peut tre caractris par le systme :

    (ax +b)2 y2 0(ax b)2 y2 0c2 y2 0

    cNous considrerons ici quil sagit du cercle de centre O et de rayon 1.

    262

  • 4& (2< -2%! )! " 2!

    e2i0/n

    e2i1/ne2i2/n

    e2i3/n

    e2i4/n e2i5/n

    d1

    d 1

    d2

    d 2

    d3

    d 3

    b

    b

    c

    c

    Hexagone

    Et avec normment dastuce, tout ceci peut se rduire au systme :

    ((ax +b)2 y2)((ax b)2 y2)(c2 y2) 0

    1 x2 y2 0

    * ?

    Observons un autre cas particulier. Avec toujours autant dastuce, on peut caractriser le po-lygone par le systme :

    ((a1x +b1)2 y2

    )((a2x +b2)2 y2

    )(x b3

    ) 0

    1 x2 y2 0

    263

  • 2 0: 8

    e2i0/n

    e2i1/n

    e2i2/n

    e2i3/n

    e2i4/n

    d1

    d 1

    d2

    d 2

    d3

    b1

    b1

    b2

    b2

    b3

    Pentagone

    "

    Nous utiliserons la commande (point1,point2)d qui dtermine 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 dune galit.La lecture du programme suivant devient alors limpide :

    b( g ) : { B ;B : ;( k :1; k

  • 4 ! ) 2%! 7 2< -2%!

    ((x+1)2 ((y)2)) ((x+1)2 ((y)2)),1 ((x)2) ((y)2)Rponse du logiciel

    9 " ? %

    B 3

    Vous pourrez prouver pendant vos temps libres quil existe un polynme P tel que

    v S = {X R2,b(X) 0,c(X) 0}:z R,P(b(v),c(v), z2) = 0et que P2 dcrit plus haut convient.

    Pour visualiser, nous utiliserons la commande (P(x,y),x,y).

    ((p2(b(4),z^2)),x-11,y-11,z05,0.1,0.1,"0.1)

    Varit dont la projection est un carr

    Pour obtenir la vue de dessus, on clique sur Menu3-dvue de dessus z=cst :

    265

  • 2 0: 8

    Carr : projection sur (xOy)

    ;3

    ((p2(b(6),z^2)),x-11,y-11,z05,0.1,0.1,"0.1)

    Varit dont la projection est un hexagone

    266

  • 4#

    Pour obtenir la vue de dessus, on clique sur Menu3-dvue de dessus z=cst :

    Hexagone : projection sur (xOy)

    9,

    Le texte complet du sujet dagrgation se trouve ladresse

    http://agreg.dnsalias.org/Textes/590.pdf

    Vous comprendrez alors pourquoi nous avons construit une procdure pour trouver P2 alorsquil aurait t plus simple de le dterminer la main : nous navons en effet explor quele cas particulier des polygones convexes rguliers.

    267

  • Taches des animaux

    Logiciel(s) abord(s) : Scilab

    Notions informatiques : Modlisation rudimentaire dquations auxdrives partielles par des diffrences finies

    Problmatique : Le logiciel Scilab est adapt au calcul approch desystmes dynamiques faisant intervenir des drives partielles.

    Le problme tudi ici est d une conjecture dveloppe par Alan Turing concernant laformation des taches sur le pelage des animaux. Le vritable processus biologique nest pasconnu : voir le livre de Murraya.

    Le modle mathmatique est celui de deux hypothtiques substances chimiques A et B quiinteragissent et se diffusent dans la peau de lembryon dun animal. un certain stade dedveloppement de lembryon, le processus est fig et la concentration de lun des deux pro-duits en un endroit donn dtermine la couleur de la peau ou des poils quand elle dpasse uncertain seuil.

    Les concentrations notes A et B des deux produits dpendent du temps et de lespace (bidi-mensionnel). Lvolution est conditionne par le systme

    A

    t= F(A,B) + DAA

    B

    t= G(A,B) + DBB

    Les fonctions F et G dcrivent la cintique chimique. Les laplaciens reprsentent le phno-mne de diffusion.

    aMURRAY , J. D. Mathematical biology . Berlin: Springer, 1993.

  • 1

    Le laplacien est la divergence du gradient : cest un oprateur diffrentiel du secondordre. La divergence dun champ de vecteurs est la trace de lapplication linairetangente ce champ.

    Il est important que les deux coefficients de diffusion DA et DB soient diffrents et non nuls.Le calcul approch sera fait sous Scilab en reprsentant lespace par un maillage rectangu-laire. Les concentrations A et B sont reprsentes par des matrices. Le laplacien est ralissous forme discrte par un calcul matriciel.Trois formes de domaines sont prsentes :

    un rectangle ;

    un cylindre, cest--dire un rectangle dont deux cts opposs sont recolls ;

    un tore, cest--dire un rectangle ; dont les cts opposs sont recolls deux--deux : uncylindre ferm.

    #C'

    Les donnes sont stockes dans des fichiers. Il faut dabord rcuprer 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

  • = 2

    Les matrices Ai reprsentent les concentrations en produit A la date i . On dfinit les coor-donnes des noeuds de la grille.

    xx1:Syyxx

    La palette des couleurs est rduite pour des vidoprojections en toutes conditions, et pourmettre en valeur leffet de seuil.

    ("colormap",(32))r[0;1];g[0;1];b[1;0];h[r g b];

    On affiche la premire donne, concentration en produit A au dbut.

    ("colormap",h)%(xx,yy,A0)

    On affiche la deuxime donne aprs une demi-seconde.

    (sleep 0.5)%(xx,yy,A1)

    Attention ! Certains interprteurs de commandes (Shell) des systmes Linux sontmalheureusement franciss pour les donnes numriques, ce qui oblige soit changer les dures 0.5 en 0,5, soit changer une variable denvironnement lin-guistique. . .

    On aurait pu construire une boucle itrative pour toutes ces oprations rptitives, mais pourun film de dix images cela nen 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

  • 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 fentre pour y placer la reprsentation colore de la concentration enproduit B. La matrice h des couleurs est dja fixe.

    ()

    / / 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

  • & ! ! !

    %(xx,yy,B8)

    (sleep 0.5)%(xx,yy,B9)

    "

    Le laplacien discret appliqu une matrice carre A est construit de manire traditionnelle.

    Dlap(A)s"(A)tts(1)ttt-1TTs(2)TTT-1j(t,t)z"(t,1)kk[z,0;j,z]m2*(tt,tt)-kk-kkJ(T,T)Z"(T,1)KK[Z,0;J,Z]M2*(TT,TT)-KK-KKDm*A+A*M

    Il faut dfinir les donnes qui interviennent dans lquation dvolution.

    DA1DB2k1.1k2.02k3.03k4.04

    La fonction qui contient le systme dynamique sappelle champ. Lquation dvolution estconsidre comme une quation diffrentielle ordinaire en le temps t .La partie spatiale de lvolution 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

  • 1

    Les conditions initiales sont dabord initialises par une rpartition spatiale alatoire.

    t0:.01:.13 ;t00 ;maille10y00.00001*(2*maille,maille) ;

    La premire photographie de la situation est calcule. Les dimensions S et T sont dfinies parcommodit.

    y

    (y0,t0,t,) ;T"(y,2)S"(y,1)/2

    Les donnes initiales sont enregistres dans des fichiers.

    A0y0(1:S,:)B0y0(S+1:2*S,:)(./A0,A0)(./B0,B0)

    Les donnes de la premire tape sont enregistres leur tour.

    Y1y(:,T-S+1:T)A1Y1(1:S,:)B1Y1(S+1:2*S,:)(./A1,A1)(./B1,B1)

    Les autres tapes sont enregistres. La facilit dutilisation de lditeur de texte Emacs nous adissuad de construire une boucle. . .

    y2

    (Y1,t0,t,) ;Y2y2(:,T-S+1:T)A2Y2(1:S,:)B2Y2(S+1:2*S,:)(./A2,A2)(./B2,B2)

    y3

    (Y2,t0,t,) ;Y3y3(:,T-S+1:T)A3Y3(1:S,:)B3Y3(S+1:2*S,:)(./A3,A3)(./B3,B3)

    y4

    (Y3,t0,t,) ;Y4y4(:,T-S+1:T)A4Y4(1:S,:)B4Y4(S+1:2*S,:)(./A4,A4)

    274

  • & ! ! !

    (./B4,B4)

    y5

    (Y4,t0,t,) ;Y5y5(:,T-S+1:T)A5Y5(1:S,:)B5Y5(S+1:2*S,:)(./A5,A5)(./B5,B5)

    y6

    (Y5,t0,t,) ;Y6y6(:,T-S+1:T)A6Y6(1:S,:)B6Y6(S+1:2*S,:)(./A6,A6)(./B6,B6)

    y7

    (Y6,t0,t,) ;Y7y7(:,T-S+1:T)A7Y7(1:S,:)B7Y7(S+1:2*S,:)(./A7,A7)(./B7,B7)

    y8

    (Y7,t0,t,) ;Y8y8(:,T-S+1:T)A8Y8(1:S,:)B8Y8(S+1:2*S,:)(./A8,A8)(./B8,B8)

    y9

    (Y8,t0,t,) ;Y9y9(:,T-S+1:T)A9Y9(1:S,:)B9Y9(S+1:2*S,:)(./A9,A9)(./B9,B9)

    Les fichiers sont prts pour laffichage (voir section 11.2). Si des fichiers Ai,Bi sont dja enre-gistrs, il est bon de les effacer par la commande :

    (rm A[0-9] B[0-9])

    Le programme de construction peut alors tre excut.

    275

  • 1

    La concentration en produit B la fin delanimation sur le rectangle

    "

    Le recollement des artes du rectangle affecte seulement la dfinition du laplacien.

    Dlap(A)s"(A)tts(1)ttt-1TTs(2)TTT-1j(t,t)z"(t,1)k[z,1;j,z]l2*(tt,tt)-k-kJ(T,T)Z"(T,1)K[Z,1;J,Z]L2*(TT,TT)-K-KDl*A+A*L

    Le reste du programme est le mme. Laffichage de la concentration finale B donne des valeursmoins leves.

    276

  • # ! ! !

    La concentration en produit B la fin delanimation sur le tore

    , " &

    La dfinition du laplacien sur un cylindre est intermdiaire entre le cas du rectangle et celuidu tore.

    Dlap(A)s"(A)tts(1)ttt-1TTs(2)TTT-1j(t,t)z"(t,1)k[z,1;j,z]l2*(tt,tt)-k-kJ(T,T)Z"(T,1)KK[Z,0;J,Z]M2*(TT,TT)-KK-KKDl*A+A*M

    Les donnes sont modifies pour rapprocher les deux coefficients de diffusion.

    DA1DB1.00001k1.0002

    277

  • 1

    k2.0002k30.0002k4.0002

    Les intervalles de temps sont agrandis, le maillage est plus fin.

    t0:.01:.27 ;t00 ;maille20 ;

    Le reste du programme est similaire aux autres cas. Laffichage de la concentration finale Bmontre une figure nettement diffrente.

    La concentration en produit B la fin delanimation sur le cylindre

    278

  • Quatrime partie

    ANNEXES

  • 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 tlchargement

    Logiciel Fichier de configuration

    Maxima /.wxMaxima

    PARI/Gp /.gprc

    Yacas /yacas/yacasinit.ys

    XCAS /.xcasrc

    O se trouve le fichier de configuration ?

  • 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 lment dune liste lment dune matrice Longueur dune 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 || ! == !=

    Oprateurs boolens

    282

  • " !" 5

    Logiciel Assignement Dfinition 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

  • 1 1 :

    Logiciel Boucle for

    Bc for(i=1;i

  • " !" 5

    Les principales constantes mathmatiques

    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 relle Forme algbrique dun 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

  • 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 : limx0 f (x) Dveloppements limits 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 diffrentiel :d3 f (x, y)

    d x3Intgration :

    10

    f (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 diffrentiel et intgral

    286

  • " !" 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

  • Bibliographie

    ABDELJAOUAD , Mahdi: lments de Gomtrie du Plan . Tunis: Association Tunisienne desSciences Mathmatiques, 2000

    AMYOTTE , Luc: Introduction au calcul avanc et ses applications en sciences . Qubec: ERPI,2004

    APPEL , Walter: Mathmatiques pour la physique et les physiciens. Paris: H&K, 2005

    BADRIKIAN , Josphe: Mathmatiques pour tlinformatique : codes correcteurs. Paris: Ellipses,2002

    BELABAS , Karim: Site officiel de PARI/GP . URL: http://pari.math.u-bordeaux.fr/BELLOC , J.C./THUILLIER , P.: Mathmatiques analyse 3 . Paris: Dunod, 2004

    BRUGRE , Thierry/MOLLARD , Alain: Mathmatiques lusage des informaticiens. Paris: El-lipses, 2003

    CONNAN , Guillaume/ROUQUS , Jean-Philippe: Le simulateur de khlles de maths . Paris:Ellipses, 2002

    DALANG , Robert C./CHAABOUNI , Amel: Algbre linaire . Lausanne: Presses polytechniqueset universitaires romandes, 2001, 127137

    INRIA : Site officiel de Scilab . URL: http://www.scilab.frIVALDI , Philippe: ressources Asymptote . URL: http://piprim.tuxfamily.org/

    asymptote/travaux/index.htmlLE FUR , Denis: ressources Gnuplot . URL: http://mathsp.tuxfamily.org/spip.php?

    rubrique39MARLE , Charles-Michel/PILIBOSSIAN , Philippe: Mthodes numriques itratives . Paris: El-

    lipses, 2006, 168185

    MONGE , M./AUDOIN-GOROFF , M.C./LMAIRE-BODY, F.: Mathmatiques Terminales C et E .Paris: Belin, 1974

    MURRAY , J. D.: Mathematical biology . Berlin: Springer, 1993, 372380

    PARISSE , Bernard: Site officiel de XCAS . URL: http://www-fourier.ujf-grenoble.fr/~parisse/irem.html

    ROUQUS , Jean-Philippe/DOMINGUEZ , Sophie: Leons particulires - Cours de Maths . Paris:Ellipses, 2002, 316328

    SORTAIS , Yvonne/SORTAIS , Ren: La gomtrie du triangle . Paris: Hermann, 1987, 1621

  • 1 B

    TENENBAUM , Grald/MENDS FRANCE , Michel: Les nombres premiers . Paris: PUF, 1997

    THBAULT , Victor: Sur le tranchet dArchimde . Bulletin de la S.M.F. Tome 72 1944, 6875

    WESTER , Michael: Computer Algebra Systems: A Practical Guide . Chichester: John Wiley &Sons, 1999

    290

  • Index gnral

    ABBA, 83Abscisse, 180Affixes, 181, 197Aire, 69, 70Algbre de Boole, 185Alignement de points, 189Amplitude, 105Analyse en composantes principales, 106Animation, 103Approximation, 165Approximation affine, ix, 163Approximation numrique, 55Arrter une boucle, 103ASCII, 35, 87assume ou element ?, 72Asymptote(programme), 26awk(programme), 14Axiome, 185

    Baccalaurat, 120Base, 85Base 2, 248Base canonique, 158Base, changement de, vi, 48Bc(programme), 3, 7, 8, 13, 23, 24, 45, 46, 48,

    67, 281285Bessel-Parseval, 228Bote moustache, 100, 102BSD, 7

    C++(programme), 26, 31, 32C-shell(programme), 14Calcul formel, 183Calcul matriciel, 75, 270Calcul modulaire, 247Caml(programme), 260

    Centiles, 106Cercle, 197Cercle mdiateur, 195Cercles tangents, 194Chanes de Markov, viiChangement de variable, viii, 144Chanes de Markov, 83Chiffrement de Hill, 86Chiffres significatifs, 56Classes cyclotomiques, 255Code de Hamming, 247Codes correcteurs, 247Collge, 69Commande externe, 16Concatnation, 38Condition dalignement, 190Cne, 221Congruences, vi, 49Conique, 180Coniques, 205Contrapose, 186Convergence dune suite, 174Coordonnes barycentriques, xCoordonnes barycentriques, 189Copier-coller, 14Corps fini, 247, 255Courbe de niveau, 133Courbe paramtre, 197Courbe reprsentative, 71, 164Courbure, 118Courbure de Gauss, 126courbures(variable), 126Cube, 94CygWin(programme), 7Cylindre, 270, 277

  • 1

    Date, 30D, 99Dcodage, 40Dcomposition en lments simples, 140Dmonstration, 180Drive, 113Drives partielles, 133, 135Drives partielles, 125, 269Dessins, 26Dterminant, 77, 87, 190Dveloppement limit, 116, 153Diagramme de bifurcation, 203Diffrentielle, 116Dimension, 249, 273Dimension dune matrice, 75Directrice, x, 180, 214Divergence, 270Division euclidienne, 88Droite, 180, 264

    cart-type, 105chantillon, 105diter une commande, 13diteur de programme, 31diteur de texte, 3, 16Effet papillon, 203galit-dfinition, 67Ellipse, 211Emacs(programme), 14, 16, 2729, 274Enlever une colonne, 250Ensemble, 58Ensembles de nombres, 58Entres-sorties standards, 30Environnement, 17, 19preuve experimentale, 173quation aux drives partielles, 269quation de courbe, 264quation de droite, 92, 216quation de plan, 91quation diffrentielle ordinaire, 169, 273quation implicite, 214, 260quations diffrentielles ordinaires, 157quations dpendant de paramtres, 58Estimation derreur, ix, 165tude mtrique, viiitude mtrique, 125

    Euler-Mac Laurin, 150Exponentielle matricielle, 160Expression, 115, 261Extremum, 133Extremum relatif, 136

    Fabrication de sons, xi, 238Faux, 185Fentre 3D, 93Fichier eps, 21Fichiers spciaux, 30Figure, 20Fink(programme), 7Flottants, 58Fonction, 115Fonction dfinie par morceaux, 230Fonction drive, 115, 180Fonction et expression, 69Fonction exponentielle, 163Format de lentre, 14, 15Format double, 57Format enjoliv, 14, 15Forme algbrique, 197Forme exacte, 55Forme quadratique, 126, 208, 210Foyer, x, 180, 214Fraction rationnelle, 62, 140Frquence, 105, 111

    Galois, 247, 255Gauss-Jordan, vii, 80Gaussienne, 108Gnrateur alatoire, viiiGnrateur alatoire, 105Gomtrie 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 spcial orthogonal, 157

    Hauteur de casse, 14

    292

  • 1

    Heure, 30Histogramme, 102, 106108Hyperbole, 215, 222

    Image dune matrice, 78Implication, 187Incrmenter, 32Index des commandes, 9Intgration par parties, viiiInterprteur de commande, 29Intersection, 70, 121, 177, 216, 218, 219, 221Intgrale, 139Intgrales de Wallis, 147Intgration par parties, 144Inversion, 196Involution, 186Isocle, 95

    Kile(programme), 16

    Laplacien, 269, 276, 277LATEX(programme), 1518, 2023, 26Lebesgue, 225Lemme de Riemann-Lebesgue, 227licence, 3Ligne brise, ixLigne brise, 163Ligne de commande, 14Lignes de niveaux, 96Limite dune suite, 174Linux, 7Logiciels abords, vLogiciels abords, 2Logiciels libres, 2Logique, 185Loi de Morgan, 185Loi de rpartition, 108Lyce, 69

    MacOSX, 7Manuel daide, 10MAPLE(programme), 31Matrice, 235, 241, 249, 254Matrice antisymtrique, 157Matrice compagne, 61Matrice dendomorphisme, 78Matrice de passage, 209

    Matrice extraite, 241Matrice hessienne, 116, 136Matrice inverse, vii, 77, 79Matrice transpose, 87Maxima(programme), 3, 7, 8, 13, 14, 26, 28,

    45, 49, 61, 62, 67, 75, 113, 114,139141, 143, 153, 154, 157, 166,169, 170, 281287

    Mdiane, 103, 105Mdiatrice, 218Mesure de Lebesgue, 107MetaPOST(programme), 22, 26Mthode dEuler, ixMthode dEuler, 162, 163Mthode de Newton, 56Mthode de Steffenson, 57Mthode des rectangles, ixMthode des rectangles, 148Mode graphique, 3Mode texte, 3Mot-cl, 8Moyenne, 100, 102Moyenne arithmtique, 105Moyenne gomtrique, 105Moyenne harmonique, 105Multiplicateur de Lagrange, viii, 132MuPAD(programme), 3, 7, 26, 28, 31, 55, 58,

    59, 139, 143, 146, 157, 167, 281287

    Nappe paramtre, 119Ngation, 186Nombre driv, 115Nombres p-adiques, 53, 64Nombres premiers, 50Nombres pseudo-premiers, 51Non-contradiction, 185, 186Normale, 108Norme euclidienne, 75Norme linaire, 75Norme spectrale, 75Notation scientifique, 13Noyau dune matrice, 78Nuage de points, 105

    Octave(programme), 3, 7, 8, 13, 45, 49, 67,74, 75, 77, 157, 161, 281287

    293

  • 1

    Oprande, 58Oprations lmentaires sur les lignes dune

    matrice, 81Orbite, 158Ordonne, 180Ordonne lorigine, 91, 105

    Palette des couleurs, 271Papier-crayon, 140Parabole, 206, 218Parallle, 70, 219Paramtre, 70PARI/Gp(programme), 26, 51, 52, 281287Partie exponentielle, 13Pente, 91, 105Perl(programme), 14Perpendiculaire, 70, 216, 218, 219Phnomne de Gibbs, 233Plan, 221Point, 69Point fixe attractif, 202Point fixe rpulsif, 202Points critiques, 136Polices, 26Polygone, xi, 259, 260, 262Polynme de Taylor, ixPolynme, 61, 253, 260Polynme caractristique, 78, 85Polynme de Taylor, 155Polynme driv, 61Polynme irrductible, 255Polynme minimal, 255Polynme quotient, 253PPCM, 255Primitive, 139Procdure, ixProcdure, 164Procdure rcursive, 33, 39Produit scalaire, 75, 116, 181, 217Produit tensoriel, 75Projecteur, vii, 78Projection, 214Propritaire, 3Prcision, 45Prcision dun calcul, 56Prdicat, 185

    Pseudosphre, 127PStricks(programme), 26Puissance dun point par rapport un cercle,

    193Puissance de matrice, vii, 79

    Quantiles, 106Quartiles, 106

    Racine dun polynme, 141Racines, 61Rajouter une ligne, 250Rang dune matrice, 75, 209Rectangle, 70Rcurrence, 178Rcursion, 51Rduction dendomorphisme, viiRduction dendomorphisme, 76rel, 55Rpartition, 105, 107, 108Reprsentation paramtrique, 197, 210Rsolution de systmes non-linaires, 189Rotationnel, 116RSA, 40

    Scilab(programme), 3, 7, 8, 1315, 30, 31,41, 45, 49, 61, 62, 67, 7275, 77, 91,98, 99, 105, 106, 109, 113, 114, 116,125, 139, 142, 150, 157, 235, 238,239, 241, 269, 270, 281287

    Sections planes de surfaces, 220sed(programme), 14Sries de Fourier, xiSries entires, 153Session 2D, 92Shell(programme), 8, 16, 26, 28, 30, 271Simulation dexprience alatoire, viiiSimulation dexprience alatoire, 99Solutions dune quation, 55Somme, 249Souris, 70Sous-espace affine, 105Sous-espace propre, 85Sous-espace vectoriel engendr, 86ssh(programme), 3Style de figure, 22

    294

  • 1

    Subdivision, ix, 162, 163Suites rcurrentes, 201Surface, 96Syldavie, 203Symtrie orthogonale, 92Syntaxe, 2, 37Syracuse, suite de, 37Systme dquations linaires, viiSystme dquations linaires, 76Systme linaire, 59

    Tableaux, 241Tangente, 180, 212, 215Tant que, 164Tautologie, 185Terminale, 163Test boolen, 216Test darrt, 33, 39TeXmacs(programme), 26, 27TeXmaker(programme), 16Thorme de Mnlas, xThorme de Mnlas, 190Thorme de Pappus, 195Thorme des nombres premiers, 50Tiers exclu, 185, 186Tikz(programme), 26Tore, xii, 270, 276Torsion, 118Tortue XCAS, 37Trace, 270Tractrice, 127Transforme de Laplace, 169Triangle rectangle, 69

    Trier, 250Tubage de processus, 29Turing, Alan, 269

    Valeur moyenne, 227Valeur propre, 85Variables complexes, 55Variance, 105Varit, 259Vecteur, 181Vecteur colonne, 75Vecteur ligne, 75Vecteur unitaire, 86Vecteurs propres, 76Vrai, 185

    Windows Microsoft(programme), 16

    XCAS(programme), xiii, 3, 79, 13, 1518, 20,26, 28, 31, 3436, 39, 45, 49, 5153,5557, 61, 63, 64, 6769, 75, 81, 83,88, 91, 95, 99, 113115, 136, 139,143, 145, 146, 148150, 153, 157,165, 166, 169, 170, 173, 176,179182, 184, 189, 191, 192, 194,196, 197, 199, 205, 210, 216, 217,222, 225, 227, 247, 249, 257, 259,260, 281287

    Yacas(programme), 3, 7, 8, 13, 15, 26, 28, 45,49, 61, 65, 67, 73, 113, 116, 139, 153,185, 187, 281287

    Zrjdz, 200

    295

  • 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, 9698sin, 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

  • 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, 139141, 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, 3740DOM_SET, 58else, 39end, 38for, 38, 40from, 38, 40if, 39in, 59intersect, 39, 59intlib::byparts, 147minus, 39proc, 3740step, 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, 273275companion, 61

    298

  • 1

    cos, 117, 157, 161deff, 119derivat, 61derivative, 113, 116118, 120det, 62, 126, 127disp, 41, 246else, 41, 236239, 242end, 41, 110, 111, 113, 123, 128, 159,

    235240, 242246endfunction, 41, 72, 73, 113, 116123,

    126128, 150, 157, 160, 235245,273, 276, 277

    evstr, 242245exec, 41execstr, 245exp, 73, 109, 113, 239expm, 73, 159, 160eye, 62, 76, 273, 276, 277floor, 242for, 41, 110, 111, 113, 123, 128, 159,

    235238, 240, 242245format, 150fplot2d, 119fplot3d, 120, 120, 121, 121, 122, 123,

    124fplot3d1, 120, 121, 123freq, 111fsolve, 123function, 41, 72, 73, 113, 116123,

    125128, 150, 157, 160, 235245,273, 276, 277

    geomean, 105graycolormap, 271, 272gsort, 107harmean, 105hist3d, 111histplot, 108if, 41, 41, 236239, 242244, 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, 116118, 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, 271273plot3d3, 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, 235238, 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, 236239, 242244, 246trace, 127unix_g, 30unix_w, 30

    299

  • 1

    variance, 105while, 246write, 30, 238, 274, 275xbasc, 157, 158, 160xinit, 106108, 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=

  • 1

    eigenvectors, 209element, 70, 70, 72, 72, 93, 95, 148, 148,

    155, 162, 182, 192, 194, 201, 213,213, 214216, 216, 218, 221, 222

    else, 103, 104, 196, 214, 250255, 264end, 16equation, 93, 196, 216, 216, 221, 222,

    264, 264evalb, 216, 216, 218evalc, 197evalf, 46, 52, 53, 56, 57, 68, 100, 102,

    104, 149151, 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,249252, 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, 248252,

    254, 264ilaplace, 170, 170image, 79implicitplot, 134, 135, 265in, 16

    infinity, 179, 227int, 52, 53, 143145, 147, 150, 229231integer, 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, 175177, 197, 200, 203,214, 230232, 248, 251, 252,254257, 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

  • 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, 195197, 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, 6972, 9295, 148, 162, 163,

    164166, 175, 176, 180, 181, 190,192, 194197, 203, 212214,216218

    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, 250252,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, 3133, 35, 51, 57, 148, 151, 174,

    177, 190, 196, 197, 203, 214, 215,230, 231, 248, 251255, 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,

    209212, 216, 217, 229232, 257sin, 68, 69, 115, 143, 145147, 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

  • 1

    sort, 250, 250, 252SortD, 102sqrt, 56, 115, 143, 149, 150, 180, 181,

    211, 213, 215217subs, 196subsop, 34subst, 137, 137, 144, 144, 206, 260, 261sum, 83, 83, 149, 227, 229, 232, 249, 249,

    250252, 260, 261symb2poly, 254, 254symetrie, 92, 93, 196, 212, 213tan, 143tantque, 36, 36, 37, 164, 165taylor, 154, 155transpose, 8789, 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

  • Le Guide du Calcul avec les logiciels libres vous propose dematriser les bases de plusieurs logiciels gratuits de calcul formelet numrique, et de gomtrie dynamique : XCAS, Scilab, Bc,Gp, GnuPlot, Maxima, Octave, Yacas, et galement MuPAD(non libre). Ces logiciels sont multiplateformes (Windows, Mac,Linux) et sinstallent rapidement. La grande originalit de cet ouvrage est de dtailler pas paslutilisation de plusieurs logiciels pour plusieurs types de calcul.Il propose ainsi des applications en mathmatiques, en physiqueet en sciences de lingnieur (par exemple : quationsdiffrentielles utilises en physique, traitement du son...). Il vousaidera savoir utiliser le bon logiciel au bon moment pourrsoudre le bon problme. Cet ouvrage sadresse toute personne voulant utiliser le calculen mathmatiques laide de logiciels libres : tudiants enmathmatiques ou en informatique, professeurs de lycesouhaitant utiliser ces outils dans le cadre de leur cours etjusquaux candidats lagrgation dsirant se prparer lpreuve de modlisation. Un index thmatique et un index des commandes par logicielaident le lecteur trouver rapidement linformation quilrecherche.

    Guillaume ConnanStphane Grognet

    GUIDE DU CALCUL AVEC LES LOGICIELS LIBRES

    GUILLAUME CONNAN

    Professeur agrg demathmatiques au LyceJean Perrin (Rez).

    STPHANE GROGNET

    Matre de confrences lUniversit de Nantes,directeur de lIREM des Pays de la Loire.

    MATHMATIQUES

    PHYSIQUE

    CHIMIE

    SCIENCES DE LINGNIEUR

    INFORMATIQUE

    SCIENCES DE LA VIE

    SCIENCES DE LA TERRE

    www.dunod.comISBN 978-2-10-053934-5

    Table des MatiresINTRODUCTION1 Gnralitsa. Public visb. Organisation

    2 Pourquoi des logiciels libres ?3 Liste des logiciels abords4 Vive le calcul !

    Partie I INTERFACECHAPITRE 1 : AIDE1.1 Installer les logiciels1.2 Obtenir de l'aidea. Aide en ligne de commandeb. Aide en ligne localec. Aide en ligne par internetd. Documentation internet

    1.3 Promenade avec bc1.4 Promenade avec XCAS

    CHAPITRE 2 : COMMUNICATION 2.1 Communiquer avec un logiciel de calcul a. criture des nombres b. Saisie des instructions au clavier c. Mise en forme des rsultats au format instruction

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

    2.3 Utiliser des logiciels de calcul avec TeXmacs 2.4 Utiliser les logiciels de calcul en mode texte sous Emacs 2.5 Faire communiquer deux logiciels de calcul a. Le copier-coller la souris b. Communication via des fichiers c. Appel l'interprteur de commandes du systme (shell) d. Un bon outil : la gestion des chanes de caractres

    2.6 Programmation interactive

    CHAPITRE 3 : LA PROGRAMMATION 3.1 Avec XCAS a. Les procdures b. for c. while d. if e. Listes, ensembles et chanes f. Programmation en franais Pour tantque si

    3.2 Avec MuPAD a. Les procdures b. for c. while d. if e. Listes, ensembles et chanes

    3.3 Avec Scilab

    Partie II CALCUL CHAPITRE 4 : ARITHMTIQUE 4.1 Calcul en prcision arbitraire a. Avec Bc b. Avec XCAS c. Avec Maxima d. Avec gp e. Avec Yacas

    4.2 Erreurs d'arrondi avec GnuPlot 4.3 Changement de base avec Bc 4.4 Congruences 4.5 Nombres premiers a. Thorme des nombres premiers

    4.6 Nombres p-adiques

    CHAPITRE 5 : QUATIONS 5.1 Avec XCAS 5.2 Avec MuPAD

    CHAPITRE 6 : POLYNMES 6.1 Avec Scilab 6.2 AvecMaxima 6.3 Avec XCAS 6.4 Avec Gp 6.5 Avec Yacas

    CHAPITRE 7 : FONCTIONS 7.1 Avec Gp 7.2 AvecMaxima 7.3 Avec XCAS a. Cas gnral b. Dfinir des fonction non numriques : un exemple en gomtrie en classe de Seconde

    7.4 Avec Bc 7.5 Avec Scilab a. Cas gnral b. valuation en rafale

    7.6 Avec Yacas 7.7 Avec Octave

    CHAPITRE 8 : ALGBRE LINAIRE 8.1 Avec Scilab a. Oprations lmentaires b. Rsolution d'un systme d'quations linaires c. Rduction d'endomorphismes

    8.2 Avec Octave 8.3 AvecMaxima 8.4 Avec XCAS, au gr d'activits diverses a. Dterminer un projecteur b. Puissances de matrices c. Inverse de matrices d. Trouver l'inverse d'une matrice avec la mthode de Gauss- Jordan e. Chanes deMarkov f. Chiffrement de HillCodageDcodage

    CHAPITRE 9 : GOMTRIE AFFINE9.1 Avec Scilaba. quation de droite dans le planb. quation de plan dans l'espace tridimensionnel

    9.2 Avec XCASa. Proprits gomtriquesDans le planDans l'espace

    b. Une activit de 2nde

    9.3 Avec GnuPlot

    CHAPITRE 10 : STATISTIQUES10.1 Des statistiques sans tableura. Le problme du Duc de ToscaneUn peu de (petite) histoireSimulation de l'exprienceSimulation grande chelle

    b. Lancers de ds c. Un problme d'ivrogne

    10.2 Gnrateurs alatoires 10.3 Rgression linaire 10.4 Statistiques 10.5 Application a. Loi uniforme b. Loi normale c. Pile ou face d. Jeu de ds

    CHAPITRE 11 : CALCUL DIFFRENTIEL 11.1 Premiers contacts a. Avec Scilab b. AvecMaxima c. Avec XCAS d. Avec Gp e. Avec Yacas

    11.2 Calcul diffrentiel multidimensionnel 11.3 Courbes 11.4 Surfaces 11.5 tude mtrique des surfaces 11.6 Extrema d'une fonction de R dans R avec XCAS a. Extremum sous contrainte et multiplicateur de Lagrange b. Condition ncessaire et suffisante d'existence d'un extremum

    CHAPITRE 12 : INTGRATION 12.1 Primitives a. Avec Yacas b. AvecMaxima c. Dcomposition en lments simples d. Avec Scilab e. Avec XCAS f. AvecMuPAD

    12.2 Changement de variable et intgration par parties a. Avec XCASChangement de variables Intgration par parties Intgrale deWallis

    b. AvecMuPAD

    12.3 Calcul approch d'intgrales a. Mthode des rectangles avec XCAS b. Application au calcul d'une approximation de p avec XCAS

    CHAPITRE 13 : DVELOPPEMENTS LIMITS 13.1 Avec Yacas 13.2 Avec Gp 13.3 AvecMaxima 13.4 Avec XCAS a. Gnralits b. Visualisation de l'approximation d'une fonction par le polynme de Taylor

    CHAPITRE 14 : QUATIONS DIFFRENTIELLES ORDINAIRES 14.1 Avec Scilab a. Rsolution d'une quation du premier ordre unidimensionnelle b. Rsolution d'une quation du premier ordremultidimensionnelle c. Rsolution d'une quation du deuxime ordre unidimensionnelle d. Rsolution d'une quation d'ordre et de dimension quelconques

    14.2 Avec Octave 14.3 Avec XCAS a. Rsolution exacte b. Rsolution approche c. Mthode d'Euler : cas gnral d. Mthode d'Euler et exponentielle : TP en Terminale S Approximation affine Subdivision Trac d'une ligne brise Trac en boucle Procdure vous de jouer Estimation de l'erreur

    14.4 Rsolution exacte avecMaxima 14.5 Avec MuPAD

    CHAPITRE 15 : TRANSFORME DE LAPLACE 15.1 Avec Maxima 15.2 Avec XCAS

    Partie III THMES THME 1 : XCAS AU LYCE ? 1.1 XCAS et la gomtrie dynamique au lyce 1.2 XCAS et les suites 1.3 Ce que ni le tableur, ni un logiciel de gomtrie ne peuvent faire a. Preuve d'un thorme b. Illustration graphique c. Bilan de cette activit

    1.4 Moralit

    THME 2 : LOGIQUE LMENTAIRE 2.1 Premiers contacts 2.2 Algbre de Boole 2.3 Le raisonnement par l'absurde

    THME 3 : THORMES DE MNLAS ET PAPPUS 3.1 Coordonnes barycentriques a. Une condition d'alignement b. Une dmonstration rapide du thorme de Mnlas

    3.2 Problme du Monde 3.3 Cercles de Pappus a. Approche historique b. Rsolution astucieuse de reprsentations paramtriques et d'une inversion

    THME 4 : SUITES ET CHAOS 4.1 Modlisation 4.2 Observation chiffre 4.3 Observation graphique 4.4 Diagramme de bifurcation

    THME 5 : CONIQUES 5.1 tude algbrique des coniques a. tude mathmatique au niveau Bac+1 Premier cas : ab = 0 second cas : ab 0

    b. tude mathmatique au niveau Bac+2 criture matricielle de l'quation Exemple

    c. tude informatique

    5.2 tude analytique des coniques a. Ellipse d'quation x/a + y/b = 1 b. Hyperbole d'quation x/a - y/b = 1

    5.3 Ensemble des pointsMdu plan tels que MF = eMH 5.4 Foyer et directrice d'une conique a. Cas de l'ellipse b. Cas de l'hyperbole

    5.5 Construction de la tangente une conique a. Le thorme b. L'observation par XCAS c. La preuve par XCAS

    5.6 Activits gomtriques sur les paraboles a. Trac d'une parabole la rgle et au compas b. Pourquoi les antennes paraboliques sont- elles paraboliques ?

    5.7 Coniques et cnes a. Section d'un cne par un plan d'quation x = t b. Section d'un cne par un plan d'quation x = t + k . z

    THME 6 : SRIES DE FOURIER 6.1 Exploration 6.2 Interprtation physique 6.3 Phnomne de Gibbs

    THME 7 : MUSIQUE 7.1 Construction d'une gamme avec Scilab a. Gnration de gammes candidates b. limination des permutations circulaires de colonnes c. Fonction principale : mode d'emploi

    7.2 Fabrication de sons

    THME 8 : CARRS MAGIQUES THME 9 : CODES CORRECTEURS D'ERREURS 9.1 Mthode nave a. Liste des lments de Fk2 b. Distance de Hamming c. La procdure de test et de correction d. Code t-correcteur

    9.2 Codes cycliques et polynme gnrateur 9.3 Corps de Galois - Cration de polynmes gnrateurs

    THME 10 : SURFACES DONT LA PROJECTION EST IMPOSE 10.1 Introduction 10.2 Construction du polynme adapt a. Dfinition mathmatique b. Construction informatique

    10.3 Dfinition semi- algbrique d'un polygone convexe rgulier a. Le polygone a un nombre pair de cts b. Le polygone a un nombre impair de cts c. Traduction informatique

    10.4 Construction de lensemble algbrique partir de la dfinition semi-algbriquea. Carrb. Hexagone

    10.5 Prolongements

    THME 11 : TACHES DES ANIMAUX 11.1 Introduction 11.2 Affichage des donnes 11.3 Construction sur un rectangle 11.4 Construction sur un tore 11.5 Construction sur un cylindre

    Partie IV ANNEXES TABLEAUX COMPARATIFS BIBLIOGRAPHIE

    Index GnralIndex des commandes

    Texte1:

Recommended

View more >