Guide Du Calcul Avec Les Logiciels Libres ( Math.faculté )

Embed Size (px)

Citation preview

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    GUIDE DU CALCUL AVEC

    LES LOGICIELS LIBRESXCAS, Scilab, Bc,

    Gp, GnuPlot, Maxima, MuPAD

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    GUIDE DU CALCUL AVECLES LOGICIELS LIBRES

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

    Guillaume Connan

    Professeur agrg de mathmatiquesau lyce Jean Perrin (Rez)

    Stphane GrognetMatre de confrences lUniversit de Nantes

    et directeur de lIREM des Pays de la Loire

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Illustration de couverture : Digital vision

    Dunod, Paris, 2008

    ISBN 978-2-10-053934-5

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Table des matires

    INTRODUCTION 1

    1 Gnralits 1a. Public vis 1b. Organisation 1

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

    Partie I INTERFACE 5

    CHAPITRE1 : AIDE 71.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

    CHAPITRE2 : 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

    CHAPITRE3 : LA PROGRAMM ATIO N 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 43CHAPITRE4 : 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 :xx

    2

    1

    ln tdtet les nombres premiers 52

    4.6 Nombresp-adiques 53

    CHAPITRE5 : QUATIONS 555.1 Avec XCAS 55

    vi

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    5.2 Avec MuPAD 58

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

    CHAPITRE7 : 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

    CHAPITRE8 : 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

    CHAPITRE9 : 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Dans le plan 92Dans lespace 93

    b. Une activit de 2nde 959.3 Avec GnuPlot 96

    CHAPITRE10 : 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

    CHAPITRE11 : CALCU L DIFFRENT IE L 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

    CHAPITRE12 : 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    a. Avec XCAS 144

    Changement de variables 144

    Intgration par parties 144Intgrale de Wallis 145b. 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

    CHAPITRE13 : DVELOPPEMENTS LIMITS 153

    13.1 Avec Yacas 15313.2 Avec Gp 15313.3 Avec Maxima 154

    13.4 Avec XCAS 154a. Gnralits 154

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

    CHAPITRE14 : QUATIONS DIFFRENTIELLES ORDINAIRES 157

    14.1 Avec Scilab 157a. Rsolution dune quation du premier ordre unidimensionnelle 157b. Rsolution dune quation du premier ordre multidimensionnelle 157

    c. Rsolution dune quation du deuxime ordre unidimensionnelle 160d. 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 162c. Mthode dEuler : cas gnral 162d. Mthode dEuler et exponentielle : TP en Terminale S 163

    Approximation affine 163

    Subdivision 163Trac dune ligne brise 163Trac en boucle 164

    Procdure 164

    vous de jouer 165Estimation de lerreur 165

    14.4 Rsolution exacte avec Maxima 166

    14.5 Avec MuPAD 167

    CHAPITRE15 : TRANSFORME DELAPLACE 16915.1 Avec Maxima 169

    15.2 Avec XCAS 170

    ix

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Partie III THMES 171

    THME1 : XCASAU LYCE ? 1731.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

    THME2 : LOGIQUE LMENTAIRE 185

    2.1 Premiers contacts 1852.2 Algbre de Boole 1852.3 Le raisonnement par labsurde 186

    THME3 : THORMES DEMNLAS ETPAPPUS 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

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

    THME5 : CONIQUES 205

    5.1 tude algbrique des coniques 205a. 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+y

    2

    b2= 1 211

    b. Hyperbole dquation x2a2y2b2= 1 2135.3 Ensemble des points M du plan tels queMF = eMH 2145.4 Foyer et directrice dune conique 214

    x

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 dquationx= t 221b. Section dun cne par un plan dquationx= t+k z 222

    THME6 : SRIES DEFOURIER 2256.1 Exploration 2256.2 Interprtation physique 2286.3 Phnomne de Gibbs 229

    THME7 : 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

    THME8 : CARRS MAGIQUES 241

    THME9 : CODES CORRECTEURS DERREURS 2479.1 Mthode nave 248

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

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

    THME10 : 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    a. Carr 265b. Hexagone 266

    10.5 Prolongements 267

    THME11 : 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 279TAB LEAUX COMPARATIF S 281BIBLIOGRAPHIE 289

    INDEX GNRAL 291

    INDEX DES COMMANDES 297

    xii

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Remerciements

    Je remercie chaleureusement Bernard PARIS SE, dune part pour dvelopper demanire si active le logiciel XCAS, et dautre part pour avoir bien voulu relire et

    amliorer 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 entravaux 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 lesconnaissances de bases qui permettent un non-initidaborder 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.Lestextesderecettesdebasedela 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?

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Les thmes dtude de lapartie 15.2nous paraissent instructifs pour plusieurs raisons.

    On peut utiliser les logiciels de calcul pour faciliter le travail dans un domaine mathmatique

    que 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.

    Leursconcepteursvisentlacompatibilitaveclesversionsantrieuresetlerespectdesnormesinformatiques. 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 dapprendre

    plusieurs 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 de

    calcul numrique pour ses calculs approchs.Cette coopration apporte une puissance et un confort dutilisation introuvables dans les lo-giciels propritaires.

    2

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 parsshvia 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 surXCAS.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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Premire partie

    INTERFACE

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    AideLogiciel(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 danslarborescence 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 commeCygWin.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 typeprogramme -h:ou programme -help.

    bc --helpgnuplot --helpgp --helpmaxima --help

    octave --helpscilab --help

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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Certains fournissent une aide dans la norme UNIX avec la commande mande 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 typehelp, commeOctave,Maxima,Scilab, un point din-terrogation, commeGnuPlot,XCAS,Yacas, deux points dinterrogation, commeGp.Par exemple le programmeYacaslance le navigateur en mode texte ; le logicielGpavecdeux points dinterrogation lance le visualiseur

    sur un document daide (en mode gra-phique).Il arrive que laide fournisse une prcieuse recherche parmot-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 deBc 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 surXCAS.

    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 tapelimitepuis

    On obtient :

    9

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Pour une aide plus dtaille, on peut cliquer surDtailssi 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 licneinterfacedu 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

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

    3. GOMTRIE contient une aide plus dtaille pour certaines commandes car

    cette 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 traits

    avec XCAS.* INTERNET

    1. 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

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

    Problmatique : Mettre en forme les productions des logiciels. Faire

    communiquer 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

    logiciels symboles accepts pour la

    partie 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.

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Dans certains logiciels, en utilisant les flches du clavier, on peut rappeler une commandeprcdente.Des raccourcis-clavier autrefois introduits dans linterprteur de commande C-shellou ldi-teur de textesEmacs, 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 des

    essais.Ces commandes sont tellement pratiques quil serait dommage de sen passer.

    Beaucoup de logiciels sont sensibles la hauteur de casse : dans le logicielScilab, 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 pour

    nettoyer linstruction.En demandant aux logiciels dcrire et de lire dans un fichier, il est possible dutiliser des di-teurs de texte automatiss tels quesed,awk,Perl. . .

    Mise en forme du rsultat

    oprationLogiciel

    obtenir la sortie auformat de lentre

    exemple obtenir la sortie au

    format 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Mise en forme du rsultat

    opration

    Logiciel

    obtenir la sortie au

    format de lentre

    exemple obtenir la sortie au

    format 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 fichier LATE

    X.Pourcela,ilfautcom-mencer par indiquer LATEXquon lautorise excuter des tches externes en modifiant lefichier ( ou lquivalent sur des systmes non libres ) /usr/share/texmf/web2c/texmf.cnf.Il suffit dy remplacershell_escape=fparshell_escape= t.

    15

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Une manire moins drastique est de spcifier son diteur ( Kile,TeXmaker...) de compilerle fichier avec loptionshell_escape:

    latex --shell-escape fichier.tex

    Si on travaille sousEmacsavecAucTeX, il suffit de rajouter la toute fin du fichier :

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

    %%% mode : l a t e x s h e l le s c a p e%%% TeX m a s t e r : t %%% End :

    Ensuite, voici le code LATEX placer en prambule :

    \ [12pt]{article}

    \ {fancyvrb}

    \

    % c om m an d e p o u r f a i r e a p p e l g i a c

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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    (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 dansXCAS;

    (fichier,Unquoted,cible) qui crit ciblesans guillemets dansfichier;

    (nom fichier) qui ferme le fichier.

    On cre ensuite un nouvel environnement LATEX quon appelleraXcass pour faciliter la saisie.On utilise nouveau lenvironnementVerbatimOut, mais cette fois-ci nous devons spcifierloption\ pour expliquer LATEX quil sagit dun environnement enmodeVerbatim:

    \ {Xcass}

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

    {VerbatimOut}\executGiac{Xcass.in}

    \[\ {xcass}\]}

    On peut maintenant faire des essais :

    \

    {document}

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

    \

    {Xcass}

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

    \

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

    \

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

    cos(x)+ sin(x)

    cos(x)+ sin(x)

    cos(x)+ sin(x)

    Rponse du logiciel

    17

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    On peut procder de la mme manire pour obtenir des sorties graphiques produites par

    XCAS.Il faut donc maintenant placer ces commandes dans le prambule du fichier LATEX.Pour excuter un programme giac :

    \ \ {\executGiac}[1]{\

    \

    18{giac

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    \ {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"+y 0 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+y

    0,y(0)

    1,y(0)

    1],y)[0];\

    {Xcass}

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

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

    qui donne :

    19

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    La solution de lquation diffrentielle y" +y= 0 avec les conditions particuliresy(0)=y(0)=1 est fournie par XCASgrce 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 GnuPlot dans un fichier LATEX, rien de plus simple. Il suffittout dabord dinstaller lextensiongnuplottexa .Plusieurs possibilits soffrent alors nous :

    on insre directement le graphique dans le texte :

    Du texte prsentant ce graphique~:

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

    \

    {gnuplot}

    et du texte aprs.

    ce qui donne :

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

    20

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 GnuPlotet 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 NT U EL e p s t o p d f p o u r t r a n s f o r m e r l e f i c h i e r e p s e n p d f

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

    epstopdf --outfile tempgnu_eps.pdf tempgnu.

    \end{gnuplot}

    Du texte prsentant ce graphique~:

    \includegraphics{tempgnu. }

    et du texte aprs.

    21

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Du texte prsentant ce graphique :f(x,y)

    -10-5

    05

    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 sortieeps produite par GnuPlot

    On peut galement utiliserMetaPOST: 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 NT U EL 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Du texte prsentant ce graphique :

    f(x,y)

    -10-5

    05

    10-10-5

    05

    10-0.4-0.2

    00.20.40.60.81

    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 :

    Bcva se charger des calculs ;

    GnuPlotva 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 pourBc:

    \ \ {\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 ma 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 pourGnuPlot:

    \ {\ExecuteGnuPlot}[1]{

    \

    \

    18{gnuplot #1} }\

    bMerci beaucoup Dariush G HORBANZADEH http://www.cnam.fr/maths/Membres/ghorbanzadeh/

    23

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Rentrons maintenant un scriptBcqui 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

    approximationde(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

    approximationde(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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    De jolis graphiques avec LATEX

    Appeler GnuPlotnest 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 MetaPOSTpar exemple).Il existe en fait des programmes spcialement conus pour effectuer de magni-fiques dessins en totale cohrence avec LATEX : il sagit entre autres de PStricks(quiconsiste en fait en une srie dextensionsLATEX), deMetaPOSTet deTikzprincipa-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 joue

    les 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 logicielTeXmacspermet 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.

    AVECXCAS

    Voici 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.

    AVECMAXIMAIl 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    On peut galement obtenir une sortie graphique avec GnuPlot:

    Rponse du logiciel

    Il faut toutefois noter queTeXmacsest 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    des sessionsXCAS( en fait giac), Maxima,MuPAD,Yacas...

    Par exemple, pour utiliserMaximasousEmacson installemaxima-emacs.el. Les heureux uti-

    lisateurs de distributions Debian ou Ubuntu peuvent par exemple lancer dans un Shellenmode super-utilisateur :

    apt-get install maxima-emacs

    PourXCAS, on installeramupacs.elet on regardera laide sur le siteXCAS.

    Une sessionXCASsousEmacsressemble 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

    -

    .

    PourMaxima, cela donne :

    28

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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). Lesrsultats doiventtre au mme format que les instructions (voir la section c. page 14) dans la mesure o lesinstructions voulues concident entre lesdeux logiciels ! Pour changer commodmentles hau-teur de casse dune chane de caractres, on pourra passer par lintermdiaire dun diteur detexte commeEmacs.

    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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    des commandes pour faire excuter des instructions par le Shell.Par exempleScilabfournit 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.

    Pour fabriquer des noms de fichiers o crire, pour fabriquer des instructions GnuPlot(par

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

    ;

    dansScilab; elles peuvent treutilises dans un scriptShellpar 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 sessionprogrammeen tapant simultanment sur

    et

    oupar le menuEdit->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

    aXCASest crit enC++, ce qui le rend beaucoup plus maniable et rapide : il peut tre facilement excut par un autreprogramme et est donc directement compil par les librairiesC++de lordinateur, sans passer par un noyau proprecommeMuPAD ouMAPLE.

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Le rsultat est certes plus lisible avec la dcoration du point dexclamation, mais

    cela le rend aussi inutilisable par la suite en tant que rsultat lintrieur dun autrecalcul.On pourra donc tre amen remplacerreturn n+"! ="+p;parreturn p;

    Reprenons le calcul prcdent avec un test darrttant que:

    p: 1; k: 1; ( k

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

    []%{%}

    lessuites(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,k 1 5)(p^2)

    (p

    1

    5)m

    5

    leslistes (l i s t ) qui sont des collectionsclassesdexpressions spares par des virguleset encadres par des crochets. La diffrence, cest que lon peut avoir des listes de listes

    et 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 -2 2); s2: a,b,c,d,f; (s2); / / s i z e c om me t a i l l e .s2[0];s2[1

    4];s3: (s1,s2); / / l e s s u i t e s s e c o n c a t n e n t n a t u r e l l e m e n t L1: [s1]; L2: [s2]; / / u n e l i s t e e s t u n e s u i t e e n t r e c r o c h e t s

    (L2); / / no mb re d o p r a n d e s L2[3]; L2[0]; / / n o t e z b i e n q u e l e p r e m i e r o p r a n d e p o r t e l e n um ro 0

    L2[2 4] (L1,L2) (x->x>0,L1); (x->xx*y,L1,L2);

    les chanes de caractres (s tr ing) sont des juxtapositions de caractres qui ne sont pasvalues parXCASsi ce nest en tant que simple sigle muet . On place les lments dela chaines entre guillemets "".

    34

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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)

    PourXCAS, 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 code

    ASCII. Ce programme sert en particulier pour le dcodage RSA.

    alph(n): { / / o n r e n t r e u n 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 de s e s c h i f f r e s

    (k: 0;k

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 de

    nombres]) effectue lopration rciproque.

    XCASoffre la possibilit dutiliser les instructions prcdentes traduites en franais.

    Les bouclesfor deviennent des boucles

    , avec la mme syntaxe quen anglaisou 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 boucleswhiledeviennent des boucles

    , avec la mme syntaxe quen anglaisoubienavec une syntaxe diffrente :

    k: 1;

    6^k%11

    1%11

    k:

    k+1;

    ;

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

    Et cest pareil avec

    au lieu de if:

    test_syr(u): {

    u%2

    0%2

    u:

    u/2; u: 3*u+1;

    36

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    ;}

    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 fentretortuepour 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 :

    La syntaxe gnrale:

    Nom_de_la_procedure: (variables)

    le programme proprement dit

    37

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Par exemple

    double: (x)

    2*x

    On valide. Normalement, on obtient un message encourageant :

    double(x)

    On rentre alorsdouble(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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Reprenons le calcul prcdent avec un test darrttant que:

    p: 1: k: 1:

    k

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    lessuites

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

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

    p^2

    p

    1

    5;m

    5;

    leslistesNotez quelques fonctions utiles :

    s1:

    i

    i

    -2

    2; s2:

    a,b,c,d,e;L1: [s1]; L2: [s2];

    (L2); / / no mb re d o p r a n d e s L2[3]; / / e x t r a i t l e 3 m e o p r a n d e L2[3

    5];

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

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

    (L2, );

    (L1,L2,(x,y)->x+y);L3:

    L1.L2; / / p o u r c o n c a t n e r

    leschanes 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 u n e n t i e r n

    l,L;

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

    k 0 (l)-1 2 L:

    L.[

    (

    (l,k,2))] / / t e x t 2 e x p r t r a n s f o r m el 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Pour excuter un fichier dansScilab, on peut taper

    nomDuFichier. Le logicielScilabnaime 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 Scilabsont dcrites dans le chapitreProgrammingdelaide en ligne. La syntaxe na rien de surprenant. Voici une boucle qui stocke des nombresdans un tableau vertical, en affichant llment chaque tape.

    t 1:3T []

    i t,

    (i,i

    );T

    [T;i];

    T

    On construit maintenant une fonctiontestqui 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.

    y

    test(x)a "Cest ltape"

    b

    troisy x

    x

    3

    (b,a) ;

    or([x t]) ; y (x)+" nappartient pas t"

    La seconde boucle

    permet de terminer la fonction rapidement si la variablexappartient

    au tableautdja dfini. Elle peut tre crite aussi bien

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

    Pour exploiter la fonctiontest, il suffit dexcuter la boucle

    i

    [3*t t],test(i)

    Le logicielScilabtravaille 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Deuxime partie

    CALCUL

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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\

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

    qui doit tre un nombre entre 1 et 1000

    : 1000:;4* ( (1))

    Voir aussi 5.1 page 56.

    On rgle la prcision avec

    , puis on utilise

    :

    : 1000; (4

    *atan(1));

    La prcision daffichage est donne ou fixe par linstruction\

    .

    \p

    4* (1)\p 1000

    Le rsultat est-il le mme que pourBc?

    La prcision des calculs approchs est donne par linstruction

    ()

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

    (

    ,1000)

    Pour basculer la valeur de la prcision, taper

    46

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    (1000)

    (

    )

    Pour revenir la prcision prcdente, taper (10)

    (1/ )

    (

    )

    Mais la prcision maximale est conserve pour la valeur.

    Le logiciel GnuPlotpose 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    gnuplot> 2**(-32)

    Rponse du logiciel

    gnuplot> print 2**(-32)^

    undefined value

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

    Le logicielBcdtecte naturellement une entre en base 16 avec la saisie des chiffresA,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 Bcfournit 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 saisies

    sont repres par un point-virgule final.

    % bc -lq ;

    Rponse du logiciel

    10

    ;

    Rponse du logiciel

    10

    7; ;A;

    Rponse du logiciel

    13

    48

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

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

    dans lintervalle [0, p1]N.Cherchons reprsenter lentier relatif5 dans Z/3Z :AvecGp

    (-5,3)

    AvecMaxima

    :3; (-5);

    :

    ;

    AvecOctavemod(-5,3)

    AvecScilab

    (-5,3)

    (-5,3)

    AvecYacas

    (-5,3)

    AvecXCAS

    -5%3

    On peut bien sr calculer dans Z/nZ :

    49

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 dep%npar lapplication canoniquement associe de Z/nZsur 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.

    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 HAD DA MA RDet Charles-Jean de LAVAL L EPOUSSINen 1896.

    50

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Thorme des nombres premiers

    En dfinissant, pour tout rel positifx, le nombre (x) comme le nombre denombres 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 Aidede XCAS.

    Maintenant, comparons cette fonction avecx 1ln(x)1:

    p: polygone_ouvert( ( ([50*k,pin(50*k)]),k 0 2000)) / / o n r e l i e l e s p o i n t s ( k , p i n ( k ) ) a v e c u n

    de 50 jusqu 100 000c:

    (x/(

    (x)-1),x

    3

    100000,

    +

    )

    En 81 secondes, on obtient :

    Rponse du logiciel

    Les courbes reprsentatives de et x xlnx1sont extrmement proches

    xx

    2

    1

    ln t

    t

    GAUSSconjectura la fin du XVIIIe sicle que(x) tait quivalent Li(x) au voisinage de +.tablissons un petit tableau comparatif avecXCAS. Mais dabord, dfinissons la fonction Li :

    Li(x):

    (

    (1/

    (t),t,2,x))Li(100000)

    aBELABAS , KarimSite officiel de PARI/GP. URL: http://pari.math.u-bordeaux.fr/.

    52

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 ? XCASrenvoie 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))],k 2 8)]

    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

    p

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

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

    a*5 (a)

    53

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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+1 0) / / x e s t l i n c o n n u e p a r d f a u t

    (t^2+3*t+1 0,t)

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

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

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

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

    Notez que le paramtreaest considr par dfaut comme tant rel. Si lon veut travailleravec des variables complexes, il faut cocher

    dans le menu de configuration cas.

    Il faudra alors utiliser la fonctionassumepour mettre des hypothses sura :

    (x^2+a*x+1

    0,x)

    (

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

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

    Toutefois, nous atteignons parfois les limites du calcul formel :

    (x+ (x)+100 0)

    et cest une approximation numrique que nous obtenons.

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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Configuration du CAS

    Selon les cas, il faudra veiller bien configurer le CASb :-

    ou non pour avoir des rsultats exacts ou approchs;-

    ou non pour avoir des rsultats (exacts ou approchs) sous forme relleou complexe;- 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,x 1) / / x 1 p r c i s e l e d p a r t de l a l g o r i t h m e (x^2-2 0,x 1,newton_solver)

    Pour connatre la prcision de notre calcul :

    (x^2-2,x

    1)-

    (2)

    Nous avons donc 15 bonnes dcimales.Si nous en voulons plus, il existe deux appels optionnels la fonction newton : le nombre

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

    XCASnous 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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-2 0,x 0,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-2

    0,x

    1,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

    x

    0f(x) = et f

    e100

    = e100 100 + 100 > 0, donc la

    solution appartient lintervalle ]0; e100[, ce qui indique que la solution est assez petite...

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

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

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

    Format de nombreLe format de nombre approch utilis parXCASest par dfaut le format double (53bits de prcision relative, soit environ 1016). Si

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Calcul avec des flottants

    Attention au calcul avec des flottants : laddition nest pas toujours associative, 1xavecxde 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

    Loutil gnral estsolve:

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

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

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

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

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

    La rponse

    nous 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 lensembleS.Nous pouvons tre galement amens rsoudre des quations non pas sur Cmais sur unintervalle donn. Par exemple, si nous voulons rsoudre lquationx2 = 4 surR+, nous indi-querons MuPADque notrexdoit tre positif :

    (x>0);

    (x^2

    4,x);

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

    58

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    N NonNegInt N PosInt N NegIntZ Integer 2Z Even 2Z+1 OddQ Rational Q+ PosRat Q NegRatR Real R+ NonNegative Q+ NonNegRat

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

    Ensembles de nombres etMuPAD

    (x

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

    Une autre ruse permet de selectionner les solutions :S : ( (x*PI/7) 0, x);S (-22, 22)

    / / o n d e ma nd 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+z 2,2*x+a*y-z 3},{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) * (x),x);

    Pour avoir une approximation de la solution, on utilisefloatethold(solve)

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

    ou numeric::solve(equation,inconnue)

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

    Au-del, MuPADsemble jetter lponge :

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

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

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

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

    59

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 logicielScilabpeut traiter les polynmes. On peut dfinir la variable :

    x

    (0,x)

    dfinir le polynmex2 + x+1 :P x^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 :

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    (x* ()-A)

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

    (A)

    Voici lexemple dune session Scilabqui 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 Maximatraite 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 Maximaqui cherche les racines de x3 + x+ 1 ; les commandessont marques(Ci)et les rponses(Di):

    62

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 2

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

    3 (--------- - -)

    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 logicielXCAStraite 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 sessionXCASqui cherche les racines dex3 + x+1 ; les commandes sontspares des rponses par des lignes de tirets :

    63

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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

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

    (P(x))

    [0.682328,0.3411639019

    +1.1615414

    i,0.3411639019

    1.1615414

    i]

    Rponse du logiciel

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

    Le logicielGptraite les polynmes aussi avec des coefficients dans Z/pZ et dans les corpsp-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 sessionGpqui cherche les racines dex3 + x+1 :

    64

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    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 >

    Le logicielYacastraite les polynmes comme les logiciels prcdents.Trouver les racines du polynme P se fait comme suit :

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

    La drive est la drive formelle de toutes les fonctions :

    (x) P

    Voici lexemple dune sessionYacasqui cherche les racines dex3 + 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

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

    Notions informatiques : Dfinir une fonction. Utiliser une fonction.

    Problmatique : Lesfonctionssont 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 fonctionsclassiquesqui 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 Maximaconnat la scante hyperbolique.... La biblio-thque de Bcmme avec loption est trs rduite.

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

    machin(x) 1/ (x)

    Pour calculer sa valeur en 2, on tape

    machin(2);

    Le logiciel Maxima considre lesgalits 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 ;

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    (machin(2));

    donne une valeur approche et

    (machin(2));

    donne un rsultat quivalent.

    Le comportement de XCASest 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

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Fonction et expression

    Comme en mathmatiques, il ne faut pas confondrefonctionetexpression.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 renvoiex cos(x)+2ou plus directement :

    fp:

    (

    (

    (x)+2x),x)

    qui renvoiex cos(x)+2.Voir aussi c. page 115.

    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.XCAScependant, 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 queAC = 3etAB = 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 A B:

    (0,-4) / / p l a o n s B t e l q u e A B

    4 e n l a i s s a n t l e 1 e r q u a d r a n t

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

    69

  • 5/22/2018 Guide Du Calcul Avec Les Logiciels Libres ( Math.facult )

    Dfinissons ensuite le point C tel que le triangle ABC soit direct, rectangle en A et que lon aitAC = 34AB 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 planP quiunrelxde 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 abscissex.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 dex:

    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 dex) 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 duparamtret :

    (R(t), + )

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

    f(x): (R(x))

    Donnons son expression simplifie :

    (f(x))

    70

  • 5/22/2018 Guide