Guide Du Calcul Avec Les Logiciels Libres

  • Published on
    31-Dec-2015

  • View
    134

  • Download
    38

Transcript

GUIDE DU CALCUL AVECLES LOGICIELS LIBRESXCAS, Scilab, Bc,Gp, GnuPlot, Maxima, MuPADGUIDE DU CALCUL AVECLES LOGICIELS LIBRESXCAS, Scilab, Bc,Gp, GnuPlot, Maxima, MuPADGuillaume ConnanProfesseur agrg de mathmatiquesau lyce Jean Perrin (Rez)Stphane GrognetMatre de confrences lUniversit de Nanteset directeur de lIREM des Pays de la LoireIllustration de couverture : Digital vision Dunod, Paris, 2008ISBN 978-2-10-053934-5 Table des matiresINTRODUCTION 11 Gnralits 1a. Public vis 1b. Organisation 12 Pourquoi des logiciels libres ? 23 Liste des logiciels abords 24 Vive le calcul ! 3Partie I INTERFACE 5CHAPITRE 1 : AIDE 71.1 Installer les logiciels 71.2 Obtenir de laide 7a. Aide en ligne de commande 7b. Aide en ligne locale 8c. Aide en ligne par internet 8d. Documentation internet 81.3 Promenade avec bc 81.4 Promenade avec XCAS 9CHAPITRE 2 : COMMUNICATION 132.1 Communiquer avec un logiciel de calcul 13a. criture des nombres 13b. Saisie des instructions au clavier 13c. Mise en forme des rsultats au format instruction 142.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 232.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 302.6 Programmation interactive 30CHAPITRE 3 : LA PROGRAMMATION 313.1 Avec XCAS 31a. Les procdures 31b. for 32c. while 33d. if 33e. Listes,ensembles et chanes 33f. Programmation en franais 36Pour 36tantque 36si 363.2 Avec MuPAD 37a. Les procdures 37b. for 38c. while 39d. if 39e. Listes, ensembles et chanes 393.3 Avec Scilab 41Partie II CALCUL 43CHAPITRE 4 : ARITHMTIQUE 454.1 Calcul en prcision arbitraire 45a. Avec Bc 45b. Avec XCAS 46c. Avec Maxima 46d. Avec gp 46e. Avec Yacas 464.2 Erreurs darrondi avec GnuPlot 474.3 Changement de base avec Bc 484.4 Congruences 494.5 Nombres premiers 50a. Thorme des nombres premiers 50b. La fonction Li :x x21ln tdt et les nombres premiers 524.6 Nombres p-adiques 53CHAPITRE 5 : QUATIONS 555.1 Avec XCAS 55vi 5.2 Avec MuPAD 58CHAPITRE 6 : POLYNMES 616.1 Avec Scilab 616.2 Avec Maxima 626.3 Avec XCAS 636.4 Avec Gp 646.5 Avec Yacas 65CHAPITRE 7 : FONCTIONS 677.1 Avec Gp 677.2 Avec Maxima 677.3 Avec XCAS 68a. Cas gnral 68b. Dfinir des fonction non numriques : un exemple en gomtrie en classe deSeconde 697.4 Avec Bc 727.5 Avec Scilab 72a. Cas gnral 72b. valuation en rafale 737.6 Avec Yacas 737.7 Avec Octave 74CHAPITRE 8 : ALGBRE LINAIRE 758.1 Avec Scilab 75a. Oprations lmentaires 75b. Rsolution dun systme dquations linaires 76c. Rduction dendomorphismes 768.2 Avec Octave 778.3 Avec Maxima 778.4 Avec XCAS, au gr dactivits diverses 78a. 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 86Codage 87Dcodage 88CHAPITRE 9 : GOMTRIE AFFINE 919.1 Avec Scilab 91a. quation de droite dans le plan 91b. quation de plan dans lespace tridimensionnel 919.2 Avec XCAS 91a. Proprits gomtriques 92vii Dans le plan 92Dans lespace 93b. Une activit de 2nde 959.3 Avec GnuPlot 96CHAPITRE 10 : STATISTIQUES 9910.1 Des statistiques sans tableur... 99a. Le problme du Duc de Toscane 99Un peu de (petite) histoire 99Simulation de lexprience 99Simulation grande chelle 100b. Lancers de ds 101c. Un problme divrogne 10310.2 Gnrateurs alatoires 10510.3 Rgression linaire 10510.4 Statistiques 10510.5 Application 106a. Loi uniforme 106b. Loi normale 108c. Pile ou face 109d. Jeu de ds 110CHAPITRE 11 : CALCUL DIFFRENTIEL 11311.1 Premiers contacts 113a. Avec Scilab 113b. Avec Maxima 114c. Avec XCAS 114d. Avec Gp 116e. Avec Yacas 11611.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 132a. Extremum sous contrainte et multiplicateur de Lagrange 132b. Condition ncessaire et suffisante dexistence dun extremum 135CHAPITRE 12 : INTGRATION 13912.1 Primitives 139a. Avec Yacas 139b. Avec Maxima 139c. Dcomposition en lments simples 140d. Avec Scilab 142e. Avec XCAS 143f. Avec MuPAD 14312.2 Changement de variable et intgration par parties 144viii a. Avec XCAS 144Changement de variables 144Intgration par parties 144Intgrale de Wallis 145b. Avec MuPAD 14712.3 Calcul approch dintgrales 148a. Mthode des rectangles avec XCAS 148b. Application au calcul dune approximation de avec XCAS 149CHAPITRE 13 : DVELOPPEMENTS LIMITS 15313.1 Avec Yacas 15313.2 Avec Gp 15313.3 Avec Maxima 15413.4 Avec XCAS 154a. Gnralits 154b. Visualisation de lapproximation dune fonction par le polynme de Taylor 155CHAPITRE 14 : QUATIONS DIFFRENTIELLES ORDINAIRES 15714.1 Avec Scilab 157a. Rsolution dune quation du premier ordre unidimensionnelle 157b. Rsolution dune quation du premier ordre multidimensionnelle 157c. Rsolution dune quation du deuxime ordre unidimensionnelle 160d. Rsolution dune quation dordre et de dimension quelconques 16114.2 Avec Octave 16114.3 Avec XCAS 161a. Rsolution exacte 161b. Rsolution approche 162c. Mthode dEuler : cas gnral 162d. Mthode dEuler et exponentielle : TP en Terminale S 163Approximation affine 163Subdivision 163Trac dune ligne brise 163Trac en boucle 164Procdure 164 vous de jouer 165Estimation de lerreur 16514.4 Rsolution exacte avec Maxima 16614.5 Avec MuPAD 167CHAPITRE 15 : TRANSFORME DE LAPLACE 16915.1 Avec Maxima 16915.2 Avec XCAS 170ix Partie III THMES 171THME 1 : XCAS AU 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 179a. Preuve dun thorme 179b. Illustration graphique 182c. Bilan de cette activit 1831.4 Moralit... 183THME 2 : LOGIQUE LMENTAIRE 1852.1 Premiers contacts 1852.2 Algbre de Boole 1852.3 Le raisonnement par labsurde 186THME 3 : THORMES DE MNLAS ET PAPPUS 1893.1 Coordonnes barycentriques 189a. Une condition dalignement 189b. Une dmonstration rapide du thorme de Mnlas 1903.2 Problme du Monde 1923.3 Cercles de Pappus 193a. Approche historique 193b. Rsolution astucieuse de reprsentations paramtriques et dune inversion 196THME 4 : SUITES ET CHAOS 1994.1 Modlisation 2004.2 Observation chiffre 2004.3 Observation graphique 2014.4 Diagramme de bifurcation 203THME 5 : CONIQUES 2055.1 tude algbrique des coniques 205a. tude mathmatique au niveau Bac+1 205Premier cas : ab = 0 205second cas : ab = 0 206b. tude mathmatique au niveau Bac+2 208criture matricielle de lquation 208Exemple 209c. tude informatique 2105.2 tude analytique des coniques 211a. Ellipse dquation x2a2+ y2b2= 1 211b. Hyperbole dquation x2a2 y2b2= 1 2135.3 Ensemble des points M du plan tels que MF = eMH 2145.4 Foyer et directrice dune conique 214x a. Cas de lellipse 214b. Cas de lhyperbole 2155.5 Construction de la tangente une conique 215a. Le thorme 215b. Lobservation par XCAS 215c. La preuve par XCAS 2175.6 Activits gomtriques sur les paraboles 218a. Trac dune parabole la rgle et au compas 218b. Pourquoi les antennes paraboliques sont-elles paraboliques ? 2195.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 222THME 6 : SRIES DE FOURIER 2256.1 Exploration 2256.2 Interprtation physique 2286.3 Phnomne de Gibbs 229THME 7 : MUSIQUE 2357.1 Construction dune gamme avec Scilab 235a. Gnration de gammes candidates 235b. limination des permutations circulaires de colonnes 236c. Fonction principale : mode demploi 2377.2 Fabrication de sons 238THME 8 : CARRS MAGIQUES 241THME 9 : CODES CORRECTEURS DERREURS 2479.1 Mthode nave 248a. Liste des lments de Fk2 248b. Distance de Hamming 248c. La procdure de test et de correction 249d. Code t-correcteur 2519.2 Codes cycliques et polynme gnrateur 2539.3 Corps de Galois - Cration de polynmes gnrateurs 255THME 10 : SURFACES DONT LA PROJECTION EST IMPOSE 25910.1 Introduction 25910.2 Construction du polynme adapt 260a. Dfinition mathmatique 260b. Construction informatique 26010.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 26410.4 Construction de lensemble algbrique partir de la dfinition semi-algbrique 265xi a. Carr 265b. Hexagone 26610.5 Prolongements 267THME 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 277Partie IV ANNEXES 279TABLEAUX COMPARATIFS 281BIBLIOGRAPHIE 289INDEX GNRAL 291INDEX DES COMMANDES 297xiiRemerciementsJe 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 CONNANIntroduction Cet ouvrage aborde les niveaux : collge lyce suprieurtant 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.2Fonctionne Fonctionneen mode en modeLogiciel Type Licence texte graphiqueBc calculette en prcision arbitraire GPL ouiGnuPlot traceur de figures mathmatiques GPL ouiGp(pari) calculateur formel orient corps de nombres GPL ouiMaxima calculateur formel GPL oui ouiMuPAD calculateur formel Propritaire ouiOctave calculateur numrique matriciel GPL ouiScilab calculateur numrique matriciel cecill oui ouiXCAS(giac) calculateur formel GPL oui(iacas) ouiYacas calculateur formel GPL oui Logiciels abordsLes 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.3Premire partieINTERFACE AideLogiciel(s) abord(s) : Bc GnuPlot Gp Maxima Octave Scilab XCASYacasProblmatique : 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 --helpCeci 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 octaveQuelques 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 bcon obtient une rponse du genre :Rponse du logicielbc(1) bc(1)NAMEbc - An arbitrary precision calculator language8 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 puisOn 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 logicielLE 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 fonctionsde 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 formel3. 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 duBac 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 CommunicationLogiciel(s) abord(s) : Bc GnuPlot Gp Maxima Octave Scilab XCASYacasProblmatique : 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-7reprsente le nombre 1,23456 107 dans plusieurs logiciels. Le symbole de la partie expo-nentielle varie suivant les logiciels. Notation scientifiquelogicielssymboles accepts pour lapartie exponentielleBc YacasGp GnuPlot XCAS e,EMaxima 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 curseuret 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 linstructionSin(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 rsultatoprationLogicielobtenir la sortie auformat de lentreexempleobtenir la sortie auformat enjolivexempleScilab x=(0,x)p=x2+1(p)il ny a rien faireMaxima ;x2+1;x2+1;;x2+1;;x2+1;14 Mise en forme du rsultatoprationLogicielobtenir la sortie auformat de lentreexempleobtenir la sortie auformat enjolivexempleGp il ny a rien faire il ny a rien faireYacas il ny a rien faire PrettyForm(%)XCAS il ny a rien faire il ny a rien faire Chanes de caractres et instructionsVoici 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.texSi 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 logiciel17 !" 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)1est fournie par \Prog{XCAS} grce la commande \Com{XCAS}{desolve}. Il sagit de la fonctiondfinie 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 :courbeRponse 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-50510 -10-50510-0.4-0.200.20.40.60.81f(x,y)et du texte aprs.Rponse du logiciel Compilation directe de la figure GnuPlotLe 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 fs 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 1et 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 rM 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-50510 -10-50510-0.4-0.200.20.40.60.81et 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 sEnsuite 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 laconvergence 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 200approximation de (1-1/n)^nnexp(-1)=0.3679 0.26 0.28 0.3 0.32 0.34 0.36 20 40 60 80 100 120 140 160 180 200approximation de (1-1/n)^nnexp(-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 LATEX25 De jolis graphiques avec LATEXAppeler 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. Dansle 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) 4Rponse du logicielcWhat You See Is What You Get26 ! " ! On peut galement obtenir une sortie graphique avec GnuPlot :Rponse du logicielIl 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 douvrir27 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-emacsPour 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 logicielIl 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 prsentent29 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 programmationLogiciel(s) abord(s) : MuPAD Scilab XCASProblmatique : Description des techniques de contrle de flux dansles instructions et de quelques astuces. # !"#$ La syntaxe est proche de celle du langage C++ :aNom_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 logicielSuccess// Success compiling doubleDans une session de calcul, on rentre alorsaXCAS 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 ensemblesens1 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,3On 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 en u m r o 0L2[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+Fmid(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 ac 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. 2XCAS 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 dit37 Par exempledouble:(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& '!( 1!Reprenons le calcul prcdent avec un test darrt tant que:p:1: k:1: k les suites5,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 caractresC:"-&_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 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 el 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];TOn 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.41Deuxime partieCALCUL ArithmtiqueLogiciel(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 logicielbc 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 taper1000pour obtenir la prcision voulue en ajustant la variable , et4*(1)pour obtenir le quadruple dArctan(1) :Rponse du logiciel3.141592653589793238462643383279502884197169399375105820974944592307\81640628620899862803482534211706798214808651328230664709384460955058\22317253594081284811174502841027019385211055596446229489549303819644\28810975665933446128475648233786783165271201909145648566923460348610\45432664821339360726024914127372458700660631558817488152092096282925\40917153643678925903600113305305488204665213841469519415116094330572\70365759591953092186117381932611793105118548074462379962749567351885\75272489122793818301194912983367336244065664308602139494639522473719\07021798609437027705392171762931767523846748184676694051320005681271\45263560827785771342757789609173637178721468440901224953430146549585\37105079227968925892354201995611212902196086403441815981362977477130\ 99605187072113499999983729780499510597317328160963185950244594553469\08302642522308253344685035261931188171010003137838752886587533208381\42061717766914730359825349042875546873115956286388235378759375195778\18577805321712268066130019278766111959092164201988Le 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. 3On rgle la prcision avec , puis on utilise : : 1000;(4*atan(1)); La prcision daffichage est donne ou fixe par linstruction \.\p44*(1)\p 10004Le rsultat est-il le mme que pour Bc ? 4La prcision des calculs approchs est donne par linstruction14()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, taper46 ! ) *!4(1000)((4)Pour revenir la prcision prcdente, taper4(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 logiciel1073741824gnuplot> 2**(31)Rponse du logiciel-2147483648gnuplot> 2**(32)Rponse du logiciel0gnuplot> 2**(-30)Rponse du logiciel9.31322574615479e-10gnuplot> 2**(-31)Rponse du logiciel-4.65661287307739e-1047 gnuplot> 2**(-32)Rponse du logicielgnuplot> print 2**(-32)^undefined valueLe logiciel rpte la dernire instruction accompagne dun commentaire pour avouer sonimpuissance. "' 1Le 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+Eet 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 logiciel10;Rponse du logiciel107;;A;Rponse du logiciel1348 !66+22;Rponse du logiciel121A;A;2*7;Rponse du logiciel14; "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 Gp5(-5,3)Avec Maxima5/)3:3;(-5);5/)3:6.)3;Avec Octavemod(-5,3)Avec Scilab(-5,3)(-5,3)Avec Yacas5(-5,3)Avec XCAS-5%3On peut bien sr calculer dans Z/nZ :49 x:7%9; y:4%9;3*x^2-5*y^2donneRponse du logiciel4 % 9Si 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)%0Pour 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 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 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 x21ln 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.71000 168 176.6 169.310000 1229 1246.5 1218.0100000 9592 9658.3 9512.11000000 78498 78984.6 78030.410000000 664579 668749.5 661469.0100000000 5761455 5801743.9 5740303.8Rponse du logiciel. 2 p3Le 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 numriquesLogiciel(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 sC 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 lToutefois, 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 CASSelon 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 Configuration56# 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, limx0 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 nombreLe 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 flottantsAttention 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, # /#0Loutil 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 NegRatR Real R+ NonNegative Q+ NonNegRatR+ 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 PolynmesLogiciel(s) abord(s) : Yacas Gp XCAS Maxima ScilabProblmatique : 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+1et calculer ses racines :(P)Le polynme peut tre construit avec ses coefficientsQ([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) 2SQRT(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) 2SQRT(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+3Trouver 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 logicielP(x):=x**3+x+1------------------------------------------// Parsing P// Success compiling P3x ->x +x+1------------------------------------------roots(P)------------------------------------------Evaluation time: 0.17 3Unable to isolate x in ([x])->x +x+1XCAS 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 logicielPour 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 >., # 4Le 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) PVoici lexemple dune session Yacas qui cherche les racines de x3 + x +1 :Rponse du logicielIn> 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 FonctionsLogiciel(s) abord(s) : Bc Scilab Octave Yacas XCAS Gp MaximaNotions 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 tapemachin(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 commemachin(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 expressionComme 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 tl 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 e69 % &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+4xRponse du logicielDfinissons 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 fPour 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 # 1Dans 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. # 4Le 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 linaireLogiciel(s) abord(s) : Scilab Octave Maxima XCASNotions 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*vOn obtient les dimensions et le rang directement"(u)"(A)(A)Le logiciel Scilab prsente une sorte de produit tensoriel ;u .*. ALa 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 formuletr(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)*BOn vrifie que le vecteur AVB a des coordonnes proches de la prcision de la machine.A*V-BOn 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 linstructionV(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 tapantA*vp(:,1)/D(1,1)A*vp/DLa dcomposition de Schur donne les valeurs propres sur la diagonale de la matrice triangu-laire T.[U,T](A)760 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-BLinstruction (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*cLa 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 a0 1)B:[[1,a],[0,1]]Calculons jusqu la puissance cinquime :(B^2);(B^3);(B^4);(B^5)[1 2a0 1],[1 3a0 1],[1 4a0 1],[1 5a0 1]Rponse du logiciel 7 Soit A =1 0 a1 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)+aa+1((a)3)+a((a)2)((a)3)+a 0a((a)3)+aRponse du logiciel ) ) ! #&8Crons une matrice :M:[[1,0,1],[0,1,1],[1,1,0]]1 0 10 1 11 1 0Rponse du logicielCompltons-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 00 1 1 0 1 01 1 0 0 0 1Rponse du logiciel800 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 00 1 1 0 1 00 1 1 1 0 1Rponse du logicielOn effectue L3 L3 L2 :T:9.(-1,T,1,2)1 0 1 1 0 00 1 1 0 1 00 0 2 1 1 1Rponse du logicielOn 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 00 1 1 0 1 00 0 1 121212Rponse du logicielOn effectue L1 L1 L3 :T:9.(-1,T,2,0)81 ' 1 0 0 1212120 1 1 0 1 00 0 1 121212Rponse du logicielet enfin L2 L2 L3 :T:9.(-1,T,2,1)1 0 0 1212120 1 0 1212120 0 1 121212Rponse du logicielIl 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 2p 1}:;Ici :MM:JG(T)121212121212121212Rponse du logicielet on a bien le produit des deux matrices :MM*M820 1 ! 2 )2 qui vaut :1 0 00 1 00 0 1Rponse du logicielBien 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 9Nous 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 vailleP =0,8 0,3 0,20,1 0,2 0,60,1 0,5 0,2Donnons 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 suivantV2 V3V10,20,80,20,10,30,20,10,50,6On 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 relationx(k) = P x(k1)et doncx(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*X563.887400226.069100210.043500Rponse du logicielLe 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.840 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 logiciel1.0,0.5472135955,-0.3472135955On 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.0052790.130000 0.084721 0.004721Rponse du logicielLordre correspond aux valeurs donnes par . Pour le vrifier, extrayons le premiervecteur colonne avec (matrice,numro de colonne) :v:((P),0)P*vet 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.860 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 iOn 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))%27On 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]]%271%27 5%27 2%270%27 2%27 1%272%27 3%27 1%27Rponse du logicielCalculons son dterminant :(A)bCf section e. page 33.87 ' Rponse du logiciel13 % 27Cette 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%278%27 13%27 4%27Rponse du logicielCodons 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 logicielLQVPQNDUGNPENPAEZ@RYUTFEULHYJXVPLEZ@OJOOQPQKETQF(On cre une liste avec message :Lb:code(message)On cre la matrice 3 lignes associe :brouille:('(Lb,3))%27On utilise linverse de la cl pour dcoder :clarifie:A^(-1)*brouille880 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 logicielJE@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 affineLogiciel(s) abord(s) : Scilab XCASProblmatique : 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+bqui 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 tl 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 rd 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 eDplacement dun point la sourisNotons 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 roui 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 )923 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 eo p p o s e sA:((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 ss 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 yd 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 P122aRponse du logicielOn peut demander dautres longueurs :((A,P))((A,G))12sqrt(6)a a3Rponse du logicielPour obtenir la figure, on fixe une valeur pour a :943 Cube obtenu avec a=5Pour 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 af 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 xVoici 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 && y3& *!# 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 y97 ) * +# 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 4ce qui donne :Pour une tude similaire avec le logiciel Scilab, voir la section 11.4 page 11998 StatistiquesLogiciel(s) abord(s) : XCAS, ScilabNotions 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 de9 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 ,1Nayant 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 02. 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 100 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;k4 ( %! !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 0On 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 diffrentp: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.551024 ( %! ! 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 0On 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 =21044 *22! 29 Le logiciel Scilab fournit un gnrateur alatoire de matrices. Pour savoir quel est le type derpartition par dfaut, taperstr(info)La distribution uniforme donne des nombres rels quirpartis entre 0 et 1. LinstructionA(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 0m(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 YUn zoom prsente le mme aspect.1064# Histogramme des valeurs de la variable Y :dtailEn 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.001002003004005006007008009001000 Rpartition de la variable Y par centilesUne 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 XLes 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);1084# 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 fonctionexp( t 22)2par la commandet-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 dela 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);;1104# 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 dsLtude 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 ds112 Calcul diffrentielLogiciel(s) abord(s) : Maxima XCAS Gp Yacas ScilabProblmatique : 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) 41.0 0.8 0.6 0.4 0.2 0.0 0.2 0.4 0.6 0.8 1.0051015 Une partie de lhliceScilab et les couleursLe logiciel Scilab change de couleur automatiquement, la premire est toujoursbleue. . . mme sil est difficile de sen rendre compte sur la figure 11.27. 3Le 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 drivXCAS 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))+1Rponse du logicielLe 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.0et 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). 4Le 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-Jx[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)ztt0:.1:3*%pi(X(t),Y(t),Z(t))012345678910Z1.00.60.20.20.61.0 X1.00.60.20.20.61.0Y Une partie de lhlice117 4On 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*ALa 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 $ 4Largument 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 !5donne 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 coteLexemple 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+18a5t-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 4Bun[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 duplan 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 duplan y = 2, avec deux points122 !5Si 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 = 0z f (x, y) = 0Voici lensemble complet des instructions :x0:.2:6;y0:.2:8; zf(x,y)z2*x^2-8*x+y^2-6*y+18a5;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 nt0 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 nT0:.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 4Les 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 deScilabDans 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 dessinEn 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, = 4v[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)]/hLa 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,nxi(x1, x2)= 12xi(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 4Sa 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)Linstructiondessin(H)demande un peu de calcul : la grille contient 900 nuds. La courbure reste proche de 1. La pseudosphre : les couleurs reprsententla cote128# 6! 2%! !5 La courbure de la pseudosphre : les couleursreprsentent la cote La pseudosphre : les couleurs reprsententla courbureLes instructionsdessin(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 cote130# 6! 2%! !5 La selle : les couleurs reprsentent la cour-bure La sphre : les couleurs reprsentent la cote131 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 contrainteSi 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) = kOn veut par exemple dterminer les extrema de la fonction f : (x, y) y2 x2 sur le disqueunit.f:(x,y)->y^2-x^2La 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 41 0 11 0 10 1 10 1 1Rponse du logicielLa 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,1Rponse du logicielPar 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 :xy-2 -1 0 1 2-1-0.500.51 Courbe de niveau de f avec la contrainteg (x, y) = 1 = )3 ) 3Rappelons ce rsultat classique que nous ne dmontrerons pas :Test de la drive secondeSoit 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 4Cherchons 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^4Cherchons ses points critiques :([(f(x,y),x)0,(f(x,y),y)0],[x,y])0 00 01 10 01 1Rponse du logicielIl 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 yF(x,y)y2Rponse du logicielDrives partielles et XCASOn obtient F(x,y)x2en 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 y12 y 6 x 2 (12 3 (y)2)]Rponse du logicielIl 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 IntgrationLogiciel(s) abord(s) : Yacas Maxima Scilab XCAS MuPADProblmatique : Des primitives formelles et des intgrales num-riques peuvent tre obtenues. 4Pour 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. 3Pour 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 en12(x +1) x 12(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 logicielSQRT(31) 1 1/3 SQRT(31) 1 2/3Is 3 (--------- - -) x - 3 (--------- - -) + 1 positive or negative?6 SQRT(3) 2 6 SQRT(3) 2Il 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.00.20.40.60.81.01.21.4 Graphe de x log(x) x +1142 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)nRponse du logicielaCest a de ne pas tre libre...143 "' % % 5On 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)dx1a0 g(xa)e(pxaa)adxRponse du logicielnous permet de voir que L[f (ax)]= 1aF(ap)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 renverraF(x)g (x) dxcalcule 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 logiciel3*ln(3)-3-2*ln(2)+2Mais 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 logicielqui nous rappelle la formule dintgration par parties.Mais cette mthode a ses limites, comme nous allons le voir. 6Ce sont les intgrales du typeWn =/20sinn (x) dxEn particulier /20sinn+2(x) dx =/20sinn (x) dx /20sinn(x)cos2(x) dxsachant 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 sinn(x)sin(x).Alorsr:(((x))^n*((x))^2,(1/(n+1))*((x))^(n)*(x))rpond :1n+1 (sin (x))n sin (x)cos (x) ,(sin (x))2 (sin (x))nn+1Rponse du logicielNous 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 rpondranxnxRponse du logicielsans 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+nn+1Rponse du logicielPour 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+2qui 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 ,12155131072Rponse du logiciel Pour lintgration par parties, on utilise --(hold(int)(f(x),x= ),v(x)).Ainsi, on peut intgrer par parties10 xn ex dx :(n, 2--NonNegInt): (n>0,and_);simplify(intlib--byparts((int)(x^n*(x),x01), (x)))qui rpond :en10xn1ex dxRponse du logiciel147 " %%' ! 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 logiciel14.02524361alors quavec par la fonction de calcul approch 0 :nInt((x),x110))Rponse du logiciel14.02585093Nous 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 dintgralesInterrogeons XCAS pour obtenir une approximation de101 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 logicielans =3.1415926535897926719088alors quune valeur approche de est :%piRponse du logiciel%pi =3.1415926535897931159980cest--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 )2Approximation de avec la formule de MachinVous savez bien queArctan(x) nk=0(1)k x2k+12k +1< x2n+32n+3 .On peut donc construire une procdure dpendant dun nombre ! compris entre 0et 1 et donnant la plus petite valeur de lentier n telle queu2n+32n+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 arctan15arctan 1239= 4obtenue en montrant que, a et b tant deux rels tels que ab = 1, on a arctan a +arctanb = arctan(a+b1ab)+ avec = 0 si ab < 1, = 1 si ab > 1 et a > 0 et =1 siab > 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 limitsLogiciel(s) abord(s) : Maxima Gp Yacas XCASProblmatique : Obtenir des dveloppements limits : approxima-tions de fonctions par des polynmes. # 4Le 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+xEnsuite, 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 tl p a i s s e u r d u t r a i tet on obtient pour la fonction cosinus en 0 avec n = 25 : Approximation polynomiale de la fonctioncosinus155 (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 diffrentiellesLogiciel(s) abord(s) : Scilab Octave Maxima MuPAD XCASProblmatique : 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:1Le 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-AAle 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.00.60.20.20.61.0Z1.00.80.60.40.20.00.20.40.60.81.0X0.60.40.20.00.20.4Y Rotation dun vecteurMaintenant 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 baseIl 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 baseLexponentielle 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*yy0[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 voulueOn 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 3La 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 formeu(t)= f (u(t), t)et on ltudie sur un intervalle [a ; b] avec la condition initiale y(t) =u0 et on utilise lapproxi-mationu(t) u(t +h)u(t)hquand h est suffisamment petit . On choisit ici h = baN , avec N un nombre arbitrairementfix de subdivisions.Cela se traduit parEu(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 conditionf (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)hMontrez alors que f (a+h) (1+kh) f (a).05Pour 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 = 2pour 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 eS:()); / / 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)))*100Puis 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 logiciely=%k1sin(10x)+%k2cos(10x)Mais le problme non linaire'((y,x,2)=y^2,y,x);apporte une rponse plus substantielle que le logiciel XCASRponse du logicielsqrt(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# '!(, # /#0On obtient la mme chose sur MuPADDune partode(y(t)-100*y(t),y(t));(%)Rponse du logiciel{C1*exp(-100*t) - 1/100*C2}etode(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 LaplaceLogiciel(s) abord(s) : Maxima XCASProblmatique : Premiers contacts avec la transforme de Laplace., # /+ Le logiciel Maxima donne la transforme de Laplace F(p) de la fonction f (x) conformment la formuleF(p) =+0f (x)epx d xavec 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 latransforme 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);170Troisime partieTHMES XCAS au lyce ?Logiciel(s) abord(s) : XCASProblmatique : 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 ! 5Mode 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 vectorielUn 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 six1 y1 z1x2 y2 z2x3 y3 z3= 0Il suffit de remarquer quex1 y1 z1x2 y2 z2x3 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 etM2M3 sont lis, i.e. les pointssont 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 eyb: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 logicielles points sont aligns . !+ @Rappelons ce thorme190& 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 siIBIC JCJA KAKB= 1Nous 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 droitesA:[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 barycentriquesRponse du logiciel[0,x,1]CONDITION NCESSAIRE. On suppose que les points sont aligns. On peut alors traduire cetteproprit par le fait quexI yI zIxJ yJ zJxK yK zK= 0 (1)Exprimons alors x en fonction des autres coefficientsx:(([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-cdemmentaPour dautres dmonstrations plus classiques, voir SORTAIS , Yvonne/SORTAIS , Ren La gomtrie du triangle . Paris:Hermann, 1987191 => (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 MondeOcA BTCM_1M_2M_3M_4M_5M_6xy-6 -4 -2 0 2 4 6-101234567 Problme du Monde du 5 aot 2007La question tant : est-ce que CM6 +AM2+BM4 =CM3 +BM1 +AM5 ?Il faut prciser que le triangle est quilatral.Demandons XCASR:(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 ut r i a n g l e b l e u c t v a r i a b l e192&& !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 sIl ne reste plus qu testerl1:(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 triangleCM6(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 PappusComment 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 PappusOn 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 chaquecercle (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, PariscTHBAULT , 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 OXrY/2Y/2RY 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 1e r p o i n t .c1:(o1,s[0][1]/2) / / l e r a y o n e s t Y / 2Et 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 1cs:());cs:cs,c1; / / l i s t e d e s c e r c l e s195 => 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 ss 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 ad 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 eIci, 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 obtenireMerci 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 logicielNous 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 chaosLogiciel(s) abord(s) : XCASNotions 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 suivanteun+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 loipn+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 logiciel0.8683116395,0.8284245987,0.8749972464,0.8269407066,0.8749972636(u(3.71,0.2,10*k),k15)Rponse du logiciel0.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 faPour une tude originale de ces suites, on pourra se rfrer ROUQUS , Jean-Philippe/DOMINGUEZ , Sophie Leonsparticulires - Cours de Maths . Paris: Ellipses, 2002201 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 ex 1Il ne reste plus qu observer des phnomnes trs tonnants.Au dpart, pas de surprise : pour 0 ( 5! On nobserve plus de valeurs dadhrenceOn 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 laileLes 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 ConiquesLogiciel(s) abord(s) : XCASNotions 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., = !" $ABPour nous simplifier la vie, nous tudierons en fait les courbes dquation :ax2 +by2 +2cx +2d y +e = 0Nous travaillerons dans un repre orthonorm(O; ,j). Nous supposerons que a et b nesont 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. AlorsSi d = 0. On obtient :(A*x^2+2*C*x+2*D*y+E0) [(A)(x)2(2xC)E2D]Rponse du logicielEn 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 logicielOn 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 C2 A)2+4EA ((2 CA)2)4Rponse du logiciel(x + ca)2= c2 eaa2Deux 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))+E206# 6! 2%! %!A (x+ 2C2A )2 ( (2C)24A )+B (x+ 2D2B )2 ( (2D)24B )+ERponse du logicielSoit le point de coordonnes( ca ; db)dans(O; ,j).Posons k = c2a d2b +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 quela courbe a pour quationx22+ y22= 1dans(; ,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 quationx22 y22=1dans(; ,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.91Quelle 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*Vcest--dire :[4 (X)2+2 X 2 (2 (Y)2)+ ( (2 Y)) 2]Rponse du logicielIl 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 )2222Rponse du logiciel le fait que la conique soit dgnre ou non :1Rponse 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, = & )"x2a2+ y2b2= 1Nous 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 tudierlensemble (E) des points de (E) dabscisse et dordonne positives.(E) est la courbe reprsentative de la fonctionf :R+ Rx b1 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 logicielOn obtient f (x) = bxaa2 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 eOn 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,) ;* )"x2a2 y2b2 = 1On effectue la mme tude avec g :R+ Rx bx2a11:(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 lhyperbole213 , ) % / % 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 unitairede la droite vectorielle associe au grand axe, lellipse admet pour quation x2a2+ y2b2= 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 = a2cOn 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 logiciellexcentricit 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 xx0a2+ y y0b2= 1. On obtient donc que :y =(1 xx0a2) b2y0Nous 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 / b1T: (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 " " & " CCompltons 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 2Rayon incident Rayon rflchiNormale au point dincidence Loi de DescartesOn 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 =ttudions 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 +1Rponse du logicielCest 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. Commey2 +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 logicielHyperbola of center (0,0) ) ? )" x = t +k zNous 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 parabole223 Sries de FourierLogiciel(s) abord(s) : XCASNotions 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 = 1Ta+Taf (t)e2int/T dtSur 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 x2Alors : (x^2,x,2*Pi,n,-Pi)in22ein+in22ein(+2) +2nein+2nein(+2)+2iein2iein(+2)2n3Rponse du logicielCe 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)2Rponse du logiciela 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,0Rponse du logicielOn 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]. Alorslimn+a+Taf (t)e2int/T dt = 0cn: (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 +4n=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 ()2Rponse du logicielNous 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 partiellesfn (t) = a0 +nk=0(ak cos(kt)+bk sin(kt))converge vers f , ou ventuellement sa rgulariseb et dont lnergie estE ( f ) = 1Ta+Taf 2(t) dtOn utilise alors la formule de Bessel-Parseval et on obtient classiquementE ( f ) = a20 ++n=1a2n +b2n2Une 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=1a2k +b2k2= 49+nk=116k4Nous 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 pRponse du logicielEnsuite on demande de crer la fonction t a0 +Nn=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 logicielOn 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=8qui 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=16Vous 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. 274233 MusiqueLogiciel(s) abord(s) : ScilabProblmatique : 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# miLinstruction 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 o0s"(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 gammes"(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 szgamme(nettoie(intervalle(z)))/ / a f f i c h a g e d u r s u l t a ts"(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 eamplitudenuance/(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)ynomIl 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) ;ysuiteLes 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 .duree1Il ne reste plus qu se jeter leau.sequence(duree,rotationRoues,profondeur,nuance,octave)240 Carrs magiquesLogiciel(s) abord(s) : ScilabProblmatique : 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];mLa 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 eMmliste[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 5242/ $ / / 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 scompteurcompteur+1/ / f i n d e b o u c l e 1Si 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 eMmliste[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 Ctest(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 ALe 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 eMmliste[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 7244/ $ / / 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 2compteurcompteur+1/ / f i n d e b o u c l e 1Maintenant 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.stop0longueur0La 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 tlongueurlongueur+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 typem([i,j])valeurEnsuite 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 ; mSi 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 derreursLogiciel(s) abord(s) : XCASNotions 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 Fk2Nous 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 des2k 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;j3 '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 doncdecod1(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;j3 %! 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 demandedecod1(A,[1,1,1,0,0,0,0])on obtientRponse 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.27Le 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), etdonc 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 321253 ) ,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;j3& * - 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 " %&@ 3Pour 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;k3& * - 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 logicielx^15+x^14+x^13+x^12+x^10+x^8+x^7+x^6+x^5+x^4+K(1) % 2On 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 projectionimposeLogiciel(s) abord(s) : XCASNotions 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), doncP2(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*det 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.2604 ! ! 8 2L:(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*x1Rponse du logicielet donc :P2(x,y,t^2)renvoie :((t)2xy)2 (y x)Rponse du logiciel9 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 0En 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 0cNous considrerons ici quil sagit du cercle de centre O et de rayon 1.2624& (2< -2%! )! " 2!e2i0/ne2i1/ne2i2/ne2i3/ne2i4/n e2i5/nd1d 1d2d 2d3d 3bbcc HexagoneEt avec normment dastuce, tout ceci peut se rduire au systme :((ax +b)2 y2)((ax b)2 y2)(c2 y2) 01 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) 01 x2 y2 0263 2 0: 8 e2i0/ne2i1/ne2i2/ne2i3/ne2i4/nd1d 1d2d 2d3b1b1b2b2b3 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; k4 ! ) 2%! 7 2< -2%!((x+1)2 ((y)2)) ((x+1)2 ((y)2)),1 ((x)2) ((y)2)Rponse du logiciel9 " ? % B 3Vous pourrez prouver pendant vos temps libres quil existe un polynme P tel quev 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 carrPour 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 hexagone2664# 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 ladressehttp://agreg.dnsalias.org/Textes/590.pdfVous 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 animauxLogiciel(s) abord(s) : ScilabNotions informatiques : Modlisation rudimentaire dquations auxdrives partielles par des diffrences finiesProblmatique : 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 systmeAt= F(A,B) + DAABt= G(A,B) + DBBLes fonctions F et G dcrivent la cintique chimique. Les laplaciens reprsentent le phno-mne de diffusion.aMURRAY , J. D. Mathematical biology . Berlin: Springer, 1993. 1Le 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 = 2Les matrices Ai reprsentent les concentrations en produit A la date i . On dfinit les coor-donnes des noeuds de la grille.xx1:SyyxxLa 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*MIl faut dfinir les donnes qui interviennent dans lquation dvolution.DA1DB2k1.1k2.02k3.03k4.04La 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 1Les 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)/2Les 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*LLe 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*MLes donnes sont modifies pour rapprocher les deux coefficients de diffusion.DA1DB1.00001k1.0002277 1k2.0002k30.0002k4.0002Les 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 cylindre278Quatrime partieANNEXESTableaux comparatifsD Logiciel Licence Site internetBc GPL http://www.gnu.org/software/bc/manual/bc.htmlMaxima GPL http://maxima.sourceforge.netMuPAD commerciale http://www.mupad.deOctave GPL http://www.octave.orgPARI/Gp GPL http://pari.math.u-bordeaux.fr/Scilab Scilab http://www.scilab.frYacas GPL http://yacas.sourceforge.netXCAS GPL http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.htmlGnuPlot GPL http://www.gnuplot.info/ Sites de tlchargement Logiciel Fichier de configurationMaxima /.wxMaximaPARI/Gp /.gprcYacas /yacas/yacasinit.ysXCAS /.xcasrc O se trouve le fichier de configuration ?1 1 :Logiciel Ensemble Liste MatriceMaxima [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 matriceLogiciel quation lment dune liste lment dune matrice Longueur dune listeMaxima 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 matricesLogiciel True False And Or Not Equal Not equalBc 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 EqualsXCAS 0 1 and && or || ! == != Oprateurs boolens282" !" 5Logiciel Assignement Dfinition de fonctionsBc 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*yendfunctionPARI/Gp y=3 f(x,y)=x*yScilab y=3; function f(x,y)x*yendfunctionYacas y:=3; Function(f,x,y)[x*y;];XCAS y:=3 f(x,y):={x*y } Comment rentrer une fonction ?Logiciel If+then+elseBc if(test) ...;...;Maxima if test then ... else if test then ... else ...MuPAD if test then ... elif test then ... else ... end_ifOctave if (test) ... else ... endifPARI/Gp if(test,...,...)Scilab if test then, ..., else, ..., endYacas if(test)..else...XCAS if(test)...; else ...;si(test)...; sinon ...;si test alors ...; sinon ...; fsi Test if...then...else2831 1 :Logiciel Boucle forBc for(i=1;i" !" 5 Les principales constantes mathmatiquesLogiciel 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 existantesLogiciel n mod mMaxima mod(n, m)MuPAD n mod mOctave 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 modulaireLogiciel Partie relle Forme algbrique dun complexeMaxima realpart(f(z)) rectform(f(z))MuPAD Re(f(z)) rectform(f(z))Octave real(z)PARI/GpScilab real(z)Yacas Re(z)XCAS Re(z) evalc(z) Calcul avec les complexes2851 1 :Logiciel Somme :ni=1f (i )Maxima sum(f(i),i,1,n) ,simpsumMuPAD sum(f(i), i = 1..n)OctavePARI/Gp sum(k=1,n,f(k))ScilabYacas Sum(i,1,n,f(i))XCAS sum(f(k),k,1,n), sum(f(k),k=1..n) Calcul de sommesLogiciel Limites : limx0 f (x) Dveloppements limits et asymptotiquesMaxima 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)OctavePARI/Gp f(x)ScilabYacas 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 limitesLogiciel Calcul diffrentiel :d3 f (x, y)d x3Intgration :10f (x)d xMaxima 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 intgral286" !" 5Logiciel Graphe 2DMaxima plot(x, x, 0, 1)$ plot(acsch(x), x, 0, 1)$MuPAD plotfunc(x, acsch(x), x = 0..1):OctavePARI/GpScilab 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 2DLogiciel Graphe 3DMaxima plot3d(abs(x*y), x, 0, 1, y, 0, 1)$MuPAD plotfunc(abs(x*y), x = 0..1, y = 0..1):OctavePARI/GpScilab 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 3D287BibliographieABDELJAOUAD , Mahdi: lments de Gomtrie du Plan . Tunis: Association Tunisienne desSciences Mathmatiques, 2000AMYOTTE , Luc: Introduction au calcul avanc et ses applications en sciences . Qubec: ERPI,2004APPEL , Walter: Mathmatiques pour la physique et les physiciens. Paris: H&K, 2005BADRIKIAN , Josphe: Mathmatiques pour tlinformatique : codes correcteurs. Paris: Ellipses,2002BELABAS , Karim: Site officiel de PARI/GP . URL: http://pari.math.u-bordeaux.fr/BELLOC , J.C./THUILLIER , P.: Mathmatiques analyse 3 . Paris: Dunod, 2004BRUGRE , Thierry/MOLLARD , Alain: Mathmatiques lusage des informaticiens. Paris: El-lipses, 2003CONNAN , Guillaume/ROUQUS , Jean-Philippe: Le simulateur de khlles de maths . Paris:Ellipses, 2002DALANG , Robert C./CHAABOUNI , Amel: Algbre linaire . Lausanne: Presses polytechniqueset universitaires romandes, 2001, 127137INRIA : 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, 168185MONGE , M./AUDOIN-GOROFF , M.C./LMAIRE-BODY, F.: Mathmatiques Terminales C et E .Paris: Belin, 1974MURRAY , J. D.: Mathematical biology . Berlin: Springer, 1993, 372380PARISSE , Bernard: Site officiel de XCAS . URL: http://www-fourier.ujf-grenoble.fr/~parisse/irem.htmlROUQUS , Jean-Philippe/DOMINGUEZ , Sophie: Leons particulires - Cours de Maths . Paris:Ellipses, 2002, 316328SORTAIS , Yvonne/SORTAIS , Ren: La gomtrie du triangle . Paris: Hermann, 1987, 16211 BTENENBAUM , Grald/MENDS FRANCE , Michel: Les nombres premiers . Paris: PUF, 1997THBAULT , Victor: Sur le tranchet dArchimde . Bulletin de la S.M.F. Tome 72 1944, 6875WESTER , Michael: Computer Algebra Systems: A Practical Guide . Chichester: John Wiley &Sons, 1999290Index gnralABBA, 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, 185Baccalaurat, 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, 7C++(programme), 26, 31, 32C-shell(programme), 14Calcul formel, 183Calcul matriciel, 75, 270Calcul modulaire, 247Caml(programme), 260Centiles, 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, 2771 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, 264cart-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, 125Euler-Mac Laurin, 150Exponentielle matricielle, 160Expression, 115, 261Extremum, 133Extremum relatif, 136Fabrication 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, 111Galois, 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, 157Hauteur de casse, 142921 Heure, 30Histogramme, 102, 106108Hyperbole, 215, 222Image 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, 95Kile(programme), 16Laplacien, 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, 69MacOSX, 7Manuel daide, 10MAPLE(programme), 31Matrice, 235, 241, 249, 254Matrice antisymtrique, 157Matrice compagne, 61Matrice dendomorphisme, 78Matrice de passage, 209Matrice 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, 281287Mdiane, 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, 281287Nappe 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, 105Octave(programme), 3, 7, 8, 13, 45, 49, 67,74, 75, 77, 157, 161, 2812872931 Oprande, 58Oprations lmentaires sur les lignes dunematrice, 81Orbite, 158Ordonne, 180Ordonne lorigine, 91, 105Palette 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, 185Pseudosphre, 127PStricks(programme), 26Puissance dun point par rapport un cercle,193Puissance de matrice, vii, 79Quantiles, 106Quartiles, 106Racine 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, 40Scilab(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, 281287Sections 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, 222941 Subdivision, ix, 162, 163Suites rcurrentes, 201Surface, 96Syldavie, 203Symtrie orthogonale, 92Syntaxe, 2, 37Syracuse, suite de, 37Systme dquations linaires, viiSystme dquations linaires, 76Systme linaire, 59Tableaux, 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, 69Trier, 250Tubage de processus, 29Turing, Alan, 269Valeur moyenne, 227Valeur propre, 85Variables complexes, 55Variance, 105Varit, 259Vecteur, 181Vecteur colonne, 75Vecteur ligne, 75Vecteur unitaire, 86Vecteurs propres, 76Vrai, 185Windows Microsoft(programme), 16XCAS(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, 281287Yacas(programme), 3, 7, 8, 13, 15, 26, 28, 45,49, 61, 65, 67, 73, 113, 116, 139, 153,185, 187, 281287Zrjdz, 200295Index des commandesBca, 45auto, 24define, 24, 72for, 24ibase, 48, 48, 49l, 45, 72obase, 48, 49print, 24quit, 24, 49return, 72scale, 24, 45, 45temp, 24GnuPlotborder, 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, 48quit, 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, 97Gp\p, 46atan, 46cos, 153deriv, 64, 116exp, 116, 153log, 67Mod, 49Pi, 46, 153polroots, 64sqrt, 531 LATEX\VerbatimEnvironment, 17\includegraphics, 21fancyvrb, 16VerbatimOut, 16Maxima:=, 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, 154MuPADbegin, 3740DOM_SET, 58else, 39end, 38for, 38, 40from, 38, 40if, 39in, 59intersect, 39, 59intlib::byparts, 147minus, 39proc, 3740step, 38, 40substring, 40then, 39to, 38, 40union, 39while, 39Octavedaspk, 161endfunction, 74eye, 77function, 74inv, 77log, 74lsode, 161pinv, 77poly, 77, 77rand, 77rank, 77roots, 77schur, 77size, 77Scilab*, 73.*, 73.*., 75%io(1), 30%io(2), 30abs, 273atanh, 127champ, 273275companion, 612981 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, 277evstr, 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, 277geomean, 105graycolormap, 271, 272gsort, 107harmean, 105hist3d, 111histplot, 108if, 41, 41, 236239, 242244, 246intg, 142, 150inv, 76kernel, 76linsolve, 76list, 158, 159list(), 159log, 72, 73, 239ls, 30matrix, 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, 302991 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, 8XCAS:=, 250=1 eigenvectors, 209element, 70, 70, 72, 72, 93, 95, 148, 148,155, 162, 182, 192, 194, 201, 213,213, 214216, 216, 218, 221, 222else, 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, 264fpour, 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, 16infinity, 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, 264longueur, 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, 2643011 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,264op, 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,216218point_milieu, 148poly2symb, 85, 85polygone, 70, 70, 148polygone_ouvert, 164pour, 36, 36, 92, 104, 175, 176, 200, 215,229preval, 144, 145, 147print, 101, 102, 102, 104, 104, 250252,254product, 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, 264right, 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, 2223021 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, 266ystep, 134, 135, 265, 266zip, 34zstep, 265, 266YacasLe 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 GrognetGUIDE DU CALCUL AVEC LES LOGICIELS LIBRESGUILLAUME CONNANProfesseur agrg demathmatiques au LyceJean Perrin (Rez).STPHANE GROGNETMatre de confrences lUniversit de Nantes,directeur de lIREM des Pays de la Loire.MATHMATIQUESPHYSIQUECHIMIESCIENCES DE LINGNIEURINFORMATIQUESCIENCES DE LA VIESCIENCES DE LA TERREwww.dunod.comISBN 978-2-10-053934-5 Table des MatiresINTRODUCTION1 Gnralitsa. Public visb. Organisation2 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 internet1.3 Promenade avec bc1.4 Promenade avec XCASCHAPITRE 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 MuPADCHAPITRE 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 HillCodageDcodageCHAPITRE 9 : GOMTRIE AFFINE9.1 Avec Scilaba. quation de droite dans le planb. quation de plan dans l'espace tridimensionnel9.2 Avec XCASa. Proprits gomtriquesDans le planDans l'espaceb. Une activit de 2nde9.3 Avec GnuPlotCHAPITRE 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 XCASPartie 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 MoralitTHME 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 0b. 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 commandesTexte1:

Recommended

View more >