Professional Documents
Culture Documents
Guillaume Connan
Professeur agrg de mathmatiques au lyce Jean Perrin (Rez)
Stphane Grognet
Matre de confrences lUniversit de Nantes et directeur de lIREM des Pays de la Loire
I NTRODUCTION
1 Gnralits a. Public vis b. Organisation Pourquoi des logiciels libres ? Liste des logiciels abords Vive le calcul !
1 1 1 1 2 2 3
2 3 4
Partie I INTERFACE
C HAPITRE 1 : A IDE
1.1 Installer les logiciels 1.2 Obtenir de laide a. Aide en ligne de commande b. Aide en ligne locale c. Aide en ligne par internet d. Documentation internet 1.3 Promenade avec bc 1.4 Promenade avec XCAS 7 7 7 7 8 8 8 8 9 13 13 13 13 14 15 15 18 20 23 26 27 29
C HAPITRE 2 : C OMMUNICATION
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 A 2.2 Obtenir des sorties compatibles avec le logiciel de typographie LTEX A a. LTEX et les calculs avec XCAS A b. LTEX et les sorties graphiques de XCAS A c. LTEX et GnuPlot A d. Combiner Bc, GnuPlot et LTEX 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
29 29 29 30 30 31 31 31 32 33 33 33 36 36 36 36 37 37 38 39 39 39 41
a. Le copier-coller la souris b. Communication via des chiers c. Appel linterprteur de commandes du systme (shell) d. Un bon outil : la gestion des chanes de caractres 2.6 Programmation interactive
C HAPITRE 3 : L A 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
C HAPITRE 4 : A RITHMTIQUE
4.1 Calcul en prcision arbitraire a. Avec Bc b. Avec XCAS c. Avec Maxima d. Avec gp e. Avec Yacas 4.2 Erreurs darrondi avec GnuPlot 4.3 Changement de base avec Bc 4.4 Congruences 4.5 Nombres premiers a. Thorme des nombres premiers x 1 b. La fonction Li :x dt et les nombres premiers 2 ln t 4.6 Nombres p-adiques
43
45 45 45 46 46 46 46 47 48 49 50 50 52 53 55 55
C HAPITRE 5 : QUATIONS
5.1 Avec XCAS
vi
5.2 Avec MuPAD
58 61 61 62 63 64 65 67 67 67 68 68 69 72 72 72 73 73 74 75 75 75 76 76 77 77 78 78 79 79 80 83 86 87 88 91 91 91 91 91 92
C HAPITRE 6 : P OLYNMES
6.1 6.2 6.3 6.4 6.5 Avec Scilab Avec Maxima Avec XCAS Avec Gp Avec Yacas
C HAPITRE 7 : F ONCTIONS
7.1 Avec Gp 7.2 Avec Maxima 7.3 Avec XCAS a. Cas gnral b. Dnir 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
vii
92 93 95 96 99 99 99 99 99 100 101 103 105 105 105 106 106 108 109 110 113 113 113 114 114 116 116 116 117 119 125 132 132 135 139 139 139 139 140 142 143 143 144
Dans le plan Dans lespace b. Une activit de 2nde 9.3 Avec GnuPlot
C HAPITRE 10 : S TATISTIQUES
10.1 Des statistiques sans tableur... a. Le problme du Duc de Toscane Un peu de (petite) histoire Simulation de lexprience Simulation grande chelle b. Lancers de ds c. Un problme divrogne 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
C HAPITRE 12 : I NTGRATION
12.1 Primitives a. Avec Yacas b. Avec Maxima c. Dcomposition en lments simples d. Avec Scilab e. Avec XCAS f. Avec MuPAD 12.2 Changement de variable et intgration par parties
viii
a. Avec XCAS Changement de variables Intgration par parties Intgrale de Wallis b. Avec MuPAD 12.3 Calcul approch dintgrales a. Mthode des rectangles avec XCAS b. Application au calcul dune approximation de avec XCAS
144 144 144 145 147 148 148 149 153 153 153 154 154 154 155 157 157 157 157 160 161 161 161 161 162 162 163 163 163 163 164 164 165 165 166 167 169 169 170
ix
171
173 173 173 179 179 182 183 183 185 185 185 186 189 189 189 190 192 193 193 196 199 200 200 201 203 205 205 205 205 206 208 208 209 210 211 211 213 214 214
T HME 5 : C ONIQUES
5.1 tude algbrique des coniques a. tude mathmatique au niveau Bac+1 Premier cas : ab = 0 second cas : ab = 0 b. tude mathmatique au niveau Bac+2 criture matricielle de lquation Exemple c. tude informatique 5.2 tude analytique des coniques a. Ellipse dquation
x2 a2
+ b2 = 1
x2 a2 y2 b2
y2
b. Hyperbole dquation = 1 5.3 Ensemble des points M du plan tels que MF = eMH 5.4 Foyer et directrice dune conique
a. Cas de lellipse b. Cas de lhyperbole 5.5 Construction de la tangente une conique a. Le thorme b. Lobservation par XCAS c. La preuve par XCAS 5.6 Activits gomtriques sur les paraboles a. Trac dune parabole la rgle et au compas b. Pourquoi les antennes paraboliques sont-elles paraboliques ? 5.7 Coniques et cnes a. Section dun cne par un plan dquation x = t b. Section dun cne par un plan dquation x = t + k z
214 215 215 215 215 217 218 218 219 220 221 222 225 225 228 229 235 235 235 236 237 238 241 247 248 248 248 249 251 253 255 259 259 260 260 260 262 262 263 264 265
T HME 7 : M USIQUE
7.1 Construction dune gamme avec Scilab a. Gnration de gammes candidates b. limination des permutations circulaires de colonnes c. Fonction principale : mode demploi 7.2 Fabrication de sons
xi
265 266 267 269 269 270 273 276 277
Partie IV ANNEXES
TABLEAUX COMPARATIFS B IBLIOGRAPHIE I NDEX GNRAL I NDEX DES COMMANDES
279
281 289 291 297
xii
Remerciements
Je remercie chaleureusement Bernard PARISSE, dune part pour dvelopper de manire si active le logiciel XCAS, et dautre part pour avoir bien voulu relire et amliorer bon nombre des algorithmes prsents dans cet ouvrage. Je tiens galement mexcuser auprs de Claire, Marie, Franois, Suzanne et Rose qui jai tourn le dos tant de jours pour faire face mon cran et les remercie pour leur patience. Guillaume C ONNAN
Introduction
collge lyce suprieur
tant pour les notions mathmatiques que pour les capacits informatiques ncessaires. Louvrage est destin :
llve ou ltudiant qui cherche une vision diffrente des notions abordes en cours, ou qui dsire se cultiver, lenseignant qui cherche une aide soit pour prparer des illustrations pour son cours, soit pour prparer des activits sur machine en travaux pratiques, au candidat professeur qui souhaite illustrer une leon mathmatique en utilisant des programmes de quelques lignes sans rentrer dans une programmation fastidieuse, au technicien et au scientique de nimporte quelle discipline qui souhaite manipuler les 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 chaque logiciel ? Comment traiter avec les machines quelques thmes mathmatiques un peu plus labors ?
Les textes de confort dcoulent de notre pratique ; ils sont destins ceux qui sintressent aux 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 sommes nous-mmes poses : pour illustrer tel ou tel domaine des mathmatiques, quels logiciels choisir, quels sont les outils minimums quon peut acqurir sans gros travail dapprentissage pour 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 mathmatique que lon connat. Mais il apparat que les logiciels libres disponibles sont sufsamment riches et sufsamment documents pour quon puisse aussi dcouvrir un domaine mathmatique travers eux. La manire de penser lchange de connaissances sen trouve modie. Lutilisation dun logiciel pour rsoudre un problme ambitieux mne une utilisation pousse : le logiciel libre sa puissance ; des routines sont cres, qui peuvent tre utilises dans bien dautres situations ; la solution apporte fait natre dautres envies et apporte de fcondes suggestions.
Les logiciels libres publient les sources de leur programmes, ce qui leur offre diffrents avantages. 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 le savoir-faire ne soit perdu : cest un gage de prennit. Leurs concepteurs visent la compatibilit avec les versions antrieures et le respect des normes informatiques. Les logiciels libres sont destins communiquer entre eux, et le fait de pouvoir cumuler la puissance de plusieurs logiciels pour un projet de calcul est prcieux. Le fait de pouvoir les dupliquer lgalement est bnque pour le budget de ltat ou des entreprises.
Plusieurs logiciels sont utiliss dans cet ouvrage. Nous pointons les diffrences de syntaxe ; elles ne doivent pas rebuter le nophyte car elles ont leur raison dtre, et le fait dapprendre plusieurs logiciels de calcul en mme temps apporte un recul protable lassimilation des rgles 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 systmes dexploitation libres de la ligne UNIX ; loppos de la stratgie commerciale des logiciels propritaires, les logiciels libres ne cherchent pas tout faire, mais agir dans un domaine dtermin le plus proprement possible : ce quils font, ils le font bien. Toujours dans la philosophie UNIX, les logiciels utilisent des modes de communication ouverts (ils peuvent lire et crire des chiers texte ou dans des formats ouverts, lancer des commandes systme et donc nimporte quel autre logiciel), et collaborent entre eux. Tel logiciel de calcul formel utilise un autre logiciel de dessin pour ses graphismes, et un autre logiciel de calcul numrique pour ses calculs approchs. Cette coopration apporte une puissance et un confort dutilisation introuvables dans les logiciels propritaires.
Fonctionne en mode Logiciel
Bc GnuPlot Gp(pari) Maxima MuPAD Octave Scilab XCAS(giac) Yacas
Type calculette en prcision arbitraire traceur de gures mathmatiques calculateur formel orient corps de nombres calculateur formel calculateur formel calculateur numrique matriciel calculateur numrique matriciel calculateur formel calculateur formel
Licence GPL GPL GPL GPL Propritaire GPL cecill GPL GPL
texte oui
oui oui oui oui oui oui oui oui(iacas) oui oui oui
Logiciels abords Les logiciels qui fonctionnent en mode texte prsentent deux avantages : ils peuvent tre installs 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 mode graphique. A Les relations des logiciels de calcul avec le logiciel de typographie LTEX sont abordes ici.
Nous remercions les auteurs des logiciels libres qui diffusent leur savoir lensemble de lhumanit depuis des dcennies. Les systmes libres Linux et *BSD sont des outils de travail remarquables. Nous remercions lIREM des Pays de la Loire, le Dpartement de mathmatiques de lUniversit 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, xg, R. . . Cet ouvrage vise encourager les utilisateurs parcourir la riche documentation des logiciels libres, il ne vise surtout pas la remplacer. Nous esprons que le lecteur prendra autant de plaisir que nous dcouvrir les logiciels libres de calcul mathmatique, et utilisera ce livre en exprimentant directement les logiciels de calcul sur sa machine, en noubliant pas son diteur de texte prfr pour crer et ajuster ses propres programmes.
Premire partie
INTERFACE
Aide
Logiciel(s) abord(s) : Bc GnuPlot Gp Maxima Octave Scilab XCAS
Yacas
part MuPAD, les logiciels dcrits ici sont libres, cest--dire librement copiables avec leurs programmes-sources. Ils sont souvent dans larborescence de logiciels disponibles sous votre systme dexploitation Linux ou *BSD prfr. Sous MacOSX, il est bon dutiliser Fink, qui les place dans le rpertoire \sw. Mais certains logiciels ne sont pas disponibles par Fink : ils sont souvent sur internet sous forme dj compile pour MacIntosh. Sous Microsoft Windows, les logiciels sont tlcharger sur internet. On peut avoir besoin dun simulateur UNIX comme CygWin. Dans tous les cas, il ne faut pas hsiter consulter les sites internet correspondants et tlcharger la documentation.
Certains logiciels fournissent une aide sommaire en ligne de commande avec une instruction du type programme -h : ou programme -help.
bc --help gnuplot --help gp --help maxima --help octave --help scilab --help
Certains fournissent une aide dans la norme UNIX avec la commande man de linterprteur de commande (Shell) : man programme.
Quelques logiciels fournissent une aide substantielle avec la commande info du shell :
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 dinterrogation, comme GnuPlot, XCAS, Yacas, deux points dinterrogation, comme Gp. Par exemple le programme Yacas lance le navigateur en mode texte ; le logiciel Gp avec deux points dinterrogation lance le visualiseur sur un document daide (en mode graphique). 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 donnes sur 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.
man bc
VERSION This man page documents GNU bc version 1.04. DESCRIPTION bc is a language that supports arbitrary precision numbers with interactive execution of statements. There are some similarities in the syntax to the C programming language. A standard math library is available by command line option. If requested, the math library is defined before processing any files. bc starts by processing code from all the files listed on the command line in the order listed. After all files have been processed, bc reads from the standard input. All code is executed as it is read. (If a file contains a command to halt the processor, bc will never read from the standard input.) This version of bc contains several extensions beyond traditional bc implementations and the POSIX draft standard. Command line options can cause these extensions to print a warning or to be rejected. This document describes the language accepted by this processor. Extensions will be identified as such. OPTIONS -l -w -s -q -v
Define the standard math library. Give warnings for extensions to POSIX bc. Process exactly the POSIX bc language. Do not print the normal GNU bc welcome. Print the version number and copyright and quit.
--mathlib Define the standard math library. --warn Give warnings for extensions to POSIX bc. --standard Process exactly the POSIX bc language.
. On
Laide est trs fournie sur XCAS. Il existe tout dabord un index des commandes qui donne un rapide rsum des fonctionnalits. Par exemple, pour se rappeler la syntaxe de , on tape limite puis
On obtient :
Pour une aide plus dtaille, on peut cliquer sur Dtails si on avait dj ouvert lindex daide ; on peut y accder directement en tapant puis en indiquant la notion qui nous 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 rsum suivant la section... Aide :
Rponse du logiciel
LE MENU AIDE Ce menu contient les diffrentes formes daide possible. * INTERFACE contient ce manuel, donc laide concernant linterface de Xcas. * MANUELS 1. CALCUL FORMEL contient laide gnrale qui concerne toutes les fonctions de calcul formel, de gomtrie, de statistiques mais qui ne concerne pas les instructions de programmation, ni les instructions dplaant la tortue.
10
2. ALGORITHMES dcrit une partie des mathmatiques utilises pour programmer un logiciel de calcul formel 3. GOMTRIE contient une aide plus dtaille pour certaines commandes car cette aide est illustre par des exercices (mais on na pas toutes les fonctions de gomtrie !). 4. PROGRAMMATION contient une aide dtaille des instructions de programmation. Dans cette partie vous trouverez lcriture de plusieurs algorithmes avec la traduction de ces algorithmes en langage Xcas MapleV MuPAD TI89/92. 5. TABLEUR,STATISTIQUES contient une aide dtaille concernant le tableur et les fonctions de statistiques ainsi que leurs utilisations dans le tableur. 6. TORTUE contient laide concernant les instructions qui sont utilises dans lcran de dessin Tortue. Dans cette partie vous trouverez plusieurs activits que lon peut faire avec des enfants (du CP au CM2) dans le but de leur faire faire des mathmatiques. 7. AMUSEMENTS contient de nombreux exercices mathmatiques originaux traits avec XCAS. * INTERNET 1. FORUM permet daccder un forum de discussion. 2. SITE LYCE G. CONNAN renvoie vers un site merveilleux... 3. RESSOURCES BAC S renvoie vers les sujets de lpreuve exprimentale du Bac S. 4. RESSOURCES AGRGATION renvoie vers les thmes utiles aux agrgatifs. 5. METTRE JOUR LAIDE permet de mettre laide jour. * INDEX donne toutes les commandes utilisables classes par ordre alphabtique avec une 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 une lettre ou une commande. En cliquant sur lune de ces commandes, vous avez une aide succincte qui saffiche dans le bandeau gnral lendroit des messages, des exemples que lon peut copier en cliquant sur lun deux et le nom des commandes proches ou des synonymes. Pour avoir une aide plus complte, cliquez sur le bouton Dtails Laide saffiche soit dans un navigateur (par dfaut Mozilla sous Linux, Internet Explorer sous Windows), soit dans une fentre part. Sous Linux, il est commode douvrir Mozilla et de licnifier pour pouvoir ouvrir cette aide lorsque cela est ncessaire. Vous pouvez aussi taper ?nom_de_commande pour avoir en rponse laide succincte sur cette commande. Notez quen tapant sur le bouton bleu ? situ en bas gauche dans le bandeau gnral, on ouvre lIndex et, notez aussi quen tapant le dbut dune commande dans une ligne de commandes puis sur la touche de tabulation ou sur le bouton bleu ?, on ouvre lIndex la commande commenant par ce dbut. * TROUVE recherche le mot demand dans toutes les pages du manuel Calcul formel.
11
Communication
Logiciel(s) abord(s) : Bc GnuPlot Gp Maxima Octave Scilab XCAS
Yacas
Problmatique : Mettre en forme les productions des logiciels. Faire communiquer les logiciels entre eux.
En notation scientique, les nombres apparaisent sous la forme suivante, et ils sont saisir de mme :
-1.23456e-7
reprsente le nombre 1, 23456 107 dans plusieurs logiciels. Le symbole de la partie exponentielle varie suivant les logiciels.
Notation scientique
logiciels
Bc Yacas Gp GnuPlot XCAS Maxima Scilab Octave
La plupart des logiciels de calcul obissent une ligne de commande que lutilisateur saisit avec le clavier. La commande nest excute que quand on appuie sur la touche . diter une commande, cest modier 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 touche deffaage vers la gauche.
Dans certains logiciels, en utilisant les ches du clavier, on peut rappeler une commande prcdente. Des raccourcis-clavier autrefois introduits dans linterprteur de commande C-shell ou lditeur 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 n de ligne, pour effacer le caractre droite du curseur
et caetera. Leffet de ces commandes peut varier dun logiciel lautre : il est recommand de faire des essais. Ces commandes sont tellement pratiques quil serait dommage de sen passer. Beaucoup de logiciels sont sensibles la hauteur de casse : dans le logiciel Scilab, linstruction
(1)
fonctionne mais linstruction
Sin(1)
ne fonctionne pas.
Pour utiliser le rsultat obtenu dans un logiciel comme entre dans un autre, comme dans la section a. page 29, il faut que la mise en forme du rsultat soit compatible avec la saisie des instructions. La ligne de commande permet de modier la vole les diffrences mineures de notation dun logiciel lautre. En copier-coller la souris, on peut utiliser ltape intermdiaire dun diteur de texte pour nettoyer linstruction. En demandant aux logiciels dcrire et de lire dans un chier, il est possible dutiliser des diteurs de texte automatiss tels que sed, awk, Perl. . .
opration Logiciel
Scilab
exemple
x=(0,x) p=x2+1 (p) x2+1;
exemple
Maxima
x2+1;
x2+1;
14
opration Logiciel
Gp Yacas XCAS
Mise en forme du rsultat obtenir la sortie au format enjoliv il ny a rien faire exemple
obtenir la sortie au format de lentre il ny a rien faire il ny a rien faire il ny a rien faire
exemple
il ny a rien faire
PrettyForm(%)
A Il est possible de demander XCAS de calculer partir dun chier LTEX. Pour cela, il faut comA mencer par indiquer LTEX quon lautorise excuter des tches externes en modiant le chier ( ou lquivalent sur des systmes non libres ) /usr/share/texmf/web2c/texmf.cnf. Il suft dy remplacer shell_escape=f par shell_escape= t.
15
Une manire moins drastique est de spcier son diteur ( Kile, TeXmaker...) de compiler le chier avec loption shell_escape :
latex --shell-escape fichier.tex
%%% m o d e :
%%% T e X m a s t e r : %%% E n d :
\ \ \
%c o m m a n d e
\ \ \
} }
A Cette commande permet de schapper ( escape... ) momentanment de LTEX pour excuter une commande externe dans le Shell. Ici, nous appelons giac qui correspond XCAS en mode texte. Ensuite, il faut crer un script qui sera lu par giac dans son langage. Lenvironnement de lextension permet de placer un script dans un chier mis en argument, ici Xcass.in :
\ {VerbatimOut}{Xcass. } (0); Sortie: ("xcass.tex"); ("xcass.out"); ( ()); Resultat: ( ( ()[0])); (Sortie, ,Resultat); (Sortie); \ {VerbatimOut}
16
(nom
("fichier externe") qui charge un chier externe; A (commande ou sortie) qui transforme en code LTEX une commande ou un rsultat afch dans XCAS ;
(fichier,Unquoted,cible) qui crit cible sans guillemets dans fichier ; (nom fichier) qui ferme le chier.
A On cre ensuite un nouvel environnement LTEX quon appellera Xcass pour faciliter la saisie. On utilise nouveau lenvironnement VerbatimOut, mais cette fois-ci nous devons spcier A loption \ pour expliquer LTEX quil sagit dun environnement en mode Verbatim :
{document}
\ {Xcass} simplify(1-8*ln(sqrt(1/e))+sqrt(2)+1/2); \ {Xcass} \ {Xcass} solve(sin(x) 1/2,x) \ {Xcass} \ {Xcass} desolve([y+y sin(x),y(0) 2],y)[0]; \ {Xcass} \
{document}
cos (x) + sin (x) cos (x) + sin (x) cos (x) + sin (x)
17
On peut procder de la mme manire pour obtenir des sorties graphiques produites par XCAS. A Il faut donc maintenant placer ces commandes dans le prambule du chier LTEX. Pour excuter un programme giac :
\ \ \ \
18
A Il ne reste plus qu faire appel cet environnement lintrieur dun chier LTEX :
La solution de lquation diffrentielle y"+y 0 avec les conditions particulires y(0) y(0) 1 est fournie par \Prog{XCAS} grce la commande \Com{XCAS}{desolve}. Il s agit de la fonction dfinie par~: \ {Xcass} desolve([y+y 0,y(0) 1,y(0) 1],y)[0]; \ {Xcass} Nous obtenons galement son }~: graphe grce la commande \Com{XCAS}{plot
qui donne :
19
Rponse du logiciel
La solution de lquation diffrentielle y" + y = 0 avec les conditions particulires y(0) = y (0) = 1 est fournie par XCAS grce la commande . Il sagit de la fonction dnie par : cos (x) + sin (x) Nous obtenons galement son graphe grce la commande :
courbe
A Pour insrer une gure produite par GnuPlot dans un chier LTEX, rien de plus simple. Il suft tout dabord dinstaller lextension gnuplottexa . Plusieurs possibilits soffrent alors nous :
{gnuplot}[scale
1.1] set hidden3d set isosamples 10,10 r(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 :
a Disponible sur CTAN : http://tug.ctan.org/tex-archive/macros/latex/contrib/gnuplottex/
20
Rponse du logiciel
f(x,y)
et du texte aprs.
Ainsi, le dessin produit est peu prcis car on ne peut dpasser les valeurs 10 et 10 pour
A Mieux vaut donc passer par lintermdiaire dun chier eps pour laisser LTEX en dehors des calculs. On inclut le graphique avec \ :
\begin{gnuplot}
Appel si
vous
21
Rponse du logiciel
f(x,y)
10 5 -10 -5 0 -5 5 -10 10 0
et du texte aprs.
A On peut galement utiliser MetaPOST : cela conomise aussi la mmoire LTEX et permet ventuellement de changer le style de gure en retouchant le chier .mp :
\begin{gnuplot}
mpost tempgnu.mp
# Appel VENTUEL en pdf mptopdf si vous pour transformer avec le fichier produit par MetaPOST travaillez pdfLaTeX .
mptopdf tempgnu.0
\end{gnuplot} \includegraphics{tempgnu.0}
ce qui donne :
22
Rponse du logiciel
et du texte aprs.
Une possibilit extraordinaire des logiciels libres est de pouvoir faire travailler ensemble plusieurs 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 1 n vers 1 . e Partageons les tches :
Commenons par crer des commandes pour faire excuter des commandes en dehors de A LTEX. Dabord pour Bc :
\ \
{\executBC}[2]{ \ \ 18{bc -q
fichier fichier contenant contenant les les
-l
#1 #2 }} >
de bc calculs des
% #1 % #2
commande rsultats
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 ; ( i 0; i < n; i ) { x[i] (1-1/(i+1))^(i+1); / * c a l c u l e (1 1/ n ) ^n } ( j 0; j < n-1; j ) { j+1, " ", x[j] , "\n" ; } / * on c r e l e s l a b e l s * / n+1, " ", x[n] ; } 6 ; /* 6 c h i f f r e s aprs la vi rgu le */ somme(199); / * 2 0 0 v a l e u r s * /
/*
pour
bc
les
indices
dmarrent
*/
*/
\end{VerbatimOut}
On va ensuire inclure les donnes calcules par Bc au format attendu par GnuPlot dans le chier fich.gnu :
\begin{VerbatimOut}{fich.gnu} " at
# On
place
label au bon
back
1:2
pas
de
titre
puisqu i l
LaTeX
3 n # l a b e l d e s a b s c i s s e s approximation de (1-1/n)^n
format eps
label
des
ordonnes
(-1)
\end{VerbatimOut}
24
Ce qui donne :
Rponse du logiciel
approximation de (1-1/n)^n
0.34
0.32
0.3
0.28
0.26
20
40
60
80
100 n
120
140
160
180
200
On a calcul les 200 premiers termes de la suite. On saperoit que la convergence est assez rapide.
= e 1 avec bc,
25
Appeler GnuPlot nest certes pas la seule manire dinsrer des graphiques dans un A chier LTEX. Cela peut mme poser des problmes de cohrence des polices (qui peut se rgler en prfrant un export MetaPOST par exemple). Il existe en fait des programmes spcialement conus pour effectuer de magniA ques dessins en totale cohrence avec LTEX : il sagit entre autres de PStricks (qui A consiste en fait en une srie dextensions LTEX), de MetaPOST et de Tikz principalement. Il crent de magniques dessins mais sont limits en capacits de calcul dans des cas particuliers dtude de courbes ou de surfaces. Un nouveau venu joue les trouble-fte depuis peu, Asymptote, qui allie les capacits esthtiques de ses concurrents avec la puissance de calcul du C++. Pour information, les dessins du prsent ouvrage qui ne sont pas produits par des logiciels de calcul sont crs en MetaPOST, comme les gures des pages 220, 264, 193 ou 195 par exemple.
A Le logiciel TeXmacs permet de crer des documents la LTEX , mais en wysiwyg c . Dans le cas qui nous occupe, il permet galement dinsrer dans le texte des sessions de certains logiciels : giac/XCAS, Maxima, MuPAD, Yacas, PARI/Gp, GnuPlot, Shell,... A On peut ensuite exporter le document obtenu au format pdf, ps, html, LTEX.
Rponse du logiciel
AVEC XCAS
Voici un exemple de session XCAS : on lappelle en cliquant sur Insrer->Session->giac > int(sqrt(1-x^2),x,0,1) 1 4 La commande safche en bleu et le rsultat en noir avec de belles polices. Notez quun menu giac apparat avec les principales commandes.
AVEC M AXIMA
Il en va de mme avec Maxima : (%i1) integrate(sqrt(1-x^2),x,0,1) (%o1) 4
26
Il faut toutefois noter que TeXmacs est gourmand en mmoire et provoque des crashs inopiA ns. Lexport LTEX nest pas optimum. Il peut cependant rendre de bons services lorsquil sagit de crer une feuille de TD utilisant lun des logiciels implants.
Plutt que dutiliser les diteurs livrs avec les logiciels (quand il y en a), on peut prfrer rester lintrieur de son diteur prfr, Emacs, qui possde des modes permettant douvrir
27
des sessions XCAS ( en fait giac ), Maxima, MuPAD, Yacas... Par exemple, pour utiliser Maxima sous Emacs on installe maxima-emacs.el. Les heureux utilisateurs de distributions Debian ou Ubuntu peuvent par exemple lancer dans un Shell en mode super-utilisateur :
Pour XCAS, on installera mupacs.el et on regardera laide sur le site XCAS. Une session XCAS sous Emacs ressemble donc a :
Rponse du logiciel
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 input 148: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 >>
Il ne faut pas soccuper des 5 premires lignes. Pour diter une saisie prcdente, on tape
- .
28
Rponse du logiciel
(%o1)
(%o2)
Cest ncessaire quand on a besoin la fois de calcul formel et de calcul numrique sophistiqu. 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 communiquer.
La souris est utilisable aussi sans environnement graphique (sous UNIX). Les rsultats doivent tre au mme format que les instructions (voir la section c. page 14) dans la mesure o les instructions voulues concident entre les deux logiciels ! Pour changer commodment les hauteur de casse dune chane de caractres, on pourra passer par lintermdiaire dun diteur de texte comme Emacs.
Beaucoup de logiciels fournissent des instructions pour lire ou crire des donnes dans un chier texte. En crivant le rsultat obtenu par un logiciel dans un chier, et en lisant ce chier avec un autre logiciel, on ralise une communication entre logiciels.
Linterprteur de commande des systmes UNIX est particulirement adapt la communication entre les logiciels grce au tubage de processus. Certains logiciels de calcul prsentent
29
des commandes pour faire excuter des instructions par le Shell. Par exemple Scilab fournit la commande . Linstruction :
(ls)
fonctionne souvent mieux que la commande interne sur certains systmes. On peut aussi augmenter la prcision du calcul. . . unix_w("echo 4*a(1) | bc -l")
("echo
4*a(1) | bc -l")
Pour fabriquer des noms de chiers o crire, pour fabriquer des instructions GnuPlot (par exemple) placer dans un chier, pour utiliser ce qui prcde en gnral, il est pratique de manipuler les chanes de caractres dans le logiciel de calcul. Par exemple dans Scilab :
un="echo " deux="*a(1) | bc -l" x=12 y=3 z= (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)
Des chiers spciaux qui ne sont pas des chiers rguliers sont bien utiles : les entres-sorties standard. On les obtient par les variables ; dans Scilab; elles peuvent tre utilises dans un script Shell par exemple par la commande . Lintrt nest pas que cosmtique : quand on veut tester beaucoup de paramtres diffrents pour un calcul donn cela fait gagner beaucoup de temps !
30
La programmation
Logiciel(s) abord(s) : MuPAD Scilab XCAS
Problmatique : Description des techniques de contrle de ux dans les instructions et de quelques astuces.
. .
}
On commence par ouvrir une session programme en tapant simultanment sur par le menu Edit->Ajouter->Programme. On accde ainsi lditeur de programme. On rentre :
et
ou
(2*x)
}
double(x): {
On clique sur OK pour vrier si tout va bien. Normalement, on obtient un message encourageant :
Rponse du logiciel Success // Success compiling double
programme et est donc directement compil par les librairies C++ de lordinateur, sans passer par un noyau propre comme MuPAD ou MAPLE.
double(37)
avec
un
pas
de
On calcule ainsi 7 ! On aurait pu remplacer lincrmentation k:=k+1 par lcriture quivalente k++, comme en... C++. Mais pour incrmenter dune valeur diffrente de 1, on utilise k:=k+incr
deux
variables
internes
au
programme
32
Le rsultat est certes plus lisible avec la dcoration du point dexclamation, mais cela le rend aussi inutilisable par la suite en tant que rsultat lintrieur dun autre calcul. On pourra donc tre amen remplacer return n+" ! ="+p; par return p;
p: 1; k: 1; ( k 7){ < k: k+1; p: p*k; }
Il faut bien distinguer les ensembles (set ) qui sont des collections non classes dexpressions toutes diffrentes spares par des virgules et encadres par des accolades prcdes de % ou bien entre crochets prcds de
33
ens1:
[2,4,1];
ens2: %{2,5,8,5%}
ens2; ens1
ens2;
[]
%{%}
les suites (sequence) qui sont des collections classes dexpressions (cest--dire avec des lments dindice 0, 1, etc.), diffrentes ou non, spares par des virgules et encadres ou non par des parenthses.
s: 5,7,5,1,2,3
les listes (li st ) qui sont des collections classes dexpressions spares par des virgules et encadres par des crochets. La diffrence, cest que lon peut avoir des listes de listes et si une instruction a plusieurs arguments, une suite ne peut pas tre lun de ces arguments. Notez au passage quelques fonctions utiles :
s1: (j)(j -22); s2: a,b,c,d,f; (s2); / / s i z e c omme 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 t L1: [s1]; L2: [s2]; / / une l i s t e e s t une s u i t e e n t r e (L2); / / nombre d o p r a n d e s L2[3]; L2[0]; / / n o t e z b i e n que l e p r e m i e r o p r a n de
crochets
porte
le
numro
(x->x<0,L1); (L2,3 );
//
pour
substituer
ou
(L2, ); ((x,y)->x*y,L1,L2);
oprande
les chanes de caractres (st r i ng ) sont des juxtapositions de caractres qui ne sont pas values par XCAS si ce nest en tant que simple sigle muet . On place les lments de la chaines entre guillemets "".
34
C: "-&_ehdslqjbch123+4/*5-6* ^"
(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 petit programme qui transforme un nombre entier en une chane de lettres : on groupe les chiffres deux par deux puis on traduit le nombre obtenu en lettreb en utilisant son code ASCII. Ce programme sert en particulier pour le dcodage RSA.
L: }
//
on
rentre
un
entier
(n);
forme de
// ses
est
une
liste ,
cat
transforme
en
la
chiffres
//
expr
transforme
une
chane
en
(L);
selon les
//
la
liste ASCII
de
nombres
est
transforme
en
lettres
codes
vide
au
dpart
(c[j])-32 )} ;
Notez que (r)envoie la liste des codes ASCII des caractres de la chane et (liste) fait linverse. Voir aussi la section f. page 86.
b En ASCII, les majuscules ne sont codes que par des nombres de deux chiffres.
35
Connaissez-vous le code ASCII ? La mmoire de lordinateur conserve toute donne sous forme numrique. Pour coder chaque touche du clavier, on utilise depuis les annes 60 le code ASCII (American Standard Code for Information Interchange). On dit que cest un code 7 bits, cest--dire que chaque caractre est cod par une liste de 7 chiffres gaux 0 ou 1 : combien de caractres diffrents peut-on ainsi coder ?... Par exemple les codes 65 90 reprsentent les majuscules, les codes 97 122 reprsentent les minuscules, dans le mme ordre. Il suft donc de soustraire 32 au code de la minuscule pour obtenir la majuscule correspondante. Une fonction XCAS donne ces nombres : (caractre) et ([liste de nombres]) effectue lopration rciproque.
Les boucles for deviennent des boucles avec une syntaxe diffrente :
s: 0; j de 2*1-1
2*6-1
s: s+j;
Les boucles while deviennent des boucles bien avec une syntaxe diffrente :
k: 1;
6^k%11
1%11
k: k+1;
36
Tortue XCAS : programmation pour petits et grands... on ouvre une fentre tortue pour permettre de jeunes En tapant sur + enfants de sinitier la programmation en dessinant. Vous consulterez laide trs complte ce sujet. Voici par exemple des instructions permettant de construire une petite frise grecque :
n: 100;
(n 0) >
n;
;n: n-10;
et on obtient :
(variables)
La syntaxe gnrale:
Nom_de_la_procedure:
37
Par exemple
double:
(x)
2*x
double(x)
On rentre alors
double(37)
(x) ( , (2*x)."
double:
(n));
On calcule ainsi 7 ! On aurait pu crire une procdure pour faire plus joli :
factofor: k,p; (n)
38
p: 1: k 1 p: p*k ; ( ,
".
(n)."!
(p));
p: 1: k: 1: k<7 k: k+1: p: p*k : p;
factowhile: k,p;
(n)
(n)."!
".
(p));
(n) 1
n 0
n*factif(n-1) ; :
les ensembles
ens2; ens1
ens2; ens1
ens2;
39
les suites
5,7,5,1,2,3;
On peut aussi utiliser l oprateur $ pour des suites dnies par une formule explicite :
p^2p 15; m5;
());
//
null ()
(L2, ); (L1,L2,(x,y)->x+y);
L3: L1.L2;
// pour
tant
la
liste
vide
concatner
ractre :
Pour des utilisations particulires, je vous renvoie laide. Voici un petit programme qui transforme un nombre entier en une chane de lettres qui peut servir pour le dcodage RSA.
alph:
l,L;
(n)
//
on
rentre
un
entier
L: [];l:
forms
(n);
des chiffres de n
//
est
une
liste ,
la
chane
// text2expr transforme
(L);
//
la
liste
est
transforme
en
chane
de
Pour excuter un chier dans Scilab, on peut taper nomDuFichier. Le logiciel Scilab naime pas les appels rcursifs des chiers pour les excuter dans des procdures : sa pile sature. Il vaut mieux tout placer dans des fonctions. On excute les chiers juste pour dnir les fonctions, qui, elles, peuvent tre appeles dans des procdures intriques. Les instructions de contrle de ux de Scilab sont dcrites dans le chapitre Programming de laide en ligne. La syntaxe na rien de surprenant. Voici une boucle qui stocke des nombres dans un tableau vertical, en afchant llment chaque tape.
t 1:3 T [] i t, (i,i ); T [T;i];
On construit maintenant une fonction test qui effectue diffrentes procdures suivant les valeurs de la variable. Il faut noter la manire dont sont protges les apostrophes dans les chanes de caractres. La premire boucle est tout ordinaire.
or([x
t])
La seconde boucle permet de terminer la fonction rapidement si la variable x appartient au tableau t dja dni. Elle peut tre crite aussi bien
y
Le logiciel Scilab travaille essentiellement avec des fonctions, des nombres rels en virgule ottante, des chanes de caractres, des tableaux forms partir de ces lments, et des fonctions. En gnral, il ny a pas dclarer de types de variables.
41
Deuxime partie
CALCUL
Arithmtique
Logiciel(s) abord(s) : Gp Yacas XCAS Scilab Octave Maxima Bc
GnuPlot
Il suft de taper
4* (1)
1000
, et
Le temps de rponse est variable suivant les machines, et augmente fortement quand on augmente encore la prcision. Le rsultat est-il juste ?
: 1000:; ( (1))
, puis on utilise :
: 1000; (4*atan(1));
\p
4* (1) \p 1000
()
Pour obtenir ponctuellement des calculs en prcision arbitraire, il suft de le demander lors du calcul approch.
,1000)
46
(1000) ( )
Pour revenir la prcision prcdente, taper
(10) (1/ ) ( )
Mais la prcision maximale est conserve pour la valeur .
2**(30)
Le logiciel GnuPlot pose quelques problmes avec des nombres trop grands ou trop petits comme le montre la retranscription de session suivante :
gnuplot>
gnuplot>
2**(31)
Rponse du logiciel
-2147483648
gnuplot>
2**(32)
Rponse du logiciel
gnuplot>
2**(-30)
Rponse du logiciel
9.31322574615479e-10
gnuplot>
2**(-31)
Rponse du logiciel
-4.65661287307739e-10
47
gnuplot>
2**(-32)
Rponse du logiciel
Le logiciel rpte la dernire instruction accompagne dun commentaire pour avouer son impuissance.
Le logiciel Bc dtecte naturellement une entre en base 16 avec la saisie des chiffres A, B, C, D, E. Le rsultat par dfaut est en base 10. Voici un exemple daddition en base 16 avec le rsultat en base 7 :
F+E
et Bc fournit le rsultat 41. Pour rentrer des nombres dans une base diffrente de 10, il faut changer la variable , ce qui demande un peu dattention. Dans la retranscription suivante, les instructions saisies sont repres par un point-virgule nal.
% bc -lq ;
Rponse du logiciel 10
;
Rponse du logiciel
10
7;
A;
Rponse du logiciel 13
48
66+22;
Rponse du logiciel 121
2*7;
A; A;
Rponse du logiciel 14
Les congruences de nombres entiers sobtiennent souvent dans les logiciels de calcul par une instruction qui ressemble mod(x,p). Les rsulats ne sont pas toujours positifs, cest--dire dans lintervalle [0, p 1] N. Cherchons reprsenter lentier relatif 5 dans Z/3Z : Avec Gp
(-5,3)
Avec Maxima
:3; (-5); :
Avec Octave
mod(-5,3)
Avec Scilab
(-5,3) (-5,3)
Avec Yacas
(-5,3)
Avec XCAS
-5%3
49
donne
Rponse du logiciel 4 % 9
2009
, on peut faire :
...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 reste avec 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 suft dutiliser %0 :
k: 5%11; k^(2785); k^(2785)%0
Pour dautres utilisations du calcul modulaire, voir le thme 7.2 page 247 et la section f. page 86.
Le sujet est plus que vaste ! Contentons-nous dune petite exprimentation sur le thorme des nombres premiers. Conjectur par G AUSS (encore lui !) et L EGENDRE, approch par T CHEBYSHEV , ce thorme a ni par tre prouv indpendamment et simultanment par Jacques H ADDAMARD et CharlesJean de L A VALLE P OUSSIN en 1896.
50
Thorme des nombres premiers En dnissant, pour tout rel positif x, le nombre (x) comme le nombre de nombres premiers infrieurs x, le thorme des nombres premiers snonce de la faon suivante : (x) x ln(x)
Construisons une fonction qui compte le nombre dentiers premiers infrieurs un nombre donn n. On utilise qui teste si un entier est premier. On peut dabord penser une dnition rcursive :
pir(n): { (n 2){ < (
rajoute
si
le
nombre
est
}:;
premier
pir(n-1);
a marche en ayant pris soin de rgler le niveau de rcursion du CAS au maximum (dans la fentre de conguration du CAS). Cependant, le niveau de rcursion nest pas inni et la fonction bloque sur notre ordinateur pour n = 4200. Nous allons donc plutt utiliser un compteur et une boucle for :
pif(n): { k: 0; (j: 0;j< n;j++){ ( (j)){k: k+1;}
premier et on regarde
// le
on
rajoute
au
compteur
si
est
suivant
k} }:;
Mais plutt que de tester les nombres un par un, on peut utiliser la commande qui donne le premier nombre premier suprieur n :
pin(n): { k: 0; (j: 2;j< n;j: k: k+1;} k}:;
(n)
(j)){
Il est noter que XCAS utilise en arithmtique la librairie de PARI/Gp. Ainsi, afche en ralit le plus petit entier pseudo-premier suprieur ou gal n.
51
Il existe en effet deux tests : (n) et (n). Le premier test est sr mais peut devenir trs lent pour de trs grands nombres. Le deuxime est plus rapide mais nest able que pour une rponse ngative. Sil rpond 1, on peut juste penser que le nombre a de bonnes 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/Gp disponible dans la rubrique Aide de XCAS. 1 Maintenant, comparons cette fonction avec x : ln(x) 1
p: polygone_ouvert(
les points
( ([50*k,pin(50*k)]),k 02000))
avec un
//
on
relie
( k , pin ( k ) )
x ln x1
1 ln t
G AUSS conjectura la n du XVIIIe sicle que (x) tait quivalent Li(x) au voisinage de +. tablissons un petit tableau comparatif avec XCAS. Mais dabord, dnissons la fonction Li :
Li(x): ( Li(100000)
(1/(t),t,2,x))
52
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 nes de lintgrale : mthode des trapzes, point milieu, Romberg, etc., la plus ne tant la dernire. Modions donc notre dnition 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 }
de
la
liste
([10^k,pin(10^k),Li(10^k),
Le logiciel Gp connat les nombres p-adiques. Il suft de les rentrer avec la notation de Landau des dveloppements limits.
a:a 49+O(5^3) a/5 a*5 (a)
53
quations numriques
Logiciel(s) abord(s) : XCAS MuPAD
Comme pour de nombreux logiciels de calcul formel, XCAS permet dobtenir dans certains cas les solutions dune quationa sous forme exacte grce la fonction :
l inconnue
par
dfaut
tre
oublier
Notez que le paramtre a est considr par dfaut comme tant rel. Si lon veut travailler avec des variables complexes, il faut cocher dans le menu de conguration cas. Il faudra alors utiliser la fonction assume pour mettre des hypothses sur a :
//
partie
relle
de
la
premiere
racine
//
est
maintenant
suppos
rel
(x+(x)+100 0)
Conguration du CAS Selon les cas, il faudra veiller bien congurer le CAS b : - ou non pour avoir des rsultats exacts ou approchs; - ou non pour avoir des rsultats (exacts ou approchs) sous forme relle ou complexe; - ou non pour travailler avec des variables complexes ou relles.
Il existe de nombreuses mthodes dapproximation. La plus clbre est celle de Newton. On peut lutiliser directement sous deux formes :
le
dpart
de
l algorithme
(x^2-2,x
1)-(2)
Nous avons donc 15 bonnes dcimales. Si nous en voulons plus, il existe deux appels optionnels la fonction newton : le nombre maximum ditrations et la prcision minimum recherche. Par dfaut, ces valeurs sont respectivement xes 12 et 108 .
(x^2-2,x,1,12,1
-50)-(2)
//
1 e 50
signifie
10^( 50)
XCAS nous afche -2.828427. Reexion faite, ce nest pas tonnant : la variable qui xe le nombre de chiffres signicatifs est par dfaut x 10. Si nous voulons plus de prcisions, 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 petit programme indiquant le nombre ditrations ncessaires pour obtenir une prcision donne :
Newton(f,pre,u0): {
56
k: k+1; } un+" est la solution trouve " + (pre) + " prs aprs "+ k +" itrations";
Excutons ce programme :
Newton(x- x^ 2-2,1 -100,2); >
Il nous assure que 8 itrations sont ncessaires pour obtenir AU MOINSc 100 bonnes dcimales... Pour des cas plus lourds , nous pouvons utiliser la mthode de Steffenson qui acclre celle de Newton :
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 :
Cet inconvnient est encore plus mis en valeur avec lquation x + ln(x) + 100 = 0. En effet, si on appelle f la fonction associe, lim f (x) = et f e100 = e100 100 + 100 > 0, donc la solution appartient lintervalle ]0 ; e100 [, ce qui indique que la solution est assez petite...
x0
(x+(x)+100 0,x
(-100))- (-100)
nous indique que nous sommes malgr tout assez proche de e100 . Pour un choix de la mthode de rsolution numrique dun systme dquations linaires ou non, voir lexemple page 196.
Format de nombre Le format de nombre approch utilis par XCAS est par dfaut le format double (53 bits de prcision relative, soit environ 1016 ). Si <16 (la precision est alors independante de Digits, seul lafchage change). Si 16, la librairie multiprcision mpfr est utilise. Donc on peut demander la prcision souhaite jusqu DIGITS:=1000.
n+1 u n ) qui doit tre infrieur la prcision dans notre programme : cela est sufsant mais pas ncessaire pour avoir la prcision voulue. d Voici un problme qui dborde du cadre de ce livre, mais quil serait trs intressant dexplorer, par exemple en tudiant M ARLE , Charles-Michel/P ILIBOSSIAN , Philippe Mthodes numriques itratives . Paris: Ellipses, 2006
57
Calcul avec des ottants Attention au calcul avec des ottants : laddition nest pas toujours associative, 1 x avec x de lordre de 10100 peut tre gal 1, enn (0, 13)0, 3 nest pas forcment nul car les nombres sont cods en base 2, donc seuls les entiers et les rationnels dont le dnominateur est une puissance de 2 peuvent tre reprsents exactement. Ceci entrane des rsultats qui peuvent surprendre. Voir le cours de maths assistes par ordinateur de Bernard Parisse sur http://www-fourier.ujf-grenoble.fr/
~parisse/francais.html\//mat249
(x^2-x+3 0,x);
Cest assez classique. Ce qui lest moins, cest la capacit de rsoudre des quations dpendant de paramtres.
S:
Vous avez remarqu que les solutions des premiers exemples sont afches entre accolades. Interrogeons MuPAD :
(x^2-4*x+3 0,x));
La rponse nous indique quil sagit dun ensemble. Ceci a une grande importance si nous voulons rinvestir les solutions trouves. Pour en revenir notre quation du deuxime degr, lensemble des solutions comportera deux lments, ou plutt oprandes en langage MuPAD. Nous pouvons demander le premier lment de cet ensemble grce la commande :
(S,1);
qui afche le premier oprande de lensemble S. Nous pouvons tre galement amens rsoudre des quations non pas sur C mais sur un intervalle donn. Par exemple, si nous voulons rsoudre lquation x 2 = 4 sur R+ , nous indiquerons MuPAD que notre x doit tre positif :
(x 0); >
(x^2 4,x);
On peut sinon utiliser les ensembles habituels avec les notations suivantes :
58
N Z Q R R+ iR
N 2Z Q R
+ +
N 2Z + 1 Q Q C
+
(x (x^2-4 0,x);
S : ( S
(): ({x+2*y+a*z
Il existe des outils dalgbre linaire plus adapts que nous verrons plus tard. On peut rsoudre des inquations
(x) (x),x);
vous dimaginer dautres situations... Un tudiant taquin nous a par exemple propos
(x)
(x),x);
( (
)(x+(x)+1 0));
ou numeric::solve(equation,inconnue)
(x+(x)+1 0,x); )(x+(x)+10 0));
( (
puisque la rponse propose est lensemble vide. Mais MuPAD utilise la mthode de Newton et a donc besoin dune bonne approximation de dpart :
( (-10)),
50
);
,e
10
].
59
Polynmes
Problmatique : Manipuler les oprations lmentaires sur les polynmes, notamment la recherche de racines.
(0,x)
dnir le polynme x 2 + x + 1 :
P x^2+x+1
(P)
Le polynme peut tre construit avec ses coefcients
Q ([3 (Q) 2 1],x,coeff)
Il est noter que si lon ne prcise pas le drapeau coeff, le polynme est dni par ses racines :
R ([3 (R) 2 1],x)
(R)
La matrice compagne du polynme P est obtenue par :
A
(P)
(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 x 3 + x + 1 ; les commandes sont marques (->) :
Rponse du logiciel -->x=poly(0,x) x = x -->P=x^3+x+1 P = 3 1 + 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 les racines du polynme P se fait comme suit :
P(x):=x^2+2*x+3; (P(x),x);
Voici lexemple dune session Maxima qui cherche les racines de x 3 + x + 1 ; les commandes sont marques (Ci) et les rponses (Di) :
62
Rponse du logiciel (C1) P(x):=x^3+x+1; (D1) (C2) solve(P(x)=0,x); 3 P(x) := x + x + 1
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/3 3 (--------- - -) 6 SQRT(3) 2 SQRT(3) %I 1 - ---------- - SQRT(31) 1 1/3 SQRT(3) %I 1 2 2 x = (--------- - -) (---------- - -) - --------------------, 6 SQRT(3) 2 2 2 SQRT(31) 1 1/3 3 (--------- - -) 6 SQRT(3) 2 SQRT(31) 1 1/3 1 x = (--------- - -) - --------------------] 6 SQRT(3) 2 SQRT(31) 1 1/3 3 (--------- - -) 6 SQRT(3) 2 (C3)
Le logiciel XCAS traite les polynmes plusieurs variables. On rentre le polynme de manire symbolique :
P(x): x^2+2*x+3
(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 coefcients entiers de valeur absolue strictement infrieure 100.
(u,6)
Voici lexemple dune session XCAS qui cherche les racines de x 3 + x + 1 ; les commandes sont spares des rponses par des lignes de tirets :
63
Rponse du logiciel
P(x):=x**3+x+1 -----------------------------------------// Parsing P // Success compiling P 3 x ->x +x+1 -----------------------------------------roots(P) -----------------------------------------Evaluation time: 0.17 3 Unable to isolate x in ([x])->x +x+1
XCAS ne trouve pas de solution exacte. Il peut toutefois trouver des approximations :
(P(x))
Rponse du logiciel
Pour un autre exemple dactivit sur les polynmes, voir aussi la section b. page 151.
Le logiciel Gp traite les polynmes aussi avec des coefcients dans Z/pZ et dans les corps padiques. Trouver les racines du polynme P se fait comme suit :
P(x) x^2+2*x+3
(P(x))
(P(x),x)
Voici lexemple dune session Gp qui cherche les racines de x 3 + 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.161541399 997251936087917687*I]~ (21:15) gp >
x^2+2*x+3 (P,x)
Le logiciel Yacas traite les polynmes comme les logiciels prcdents. Trouver les racines du polynme P se fait comme suit :
Les logiciels traits ici prsentent de nombreuses fonctions arithmtiques sur les polynmes.
65
Fonctions
Logiciel(s) abord(s) : Bc Scilab Octave Yacas XCAS Gp Maxima
Problmatique : Les fonctions sont centrales dans lutilisation des logiciels de calcul. Tous les logiciels nont pas les mmes conventions pour dnir une fonction mathmatique, ni pour lvaluer en un point. Les fonctions sont construites partir doprations lmentaires et des fonctions classiques qui sont dans la bibliothque du logiciel. Tous les logiciels nont pas la mme bibliothque : la fonction scante qui est connue de Maxima et XCAS ne lest pas pour Gp ; seul Maxima connat la scante hyperbolique. . .. La bibliothque de Bc mme avec loption est trs rduite.
Le logiciel Gp accepte les fonctions comme des expressions donnes par un galit-dnition. Pour dnir la fonction machin, il suft dentrer linstruction :
machin(x) 1/ (x)
Le logiciel Maxima considre les galits comme des quantits valuer ; une galit-dnition est indique par linstruction .
machin(x):=1/ (x);
Lvaluation demande forcment du travail, suivant le type de rsultat que lon dsire.
machin(2);
(machin(2));
donne une valeur approche et
(machin(2));
donne un rsultat quivalent.
machin(2)
(machin(2))
(expression,variable)
+2*
);
68
Fonction et expression Comme en mathmatiques, il ne faut pas confondre fonction et expression. Par exemple, attend comme argument une fonction et non pas 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);
(fp(x),x);
(x)+2x),x)
Il existe depuis de nombreuses annes des logiciels de gomtrie dynamique qui sont utiliss au collge et au lyce. Cependant, ntant vous qu dessiner ou ventuellement donner quelques rsultats numriques, leur utilisation est limite et leur syntaxe, par souci dergonomie informatique, loigne les lves du problme mathmatique. XCAS cependant, par sa puissance et sa souplesse, permet de coller au cours de mathmatiques 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 quelconque 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 dnissons les points A et B dans un repre judicieusement choisi :
A: B:
(0,0) (0,-4)
libre pour y
// //
plaons plaons la B
tracer
courbe
sance
69
Dnissons ensuite le point C tel que le triangle ABC soit direct, rectangle en A et que lon ait AC = 3 AB laide de la commande : 4
(A,B,3/4,C)
Crons maintenant un rel quelconque de [0; 3] que lon pourra faire varier la souris laide de la commande :
t:
(0
3)
Dnissons maintenant le point M. Nous qui sommes moiti mathmaticiens, nous savons que 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 dnir N, commenons par dnir la perpendiculaire en M la droite (AC). La syntaxe est tout fait naturelle grce (Point,Droite). Noublions pas quen fait d est une fonction de x :
d(x):
(M(x),
(A,C))
(d(x),
(B,C))
Pour obtenir P, nous commenons par dnir la parallle (AC) passant par N (qui est bien sr une fonction de x) laide de (Point,Droite) :
D(x):
(N(x),
(A,C));
(D(x),
(A,B))
(R(t), +
En faisant varier t la souris, le rectangle bouge . Dnissons maintenant la fonction qui x associe laire du rectangle :
f(x):
(R(x))
70
(f(x))
Rponse du logiciel
x2 + 4x
4 3
(t,f(t))
:
(f(x),x 03,
Pour une autre activit gomtrique de Seconde, voir section b. page 95.
71
assume ou element ?
Il aurait peut-tre t plus simple pour des lves de faire la construction en la voyant pas pas tout en gardant une valeur formelle pour les expressions en utilisant au lieu de . Il suft, dans le code prcdent, de remplacer :
t:
(03)
(t [1,0,3])
par :
o 1 reprsente une valeur arbitraire modiable la souris. On te ensuite toute rfrence la variable formelle x qui devient inutile puisque t garde un rle formel. Par exemple, le code contient :
M: d:
(t,0)
(M,
(A,C))
Dans la calculette en mode texte appele par linstruction dnie comme suit :
Dans le logiciel de calcul matriciel Scilab, la dnition dune fonction est plus dlicate.
y machin(x) y 1/ (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 ce qui prcde,
t 2:9 machin(t)
ne donne pas le rsultat voulu. Les oprations lmentaires peuvent tre forces la place des oprations matricielles en les prcdant dun point : la place de . Lexponentielle matricielle et lexponentielle coefcient par coefcient sont distinctes. Pour poursuivre lexemple, il faut alors dnir la fonction en utilisant la division ponctuelle : attention lespace derrire le nombre 1 !
y machin(x) y 1 ./ (x)
t 2:9 machin(t)
(t,machin(t))
Le nombre de points dvaluation est volontairement limit. Lvaluation marche avec des matrices quelconques :
v 1:5 u v*t machin(u)
Le logiciel Yacas dnit les fonctions de manire similaire aux autres logiciels de calcul formel.
machin(x): 1/(x)
Pour obtenir une valeur approche, il suft de le rclamer pour le rsultat prcdent.
(%)
73
Le logiciel Octave traite les matrices. Pour dnir des fonctions, la procdure ressemble celle de Scilab.
y machin(x) y 1 ./ (x) ;
machin(2) t [2;3] machin(t)
Le point-virgule est ncessaire dans le corps de la dnition de la fonction, car sinon la machine retournerait deux fois lvaluation.
74
Algbre linaire
Logiciel(s) abord(s) : Scilab Octave Maxima XCAS
Notions informatiques : Les logiciels Scilab et Octave sont avant tout destins au calcul matriciel. Maxima peut faire des calculs sur les matrices, XCAS est destin tout calcul...
La norme dun vecteur est par dfaut la norme euclidienne (v). On peut rclamer la norme Lp : (v,p) ou L : (v,inf). Pour les matrices, ces instructions donnent les normes linaires associes aux normes Lp sur les vecteurs, au sens des applications linaires : la norme de A est le maximum des normes de Av pour v parcourant la boule unit. Linstruction (A) donne la norme spectrale, cest--dire le maximum des modules des valeurs propres.
tr t A A , souvent utilise, est obtenue
La norme sur les matrices donne par la formule par linstruction (A,fro).
A B V
(3,3) (3,1) (A)*B
On se donne un systme de trois quations trois inconnues dont les donnes sont alatoires.
On se place maintenant dans un cas dgnr : on cherche lespace propre associ la valeur propre 1.
A [0 1 0;1 0 1;1 1 0] R ((A,t)) B A-R(2)* (3,3)
(B)
Pour obtenir les vecteurs propres v p et la matrice diagonalise D correspondant la matrice A, il suft de taper :
[vp,D]
(A)
On vrie en tapant
A*vp(:,1)/D(1,1) A*vp/D
La dcomposition de Schur donne les valeurs propres sur la diagonale de la matrice triangulaire T.
[U,T]
(A)
76
u v t A
La syntaxe de base dOctave est commune avec Scilab. Les instructions ci-dessous sont encore valables.
[2;3;5] [7 11 13] v*u u*v (u) (A) (A)
Linstruction (A) donne les coefcients du polynme caractristique de A. On peut calculer le pseudo-inverse de la matrice dgnre.
p (A) R (p) B A-R(2)* (3,3) c (B) c*B B*c
(A)
(%i1)
Calculons le produit pour vrier. On utilise le produit non commutatif symbolis par , un point :
(%i4) )%i1%o3;
77
: :
(%i1);
(
On vrie quil sagit bien des solutions du polynme caractristique donn par
(%i6)
(%i1,x)=0,x);
:
x y
On retrouve A; il sagit donc de la matrice dun projecteur dtermine par son noyau :
(A)
Rponse du logiciel [[2,-1]]
78
(A)
Rponse du logiciel
[[-1,3]]
1 0 a 1
1 0
2a 1
1 0
3a 1
1 0
4a 1
1 0
5a 1
1 0 a 0 a 1
Soit A = 1 a
A: [[1,0,a],[1,a,-1],[a,0,1]]
(A)
0,a);
Rponse du logiciel
[-1,0,1]
(A)
79
Rponse du logiciel
((a)2 ) ((a)3 )+a a+1 ((a)3 )+a a ((a)3 )+a
0
((a)2 )+1 ((a)3 )+a
0 1 1 0 1 1 1 0
Compltons-la par la matrice identit de mme taille. Protons-en pour crer une petite procdure avec la commande (M1,M2) qui place la matrice M2 au bout de la matrice M1 si elles ont le mme nombre de lignes :
GJ(A): { n: (A); / / o n c o m p t e Id: (n); / / o n c r e l a (A,Id) / / o n l a m e t }:;
le
nombre
de
colonnes de
de
a correspondant
matrice au bout
identit
taille
Ainsi :
T: GJ(M)
Rponse du logiciel
0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 0 1
80
Pour effectuer une combinaison linaire des lignes, on peut utiliser (k,M,i,j) qui renvoie la matrice construite partir de M en remplaant la ligne L j par L j + k Li . Noubliez pas que XCAS commence compter partir de 0 :
T:
(-1,T,0,2)
Rponse du logiciel
0 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1
On effectue L3 L3 L2 :
T:
(-1,T,1,2)
Rponse du logiciel
0 0 1 0 1 0 1 1 2 1 0 1 0 1 1 0 1
(-1/2,T,2)
Rponse du logiciel
0 0 1 0 1 0 1 1 1 1 0
1 2
0 1
1 2
0
1 2
On effectue L1 L1 L3 :
T:
(-1,T,2,0)
81
0 0 1 0 1 0
Rponse du logiciel
1 2
0 1 1
1 2
0
1 2
1
1 2
0
1 2
1 2
et enn L2 L2 L3 :
T:
(-1,T,2,1)
Rponse du logiciel
0 0 1 0 1 0 0 0 1
1 2 1 2 1 2
1 2 1 2 1 2
1 2 1 2 1 2
Il ne reste plus qu extraire la matrice de droite avec une petite procdure maison :
JG(A): { p: (A); A[0p-1,p2*p-1]
p 1
//
on
extrait
les
lignes
p 1
et
les
colonnes
}:;
Ici :
MM: JG(T)
Rponse du logiciel
1 2 1 2 1 2
1 2 1 2 1 2
1 2 1 2 1 2
82
qui vaut :
Rponse du logiciel
0 0 1 0 1 0 0 1
(M)
Mais cette session peut tre loccasion de montrer le mcanisme de calcul des tudiants.
Nous ne rentrerons pas dans les dtails probabilistes. Les chanes de Markov sont issues de la thorie des probabilits et utilisent des outils dalgbre linaire qui nous intressent ici. Elles permettent de simuler des phnomnes alatoires qui voluent au cours du temps. Nous allons les dcouvrir travers ltude dun exemple simple. Zlot, Brzxxz et Morzgniouf sont trois villes situes respectivement en Syldavie, Bordurie et Bouzoukstan. Des traquants de photos ddicaces du groupe ABBA prennent leur marchandise le matin dans nimporte laquelle de ces villes pour lapporter le soir dans nimporte quelle autre. On notera pour simplier V1 , V2 et V3 ces villes et p i j la probabilit quune marchandise prise le matin dans la ville Vi soit rendue le soir dans la ville V j . La matrice (p i j )16i 6316 j 63 est appele matrice de transition de la chane de Markov. Supposons que P soit connue et vaille 0, 8 0, 3 0, 2 P = 0, 1 0, 2 0, 6 0, 1 Donnons linformation XCAS :
P: [[.8,.3,.2],[.1,.2,.6],[.1,.5,.2]]
0, 5
0, 2
Vrions 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 traquants se promenant de ville en ville, il peut tre utile de visualiser leurs dplacements par le diagramme de transition suivant
0,8 V1
0,2
(k) On notera xi la proportion de traquants qui se trouvent au matin du jour k dans la ville Vi . En probabilits, on appelle vecteur dtat tout lment (x1 , , xn ) de R+n tel que x1 + +xn = 1. (k) (k) (k) Ainsi, x (k) = x1 , x2 , x3 est un vecteur dtat. On montre que les vecteurs dtat de la chane sont lis par la relation
x (k) = P x (k1) et donc x (k) = Pk x (0) Supposons que le chef de la maa locale dispose de 1000 traquants qui partent tous le matin du jour 0 de la ville de Zlot.
X: [[1000],[0],[0]]
Quelle sera la proportion de traquants dans chacune des villes au bout dune semaine ?
P^7*X
Rponse du logiciel
563.887400 210.043500
226.069100
Le parrain voudrait que la proportion moyenne de traquants soit stable dun jour sur lautre. Il recherche donc les vecteurs dtat x vriant lquation P x = x.
84
On recherche donc le sous-espace propre associ la valeur propre 1. Il faudrait dabord vrier que 1 est bien une valeur propre :
(P)
Rponse du logiciel 1.0,0.5472135955,-0.3472135955
On aurait pu chercher les racines du polynme caractristique. Comme renvoie les coefcients du polynme caractristique, on utilise (liste,variable) qui renvoie 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)
Rponse du logiciel
0.000557 0.004721
0.005279
Lordre correspond aux valeurs donnes par . Pour le vrier, extrayons le premier vecteur colonne avec (matrice,numro de colonne) :
v: P*v
( (P),0)
(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 dnir le 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 dni le mme espace vectoriel ? Plusieurs mthodes soffrent nous. On peut par exemple dterminer le sous-espace engendr par ces deux vecteurs avec et voir 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 coefcients dans R. Survolons par exemple le chiffrement de Hilla .
a D AL ANG , Robert C./C HAABOUNI , Amel Algbre linaire . Lausanne: Presses polytechniques et universitaires ro-
mandes, 2001.
86
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 1 pour A, 2 pour B, etc. en nissant 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))
//
on
rajoute
64
cette
fois ci
On va chiffrer un message laide dun 3-chiffrement de Hill le message suivant : Je ne suis pas un numro, je suis un homme libre ! Nous allons commencer par mettre toutes les lettres en majuscules et enlever les signes de ponctuations. 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 certain nombre de colonnes. On transpose ensuite cette matrice :
clair:
( (L,3))%27
On choisit une cl constitue dune matrice carre de taille 3 coefcients dans Z/27Z et inversible :
A: [[1,22,25],[0,25,1],[25,3,1]]%27
Rponse du logiciel
2%27 1%27
1%27
(A)
b Cf section e. page 33.
87
Rponse du logiciel
13 % 27
Cette matrice est bien inversible puisque 13 est premier avec 27. On peut donc calculer son inverse :
(A)
Rponse du logiciel
9%27 4%27
2%27
Codons le message clair en multipliant la matrice par A puis en transformant la transpose de la 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 donne le reste de la division euclidienne :
crypte:
(x-> (x%0,27),cryptemod)
( (Lb,3))%27
88
On transforme en liste :
decryptemod:
(clarifie))
On retourne dans N :
decrypte:
(x-> (x%0,27),decryptemod)
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 afne
Logiciel(s) abord(s) : Scilab XCAS
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 = a1 x +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 vrie en tapant :
a*U+b
qui donne V.
Vous pouvez par exemple tracer une droite de diffrentes manires. On ouvre une session 2D en tapant :
d une //
quation par
passant
points le
dont
on
connat et de
les
affixes
point
(5 , 2)
vecteur
directeur
tudions par exemple la symtrie orthogonale daxe la droite dquation y = x :
d: M: m:
(y x) / / o n t r a c e l a d r o i t e (4,2) / / o n t r a c e u n p o i n t q u e l c o n q u e (d,M) / / o n t r a c e s o n s y m t r i q u e
Dplacement dun point la souris Notons que lon peut faire bouger M la souris en se plaant en mode Pointeur. On place le pointeur de la souris devant le point M : un symbole apparat. Faites un clic droit en maintenant enfonc et dplacez volont le point M.
P: p:
la
droite
( mM )
est e l l e
orthogonale
oui et 0
(m,M),
la
( Mp )
(p,P))
( mP )
//
les
droites
( mM )
et
( pP )
sont
92
(m,P) (M,p)
droite
est_faisceau_droite(
elles
(m,P),
(M,p),d)
//
( mP ) ,
( Mp )
et
(d)
sont
concourantes
opposes
un
lment
quelconque
de
[ PR ]
appartient i l
[ pr ]
Les
barycentres
de de on x
donc
Pour explorer dautres possibilits, voir la section 5.5 page 215 sur les tangentes une ellipse et le thme sur le thorme de Pappus page189.
On ouvre une fentre 3D en tapant
P: ([2,2,-2]) / / u n p o i n t P cube(P,4) / / u n c u b e d a r t e 4 d e s o m m e t P M: ( (F,G)) / / M u n 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 )
et
( NR )
sont
(
et on obtient :
elles
parallles
(E,B,G),
//
on
colorie
le
plan
( EB G )
93
Paralllisme dans un cube Pour faire du calcul formel, on prend une longueur darte quelconque. On cre un cube ABCDEFGH darte a :
P: Q: M:
(a 0) >
//
on
s assure
que
est
positif
le
milieu
de
[ EG ]
EP
1 2a 2
( (A,P)) ( (A,G))
Rponse du logiciel
1 sqrt(6)a a 3 2
94
Voici par exemple une petite activit : OAB est un triangle isocle en O avec OA = 6 cm, OB = 6 cm. On place M sur [OA] et on note x = OM. On place N sur [OB] tel que BN = OM. Quand le point M varie sur [OA], le triangle OMN varie. On souhaite tudier laire du triangle OMN en fonction de x. On ouvre une fentre graphique en tapant
O: A: B:
(0,0) / / o n p l a c e l e p o i n t d e c o o r d o n n e s ( 0 , 0 ) (6,0) (0,-6) (A,B) / / t r a c e l e s e g m e n t ( A , B ) a: (0 6) / / c h o i s i t u n l m e n t q u e l c o n q u e e n t r e 0 e t 6 M: (a,0) N: (0,-6+a) (M,N) ( (O,M,N), + ) / / o n c o l o r i e l e t r i a n g l e e n v e r t f: x> ( ( (0), (0,-6+x), (x,0))) / / o n d f i n i t l a (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 (P) / / o n d e m a n d e l e s c o o r d o n n e s d e P (f(x),x 06, ) / / o n t r a c e l a c o u r b e
P: f(x)
// on demande la formule donnant l aire en fonction " aire " f (x) d abscisse a
f (x) de x
fonction
95
Aire maximale dun triangle Pour une autre activit gomtrique de Seconde, voir section b. page 69.
dfinition de la fonction
Voici par exemple comment tracer une surface avec des lignes de niveauxa
#
f(x,y) x*x+y*y
# Lignes de niveau x xval
(x >
f(x,y):1/0)
y yval
(y >
f(x,y):1/0)
z zval
zval 30
z
les
%4.3g
: d / comme nt er de les deux lignes suivantes pour afficher / lignes niveaux
ATTENTION enlever
levels
# 10 , de 0 si 100
discrete zval
veut des lignes de niveaux rgulires : de 10 en
on
concernant GnuPlot.
96
# set
cntrparam
levels
incr
0 ,10 ,100
Borne
de
et
zmin 0 zmax 100
# set
[xmin:xmax]
[ymin:ymax]
Borne de z
z r a n g e [ zmin : zmax ]
dfinition
du
maillage
coefx coefy 1
nx 50 ny 50
nx,ny
dfinition de la taille du graphique
1 coefx,coefy
Graduation des axes
# set
1 1 10
Angle de vie
39,16
Dfinition des labels
title
" Exemple
de
surface "
# couleurs # set # set # set # set hidden3d nosurface p m3d palette gray
97
Affichage de la lgende
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
Affichage du graphique
f(x,y) ligney(x,y)
f (x , y) f (x , y) f (x , y)
lines lt 1 notitle,
lines lines
lt lt
1 14
ce qui donne :
Pour une tude similaire avec le logiciel Scilab, voir la section 11.4 page 119
98
Statistiques
Logiciel(s) abord(s) : XCAS, Scilab
Notions informatiques : O on apprend quil est plus efcace dtudier statistiques et probabilits sans tableur. On prote des capacits de Scilab pour obtenir de belles sorties graphiques.
Cosme II de Mdicis (Florence 1590-1621), Duc de Toscane, fut le protecteur de lillustre Gallile (n Pise le 15 fvrier 1564 et mort Florence le 8 janvier 1642), son ancien prcepteur. Protant dun moment de rpit du savant entre lcriture dun thorme sur la chute des corps et la cration de la lunette astronomique, le Grand Duc lui soumet le problme suivant : il a observ quen lanant trois ds cubiques et en faisant la somme des numros des faces, on obtient plus souvent 10 que 9, alors quil y a autant de faons dobtenir 9 que 10, savoir six. Aprs quelques rexions, Galile rdigea un petit mmoire sur les jeux de hasard en 1620 expliquant le phnomne.
Nayant pas la mme exprience du jeu que le bon Cosme, nous allons utiliser XCAS pour simuler un grand nombre de parties et tudier statistiquement les rsultats obtenus. 1. Nous utiliserons en premier lieu
(6)+1
2. Plutt que dappuyer 100000 fois sur la touche , nous allons utiliser une commande plus pratique, (1,nombre dexpriences,exprience) qui renvoie une liste de nombre dexpriences rsultats de lexprience. Par exemple (1,10000,rand(3)) renverra 10000 nombres entiers gaux 0, 1 ou 2. 3. On utilisera galement la liste liste.
(liste). 5. Pour visualiser les rsultats laide dune bote moustache, on utilise
4. Pour calculer une moyenne, on forme une liste et on utilise
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
(liste).
Pour compter le nombre dapparitions dune occurrence dans une liste, on utilise
neuf: neuf, (9,T); dix: dix, (10,T); }
// // on on compte compte les les 9 10
( ([neuf])/taille)*100; ( ([dix])/taille)*100;
/ / mean
en
anglais
100
( (
([neuf]), ([dix]),
+ + ); + + );
("Sur
"+s+" essais, la frquence de sortie de 9 est de "+n+", et celle de 10 est de "+d+); mn,md; }:;
On lance 10 fois de suite une pice de monnaie et on sintresse au nombre maximal de rsultats conscutifs gaux. On cre un programme qui simule autant de sries de lancers que lon dsire, qui calcule la moyenne des rsultats obtenus et les rsume dans un histogramme et une bote moustaches.
S:
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 :
;
1;k essais;k++){ <
(k:
s:
On cre une liste vide pour y mettre les nombres de rsultats conscutifs gaux :
; ( (1,10,
(2)));
On effectue 10 lancers de 0 ou 1 :
P:
(p 9){ <
On regarde le suivant :
j: p+1;
(P[j]
P[p]
101
On enlve p j car on a commenc p+1 et on colle cette valeur dans notre liste s :
s: s,j-p;
(liste) :
( ([S]), + ( ([S]));
);
On calcule la moyenne de S :
m:
([S],y -0.15-0.05),
+ + :
);
("Sur
du nombre maximal
102
Histogramme et bote moustache pour 1000 sries de 10 lancers. On peut mme se lancer dans une animation avec... (suite dpendant de u, variations de u)
( (piece(10*u),u 1100))
Un ivrogne fait alatoirement un pas en avant ou un pas en arrire. Au bout de combien de pas 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 simulations souhaites p :
Ivrogne(n,p): { A,B,C,s,k,j,M,Mo,tmp,dir; M: ;
//
(k:
nous
allons
faire
simulations
On appelle s le nombre de pas et on cre une liste de 1500 nombres entre 0 et 999 999
s: 0; A: (1,1500,1000000)[0]; (j: 1;j<1500;j++){
;}
(s n) <
;}
Pour simuler la dcision alatoire de reculer ou avancer, on va se rfrer la parit du j e terme de A : si le j e terme est pair, on avance, sinon on recule.
(A[j] }
0){s + 1}
{s+ -1}
103
On rajoute ensuite le nombre de pas trouv notre liste :
M: M,j; }
On traduit le signe de n par des instructions plus parlantes et on transforme M en liste pour utiliser les fonctions de statistiques :
(n 0){dir: " > M: [M];
"}
(M,y -0.150.15),
+ +
);
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 livrogne pour atteindre le 2-ime arbre droite et la mdiane est 9.0" Evaluation time: 37.51
"Il a fallu en moyenne 113 pas livrogne pour atteindre le -2-ime arbre gauche et la mdiane est 9.0" Evaluation time: 34.34
104
Le logiciel Scilab fournit un gnrateur alatoire de matrices. Pour savoir quel est le type de rpartition par dfaut, taper
str (info)
(9,3,normal)
donne une matrice de nombres rpartis suivant la distribution gaussienne de moyenne 0 et de variance 1.
tant donns deux familles de nombres x et y de mme taille, on cherche la meilleure relation afne entre les deux, cest--dire le segment de droite qui approxime le mieux le nuage de points dont les coordonnes sont dans x et y.
x 5* (1,9) y 3* (1,9)-2 [a,b] (x,y) (x,y,ms);X [0,5];(X,a*X+b)
Les 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 colonnes de x et y doit tre le mme : cest le nombre dchantillons. Les matrices a et b sont censes approcher au mieux y par la quantit ax +b. Cette instruction est utilise pour rechercher des quations de sous-espaces afnes voir f. page 91.
Le logiciel Scilab fournit de nombreux outils tels la variance et lcart-type, les moyennes arithmtique, gomtrique et harmonique, la mdiane, lchantillonnage alatoire :
x 5* (1,9) (x) (x) (x) (x) (x) (x) s sample(22,x)
105
m n a
(s)
La rpartition par quantiles se fait en utilisant les centiles ; ordonnons dabord la matrice s pour mieux visualiser la situation :
(s)
q [10 50 90] p (s,q)
Lanalyse en composantes principales existe dans Scilab, elle consiste approcher des nuages de points par des ellipsodes.
z (7,8,normal) [lambda,facpr,comprinc] pca(z)
Pour illustrer la loi de rpartition uniforme, on prend mille chantillons. Lhistogramme prsente une rpartition effectivement assez uniforme.
Y (1,1000); ();bar(Y)
106
En classant les chantillons dans lordre croissant, on peut tracer la fonction de rpartition par centile.
X (Y,g,i); q 1:99; p (X,q) x p(:,1);y p(:,2); ();(x,y)
1000 900 800 700 600 500 400 300 200 100 0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Une rpartition proportionnelle la mesure de Lebesgue donnerait la droite diagonale sur le graphique. Un rsultat quivalent est obtenu en traant lhistogramme de lchantillon ordonn.
();bar(X)
107
(); (100,Y)
Pour illustrer la loi de rpartition normale ou gaussienne, il suft de modier la premire instruction ci-dessus en :
Y
(1,1000,normal);
108
Les autres instructions illustrent la fonction de rpartition de la loi normale. Le trac pardessus le dernier histogramme de la courbe reprsentative de la fonction exp t2 2 par la commande
t -3:.1:3;z
2
(-t
.^ 2 ./2)/(2*%pi);(t,z)
Histogramme des frquences normalises de la variable Y suivant la loi gaussienne, avec le graphe de la fonction de Gauss
La fonction a lavantage sur la fonction de pouvoir travailler avec des chanes de caractres. Le dessin des frquences nous permet de voir si Scilab est pip ou pas. . .
109
Le tirage de d seffectue comme pour le tirage de pile ou face. Comme les chantillons ne sont pas des nombres, on applique un effet miroir sur la liste des frquences pour que les numros correspondent aux noms.
de [I II III IV V VI] echantillon sample(1000,de) t (echantillon) z (de); Z t(2); k 1:6, z(k) Z(7-k); ;
110
bar(z)
Pour le tirage de deux ds, la machine peut nous donner les frquences de chaque couple.
couple []; k de, couple [couple;de+ +k]; ; echantillon sample(1000,couple); t (echantillon); y t(1);z t(2);Y y;Z z; k 1:36, Z(k) z(37-k);Y(k) y(37-k); ; Z (Z,[6,6]); (Z)
Ltude des sommes de points se fait aisment, les sommes son calcules ici sans utiliser le retournement 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]; k 1:11, ind vectorfind(somme,k+1,c); zz z(ind); [ ;(zz)]; ; ();bar( )
111
Histogramme des frquences pour les somme des points dans un tirage de deux ds
112
Calcul diffrentiel
Logiciel(s) abord(s) : Maxima XCAS Gp Yacas Scilab
Le logiciel Scilab calcule des drives approches par des taux de variation. Pour fabriquer la drive de lapplication e 2x , il est bon de faire excuter le programme suivant.
(t,f(t),t,y)
15
10
0 1.0
0.8
0.6
0.4
0.2
0.0
0.2
0.4
0.6
0.8
1.0
Le logiciel Scilab change de couleur automatiquement, la premire est toujours bleue. . . mme sil est difcile de sen rendre compte sur la gure 11.27.
. Linstruction
(2*x),x);
(expression,variable)
(2*x),x)
114
donc, comme le mathmaticien, nombre driv et fonction drive. Pour obtenir lexpression gnrale de la fonction drive, quon nomme couramment 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: fd(2)
(f);
Rponse du logiciel
On obtient le calcul approch du nombre driv avec (expression,variable,pas), le pas valant par dfaut 0, 001, par la mthode du milieu. Par exemple :
(((x)),x,0.00001)
Rponse du logiciel (ln(ln(x+0.001))-ln(ln(x-0.001)))*500.0
( (),x)
115
( (2*x),x)
donne un dveloppement limit (voir section b. page 153).
Le logiciel Yacas se comporte sans surprise ; il est toutefois sensible la hauteur de casse des commandes.
(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} (V(x,y,z),{x,y,z})
Pour une fonction diffrentiable f valeurs relles, le gradient est le vecteur associ la diffrentielle par le produit scalaire euclidien.
La matrice hessienne est celle de lapplication linaire tangente du gradient dans la base canonique.
[J,H]
x [1;1;1] h(x)
H h(x)
Le rotationnel est le double de la partie antisymtrique de lapplication linaire tangente dun champ de vecteurs.
116
Pour tracer une hlice (gure 11.28), il faut dnir sparment les fonction coordonnes.
10 9 8 7 6 5 4 3 2 1 0 1.0 Z
0.6
0.2 Y
0.2
0.6
1.0
1.0
0.6
0.2
0.2 X
0.6
1.0
117
M c(t) M [X(t);Y(t);Z(t)]
118
On se donne un domaine pav plan et une fonction f de ce rectangle dans R, de classe C 2 . Le graphe de f est un exemple de nappe dans R3 . Dnissons par exemple la selle, dont la courbure de Gauss est ngative :
z x*y
z f(x,y)
et lhmisphre unit, dont la courbure de Gauss est constante gale un :
z ff(x,y) z (1-x^2-y^2)
Lespace tangent en un point de coordonnes (x1 , x2 , f (x1 , x2 )) est dirig par les vecteurs 0 u(x1 , x2 ) = , f (x1 , x2 ) x1 1 1 v(x1 , x2 ) = . f (x1 , x2 ) x2 0
Une nappe paramtre est une application F de classe C 2 du 2-pav dans R3 . La fonction suivante paramtre le graphe
119
Largument de la fonction nappe ci-dessus est la chane de caractres qui nomme la fonction valeurs relles.
Lespace tangent en un point de coordonnes M = F(x1 , x2 ) est limage de lapplication linaire tangente de F.
J (F,x) J (F,x)
Pour dessiner simplement le graphe dune fonction de R2 dans R, linstruction convient. Lexemple ci-dessous provient dun problme du baccalaurat franais de juin 2007 ; on vite lannulation du dnominateur en dcalant les valeurs des coordonnes. Les deux derniers arguments prcisent les angles de prise de vue. Lutilisateur peut changer le point de vue grce au bouton de la fentre graphique. Le rsultat est sur la gure 11.30.
x .1:.3:12; y x; z f(x,y) z 3*x*y/(x+y) (x,y,f,alpha 60,theta -120)
();
(x,y,f,alpha
120
60,theta -120)
donne des couleurs qui reprsentent la cote, donc la valeur de la fonction f (gure 11.31). Pour obtenir le mme rsultat partir de la commande , il faut appuyer sur le bouton de la fentre graphique, et choisir Figure properties, cela ouvre une fentre de dialogue. Dans larborescence gauche : descendre jusquau dernier lment, puis dans longlet Style de la partie droite de la fentre de dialogue, choisir le drapeau de couleur (Color ag) numro 1.
a 5 t -130 ();
z f(x,y) z 2*x^2-8*x+y^2-6*y+18
(x,y,f,alpha
a,theta t)
Pour dessiner le plan dquation y = 2, on rajoute un rectangle avec linstruction qui dessine des surfaces quadrangules : une seule cellule suft. On remarque sur le graphique prcdent que la cote varie entre 0 et 60. Il faut prendre garde respecter les angles de prise de vue.
(X,Y,Z,alpha
Pour tracer lintersection du plan et du graphe de f , il suft de tracer une partie du graphe dont lamplitude en ordonne est trs rduite autour de la valeur 2.
(x,[1.9:.01:2.1],f,alpha a,theta t)
Pour tracer les points A = (3, 2, 3) et B = (5, 2, f (5, 2)), il suft de tracer des graphes corresondant une lgre variation horizontale (gure 11.32).
121
(Bun-2,Bdeux,g,alpha
a,theta t)
Extrait dun problme du bac de 2007 (Polynsie franaise) : intersection dun graphe et du plan y = 2
Le point B apparat comme une tache noire. Le point A est cach sous la surface. Il faut appuyer sur le bouton de la fentre graphique, et choisir Current axes properties, cela ouvre une 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 5 de langle de rotation par la valeur 185. Par-dessous, on voit maintenant sur la gure 11.33 la surface, la courbe dintersection, et les deux points A et B.
Extrait dun problme du bac de 2007 (Polynsie franaise) : intersection dun graphe et du plan y = 2, avec deux points
122
Si le plan y = 2 tait nimporte quelle surface transverse au graphe de f , la procdure serait plus substantielle. Le paramtrage de la courbe intersection se rsout sur une famille T dabscisses t qui subdivise lintervalle [0; 6], en demandant une rsolution approche de lquation non linaire en dimension 3 : xt y 2 z f (x, y) = = = 0 0 0
z f(x,y) z 2*x^2-8*x+y^2-6*y+18
a 5; t -130; (); (x,y,f,alpha a,theta t) X [0 0;6 6];Y [2 2;2 2];Z [0 60;0 60]; (X,Y,Z,alpha a,theta t)
// fplot3d ( x , [ 1 . 9 : . 0 1 : 2 . 1 ] , f , alpha a , theta t ) // n est plus utilis
(Bun-2,Bdeux,g,alpha
La fonction qui dfinit
a,theta t)
intersection
//
t 0
//
y inter(x) y [x(1)-t,x(2)-2,x(3)-f(x(1),x(2))]
paramtrage de l intersection
T 0:.1:6; abscisse [];ordonnee [];cote []; t T, M ([t;0;0],inter) ; abscisse [abscisse M(1)];ordonnee [ordonnee M(2)];cote [cote M(3)];
//
dessin
123
Les angles de vue ne se rentrent pas de la mme manire dans et dans ; de plus lexcution par le logiciel de la dernire instruction ne respecte pas les angles de prises de vue.
Il faut ouvrir la bote de dialogue des proprits de la gure. Dans la partie gauche, cliquer sur le bouton de la ligne Axes, slectionner Polyline, dans la ligne Line, augmenter lpaisseur du trait : voir la saisie dcran 11.34.
Dans la ligne Axes, dans longlet viewpoint on ramne les angles 185 et 130 pour obtenir la gure 11.35. (En slectionnant les lignes correspondantes, on peut augmenter ou diminuer la graisse des dessins qui reprsentent A et B.)
124
Extrait dun problme du bac de 2007 (Polynsie franaise) : nouvelle mouture du dessin
En zoomant sur le point A et en ajustant les angles de prise de vue, on obtient la gure 11.36 qui visualise la non-appartenance du point A au graphe de f , comme le montre le calcul de f (3, 2) par Scilab, qui donne 4.
Le vecteur normal unitaire la surface est dni grce au produit vectoriel des drives partielles.
v n(F,x) J (F,x)
un J(:,1) ; deux J(:,2) A un*deux-deux*un z A(1,2) x A(2,3) y A(3,1)
125
v [x;y;z] v v/(v)
La premire forme fondamentale de la surface est la restriction de la forme quadratique euclidienne lespace tangent. La seconde forme fondamentale de la surface est associe la matrice des drives de la normale unitaire dans lespace tangent de faon tre indpendante du paramtrage. Lapplication de Gauss est constitue des drives partielles de la normale unitaire.
La drive de n est valeurs dans lespace tangent puisque le produit scalaire de n avec lune de ses drives partielles est la moiti de la drive de sa norme, constante gale un : n, n 1 (x1 , x2 ) = xi 2 xi n
2
= 0 pour i = 1et 2.
Par commodit, construisons ensuite la matrice N qui envoie les deux premiers vecteurs de la base canonique sur la drive de n et le troisime sur la normale unitaire.
V N(F,x) V [Gauss(F,x),n(F,x)]
La seconde forme fondamentale est la restriction lespace tangent de la forme quadratique reprsente par le produit de lapplication de Gauss par le pseudo-inverse de lapplication tangente. Les valeurs propres de la seconde forme fondamentale sont appeles courbures principales et se lisent dans la matrices courbures donne par la fonction elements :
[directions,courbures] J (F,x)
G Gauss(F,x) M (J)*G [directions,courbures]
elements(F,x)
(M)
La courbure de Gauss est le produit des valeurs propres. Deux fonctions donnent des rsultats proches.
courbure(H,x) courbure(H,y)
127
On dessine maintenant sur une grille soigneusement choisie pour les exemples cits ici.
dessin(F) maille 30 I 1:maille; J I; Z (maille,maille); couleur Z; t I u J point [t/maille-.55;u/maille-.55]; z F(point); Z(t,u) z(3); couleur(t,u) courbure(F,point); ;
demande un peu de calcul : la grille contient 900 nuds. La courbure reste proche de 1.
128
Les instructions
dessin(F) ; dessin(FF)
129
130
131
132
R2
R2
f et g ont des drives partielles continues dans un voisinage dun point P(x0 , y 0 ) ;
f prsente un extremum au point P sous la contrainte g (x, y) = k, o k est une constante ; g valu au point P est diffrent du vecteur nul, alors f (x0 , y 0 ) = g (x0 , y 0 ) pour un scalaire appel multiplicateur de Lagrange. Par consquent, un extremum dune fonction f soumise une contrainte g ne peut tre observ qu un point P o les gradients de f et g sont parallles. La contrainte est alors tangente la courbe de niveau de f passant par le point P. Pour trouver cet ventuel extremum, il faut rsoudre le systme : (x, y) = g (x, y) f g (x, y) = k
On veut par exemple dterminer les extrema de la fonction f : (x, y) y 2 x 2 sur le disque unit.
f: (x,y)- y^2-x^2 >
La fonction est continue sur un compact, elle atteint ses extrema en un point intrieur ou limitrophe 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) = x 2 + y 2 = 1. On utilise le thorme prcdent et la commande (f(x,y),[x,y]) :
(g(x,y),[x,y]),g(x,y) 1],[x,y,lambda
133
Rponse du logiciel
1 0 0
0 0 1 1
1 1 1
La fonction ne peut donc atteindre un extremum qu un des points (0 ; 0), (0 ; 1), (0 ; 1), (1 ; 0) ou (1 ; 0) :
f(0,0);f(1,0);f(-1,0);f(0,1);f(0,-1)
Rponse du logiciel
0, 1, 1, 1, 1
Par consquent la fonction atteint son maximum de 1 aux points (0; 1), (0; 1) et sa valeur minimale 1 aux points (1; 0), (1; 0). Ces rsultats peuvent tre conrms par la reprsentation graphique de la surface en utilisant :
(f(x,y),[x
)
-11,y -11],
0.05,
0.05,
Surface dquation z = y 2 x 2 et 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
R2
0.5
-0.5
-1
-2
-1
les drives partielles de premier et second ordre sont continues dans un voisinage dun point (x0 , y 0 ); f (x0 , y 0 ) = 0 .
= r t s 2 > 0 et x 2 (x0 , y 0 ) < 0 ou maximum relatif au point (x0 , y 0 ); = r t s 2 > 0 et x 2 (x0 , y 0 ) > 0 ou minimum relatif au point (x0 , y 0 );
f (x,y )
f (x,y )
= r t s 2 < 0, alors f prsente un point de selle au point (x0 , y 0 ); = r t s 2 = 0, alors le thorme ne permet pas de conclure.
135
Cherchons les extrema relatifs de la fonction f : (x, y) 6x y 2 2x 3 3y 4 qui est de classe C sur R2 .
f: (x,y)- 6*x*y^2-2*x^3-3*y^4 >
([
(f(x,y),x) 0,
(f(x,y),y) 0],[x,y])
Rponse du logiciel
0 1 0 1 0 0
0 1 0 1
Il y a donc trois points critiques. Essayons de les classer avec le thorme prcdent. On va utiliser la fonction (()f(x,y),[x,y]) ou (f(x*y),[x,y],2) qui donnent la matrice hessienne de f qui est la matrice des drives dordre 2, cest--dire :
(F(x,y),[x,y])
Rponse du logiciel
F(x,y ) x 2 F(x,y ) x y
F(x,y) x y F(x,y) y 2
en rentrant diff(F(x,y),x,2)
en rentrant diff(F(x,y),[x,y],[1,1])
Ici :
136
R2
H:
(f(x,y),[x,y])
Rponse du logiciel
(6 2 x) 12 y
62 y 6 x 2 12 3 (y)2
Il sagit de dterminer le dterminant de cette matrice qui, attention, est une expression. On utilisera donc astucieusement la commande (ancien=nouveau) :
delta: (a,b)- > f2: (a,b,V)- >
( ( (H),x
a,y b)
( (
(f(x,y),V,2),x a,y b)
Alors :
delta(1,1);delta(1,-1);delta(0,0)
et :
f2(1,1,x);f2(1,-1,x);f2(0,0,x)
nous permettent dafrmer que f atteint un maximum relatif aux points (1 ; 1) et ( ; 1). La reprsentation graphique va nous permettre de conrmer ce rsultat et de constater que (0 ; 0) est un point de selle :
Surface dquation z = 6x y 2 2x 3 3y 4
Pour un expos vivant, intressant, abordable, bref qubcois de ces notions, voira .
a A MYOTTE , Luc Introduction au calcul avanc et ses applications en sciences . Qubec: ERPI, 2004.
137
Intgration
Logiciel(s) abord(s) : Yacas Maxima Scilab XCAS MuPAD
Problmatique : Des primitives formelles et des intgrales numriques peuvent tre obtenues.
(x)
(x) (x)
La dernire commande donne le rsultat approch avec une prcision arbitraire de vingt dcimales. Des primitives plus compliques ne lui font pas peur :
(x)
(x) (x))^2)^(1/2)
ne donne rien.
Pour obtenir une primitive de sin(x), avec le logiciel Maxima, il suft 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 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 du papier et du crayon.
La dcomposition en lments simples consiste dcomposer en facteurs irrductibles dans R le dnominateur de la fraction (mise sous forme irrductible) ; la fraction se dcompose en somme de fractions construites partir de ces facteurs. Intgrer sparment chaque terme est souvent plus facile que le problme de dpart. Commenons par le cas dont on connat dja le rsultat ;
R(x):=1/(x^3+x^2+x+1); RR(x):= (R(x),x); RR(x);
1 x 1 2(x + 1) 2(x 2 + 1)
Linstruction
(RR(x),x);
donne le mme rsultat que la primitive de R, quoique un peu moins bien simpli. Prenons maintenant le cas difcile. La dcomposition en lments simples ne fonctionne pas non 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 la bote outils est bien fournie.
P(x):=x^3+x+1; A: (P(x)=0); PP(x):=(x- (A[1]))*(x- Q(x):=1/PP(x);
(A[2]))*(x- (A[3]));
140
La fraction Q est la mme que S, sauf que nous avons indiqu la machine la factorisation du dnominateur.
Attention : partir du degr 5, il ny a plus de formule algbrique universelle pour extraire les racines dun polynme. . .
T(x):= TT(x):=
(Q(x)); (Q(x),x);
(T(x));
entrane la question de Maxima :
Rponse du logiciel
Is
+ 1
positive or negative?
De mme, linstruction
(TT(x));
avec la mme rponse que prcdemment donne une expression formelle pour une primitive de la fonction S. Mais Maxima narrive pas calculer une valeur pour lintgrale sur un intervalle donn. On peut utiliser alors une fonction de calcul approch pour les intgrales :
(S(x),x,2,3);
141
Le logiciel Scilab calcule des intgrales approches avec linstruction mais elle naccepte pas les fonctions internes du logiciel. La commande intg(0,%pi,sin) est invalide. La bonne procdure est la suivante :
function y=f(x) y= (x) endfunction intg(0,%pi,f)
Pour tracer le graphe de la primitive du logarithme nprien qui sannule en 1, on commence par dnir les fonctions ncessaires.
function y=f(x) y= (x) endfunction function y=F(x) y=intg(1,x,f) endfunction t=1:1:3;
Mais l, aucune des instructions fplot2d(t,F), /plot(t,F(t)), plot(t,t*log(t)-t) nest valide. Il faut accumuler les valeurs scalaires dans un vecteur :
Y=[] for x=t Y=[Y F(x)]; end plot(t,Y)
1.4
1.2
1.0
0.8
0.6
0.4
0.2
Graphe de x log(x) x + 1
142
Les instructions de base de XCAS ressemblent celles de Maxima et les rsultats sont similaires.
( (x),x) ( (x),x,0,
Le passage par les dcompositions en lments simples est plus rapide. Les instructions suivantes donnent les mmes rsultats que sous Maxima.
R(x): 1/(x^3+x^2+x+1)
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),
donne :
x)
Rponse du logiciel
ln
(x),x)
Rponse du logiciel
donne :
(n + 1, x) (1)n
143
On utilise (expression, ancien=nouveau), que vous pouvez comparer la commande subsop vue au paragraphe e. page 33 pour les listes. Par exemple :
(g(a*x),x,p)-
((1/a)*
(g(t),t,p/a),t x*a)
qui rpond :
Rponse du logiciel
La fonction (F(x)*g(x),G(x)) renvoie la liste [F(x)*G(x),-f(x)*G(x)] si G(x)= 0 et ([F(x),g(x)]) renvoie F(x)+G(x) avec les notation habituellesc . Cela nous permet de construire une procdure ipp(F(x),g(x)) qui renverra F(x)g (x) dx calcule par une intgration par parties :
ipp(F(x),g(x)): { ( (F(x)*g(x), }:;
(g(x),x)),0)
Par exemple :
ipp((x),1)
donne :
Rponse du logiciel -x+x*ln(x)
qui est en effet une primitive de 1 ln(x). Si lon veut lvaluer sur un intervalle, on peut utiliser renvoie F(b)-F(a) :
b Voir section 15.2 page 170. c F une primitive de f.
(F(x),a,b,variable) qui
144
(ipp((x),1),2,3)
renvoie bien :
Rponse du logiciel 3*ln(3)-3-2*ln(2)+2
((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 :
Rponse du logiciel
f (x)g(x) dx + g(x)f(x)
qui nous rappelle la formule dintgration par parties. Mais cette mthode a ses limites, comme nous allons le voir.
Wn =
/2
sinn (x) dx
En particulier
/2
sinn+2 (x) dx =
/2
sinn (x) dx
/2
sachant que sin2 (x) = 1 cos2 (x). Il faudrait donc calculer On pense une intgration par parties. Mais si on tape :
ipp((
Le logiciel rpond cette fois quelque chose, mais cela reste compliqu. 1 La ruse est de changer sinn+1 (x) en n+1 sinn (x)sin(x). Alors
r:
rpond :
1 (sin (x))2 (sin (x))n (sin (x))n sin (x) cos (x) , n +1 n +1
Nous avons besoin de faire une petite pause pour expliquer ce phnomne...
Comment XCAS traite-t-il x n ? Si vous interrogez XCAS sur (f(x),x), il vous rpondra
Rponse du logiciel
xn x
sans jamais vouloir simplier ce rsultat en nx n1 . Cest que XCAS fait du calcul formel et considre x n non pas comme un polynme mais comme une variable indpendante. Cest plus simple et plus efcace pour lordinateur, mme si a apparat plus compliqu pour les faibles humains que nous sommes. Dans le cas qui nous occupe, en nintroduisant pas sinn+1 (x) qui serait une nouvelle variable, on laisse XCAS traiter le problme avec deux variables : sinn (x) et sin(x). Alors XCAS arrive intgrer par parties et simplier le rsultat alors que par exemple MuPAD ny arrive pas alors quil traite (ou plutt parce quil traite) le problme plus mathmatiquement quinformatiquement.
On peut encore simplier le rsultat avec la commande qui justement simplie autant que possible une expression trigonomtrique en utilisant en priorit des sinus car XCAS considre les sinus comme des variables. Dans le cas qui nous occupe, aprs avoir rentr :
146
(r[1])
on obtient :
Rponse du logiciel
Pour revenir aux intgrales de Wallis, il nous reste valuer r[0] entre 0 et
(r[0],0,Pi/2)
nous renvoie bien 0. Finalement, nous obtenons la relation de rcurrence : Wn+2 = Wn 1 Wn+2 n +1
qui nous permet de calculer les termes pairs et impairs, ou plus directement :
W(n): (( (x))^n,x,0,Pi/2) (W(k),k 014)
donne :
Rponse du logiciel
2 3 8 5 16 35 128 63 256 231 1024 429 2048 6435 32768 12155 2 , 1, 4 , 3 , 16 , 15 , 32 , 35 , 256 , 315 , 512 , 693 , 2048 , 3003 , 4096 , 6435 , 65536 , 109395 , 131072
(hold(int)(f(x),x=
),v(x)).
Pour lintgration par parties, on utilise 1 Ainsi, on peut intgrer par parties 0 x n ex dx :
(x)))
en
1 0
xn1 ex dx
147
Pour avoir une approximation de laire sous la courbe, on peut lapprocher par des rectangles lmentaires. Voici une petite procdure de construction :
Rect(f,N,a,b): {
(ap,f(av)), (ap,0)); / /
pais
RR: RR, (R, RV: RV, (R, } C: (f(x),x ab, (RV,RR,C); / / l e s }:;
+ ); / / o n r e m p l i t l e s r e c t a n g l e s + ); / / l e c o n t o u r e n p l u s
3 graphes
); / / l a
courbe
superposs
Pour avoir une vision dynamique, on ouvre une fentre graphique et on utilise
n: (1 100) Rect(x- (x),n,0,2*Pi) >
Mthode des rectangles personnelle Pour tre honnte, il existe dj (expr,x=a..b,n,mthode) sur XCAS qui permet dobtenir ce rsultat, o mthode peut-tre , , , .
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),k 1N)); }:; aireRect(x- (x),100,1,10) >
Rponse du logiciel 14.02524361
// subdivision rgulire
1 x 2 et :
149
1 x 2 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 brouille les algorithmes bass sur la formule dEuler-Mac Laurin. Quant Scilab :
y
4*
ans
3.1415926535897926719088
3.1415926535897931159980
cest--dire que Scilab donne 16 bonnes dcimales : Scilab a gagn ? Eh non... Parfois le calcul formel a du bon ! Si vous demandez XCAS :
4*
((1-x^2),x,0,1)) .
150
Approximation de avec la formule de Machin Vous savez bien que Arctan(x) x 2n+3 (1)k x 2k+1 < . 2k + 1 2n + 3 k=0 On peut donc construire une procdure dpendant dun nombre compris entre 0 u 2n+3 10p : et 1 et donnant la plus petite valeur de lentier n telle que 2n + 3
n
Vous connaissez galement la formule du mathmaticien anglais M ACHIN : 4 arctan 1 1 arctan = 5 239 4
obtenue en montrant que, a et b tant deux rels tels que ab = 1, on a arctan a + arctanb = arctan ab > 1 et a < 0.
a+b 1ab
(1)k X 2k+1 . 2k + 1 k=0 On construit donc une procdure qui donne une valeur approche de Gn (a) 10p prs :
greg(n,a,p): { S,k; S: 0; (k: 0;k< n+1;k++){ S: S+ (((-1)^k*a^(2*k+1))/(2*k+1),p+1); }; (S); }:;
qui nous dit quil nous faut aller au rang 69 pour avoir 100 bonnes dcimales de :
4*(4*greg(69,1/5,100)-greg(69,1/239,100))
151
Dveloppements limits
Logiciel(s) abord(s) : Maxima Gp Yacas XCAS
Problmatique : Obtenir des dveloppements limits : approximations de fonctions par des polynmes.
f(x))
donne le dveloppement limit lordre 9 en 0 de la fonction exp(cos(x)). Il ne faut pas aller trop 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 aux dveloppements limits. Les deux lignes suivantes donnent le dveloppement lordre 16 en 0 de la fonction exp(cos(x)).
f(x) f(x)
( (x))
Le rsultat na pas besoin dtre converti en polynme puisque ce nest quune reprsentation lafchage de la fonction.
Un petit exercice nous permet de comparer une fonction puissance et son dveloppement limit 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]);
Reprenant le mme dveloppement que pour Gp, on obtient un rsultat plus lisible.
( ( (x)),x
0,6)
Le dveloppement peut etre transform en polynme avec linstruction En voici tout de suite une application.
(DL,polynom).
154
Pour comprendre laspect local de lapproximation dune fonction par le polynme de Taylor associ, rien de tel quune petite procdure qui permet de comparer les graphes de la fonction et du polynme selon son degr. Cela permet galement de visualiser les fonctions qui admettent un dveloppement en srie entire de rayon inni ou ni. On construit une procdure dl(f,x,n) qui dpend de la donne dune fonction f, dun ordre n et du point dobservation x :
( ( (f(x),x
}:;
dl(f,x,n): {
0,n),polynom));
,x,10)
Rponse du logiciel
(62*x^9)/2835+(17*x^7)/315+(2*x^5)/15+(x^3)/3+x
Ensuite, il ne reste plus qu visualiser. Attention, notre n variable nest pas forcment entier. On utilise (nombre) qui renvoie la partie entire dun nombre.
n: (1 50) ([dl( ,x, (n)), (x)], / / o n t r a c e c t e x -4*Pi4*Pi, [ , + ]) / / o n l e s d i s t i n g u e
l paisseur du trait cte les courbes
par
les
couleurs
et
155
On visualise bien que lintervalle de validit de lapproximation crot avec n et semble pouvoir recouvrir R, alors que pour la fonction x ln(x+1), lapproximation ne semble valable que pour 0 x < 1 :
Nous verrons dautres approximations polynomiales lors de ltude des Polynmes interpolateurs de L AGRANGE.
156
quations diffrentielles
Logiciel(s) abord(s) : Scilab Octave Maxima MuPAD XCAS
Lquation diffrentielle y (t ) = 2y(t ) + 10cos(10t ) est rsolue sur lintervalle [1, 1] avec la condition initiale 1.
() z (y0,t0,t,f); (t,z)
La linarit de lquation diffrentielle nest pas cruciale.
le sous-groupe de Lie quelle engendre dans le groupe spcial orthogonal est construit avec une quation diffrentielle ordinaire.
La machine se fait une joie de tracer une partie de lorbite du premier vecteur de la base canonique.
() z (y0,t0,t,f); (z(1,:),z(2,:),z(3,:))
1.0 0.6 0.2 Z 0.2 0.6 1.0 0.6 0.4 0.2 0.0 Y 0.2 0.4 1.0 0.8 0.6 0.4 X 0.2 0.0 0.4 0.2 0.8 0.6 1.0
() z (y0,t0,t,f);
y1 [0;1;0]; zz (y1,t0,t,f); y2 [0;0;1]; zzz (y2,t0,t,f); X z(1,:);XX zz(1,:);XXX zzz(1,:); Y z(2,:);YY zz(2,:);YYY zzz(2,:); Z z(3,:);ZZ zz(3,:);ZZZ zzz(3,:); ([X,XX,XXX],[Y,YY,YYY], ([Z,ZZ,ZZZ],[2,3,6]))
158
Rotation de la base
Il faut veiller mettre les vecteurs collectant les coordonnes en colonnes : le nombre de couleurs (deuxime argument de la fonction ) est celui des colonnes. On peut comparer avec la solution algbrique.
XXXX [];YYYY [];ZZZZ []; u t-t0 G (u*A); XXXX [XXXX;G(1,:)]; YYYY [YYYY;G(2,:)];ZZZZ [ZZZZ;G(3,:)];
159
Lquation diffrentielle du second degr y = 100y se rsout grce la matrice compagnon comme dans la thorie.
A [0 1;-100 0] yprime f(t,y) yprime A*y y0 [0;1];t0 -1;t -1:.01:1; zz (y0,t0,t,f); z zz(2,:); (t,z)
()
160
La sinusode de pulsation 10 qui rsoud lquation y = 100y avec la condition initiale voulue
On peut vrier la valeur de lapproximation quand on connat la solution thorique :
erreur
(z- (10*(t+1)))
Le logiciel Octave possde une instruction de rsolution approche pour les quations de la forme x = f (x, t ) et une instruction de rsolution approche pour les quations de la forme f (x , x, t ) = 0.
La machine peut donner une rsolution formelle ; on nest pas oblig de xer les conditions initiales.
([y+100*y,y(0) a,y(0) b],y)
Rponse du logiciel [a*cos(10*x)+(b*sin(10*x))/10]
renvoie
161
Mais on atteint vite les limites du calcul symbolique : linstruction suivante choue.
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 sous la forme u (t ) = f u(t ), t et on ltudie sur un intervalle [a ; b] avec la condition initiale y(t ) = u0 et on utilise lapproximation u (t ) u(t + h) u(t ) h
ba N ,
quand h est sufsamment petit . On choisit ici h = x de subdivisions. Cela se traduit par
Eu(f,N,a,b,uo): {
S,X,Y,k,Cnum,Cexact,sexact,u,P,t; S: ; / / s u i t e d e s p o i n t s , v i d e a u d p a r t
X: a; / / o n p a r t d e x a Y: uo; / / o n p a r t d e y u o (k: 0;k< N;k++){ / / o n v a c o n s t r u i r e N p o i n t s Y: Y+f(Y,X)*(b-a)/N; / / l e p a s e s t d e ( b a ) / n X: a+k*(b-a)/N; / / o n a v a n c e d u n p a s P: (X,Y); S: S,P; / / o n r a j o u t e l e n o u v e a u p o i n t } sexact: ([y f(y,x),y(0) uo],y)[0]:; / / o n
avoir
utilise
dsolve
pour
Cnum:
(polygone_ouvert(S),
polygone de la // solution on trace attendue les deux
la
solution
exacte
+line_width_2):; ):;
//
on
construit
notre
Cexact:
((sexact,x ab), +
graphes .
//
on
construit
le
graphe
Cnum,Cexact; }:;
Ensuite, on va faire varier N pour visualiser la convergence, par exemple dans le cas de lquation y (t ) = 4y(t ) + t sur [0 ; 3] avec y(0) = 1 :
n: (10 500); Eu((u,t)- -4*u+t,n,0,3,1) >
162
donne :
Voici un exemple de dcouverte de la fonction exponentielle avec la mthode dEuler sous forme dun TP pour des lves de Terminale S dbutants en informatique.
pour tout x R, avec k un rel arbitrairement x. On va tenter, dans cette section, dobtenir une approximation de lallure de la courbe reprsentative dune solution de (1). On va pour cela considrer que pour h sufsamment petit et pour tout rel a, f (a) Montrez alors que f (a + h) (1 + kh) f (a). f (a + h) f (a) h
Pour obtenir ce trac, nous allons choisir un rel k, un segment [a; b], nous allons xer limage de 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 la longueur de chaque petit segment ?
Ouvrons une fentre de gomtrie en tapant simultanment sur et . On dnit un point dont on connat les coordonnes avec la commande :
163
A: B: C:
On relie ces points par des segments de droite grce la commande de points) :
polygone_ouvert(A,B,C)
Oublions pour un temps notre problme et voyons comment nous pourrions tracer point par point sur [3 ; 3] la courbe reprsentative dune fonction g vriant : g (b) g (a) =2 ba pour tous rels distincts a et b de [3 ; 3] et f (3) = 1. On peut par exemple subdiviser le segment [3; 3] en segments de longueurs 0,25 et rchir au moyen dobtenir les images par f de chacune des extrmits des segments de la subdivision. g (x+0,25)g (x) Il suft de penser que 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 coordonnes de plusieurs points de la courbes en faisant des petits sauts de 0,25 et en sarrtant 3:
S: ; / / o n c r e X: -3; / / a u d p a r t Y: -1; / / a u d p a r t X< 3 S: S, (X,Y);
liste une X Y // // suite vaut vaut tant on
3 1
de
points
vide
au
dpart
que
s crit le
tantque de
en
rajoute
point
coordonnes
de
boucle
liste
la
rgle
Cela fonctionne pour ce cas particulier mais a devrait aussi marcher si lon change les valeurs du pas, du coefcient directeur, des bornes de lintervalle de dnition, de limage de la borne infrieure de cet intervalle. On a donc envie de crer un fonction informatique, une procdure, qui reprend cette mthode mais dans le cas gnral, avec des coefcients quelconques quon donnera lordinateur. On cre ainsi une sorte de fonction de plusieurs variables.
164
Notons donc h le pas, m le coefcient directeur, [a ; b] lintervalle de dnition et yo limage de 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): {
notre procdure // on prcise quels sont les variables de
vide
au
dpart
coordonnes
(X,Y)
notre
boucle
la
liste
la
rgle
accolade
Pour valider, on clique sur . Pour excuter cette procdure, on place le curseur sur une ligne de commande. Par exemple, pour retrouver le cas prcdent, on rentre :
TraceAffine(0.25,2,-3,3,-1)
Vous tes maintenant arms pour adapter ce que nous venons de voir la mthode dEuler sachant que cette fois f (X + h) = (1+ kh) f (X) comme nous lavons vu au premier paragraphe. Construisez donc une procdure Euler(h,k,a,b,yo)...
Il est vu en cours de Terminale S que la solution de lquation diffrentielle y = y avec y(0) = 1 sappelle la fonction exponentielle qui se note exp pour XCAS. Nous avons utilis une approximation pour obtenir son trac par la mthode dEuler. Il est bien sr primordial davoir un ordre de grandeur de lerreur commise. Nous avons crit que exp(a + h) (1 + h) exp(a). Crons alors une fonction Exp(h,x) qui donne une approximation de ex pour un h donn. Il suft dutiliser la procdure prcdente en tant la partie concernant le trac et en prenant a = 0, k = 1, b = x :
Exp(h,x): { X: 0; Y: 1; X< x X: X+h; Y: (1+h)*Y;
165
}:; :;
Par exemple, on peut comparer Exp(h,1) et exp(1) pour des valeurs successives de h entre 0,1 et 0,0001, puis en prenant dautres valeurs de x. Exp(0.01,x)exp(x) pour diffrentes valeurs de x. tudiez le rapport exp(x) Que pensez-vous de lapproximation ? On peut visualiser lerreur commise en crant une fonction erreur :
erreur(x): (1-Exp(0.01,x)/
(x)))*100
Puis en crant la suite des points de coordonnes (x,erreur(x)) pour x variant de 0 100 avec un pas de 1. La commande comme squencea permet de crer cette suite de valeurs :
( (x,erreur(x)),x 0100)
Des commentaires ?
Dans les quations diffrentielles ordinaires le logiciel Maxima trahit plus de bouteille que le logiciel XCAS... Le mme problme classique
(y,x,2)=-100*y,y,x);
(y,x,2)=y^2,y,x);
Le chapitre daide sur les quations diffrentielles dcrit dautres instructions puissantes, notamment pour rsoudre des conditions initiales et des conditions aux limites.
a Cest--dire suite .
166
{C1*exp(-100*t) - 1/100*C2}
et
renvoie
Rponse du logiciel {0} union solve(int(1/(y^3 - 3*C20)^(1/2), y) = 1/3*2^(1/2)*3^(1/2)*(C25 + t), y) union solve(int(1/(y^3 - 3*C20)^(1/2), y) = -1/3*2^(1/2)*3^(1/2)*(C28 + t), y)
167
Transforme de Laplace
Logiciel(s) abord(s) : Maxima XCAS
F(p) =
+
Le logiciel Maxima donne la transforme de Laplace F(p) de la fonction f (x) conformment la formule f (x)e px d x
0
avec linstruction
(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 coefcient constant : y = a y + ch(ax) avec y(0) = 1.
F(p):= F(p);
(y(x),x)-a*y(x),x,p);
nous donne la relation entre la transforme de la fonction inconnue y et celle du second membre ch(ax).
g(p):= ( (a*x),x,p); y(x):= ((g(p)+1)/(p-a),p,x); y(x);
La rsolution dune quation linaire coefcients constants de nimporte quel ordre est si+ milaire. Calculons 0 sin(x)/x d x. On sait que la transforme de x f (x) est la drive de la transforme de f (x). Si F(p) est la transforme de sin(x)/x, sa drive F (p) est donne par :
Fprime(p):=
(-
(x),x,p);
+
Lintgrale recherche est la valeur F(0). Comme F tend vers 0 en +, cest aussi F (p) d p.
0
(Fprime(p),p,
,0);
g(x): G(p): G(p) F(p): F(p)
(a*x) (g(x),x,p)
(G(p),p,x) ( (f(x),x),x,p)
Il ne connat pas les relations entre transforme et drive, mais il peut rsoudre aussi lquation diffrentielle :
g(p): y(x): y(x)
(a*x),x,p) ((g(p)+1)/(p-a),p,x)
Lintgrale est calcule de la mme faon ; attention la dernire ligne : la dnition dune constante et la notation de linni diffrent de Maxima.
Fprime(p): (- (x),x,p) I: (Fprime(p),p,+
,0);
170
Troisime partie
THMES
XCAS au lyce ?
Logiciel(s) abord(s) : XCAS
XCAS existe depuis quelques annes mais est trs mal connu au lyce car sa puissance fait peur. XCAS permet en effet de traiter des problmes trs sophistiqus, mais galement (ce quon passe souvent sous silence !) des problmes trs simples qui permettent par exemple dinitier des lves de lcole primaire la programmation ! Nous commencerons par voquer la gomtrie dynamique au lyce car cest un domaine o une comparaison avec les logiciels massivement utiliss par les professeurs du secondaire est possible, ce qui nest pas le cas du calcul formel, de la programmation et surtout la possibilit dassocier 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 en ligne de commande. Notre exprience avec les lves nous incitent dire quil ne sagit pas dun inconvnient mais plutt dun avantage pour eux : les lves de nos classes sont en effet habitus dialoguer via leur ordinateur sur les sites de messagerie instantane. Le petit bmol quon 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 cres par des professeurs de lInstitut Joseph F OURIER de lUniversite Joseph F OURIER de Grenoble et 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 gure et de rsolution du problme correspond de mme la dmarche 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 : les problmes que peuvent traiter les logiciels de gomtrie dynamique que nous venons dtudier et ltude de suites laide du deuxime pilier de lducation Nationale, le tableur.
Nous allons donc nous intresser ce deuxime type de sujet. Voici par exemple le sujet 5 de la banque dexercices de 2007 : tude de la suite un+1 = a un + b pour a et b donns : convergence et valeur de la limite. On supposera par la suite que a = 1. En effet, dans le cas contraire, un+1 = un + b : la suite est donc arithmtique et ne mrite pas une tude pousse... On construit une procdure donnant un en fonction de a, b et le premier terme u0 . On traite le cas n = 0 pour initialiser. Ensuite il suft de rentrer lexpression de un en fonction du terme prcdent :
n
}:;
//
C e s t d i r e
u(n)
a * u ( n 1) +b
On peut prfrer xer a,b et u0 hors de la procdure et dnir u de manire plus standard ainsi :
n
et alors :
On a limpression davoir de srieux candidats pour la valeur de la limite. Pour conrmer cette intuition, reprsentons graphiquement les premiers termes de la suite. On cre une squence S de coordonnes, vide au dpart, laquelle on ajoute les points coordonnes (k, uk ) pour k variant de 0 n :
174
S,k; S: ; / /
AffSuite(n,a,b,uo): {
S est vide au dpart : il n y a pas encore de points
(point_carre+ ); k de 0 n 1 S: S, (k,u(k,a,b,uo));
//
pour
l esthtique
//
on
rajoute
le
point
de
coordonnes
(k ,u(
k) )
notre
liste
On afche les valeurs de la suite ainsi que la limite prsume issue de notre calcul :
AffSuite(20,-.5,1,1),
(0.66666667,x 020,
et on obtient pour a = 0, 7, b = 1 et u0 = 1 :
et pour a = 1/2, b = 1 et u0 = 1 :
175
Complexit dun algorithme Cette manire de procder peut sembler naturelle et proche dune dmarche papier-crayon , mais nest pas optimale informatiquement. On peut, pour la culture des lves, voquer le problme crucial de la complexit dun algorithme. En effet, dans AffSuite, on recalcule u(k,a,b,uo) chaque tour de boucle : pour aller jusquau rang n, on effectue donc 1 + 2 + 3 + + n = n(n+1) calculs. 2 On dit que la complexit de lalgorithme est de lordre de n 2 . Voici une manire plus informatique et efcace de procder :
AffSuiteBis(n,a,b,u0): { S,k,uk; (point_carre+ ); S: (0,u0); / / p r e m i e r t e r m e k: u0; k de 1 n 1 uk: a*uk+b; S: S, (k,uk); / / o n r a j o u t e
le
point
de
coordonnes
( k , u_k )
notre
liste
On effectue n calculs pour avoir AffSuiteBis(n,a,b,uo) : la complexit est maintenant de lordre de n. Le problme de la complexit est ici accessoire car dans les deux cas lordinateur effectue ces calculs simples trs rapidement. Cependant, quand les algorithmes sont plus sophistiqus, cela peut permettre de sauver beaucoup de temps. On peut mme voquer le systme RSA qui assure la scurit des transactions sur internet ou bancaires et dont la scurit est base sur la complexit informatique du cassage du code thoriquement possible mais hors du temps humain pour linstant.
Nous pouvons aussi remarquer que un+1 = f (un ), avec f (x) = ax + b. Nous pouvons reprsenter la suite directement avec la fonction XCAS
((f(x),u(0),n) :
(0.7*x+1,1,10)
176
Le candidat pour la limite semble tre lintersection des droites dquations y = ax+b et y = x. On obtient la solution avec (quation,inconnue) :
((7/10)*x+1 x,x)
Rponse du logiciel
10 3
Il ne reste plus qu le dmontrer... Soit p la solution de ax + b = x. Elle existe bien car on a suppos a = 1. Alors, en effectuant la diffrence membre membre de un+1 = aun + b et p = ap + b, on obtient : un+1 p = a(un p) Donc la suite (un p) est gomtrique de raison a et de premier terme u0 p. On obtient donc un = (u0 p)a n + p Vrions :
expu(n,a,b,uo): {
177
Rponse du logiciel
7 n 10 10 + 3 3
(expu(x,7/10,1,1),x 020,
Et voil... Nous pouvons mme nous payer le luxe de vrier que expu vrie la formule de rcurrence initiale dans le cas gnral, cest--dire pour a, b, u0 quelconques ! Ce confort nest bien sr possible quavec un logiciel de calcul formel...
expu(n+1,a,b,uo)-(a*expu(n,a,b,uo)+b)
Rponse du logiciel
(a uo + b uo)
1 a1
(a)n+1
b a1
a ((a uo + b uo)
1 a1
(a )n
b a1
) b
Oups...
( ())
//
simplifie
le
rsultat
prcdent
Rponse du logiciel 0
178
Cest mieux ! Nous pouvons aller jusqu calculer la limite de la suite dans le cas gnral :
(expu(n,a,b,uo),n,+
Mais XCAS ne sait que rpondre... Il faut bien sr distinguer les cas :
//
0<a<1
Rponse du logiciel
b a1
)
Rponse du logiciel
infinity
Ainsi, XCAS nous permet non seulement dobserver le rsultat mais surtout de le dmontrer grce ses facults de calcul formel. Nous allons illustrer plus prcisment ce point dans le paragraphe suivant.
Les coniques ne sont plus au programme de terminale mais sont encore sources dactivits. Nous allons ici nous occuper dun thorme concernant le trac de la tangente une conique et le prouver laide de XCAS ce qui nest possible quavec un logiciel de calcul formela . Le thorme initial est le suivant :
a Cette activit est traite plus longuement la section 5.2 page 211.
179
Construction de la tangente une conique Soit une conique de foyer F et de directrice associe D. La tangente en tout point M qui nappartient pas laxe focal coupe D en un point T tel que lon ait FM FT = 0
Nous allons adapter lnonc au cas dune demi-ellipse dnie laide dune fonction : Soient a et b deux rels strictement positifs tels que a > b et f la fonction dnie sur [a ; a] par f (x) = b 1 x2 a2
Notons la courbe reprsentative de f dans un repre orthonorm O; , . u v 2 Soit F le point de coordonnes ( a 2 b 2 ; 0) et D la droite dquation x = a 2 . a 2 b Montrez que la tangente en tout point M dordonne non nulle coupe D en un point T tel que lon ait FM FT = 0 Nous pouvons bien sr commencer par illustrer des cas particuliers en prenant un point mobile sur et en observant que la proprit reste vrie. Nous allons sauter cette tape, notre propos tant de montrer comment un logiciel de calcul formel permet non seulement dillustrer mais aussi de prouver un thorme gnral. Nous commenons par dnir la fonction f :
f: x- b*(1-(x^2/a^2)):; >
(t a):; <
Pour dnir la tangente d en M, nous allons introduire la fonction drive de f que nous noterons f p. Nous utiliserons les commandes XCAS et qui renvoient labscisse et lordonne dun point bien sr, et la commande qui permet de dnir une droite de multiples faons (par une quation, deux points, comme intersection de deux plans, une reprsentation paramtrique...). Nous la dnirons ici par lquation classique y = f (x) (x xM ) + f (xM ) :
fp: d:
(M))+
(M)):;
180
Mode muet Vous noterez que chaque ligne de commande se termine par :; ce qui indique XCAS quil doit valuer cette ligne mais sans renvoyer de rsultat. En effet, aucun trac ne peut tre effectu pour linstant car aucune valeur numrique nest affecte aux paramtres a, b et t .
((a^2-b^2),0):; (x a^2/(a^2-b^2)):;
(d,D):;
( (M,F), (T,F))
Calcul vectoriel Un vecteur pour XCAS est une liste de coordonnes entre deux crochets tout comme lest un point. Lopration M F est donc licite pour XCAS. Pour ne pas semer le trouble dans les esprits des lves du lyce, on peut remplacer M F par coordonnees(M)-coordonnees(F), ou bien, pour viter de calculer avec des systmes de coordonnes, on peut prfrer travailler sur les afxes en rentrant
(M)-
(F),
(T)-
(F))
On peut galement demander Bernard PARISSE de crer une commande vecteur(M1,M2) synonyme de M2-M1 pour lordinateur mais moins choquante pour les lves. Cest ce que jai fait... et obtenu une heure plus tard ! Encore un point fort de XCAS...
Ainsi :
( (F,M), (F,T))
181
Rponse du logiciel
t a2 b2
(a4 + a2 t2 ) a2 b2 a 4 + a 2 t 2 + ( a 2 t 2 ) b 2
a 2 (b 2 ) +
t2 b 1 2 a a2 t2 b3 a3 a2 t2 b + at a2 t2 b a2 b2 a a 4 + a 2 t 2 + a 2 t 2 b 2
Ouh la la... Voici un calcul qui a de quoi dprimer nimporte quel lve de lyce. Heureusement, nous pouvons faire effectuer le sale boulot XCAS grce la commande et se concentrer sur le problme gomtrique sans tre gn par les difcults de calcul algbrique. Cette fois-ci :
( ( (M,F), (T,F))
renvoie bien 0, ce qui prouve notre thorme car les calculs ont t effectus dans le cas gnral.
Pour observer ce phnomne en gomtrie dynamique, il suft douvrir une fentre de gomtrie en tapant puis en dnissant a, b et t comme tant des paramtres que nous ferons varier la souris :
a: b: t:
182
Nous voici donc en mesure de tracer nimporte quelle tangente une ellipse laide dune querre puisquil suft de tracer la perpendiculaire (MF) en M puis lintersection T de cette droite avec une directrice : la tangente est la droite (TM). Il sagit dun problme gomtrique. Lordinateur nous permet de prouver ce thorme en se dispensant de passer trop de temps dans des calculs algbriques compliqus : nous restons dynamiques mathmatiquement sans tre perturbs par laquisition dune virtuosit algbrique ou informatique. Les instructions donnes correspondent la dmarche mathmatique. Nous avons fait des mathmatiques et trs peu dinformatique en somme. Nous nous sommes concentrs sur le raisonnement et lordinateur nous a permis de ne pas nous perdre dans les calculs. Le travail avec un calculateur formel est donc la continuation logique du travail avec une calculatrice usuelle, mais en offrant beaucoup plus de possibilits bien sr.
On reproche souvent lutilisation de linformatique au lyce dexister pour elle-mme et de semer la confusion dans les esprits des lves en les incitant confondre observation et preuve. On peut galement remarquer que sur les 97 propositions de sujets pour lpreuve exprimentale du Bac S 2008, les domaines traits couvrent une trs petite partie du programme du Bac : essentiellement les suites, la gomtrie, voire un peu de probabilits. Ces reproches sont souvent justis compte tenu des limitations des logiciels promus ofciellement : le tableur et les logiciels de gomtrie dynamique, par essence, ne permettent
183
que dobserver des donnes numriques ou gomtriques et ne peuvent laborer une preuve gnrale, ce que peut faire un logiciel de calcul formel. Ils ne peuvent non plus aborder le calcul diffrentiel, intgrale, algbrique que de manire numrique ou exprimentale et donc passent ct de la plus grande partie du programme de terminale S. Dun autre ct, on reproche aux logiciels de calcul formel dtre trop compliqus utiliser au lyce. Nous venons de voir que cest injusti et quau contraire travailler en ligne de commande et ainsi dialoguer naturellement avec lordinateur peut en fait tre beaucoup plus simple que de naviguer dans des menus, sous-menus et autres sous-sous-menus dicnes cliquer. Enn, de manire plus prcise, le logiciel XCAS semble tre particulirement adapt au lyce car il permet la fois de faire du calcul formel, de la gomtrie dynamique, du tableur et est largement francis. Il resterait parler de linitiation la programmation qui devrait faire partie du bagage minimum fourni aux lves des sections scientiques (ce qui est le cas dans de nombreux pays europens) et qui peut tre galement aborde grce XCAS ds la seconde comme nous en avons fait lexprience depuis plusieurs annes dans nos classes... et mme ds lcole primaire grce la Tortue de XCAS... Pour un autre exemple dactivit au lyce avec XCAS, voir la section d. page 163.
184
Logique lmentaire
Logiciel(s) abord(s) : Yacas
Notions informatiques : Le logiciel Yacas permet un tout petit peu de calcul logique avec la commande . Ce calcul est aussi appel algbre de Boole. Il nest pas question de dvelopper ni de simplier les expressions logiques sous Yacas. Cest lutilisateur de faire le calcul par lui-mme pour ensuite demander la machine de le valider.
Si largument de la commande (le prdicat) est une tautologie, la machine rpond True; et si cest toujours faux (le contraire dune tautologie), la machine rpond False;. Si la machine ne peut dcider, elle recopie le prdicat. Les oprateurs logiques habituels scrivent dans un style assez naturel (en anglais) avec une majuscule initiale. Il faut bien sr veiller respecter les parenthses qui regroupent les objets. Vrions dabord laxiome du tiers exclu. On suppose que le prdicat A na pas t utilis plus avant dans la session Yacas.
(A
A)
A)
Vrions une des proprits lmentaires du calcul logique, la loi de Morgan. Introduisons dabord les instructions qui nous permettront de tester nos constructions par la suite, en les faisant rexcuter grce aux ches du clavier. Nous allons essayer de prouver lquivalence de deux prdicats P et Q.
(P > Q) (Q > P)
La machine ne doit pas pouvoir dcider maintenant. Elle rpond dailleurs par la traduction de limplication =: dans les oprateurs logiques lmentaires qui sont , , . Plus tard, si la machine rpond True; aux deux instructions ci-dessus, cest que les prdicats P et Q seront devenus quivalents. Voici leur dnition :
P: Q:
(A B) A B
(P > Q) (Q > P)
les deux rponses True; nous afrment la tautologie recherche : non (A et B) non A ou non B.
Vrions maintenant que la double ngation est bien lidentit, cest--dire que la ngation est une involution. On efface dabord Q qui sert rednir P :
Q
(Q)
Q
Q P:
( (P > Q)
(Q > P) )
Ce doit tre toujours vrai. . . Nous pouvons donc dmontrer que lun des deux axiomes tiers exclu et non-contradiction se dduit de lautre grce aux deux proprits ci-dessus.
(Q > P) )
Le test dmontre que A ou non B est la ngation de B et non A . En remplaant B par A, on constate quobtenir la premire rponse (vrai) de ce chapitre quivaut obtenir la deuxime rponse (faux).
Le raisonnement par labsurde consiste dmontrer une implication en dmontrant que sa contrapose (cest--dire son contraire) est fausse. Rednissons les prdicats P et Q pour rutiliser la procdure de test.
186
P: Q:
(x > y) x y ( (P > Q)
(Q > P) )
On obtient la technique courante : si lon russit dmontrer que la proposition x et pas y est fausse, cest que x implique y.
signie infrieur ou
187
Thorme de Pappus
Logiciel(s) abord(s) : XCAS
Notions informatiques : Nous allons exploiter les capacits calculatoires de lordinateur pour rsoudre analytiquement des problmes gomtriques. >
Problmatique : Le traitement algbrique de lalignement des points grce aux coordonnes barycentriques va nous permettre de donner une preuve rapide du thorme de Mnlas. Le dlicat problme des cercles de Pappus peut tre efcacement trait analytiquement en demandant XCAS de rsoudre des systmes non linaires.
Soient A, B et C trois points non aligns du plan. Alors, pour tout point M du plan, il existe trois rels , et tels que + + = 0 et tels que M soit le barycentre des points A,B et C affects des coefcients , et .
Il suft dexprimer le vecteur AM dans la base AB, AC . Soient a et b les coordonnes de AM dans cette base, on obtient (1 a b)AM + a BM + b CM = 0 On appelle (, , ) un systme de coordonnes barycentriques de M dans le repre afne (A,B,C). Si + + = 1, le systme est dit normalis.
Soit (A,B,C) un repre afne et trois points M1 , M2 et M3 de coordonnes barycentriques normalises respectives (x1 , y 1 , z1 ), (x2 , y 2 , z2 ), et(x3 , y 3 , z3 ). Alors M1 , M2 et M3 sont aligns si, et seulement si x1 x2 x3 y1 y2 y3 z1 z2 = 0 z3
z2 = x2 + y 2 + z2
z2 = 0 1
Ce dterminant est nul si, et seulement si, les vecteurs M1 M3 et M2 M3 sont lis, i.e. les points sont aligns. Cela nous permet davoir un outil calculatoire pour tester lalignement de points :
xb: M- 1>
(M)-
(M);
//
donne
la
1 re
coordonne
yb: M> (M); zb: M- (M); > cb: M- [xb(M),yb(M),zb(M)]; / / d o n n e l e s y s t m e n o r m a l i s > align(A,B,C): { ([cb(A),cb(B),cb(C)]) 0 ("les points sont aligns "); ("les points ne sont aligns"); ;}:;
barycentrique
normalise
Alors :
align(
(1+
),
(2+2*
),
(3+3*
))
renvoie :
Rponse du logiciel les points sont aligns
190
Rappelons ce thorme
Soit ABC un triangle. Soit trois points I, J et K appartenant respectivement aux droites (BC), (CA), (AB) et distincts des trois sommets A, B et C. Alors I, J et K sont aligns si, et seulement si IB IC JC JA KA KB =1
Nous allons bien sr utiliser la condition dalignement vue prcdemmenta . Nous allons travailler dans le repre afne (A,B,C) et mettre en vidence lappartenance des points aux droites
A: B: C: K: J: I: [1,0,0]:; [0,1,0]:; [0,0,1]:; A+k*B:; j*A+C:; x*B+C:;
C ONDITION NCESSAIRE. On suppose que les points sont aligns. On peut alors traduire cette proprit par le fait que xI xJ xK yI yJ yK zI zJ = 0 zK (1)
([I,J,K])
0,x)[0]
((-I[1]/I[2])*(-J[2]/J[0])*(-K[0]/K[1]))
Nous trouvons bien le rsultat attendu : XCAS a prouv la condition ncessaire. C ONDITION SUFFISANTE. On prend soin de purger la variable x de la valeur trouve prcdemment
a Pour dautres dmonstrations plus classiques, voir S ORTAIS , Yvonne/S ORTAIS , Ren La gomtrie du triangle . Paris:
Hermann, 1987
191
x: (x)
((-I[1]/I[2])*(-J[2]/J[0])*(-K[0]/K[1]) 1,x)[0]
([I,J,K])
Oui, rpond XCAS : la preuve est faite !
y C M_6 M_3 6 7
Le 5 aot 2007, nous sommes tombs sur la gure suivante parue dans le journal Le Monde
c T O M_4
-1
-6
-4
-2
La question tant : est-ce que CM6 + AM2 + BM4 = CM3 + BM1 + AM5 ? Il faut prciser que le triangle est quilatral. Demandons XCAS
R: x: y: O: c: a: A: T:
(05); (-33); (-15); (x,y); / / u n p o i n t O v a r i a b l e (O,R); / / l e c e r c l e c a u s s i (0 5,); (-a,0);B: (a,0); ( (A,B,C), +line_width_2)
triangle bleu ct variable
//
un
beau
192
//
on
construit
les
points
Cela semble concluant... Il ne reste plus qu le dmontrer. Il suft de penser la puissance des sommets par rapport au cercle... On obtient successivement :
CM6 CM5 = CM3 CM4 AM2 AM1 = AM5 AM6 BM4 BM3 = BM1 BM2
Puis, en additionnant membre membre ces galit et en notant a le ct du triangle CM6 (a AM5 ) + AM2 (a BM1 ) + BM4 (a CM3 ) = AM5 AM6 + BM1 BM2 + CM3 CM4 et le rsultat sen dduit :
a(CM6 +AM2 +BM4 ) = AM5 (AM6 +CM6 )+BM1 (BM2 +AM2 )+CM3 (CM4 +BM4 ) = a(AM5 +BM1 +CM3 )
Dabord un dessin :
Cercles de Pappus
Comment tracer cette gure ?
193
Au IIIe sicle avant J.C., le mathmaticien grec Pappus proposa le thorme suivant qui va nous aider dans notre construction. Il sagit du thorme XV du livre IV de ses Collections mathmatiques traduites du grec pour la premire fois en 1932 seulement par Paul V ER E ECKEb .
Thorme de Pappus On considre trois demi-disques (C), () et (C0 ) centrs sur une droite (d). On suppose que (C) et (C0 ) sont contenus dans (), tous deux tangents Gamma et tangents entre eux. Soit (C1 ), (C2 ), . . . , (Cn ) une suite de cercles tangents (C) et () et tel que chaque cercle (Ck ) est tangent au cercle suivant (Ck+1). On note r k le rayon du cercle (Ck ) et hk la distance de son centre la droite (d). Alors hk = 2r k pour tout k 1 ; n .
Pour des dmonstrations des rsultats utiliss, voirc et notammentd qui arrive rapidement au rsultat en considrant des inversions. On montre de la mme manire que le lieu des points de 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 systmes dlicats 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, on placera 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 de crer le cercle . Pour obtenir son centre, on utilise la fonction ([pt,poids],...)
oo: barycentre([o,r],[O,R]); cc: ( (oo,r+R),
+ );
La gure de base tant faite, intressons-nous au problme de Pappus : comment dterminer la position du centre O1 du cercle (C1 ) ?
b Paul ver Eecke - La Collection Mathmatique de Pappus dAlexandrie , introduction (1932, rd. 1982) - Libr. A.
Blanchard, Paris
c T HBAULT , Victor Sur le tranchet dArchimde . Bulletin de la S.M.F. Tome 72 1944. d A BDELJAOUAD , Mahdi lments de Gomtrie du Plan . Tunis: Association Tunisienne des Sciences Mathmatiques,
2000.
194
Y/ 2
Y /2
o X
c1:
point .
(o1,s[0][1]/2)
//
le
rayon
est
Y /2
Et dun... Pour les autres cercles, nous allons utiliser le deuxime rsultat, savoir que les points de contacts sont sur le cercle mdiateur de (C) et . Ce cercle passe par k 1 , intersection entre (C1 ) et (C0 ) :
k1:
(c,c1)[0] (C,cc)[0]
Mais connatre ces deux points ne suft pas pour tracer le cercle. Appelons a labscisse du centre de ce cercle (son ordonne est nulle) et b le rayon. Une quation du cercle est donc (x a)2 + y 2 = b 2 . Exprimons que k 1 et I appartiennent ce cercle que nous nommerons K :
S: K:
(I)-a)^2+(
a y est ! Nous avons tous les lments pour crer une procdure pappus(n) qui tracera les n premiers cercles tangents, et mme leurs symtriques par rapport laxe (Ox)
pappus(n): { ks: ;ks: ks,k1; cs:
// une liste de points de contact qui contient dj
;cs:
k1
cs,c1;
//
liste
des
cercles
195
liste
des
centres
(y 0),c1);
//
liste
des
cercles
(j:
symtriques
1;j n;j++){ < ks: ks, ( ( (cs[j-1],K)[1]) > ( (cs[j-1],K)[0]) ) (cs[j-1],K)[1]; (cs[j-1],K)[0]; / / p o u r p r e n d r e l e b o n p o i n t d e c o n t a c t oj: (xx,yy); / / u n p o i n t i n c o n n u (x); / / o n v i d e l a v a r i a b l e x u t i l i s e d a n s s o l v e eqj: ( ( (os[j-1],ks[j]))[2],x xx); / / c e c i p e r m e t d
obtenir l ordonne ( O _ j 1 // on K_j ) car on va utiliser nouveau solve de oj sachant que ce point appartient la droite
hj
(x);
re v i d e
Ici, une pause simpose : nous allons exprimer que O j est tel que O j 1 O j = O j 1 K j + r j , avec r j = 2(j +1) comme nous lafrme le thorme de Pappus. Cest un systme peu vident rsoudre. Nous allons donner une indication XCAS : la solution est proche de k j . Nous lui demanderons ensuite dutiliser la mthode de Newton :
fs:
(xx,yy); os: os, (fs[0],fs[1]); / / l e n o u v e a u c e n t r e cs: cs, (os[j], (os[j],ks[j])); / / l e n o u v e a u c e r c l e css: css, ( (y 0), (os[j], (os[j],ks[j])));
// son symtrique
(cs,css)
}:;
};
//
on
trace
les
deux
sries
de
cercles
La mthode prcdente est intressante informatiquement et mathmatiquement : elle est cependant gourmande en temps de calcul. On peut cependant voir les cercles de Pappus comme des billes molles dans un tube mou dont on aurait recoll les extrmits, ce qui nous fait bien sr penser ... une inversion qui transforme certaines droites en des cerclese . XCAS possde une commande (ple,rapport,point) qui calcule les coordonnes de limage dun point par une inversion. Le problme, cest que nous aimerions obtenir
e Merci I VALDI , 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 reprsentations paramtriques de ces ensembles. Nous proterons de lexistence sur XCAS des commandes (courbe) qui renvoie lcriture paramtrique complexe dune courbe et (affixe,paramtre). Par exemple :
( ( ( (x+iy),r)))
algbrique
//
evalc
renvoie
la
forme
Rponse du logiciel
Nous allons donc crer une procdure inv_courbe(C,k,g) avec C le ple de linversion, k son rapport et g lensemble de point aprs avoir ouvert une fentre de programmation en tapant sur et :
. l inversion : attention
(courbe_parametrique(
on affiche g et son
dont
il
faut
extraire
l affixe .
//
image
par
}:;
et
(-5)
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;
(0,2*j),1));
197
Cela donne :
198
Suites et chaos
Notions informatiques : Cette brve tude sera loccasion de dcouvrir les possibilits offertes par XCAS pour tudier des suites du type un+1 = f (un ). Nous construirons galement une procdure qui ncessitera beaucoup dastuce informatique an que lordinateur donne un rsultat en un temps raisonnable.
Problmatique : Vers 1950, le mtorologiste amricain Edward L O RENZ tudie la circulation atmosphrique. Il se base pour cela sur les travaux des mathmaticiens franais H ADAMARD et P OINCAR sur limprdictibilit des systmes simples. Mme en modlisant latmosphre en un systme ayant une dizaine de degrs de libert, il montre la sensibilit exponentielle par rapport aux conditions initiales. Il illustre son propos en montrant que le battement daile dun papillon en un point de la Terre est sufsant pour dclencher deux semaines plus tard une tornade lautre bout de la plante. Au mme moment, le russe Vladimir A RNOLD , disciple de KOLMOGOROV , modlise le mouvement dun uide parfait comme celui dun point sur une hypersurface de dimension innie. Il part lui aussi de travaux dH ADAMARD sur les trajectoires dune bille sur certaines surfaces : par exemple, si on lche une bille sur un parabolode hyperbolique (une selle de cheval), sa trajectoire va dpendre normment de sa position de dpart, tel point quil savre impossible de prvoir sa trajectoire au-del dun temps trs court. Bref, leffet papillon envahit les esprits et nombre de disciplines pour imposer une vision chaotique dun monde complexe et imprdictible. Cest ce phnomne que nous allons observer et commenter aujourdhui, non pas en tudiant le domaine des turbulences atmosphriques physiquement hors de notre porte, mais en explorant, de manire trs simplie, la dynamique des populations. Nous voquerons en conclusion les apports rcents de la mcanique statistique qui replace dans leur contexte les travaux de L ORENZ et A RNOLD .
Comme vous le savez tous, le Zrjdz commun ailette mouchete est lanimal emblmatique de la Syldavie. Aussi paisible que les habitants de ce bucolique pays, le Zrjdz se nourrit exclusivement des baies du bleurtschzrn, arbre qui pousse en abondance dans les verts sous-bois syldaves. Si lon ne considrait que cette idale situation, la population u de Zrjdzs suivrait la loi suivante un+1 = Run Cette relation traduit le fait que la population de lanne n + 1 est proportionnelle lanne n : on applique un le taux de natalit et le taux de mortalit. Le coefcient R rsume ces proportions. Il est assez ais dobjecter au modle prcdent que lvolution ne peut pas rester proportionnelle la population de lanne prcdente : au bout dun moment la nourriture et lespace vital, par exemple, viennent manquer. On peut alors modliser lvolution de la population selon la loi p n+1 = R p n (1 p n ) avec p n reprsentant la proportion par rapport un maximum estim.
p(R,po,n): { pn,k; pn: po; (k: 1;k< n;k++){ pn: R*pn*(1-pn); } }:;
Rponse du logiciel
0.8683116395,0.8284245987,0.8749972464,0.8269407066,0.8749972636
Observer des sries de rsultats chiffrs, un peu comme cela se fait sur les tableurs, nest pas trs parlant ni efcace. Nous allons donc utiliser la commande (f(x),uo,n) qui donne la reprsentation classique des suites dnies par une relation un+1 = f (un )a :
(1.6*x*(1-x),x
0.9,5)
point de f
fixe
non
nul
de
a Pour une tude originale de ces suites, on pourra se rfrer R OUQUS , Jean-Philippe/D OMINGUEZ , Sophie Leons
201
fp(x1)
x1
// on vrifie
(f(x),x1+0.0000001,2500)
choisit
plus
Il ne reste plus qu observer des phnomnes trs tonnants. Au dpart, pas de surprise :
pour 0 < R < 1, 0 est attractif pour 1 < R < 3, 0 est rpulsif et x1 attractif aprs 3, les choses se compliquent...
202
On peut galement, pour une mme valeur de R, observer ce que donne diffrentes valeurs de po, en particulier de trs petites variations autour du point xe x1. Cest lillustration du fameux effet papillon : un battement daile de papillon Rez est susceptible de dclencher beaucoup plus tard une tornade en Syldavie. La trs faible perturbation cre par le vol dun papillon pourrait en principe faire varier les conditions initiales du systme atmosphrique et engendrer plus tard un changement climatique en un endroit quelconque de notre plante.
Ce phnomne est mis plus clairement en vidence par un diagramme de bifurcation. Cette fois, on tudie les valeurs prises par la suite en fonction de R. Pour ne pas tre perturb par les premiers termes, on soccupe des 20 termes qui suivent p 100 :
Feig(R,N): { / / 1 / N e s t k,r,tmp,ligne; tmp: (R*N);
/ / c omme o n avance pas le pas entre deux valeurs de R
1/N ,
il
aura
res: [0tmp];
// i l y aura 20 points par ligne car on
R *N fait
points
tracs
varier
de
100
120
calcul
de
u100
}
//
(k: 0;k 20;k++){ < ligne[k] : (r,tmp); tmp: r*tmp*(1-tmp); res[r*N] < ligne;
}:;
res;
Si lon sy prend mal, il peut tre trs long dobtenir le graphique car de nombreux calculs rptitifs sont ncessaires. Par exemple, pour N = 5000 et R variant entre 0 et 4 on obtient en 80 secondes sur notre ordinateur (400 000 points vont tre tracs... ) :
203
Le papillon bat-il de laile Les rsultats de L ORENZ et A RNOLD ne semblent pourtant pas avoir sonn le glas des prvisions mto ! Cest quen fait, leurs travaux sont bass sur une chelle microscopique : il est en effet impossible de suivre un petit lment long terme mais il est tout fait envisageable de faire des prdictions long termes lchelle macroscopique grce aux rsultats de la physique statistique en considrant des masses dair dans leur ensemble. Ce phnomne est similaire lobservation dun gaz dans un rcipient : il est impossible de modliser la trajectoire dune molcule, mais on peut ltudier plutt des 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 naturellement plus prvisible que lvolution des molcules. Par contre le climat, lui, est plus prvisible, malheureusement pour nous et surtout nos enfants... Le papillon reprend malgr tout son envol pour des conditions initiales critiques qui font hsiter le systme tudi entre deux tats naux distincts.
204
Coniques
Logiciel(s) abord(s) : XCAS
Notions informatiques : Ce chapitre sera loccasion de dcouvrir de nombreuses commandes de calcul formel et de gomtrie dynamique.
Problmatique : Voici un cours assist par ordinateur : nous explorerons un maximum de notions sur les coniques, tant algbriques que analytiques et gomtriques, dans le plan comme dans lespace. Nous effectuerons des exprimentations bien sr, mais galement des preuves de thormes.
Pour nous simplier la vie, nous tudierons en fait les courbes dquation : ax 2 + by 2 + 2cx + 2d y + e = 0 Nous travaillerons dans un repre orthonorm O; , . Nous supposerons que a et b ne j sont pas tous deux nuls. Nous appellerons la courbe dquation ax 2 +by 2 +2cx+2d y +e = 0 dans le repre O; , . j Il va falloir distinguer de nombreux cas, comme par exemple...
ab = 0
Nous supposerons par exemple que cest b qui est nul. Alors Si d = 0. On obtient :
(A*x^2+2*C*x+2*D*y+E 0)
Rponse du logiciel
(A)(x)2 (2xC)E 2D
(a*x^2+b*x+c)
Rponse du logiciel
a x + 2ba
4ac((b)2 ) 4a
On obtient donc quil sagit de la parabole de sommet S 2 ; Si d = 0. Alors admet pour quation :
42 4
(x^2+2*C/A*x+E/A)
Rponse du logiciel
x+
2C 2 + 2A
4E A
2C 2 A 4
c a
c 2 ea a2
c 2 ea 2 < 0, alors = c ea
2
206
(A*x^2+2*C*x)+
( (B*y^2+2*D*y,y
x))+E
Rponse du logiciel
A x + 2C 2A
2 2 2 (2C) + B x + 2D (2D) + E 4A 2B 4B
c j Soit le point de coordonnes a ; d dans O; , . b Alors est la courbe dquation ax 2 + by 2 + k = 0 dans le repre ; , . j Distinguons nouveau deux cas : Si a et b sont de mme signe. Posons k = ca d + e. b
2 2
k et = a
k on obtient que b
Si k = 0, alors on peut poser m 2 = a et a pour quation (y mx)(y + mx) = 0 dans b ; , . Ainsi est la runion de deux droites ; j Si k = 0, en posant =
k a
et =
k b
x2 y 2 = 1 2 2 dans ; , . j Finalement :
a b
ab = 0 ab > 0 ab < 0
207
On notera f (x, y) = ax 2 +2bx y +c y 2 +d x +e y +k = q(x)+ (x)+k, avec q(x) = ax 2 +2bx y +c y 2 la partie quadratique et (x) = d x + e y la partie linaire.
Pour celles et ceux ayant tudi les formes quadratiques, nous allons pouvoir tudier les courbes dquation ax 2 + 2bx y + c y 2 + d x + e y + k = 0 dans un repre O; , du plan. On supposera que (a, b, c) = (0, 0, 0). j
Posons V = x y
,A= a b
b c et L = d c . Alors lquation de scrit
t
VAV + t LV + k = 0
Avec XCAS,
(a*x^2+2*b*x*y+c*y^2,[x,y])
Rponse du logiciel
a b
b c
On sait quil existe une matrice de rotation P SO2 (R) telle que :
t
PAP =
=D
u v Soit , la base orthonormale de R2 telle que P soit la matrice de pasage de , u v , . Soit V tel que V = PV , alors dans le repre O; , , a pour quation : u v j
t
cest--dire :
t
(V )D(V ) + t L(PV ) + k = 0
ou encore : X 2 + Y2 + DX + EY + k = 0 et on retrouve le cas tudi la section a. page 205 modulo un changement de base par rotation. On remarque au passage que det(A) = , donc que :
208
si det(A) = 0, est du type parabole ; si det(A) > 0, est du type ellipse ; si det(A) < 0, est du type hyperbole.
Quelle est la nature de la conique : x 2 + 6x y + y 2 + 4x = 0 ?
A:
(x^2+6*x*y+y^2,[x,y])
(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:
(v))
(
cest--dire :
(V)*D*V+
(L)*R*V
Rponse du logiciel
Il ne reste plus qu rduire cette quation comme nous lavons vu la section a. page 205.
209
On pourrait construire une procdure qui distingue les 9 cas de la section a. page 205 puis rduire la forme quadratique comme la section b. page prcdente, mais XCAS a dj fait le travail pour nous...
(
donne successivement :
(x^2+6*x*y+y^2+4x))
1 , 3 4 4
la nouvelle base :
Rponse du logiciel
2 2 2 2
2 2 2 2
4 (x )2 2 (y )2 + 1 = 0 2
(
210
(x^2+6*x*y+y^2+4*x),gray)
ce qui donne
x2 a2 y2
+ b2 = 1
Nous supposerons dans la suite que a et b sont positifs ce qui nenlve aucune gnralit ltude. Il est ais de vrier que lellipse (E) est globalement invariante par reexion daxe O; , O; et par symtrie par rapport O. Nous pouvons donc nous restreindre tudier j lensemble (E ) des points de (E) dabscisse et dordonne positives. (E ) est la courbe reprsentative de la fonction f: R+ x
R b
XCAS
x 1 a2
que a est positif .
Rponse du logiciel
(a)2 ((x)2 ) )bx (a)3 (a(x)2 )
On obtient f (x) =
bx a a2 x2
211
la
direction
de
la
limite
(y*f(xo)/b^2)
Rponse du logiciel (a^2-x*xo)/(a^2)
Ainsi, la tangente (E ) en un point dabscisse xo = a admet pour quation : xxo y f (xo) + =1 a2 b2 Il est maintenant ais dobtenir une reprsentation de :
a: 2:; b: 1:; G: (f(x),x 02):; G1: ( (0),G):; G2: ( (x 0),G):; G3: ( (y 0),G):; (G, + ), (G1, + (G2, + ), (G3, )
),
ce qui donne :
212
On peut visionner linuence des coefcient 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),x 0a):; G1: ( (0),G):; G2: ( (x 0),G):; G3: ( (y 0),G):; (G, + ), (G2, +
(G1, + ), ), (G3, )
x2 a2
b2 = 1
R b
x2 a1
y2
R+ x
(a>0):; F: x- b*(x^2/a^2-1) > a: 2:; b: 1:; H: (F(x),x 25):; H1: ( (0),H):; H2: ( (x 0),H):; H3: ( (y 0),H):; (H, + ), (H1, + (H2, + ), (H3, )
ce qui donne :
),
213
F: M:
(0,0); (x,y):; ((-5) (0 2)
MF = eMH
(x d),M)
On trace le lieu du point M vriant MF = eMH avec la courbe dquation implicite f (x, y) = 0 et tance AB.
(
et la directrice :
( (M,F)-E*( (M,H)),x,y), )
(x d),
y2
c = a2 b2 F(c ; 0) D: x =
a2 c
e=
c a
2
F (c ; 0) D : x =a c
214
{ c: (a^2-b^2); E: c/a; ( "lexcentricit vaut "+E+" Les foyers ont coordonnes ("+c+",0) et (-"+c+",0) et les directrices ont quations x "+a^2/c+" et x -"+a^2/c) }}:;
Alors :
foyer_ellipse(5,3)
donne :
Rponse du logiciel lexcentricit vaut e =4/5 Les foyers ont pour coordonnes (4,0) et (-4,0) et les directrices ont pour quations x=25/4 et x=-25/4
Nous avons dtermin prcdemment page 212 lquation dune ellipse. Voyons maintenant une construction de la tangente.
FM FT = 0
Observons ce rsultat en ouvrant une fentre de gomtrie aprs avoir tap On dnit la conique et on la trace :
a: b: E:
1):;
215
en faisant varier
(F,
(M,F)),
et lintersection de D et d avec
T:
(courbe1,courbe2) :
(T,M))
Puis on se souvient du rsultat vu page 212 qui dit que la tangente en M(x0 ; y 0 ) lellipse a yy pour quation xx20 + b 20 = 1. On obtient donc que : a y = 1 xx0 b 2 a2 y0
Nous avons prcis que M nappartenait pas laxe focal et donc y 0 = 0. Nous utilisons
(point) et
(point) :
((1-(x*
(M)/a^2))*b^2/
(M))
(M)))
216
C: M: F: D: d: T:
Effectuons la preuve dans le cas gnral grce aux capacits formelles de XCAS :
(x^2/a^2+y^2/b^2 1):; (a* (t),b* (t)):; / / d f i n i t u n p o i n t d e C ((a^2-b^2),0):; (x a^2/(a^2-b^2)):; (y (b/ (M))*(1-x* (M)/a)):; / /
yyo / b 1
en
effet
xxo / a+
(d,D):;
(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 cas gnral. Un dveloppement accessible aux lves de lyce du mme problme est prsent la section 1.3 page 179.
217
Voici une activit qui peut tre propose des lves de 2nde car elle ne demande que des connaissances de base sur les paraboles.
Les lycens lignorent, mais nous savons quune parabole dquation x 2 = y = 2 1 x 2 admet 2 pour foyer F(0 ; 1 ) et une directrice dquation y = 1 . 4 4 1. Tracer la droite D dquation y = 1/4 en vert :
D:
(y -1/4),
( (0,1/4),
(-22)
( (D,s),
(m,D),
(m,F),
(p,med),
( (M,s),
(M)
(M))^2)
Ceci permet de tracer point par point une parabole dont on connat le foyer F et la directrice D :
218
( (
(M,
(M,F)),
( (
(p,para),
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
Loi de Descartes
On a 1 = 2 et donc la normale au point dincidence reprsente la bissectrice de langle gomtrique form par les rayons incident et rchi. Si on considre des rayons venant dun satellite , on peut supposer quils sont tous parallles tant donn quil est trs loign de lantenne. Notre petite illustration montre 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 par exemple dans le phare dune voiture, les rayons rchis par les parois du phare partiront tous dans la mme direction, ce qui permettra de diriger le faisceau lumineux et de ne pas blouir les voitures venant en face.
Nous ne vous apprendrons pas lorigine du mot coniques. Nous allons nous contenter de lillustrer.
220
K:
x = t
4
([0,0,0],[0,0,1], /6,
0.02),
( (Q,K),
Intersection dun cne avec un plan dquation x =t tudions lintersection de K et du plan x = t . On utilise qui renvoie le rel ottant t sous la forme dun rationnel car inter travaille en calcul formel.
([
(K),x (t)],[x,y,z])
221
1 1 y y
Rponse du logiciel
(y)2 + 1 (y)2 + 1
Nous reconnaissons bien sr une hyperbole. XCAS nous le conrme. Sortons de la fentre de gomtrie 3D. Comme y 2 + 1 est le troisime lment du second lment de solve([equation(K),x=1],[x,y,z]), on lobtient en tapant :
([
(K),x
1],[x,y,z])[0][2]
:
1],[x,y,z])[0][2])^2,y,z)
(z^2 (
([
(K),x
x = t + k z
Nous allons rajouter un nouveau paramtre, k, qui va nous permettre de visualiser lvolution des sections suivant la pente du plan de coupe :
K: t: k: P:
0.01)
222
223
Sries de Fourier
Logiciel(s) abord(s) : XCAS
Notions informatiques : Les logiciels ont du mal intgrer les fonctions non continues. On sintresse ici aux fonctions continues par morceaux. Problmatique : On explore les dveloppement en srie de Fourier tant 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 coefcients de Fourier :
cn =
1 T
a+T a
f (t )e
2int/T
dt
(f(x),variable,priode,n,borne
infrieure de lintgrale)
Par exemple, considrons la fonction f , 2-priodique, paire et telle que f (x) = x 2 pour tout x [0 ; ]. Traons sa reprsentation graphique sur une priode :
(x^2,x -PiPi)
Alors :
XCAS : Fonction x x 2
(x^2,x,2*Pi,n,-Pi)
Rponse du logiciel
Ce nest pas trs lisible. Il suft dexpliquer que n est un entier et les exp((-i)*n*(-pi)) vont sen trouver soulages...
(n, ) (x^2,x,2*Pi,n,-Pi)
renvoie cette fois :
Rponse du logiciel
2 (1)n (n )2
(x^2,x,2*Pi,n,-Pi); (x^2,x,2*Pi,n,-Pi)
226
Rponse du logiciel
4 (1)n ,0 (n )2
On vrie bien que les b n sont nuls car la fonction est paire. Il semble y avoir un problme pour 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, vrions le lemme de Riemann-Lebesgue pour rigoler :
lim
f (t )e
2int/T
dt = 0
Pour la dmonstration, cest un autre problme... Vrions maintenant graphiquement la convergence de la srie de Fourier :
f4: t- (x^2,x,2*Pi,0,-Pi)+( > n*t),n 14)
(x^2,x,2*Pi,n,-Pi)* (
cre la fonction t a0 +
an cos(nt ).
n=1
4 cos (3 t)
cos (4 t)
1 ()2 3
Nous voici rassurs... Voyons le rsultat graphiquement. Pour cela, il nous suft de rentrer :
227
[red,
([t^2,f4(t)],t -PiPi,
])
Mais pour limpression de ce livre, nous avons augment lpaisseur des traits avec la fonction :
( (
Adoptons prsent une vision physicienne du problmea . Ainsi f est un signal de priode T et notons classiquement = 2/T . Supposons que f est telle que la suite des sommes partielles f n (t ) = a0 +
n k=0
f 2 (t ) dt
Une des questions physiques est alors de savoir partir de quelle valeur de n on obtient un pourcentage donn de lnergie du signal en approximant f par f n . Reprenons notre exemple :
a Les problmes de convergence et le travail dans un espace de Hilbert ne seront pas traits ici. b Voir le thorme de Dirichlet.
228
E: (1/(2* ))*( (t^4,t - (E)
));
2 2 ak + bk
efficace(p): { ao: ( (x^2,x,2*Pi,0,-Pi)); En: ao^2; k: 0; seuil: (p*E/100); (En<seuil){ k: k+1; En: En+ (.5*16/k^4); }; "Il suffit de prendre n "+ k+ " obtenir "+p+"% du signal" }
Par exemple :
efficace(99.9)
Rponse du logiciel Il suffit de prendre n=5 pour obtenir 99.9% du signal
Vrions :
Energie: n- ^4/9+(8/k^4,k 1n); > 100* (Energie(4))/ (E); 100* (Energie(5))/ (E)
Occupons-nous prsent dun signal moins rgulier mais important en lectronique : la fonction 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,(-.5<t)
(t 0),-1,t <
0,0,(0<t)
(t .5),1,t <
mais cette fonction nest pas encore bien intgre, mise part lvaluation et la drive. Nous nutiliserons donc pas fourier_bn, mais nous fabriquerons nos propres procdures.
229
Reprsentons dabord graphiquement des fonctions dnies par morceaux en rentrant comme arguments la liste des intervalles, la liste des valeurs correspondantes, le nombre dintervalles et la couleur.
));
//
on
cre
une
liste
de
} }
Par exemple :
plot_mor([-1/20,01/2],[-1,1],2,
donne :
Pour le calcul de a0 :
(LV[k],x
LI[k]));
230
(LV[k]* (p*2*Pi*x/T),x
LI[k]));
et les b n :
four_bn(LI,LV,m,T,p): { integ,k; integ: 0; (k: 0;k<m;k++){ integ: integ+(2/T)*( } (integ) }
(LV[k]* (p*2*Pi*x/T),x
LI[k]));
4
3
ce nest pas trs lisible... Il faut dans ce cas modier notre procdure :
four_bn_general(LI,LV,m,T): { integ,k,p; (p, ); integ: 0; (k: 0;k<m;k++){ integ: integ+(2/T)*( (LV[k]* } (integ) }
(p*2*Pi*x/T),x
LI[k]));
Alors :
four_bn_general([-1/20,01/2],[-1,1],2,1)
231
(2 (1)p ) + 2 p
N n=1
s_fourier(LI,LV,m,T,N): {
Par exemple :
s_fourier([-1/20,01/2],[-1,1],2,1,5)
Rponse du logiciel
A,B; A:
):;
et on obtient pour N = 8 :
232
qui met en vidence de petites crtes plus grandes prs des points de discontinuit. Vrions un peu plus loin :
plot_fourier([-.50,00.5],[-1,1],2,1,-.5,.5,16)
et on obtient :
Vous pourrez montrer les trois rsultats tonnants suivantsc : la crte est de plus en plus troite ; elle se rapproche du point de discontinuit ; sa hauteur est constante.
c Pour la dmonstration voir A PPEL , Walter Mathmatiques pour la physique et les physiciens. Paris: H&K, 2005 p. 274
233
Musique
Logiciel(s) abord(s) : Scilab
Problmatique : Construire une gamme en utilisant le calcul matriciel. Produire des sons pour un squenceur.
Lensemble de toutes les notes possibles (partant des gammes classiques de temprament gal) contient 12 degrs espacs dun demi-ton ; le nombre 0 reprsente do = C, le nombre 1 reprsente do = C , etc. On cherche construire toutes les gamme possibles dans les contraintes suivantes : le nombre de degrs est x, seuls certains intervalles sont autoriss, chaque note apparat au plus une fois, on retombe sur la note initiale la n. Par convention, la note initiale est toujours 0. Dans notre construction, la premire note est omise et est toujours 0 (do = C) ; on construit une matrice dont chaque ligne reprsente une gamme. La matrice obtenue la n reprsente donc 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. La fonction intervalle donne les intervalles successifs associs aux gammes stockes dans une matrice.
y x
y intervalle(x)
y x s
(x,2) j 2:s
((x(:,[1:j]),c),12)
y(:,j)
Des candidates pour les gammes sont construites par itration ; une bonne partie de llimination se fait pendant la gnration pour conomiser les ressources de lordinateur !
qu u n e pas
doit
0,Z
Y y(i,k-1) ;
; Z)])
0, or(y(i,[1:k])
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 rien de nouveau. La fonction pcc opre un cycle lmentaire sur les lignes dune matrice.
y x s
y pcc(x)
y(:,s) x(:,1)
236
y [l,c]
nettoie(x) (x)
marque [marque,j] ;
y x y(marque,:) []
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-dessous se lit comme indiqu dans la deuxime ligne.
Rponse du logiciel ! do 3. mib 7. sol 10. sib 2. r 8. sol# 4. ! mi
Linstruction intervalle(z) dcrit les intervalles entre chaque degr. Prenons par exemple la rgle : on peut monter ou descendre dun triton, dune tierce mineure ou majeure.
w [3;4;6;8;9]
Le vecteur w reprsente tous les intervalles possibles en suivant cette rgle. Voici le programme principal :
Il
faut
retomber
sur
do
z(i,:) [] ;
identiques
aux
;
bouts de la gamme
//
Pour
intervalles
z(i,:) [] ;
237
// on //
;
limine les permutations circulaires
z gamme(nettoie(intervalle(z))) s
// // // si w [6;3] et taille 2 ou 3
affichage
du
rsultat
(z,1)
Le logiciel Scilab permet de fabriquer des sons sous forme de chiers 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 roue dune certaine forme, ce qui change lauto-inductance de la bobine et donc la frquence de la note. Les lectroniciens appellent cela une modulation de frquence et les musiciens un vibrato. (Quand la variation de frquence est plus ample, ils parlent respectivement de wobulation et de glissando.)
//
pour
attention
ne
doit
pas
tre
un
tableau
//
La fabrication de la matrice de rels qui reprsente lchantillonnage sonore 44100Hz utilise la fonction prcdente. La fonction v ci-dessous sera construite partir de la fonction orgue ci-dessus.
Lcriture des chantillons numriques dans un chier sonore se fait automatiquement. Linstruction y=[u,v] ; wavwrite(y,44100,16,nom) donnerait des rsultats bizarres.
238
y sortie(u,v,nom)
Il reste craser les extrmits pour diminuer les dgts du jeu en boucle.
y [u;v] ; y nom
(nom,y,44100)
La fabrication automatique du sons peut produire des chantillons pour un squenceur informatique. La grandeur dune octave pour loreille humaine, cest--dire le coefcient multiplicateur 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. Protons-en pour construire des fonctions logarithme et exponentielle musicales.
(mkdir
Sons)
Lautomate est prt tre crit ; le lecteur pourra aisment modier la liste et le nombre des chantillons (le squenceur risque de rouspter sil en charge plus de 128), puisque tout passe par la gestion des chanes de caractres. Il faut juste reprer la position dans la liste de la note de rfrence pour le diapason (441Hz).
239
Les donnes ncessaires sont rentres ; il faut plusieurs secondes sur une machine ordinaire pour produire une note dune seconde. Augmenter le nombre dchantillons et la dure sera gourmand en temps de calcul.
octave 2.01 rotationRoues 7 / / profondeur .003 nuance .999 / / f f f f duree 1
les roues tournent
y suite
hertz
le
maximum
240
Carrs magiques
Logiciel(s) abord(s) : Scilab
Problmatique : Rsoudre des problmes amusants en apprenant la manipulation 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 suite des nombres de 1 9 doit apparatre exactement dans chaque ligne, dans chaque colonne, et dans 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 m(2,[4 6 7 9]) [5 2 m(3,[1 3 5 9]) [7 4 m(4,[1 5 7 8]) [1 9 m(5,[3 4 5 6 7]) [9 m(6,[2 3 5 9]) [4 7 m(7,[1 5 7 9]) [9 2 m(8,[1 3 4 6]) [2 1 m(9,[2 5 6 9]) [8 7 m 8 4 1 2 1 3 3 6 3 6]; 1]; 2]; 3]; 4 8 6]; 9]; 6]; 4]; 5];
La dernire instruction afche la matrice du problme. la matrice m est une matrice 9 par 9 dans la quelle on stocke les donnes et o lon stockera les rponses progressivement. Les premiers outils pour manipuler les neuf nombres sont initialiss.
I (9,9) ; u I; d 2*I; t 3*I; q 4*I; c 5*I; s 6*I; e 7*I; h 8*I; n 9*I;
[M,U,D,T,Q,C,S,E,H,N] egale(m,u,d,t,q,c,s,e,h,n) M m;U u;D d;T t;Q q;C c;S s;E e;H h;N n;
Un infme bricolage pour numroter les matrices extraites ne devrait faire peur personne.
(k-kk)/3 ; zz
z numero(k) kk (k,3) ; K
(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.
Z Y
Z annulation(Y,M)
k 1:9 l 1:9
M(k,l)~ 0 Z(k,l) M(k,l) Z(k,:) 0;Z(:,l) 0;Z(k,l) M(k,l); K numero(k);L numero(l);Z(3*K+[1:3],3* L+[1:3]) 0;Z(k,l) M(k,l); Z(k,l) 0 ;
La premire action pour remplir la matrice est de vrier les nombres qui ne sont utiliss quune fois dans chaque ligne ou colonne.
// // s il on
M attribution(m,u,d,t,q,c,s,e,h,n)
a qu u n e la case rponse par ligne ou par colonne de M c o r r e s p o n d a n t e
ny
remplit
(Y,c)
la colonne
si
j 1:9
une seule rponse sur
//
// boucle3
colonne(j)
// boucle4
compteur
k 1:9
// boucle5
// f i n
de
boucle5
242
// fin
de
boucle4
// fin
de
boucle3
// fin
de
boucle2
// boucle2bis
si
j 1:9
une seule rponse sur la ligne
//
// boucle3bis
ligne(j)
// boucle4bis
compteur
k 1:9
// boucle5bis
// fin
// fin
de
boucle4bis
// fin
de
boucle3bis
// fin
de
boucle2bis
compteur compteur+1
de boucle1
// fin
Si tous les nombres sauf un ont t limins pour un emplacement donn, lemplacement peut tre attribu.
// // // si un compte on
M ATTRIBUTION(m,u,d,t,q,c,s,e,h,n)
seul tenu chiffre de la est apparat les possibilits toutes case
remplit
de M c o r r e s p o n d a n t e
M m liste [u,d,t,q,c,s,e,h,n]
// boucleA
k 1:9
// boucleB
(9,1)
// boucleC
243
// f i n // un
compteur compteur+1
de boucleC
test
(verticale)
chiffre est possible
seul
// boucleCbis
// f i n
// f in
de
boucleB
// f i n
de
boucleA
Le travail fait par la fonction attribution suivant les lignes et colonnes est fait dans les tableaux extraits par la fonction attripb.
// // s il on
M attrib(m,u,d,t,q,c,s,e,h,n)
a qu u n e la case rponse par matrice 3 par 3 extraite de M c o r r e s p o n d a n t e
ny
remplit
(y)
K 0:2
y liste
// boucle2
// boucle3
test
// boucle5
compteur
kk 1:3
// boucle6
// boucle7
// f i n de
244
// fin
de
boucle6
// fin
de
boucle5
// fin
de
boucle4
// fin
de
boucle3
// fin
de
boucle2
compteur compteur+1
de boucle1
// fin
Maintenant vient le travail recherch : toutes les liminations et les attributions sont rassembles.
// la
[M,U,D,T,Q,C,S,E,H,N] op(m,u,d,t,q,c,s,e,h,n)
principale
fonction
M attrib(MMM,U,D,T,Q,C,S,E,H,N)
245
// une //
stop
tape
0
de travail
[M,U,D,T,Q,C,S,E,H,N] op(m,u,d,t,q,c,s,e,h,n) ;
mesure de l effort
longueur longueur+1 ;
// est ce fini
[M,U,D,T,Q,C,S,E,H,N] stop 1 ;
[m,u,d,t,q,c,s,e,h,n]
[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 afch avec leffort fourni.
(m); (longueur);
Si a bloque avant de trouver une solution, cest quon ne peut pas continuer par limination : il faut xer une valeur arbitraire dans M (de prfrence o la collision est faible). Les instructions suivantes donnent des indications.
collision u+d/2+t/3+q/4+c/5+s/6+e/7+h/8+n/9-1 ; (u); (d); (t); (q); (c); (s);
Si un nombre de collision devient strictement ngatif, il ny a pas de solution : la valeur arbitraire tait mauvaise, il faut tout recommencer avec une autre valeur arbitraire. Ou alors il fallait archiver sous dautres noms les dix matrices m, u. . . n avant de rentrer le candidat. . .
246
Codes correcteurs derreurs
Notions informatiques : Les codes correcteurs nous ferons travailler dans des corps nis (F2 en loccurence) ce qui nous permettra dapprofondir le calcul modulaire. Le travail principal se fera cependant sur la manipulation des matrices. Nous voquerons galement le travail dans les corps de Galois. Nous ne ferons que survoler la partie mathmatique (pour un dveloppement 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 ensuite transmise puis dcode. Un message sera donc reprsent par un vecteur de Fn . La transmission altre parfois linformation : ainsi 2 on rcupre un vecteur transmis qui nest pas forcment celui dorigine. Le but de lactivit est dutiliser un code qui permetttra de dtecter les erreurs et mme de les corriger : on crera dabord une procdure nave qui dpendra de la matrice de codage et du vecteurmessage tester et qui dira si ce vecteur a t mal tansmis et par quel bon vecteur le remplacer. Nous voquerons ensuite une procdure plus efcace mais qui ne concernera que les codes de Hamming. Enn, nous travaillerons dans des corps de Galois pour crer des polynmes gnrateurs.
a B RUGRE , Thierry/M OLL ARD , Alain Mathmatiques lusage des informaticiens. Paris: Ellipses, 2003 b B ADRIKIAN , Josphe Mathmatiques pour tlinformatique : codes correcteurs. Paris: Ellipses, 2002
Fk 2
Nous voudrions crire les 2k vecteurs de Fk sous forme de listes de longueur k. Plusieurs op2 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) qui convertit un nombre n,
L: []; L:
( (n,
,2),L);
mais a nous le donne en sens inverse... On peut aussi faire des divisions euclidiennes successives. Le problme, cest que ces vecteurs ont un nombre de composantes variable. Une petite astuce xe le nombre de composantes k :
Fdeux(n,k): { L; L: []; (n> 2){ L: ([ (n,2)],L); n: (n,2); } L: ([n],L); ( (L) k) L: [0(k- < (L); }
(L)),(L)];
Nous voudrions avoir une mthode nous permettant de dcider quel est le message correct le plus proche du message erron reu. Une nouvelles ruse due aux particularits de F2 va nous y aider. Tout dabord, noubliez pas que dans F2 , x + y = x y ! Ainsi, le nombre de bits qui diffrent entre deux vecteurs de F2 est aussi gal la somme des coordonnes du vecteur somme rsultant. Si on appelle poids la fonction : Fn 2 m N (m) =
n i=1 m i
248
est une distance, appele distance de Hamming, qui nous permettra de mesurer lcart entre deux messages, cest--dire le nombre de bits les diffrenciant. Il suft 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 voulons savoir si v correspond un message de M. Dans le cas contraire, nous voudrions le remplacer par le message le plus proche. Un message est en fait limage de Fk par uM , lendomorphisme canoniquement associ M. 2
Ima: ; (j: 0;j<2^k;j++){ Ima: Ima,M*Fdeux(j,k)%2; }; Ima: [Ima];
construit la liste des images des vecteurs de Fk par uM . Techniquement, on rajoute la s2 quence Ima au dpart vide les vecteurs M*Fdeux(j,p). On noublie pas le %2 qui symbolise le calcul modulaire dans F2 . Linstruction Ima:=[Ima]; sert alors transformer la squence en liste de liste, cest--dire en matrice. Cependant, les composantes des vecteurs sont mis la queue-leu-leu, sans quon puisse distinguer les vecteurs. Il faut donc avoir les ides claires sur les dimensions de nos espaces
p: n:
(M); (M);
Nous avons donc avec Ima une matrice o chaque ligne reprsente les 2k vecteurs de limage de uM . Dressons prsent la liste des 2n 2k vecteurs de Fn qui nappartiennent pas I m(uM ). Nous 2 utiliserons la fonction (member)vecteur,matrice qui renvoie 0 si le vecteur nappartient pas la matrice ou bien le numro de la ligne qui lui correspond sinon.
(k:
0)
}; L: [L];
249
Nous obtenons ainsi une matrice de 2n 2k vecteurs qui ne sont pas des messages : appelons la famille forme par ces vecteurs (ui ). La ruse est de se dire : je reois un message v. Cest un des 2n vecteurs de Fn : si cest un des 2 2k vecteurs de I m(uM ), tout va bien. Sinon, je peux lcrire sous la forme v = m + e avec m un vecteur de limage (un vrai vecteur) et e lerreur commise. Plus e sera de poids petit, plus m sera prs du message transmis et donc je pourrais penser que probablement le vritable message transmis tait m. Nous allons donc ordonner les ui par ordre de poids croissant. Ensuite nous formerons les vecteurs ui + m j : si ce vecteur a dj t form auparavant, on llimine, sinon, on le garde. On parcourt la liste des lignes, et on ajoute chaque ligne son poids :
(j: 0;j (L);j++){ < L[j] <[(L[j]),(L[j])]; }
On a remplac par pour plus de rapidite (=< fait la modication en place dans L, alors que := cre une copie de la liste a chaque fois). Il ne nous reste plus qu trier ces vecteurs selon lordre croissant des poids. La fonction qui joue ce rle. Il faut juste lui expliquer comment classer : ici, cest lodre croissant selon la premire ligne.
(L,(x,y)->x[0]<y[0]);
On enlve alors la colonne des poids qui ne sert plus rien : la premire, donc la numro 0...
U:
(U,00) ([[0n]],U)%2
On rajoute une ligne nulle quon remplacera par les vecteurs de I m(uM )
U:
On forme ensuite la premire ligne de notre matrice nale en ajoutant la premire ligne de U celle de Ima
N: [(U[0]+Im[g])(g 02^k-1)]:;
Ensuite, on rajoute les ui qui nont pas dj t rajout avant. On utilise pour cela la commande (a,b,liste de a*b matrices) qui forme une matrice de a blocs de longeur b.
250
On retrouve un vecteur ui toutes les 2k lignes. Le problme, cest que le rsultat donn par mode est lentier le plus proche de 2k , donc peut tre ngatif. Le passage de lentier modulo 2k 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 vrier que le choix du message corrig est justi. Il sagit en fait de regarder I m(uM ) et plus particulirement les distances sparant ses diffrents lments. Sil existe au plus un lment m de I m(uM ), tel que pour tout message erron m , on ait (m m ) t , on pourra corriger jusqu t erreurs. Cela veut dire que la distance minimum entre deux lments de I m(uM ) doit tre au moins gale 2t + 1. Nous en dduisons que t est la partie entire de (PoiMin(M) 1)/2, avec PoiMin la procdure qui donne le poids minimum dune liste de vecteurs :
L,k; k: (M);
L: []; (j: 1;j<2^k;j++){ L: (L,(M*Fdeux(j,k))); } ( (L)); }
PoiMin(M): {
Un code t -correcteur est dit parfait si la runion des boules fermes de centre chaque lment de I m(uM ) et de rayon t donne Fn . 2 Il sagit en fait pour nous de vrier que la matrices formes des vecteurs ui a un poids minimum infrieur t . Pour changer, au lieu de construire une squence puis une matrice en y rajoutant des crochets, on est parti dune liste tout de suite (avec W:=[]), on concatne une autre liste avec et on coupe cette liste en tronons de longueur n pour en faire une matrice grce (Liste,n) : cest plus lourd, mais a permet de voir un peu de syntaxe... Nous pouvons donc rajouter notre procdure les lignes suivantes :
X: N%0; W: []; (r: 0;r<(X);r: r+2^k){ W: (W,X[r]); }; W: (W,n); ("Le code est "+ ((PoiMin(M)-1)/2)+"-correcteur"); (PoiMin(W) < ((PoiMin(M)-1)/2)) ("Le code est parfait"); { ("Le code nest parfait")};
251
Ima,L,P,U,N,W,X,l,j,k,K,g,h,x,y,q,r,p,n,m,current,nbsolutions,pos; k: (M); n: (M); ((v) n) ("Le message nest de la bonne taille."); { Ima: ;L: ;P: [];U: []; (j: 0;j<2^k;j++){
Ima: Ima,M*Fdeux(j,k)%2; }; Ima: [Ima]; (K: 0;K<2^n;K++){ ( (Fdeux(K,n)%2,Ima) L: L,Fdeux(K,n); }; L: [L]; (j: 0;j (L);j++){ < L[j] <[(L[j]),(L[j])]; }
0)
X: N%0; W: []; (r: 0;r<(X);r: r+2^k){ W: (W,X[r]); }; W: (W,n); ("Le code est "+ ((PoiMin(M)-1)/2)+"-correcteur"); (PoiMin(W) < ((PoiMin(M)-1)/2)) ("Le code est parfait"); { ("Le code nest parfait")}; ( (v%2,N[02^k]) 0) (v+"est {q: ((( (v,N))-1) 2^k)%0; bien un mot de code");
252
(q 0) (v+" doit tre corrig en "+Ima[q]%0); > {q: q+2^k; (v+" doit tre corrig en "+Ima[q]%0);} };
on obtient
Rponse du logiciel "Le code est 1-correcteur" "Le code est parfait" "[1,1,1,0,0,0,0] doit tre corrig en [1,1,1,0,0,1,0]" Evaluation time: 0.27
Le problme, cest que cette procdure induit un nombre assez important de calculs qui la rendent inefcace pour des codes de longueur assez grande : par exemple, si on choisit n = 32 et p = 6, il faut 16 GB pour mmoriser les 232 vecteurs de 32 bits chacun... Il va donc falloir appeler les mathmatiques au secours !
Un code est dit cyclique si, et seulement si, pour tout mot de code m, tout mot obtenu par permutation circulaire des coordonnes est encore un mot de code. Il savrera trs pratique de ne plus reprsenter un mot par un vecteur de Fn mais plutt par 2 un polynme de F2 [X] : aprs tout, pour lordinateur, cest dans chaque cas une liste de n oprandes. Des considrations dalgbre gnrale c permettent de dire quune permutation circulaire du message revient effectuer une multiplication par X modulo X n +1 du polynme message . On montre alors que I m(uM )[X] est un idal de lanneau principal F2 [X]/(X n + 1) de la forme g (X) F2 [X]/(X n + 1). On montre que g (X) divise X n + 1. On appelle g (X) le polynme gnrateur du code. Notons h(X) le quotient de la division euclidienne de X n + 1 par g (X). On montre galement que tout mot m du code est une combinaison linaire des X j g (X), et
n j (X n + 1) qui est nul dans F2 [X]/ donc que m(X) h(X) = n=0 m j X j g (X)h(x) = j j =0 m j X (X n + 1). On appelle alors h(X) le polynme de contrle du code : il porte bien son nom car son 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 et parfait. 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 du code, 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);
253
et on
On transforme ensuite h(X) en la liste des coefcients grce la fonction ajoute 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 des k derniers lments avec le dbut de la liste si k est ngatif. On aurait pu tout aussi bien former les produits de h(X) par les X j et utiliser , cest loccasion de voir une commande utile...
Il ne reste plus qu former le produit de la matrice de contrle avec le message et tester si cest un mot de code :
mess: H*m%2; (mess [0(n (h(x)))]%2) { (m+"est bien un mot de code"); }
sinon, le vecteur non nul obtenu est le k e vecteur colonne de la matrice de contrle ce qui indique que lerreur est faite sur la k e composanted . Puisquon travaille dans Fn , il suft de 2 rajouter au message reu le k e vecteur de la base canonique de Fn : 2
{ B: [1,0(n-1)]; r: (mess, (H)); corr: m%2+ (B,-r+1)%2;corr: corr%0; (m+" doit tre corrig en "+corr);
Le programme complet est donc :
Hamming(n,g,m): {
h,g,x,L,H,j,mess,B,r,corr; ((m) n) ("Le message nest { h(x): ((x^n+1,g(x))%2); L: (h(x)*x^(n-1 (h(x)))); H: ; (j: 0;j<n- (h(x));j++){ H: H, (L,-j)};
H: [H]; mess: H*m%2; (mess [0(n (h(x)))]%2) { (m+"est bien un mot de code");
d Le code de Hamming est 1-correcteur
de la bonne taille.");
254
{ 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 tre corrig 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 efcace que notre premier algorithme.
Pour plus de dtails sur les dveloppements mathmatiques, vous pourrez par exemple tudiere . Nous ne ferons ici quvoquer certains rsultats. Notre objectif est de crer une procdure donnant un polynme gnrateur dun code cyclique en xant 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 (quon notera GF(2,m)) est isomorphe F2/P(X) avec P(X) un polynme irrductible sur GF(2,m), de degr m). Une tude pousse sur les corps nis permet de conclure quun polynme gnrateur sera de la forme PPCM(1 (X), 3 (X), , 2t 1 (X)) avec k (X) le polynme minimal de k , tant un lment 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){
255
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 les lments de la classe cyclotomique de k :
poly_min(cycle,alpha): { r,k; r: 1; (k: 0;k<(cycle);k++){ r: r*(x-alpha^(cycle[k]%0)) }; (r) }
On ajoute simplifier pour plus de lisibilit. Cependant, pour pouvoir utiliser cette procdure, il faut connatre . Pour cela, on va construire GF(2,m) grce (caractristique,longueur,options). Par exemple, avec :
K: (2,5,[x,K]);
on obtient :
Rponse du logiciel GF(2,x^5+x^3+1,[x,K],undef)
qui indique que le polynme irrductible et primitif utilis est X 5 + X 3 + 1. On va utiliser comme lment primitif gnrateur de GF(2,5) x, qui est dsign par K(x) :
poly_min(cyclo(3,5),K(x))
renvoie :
Rponse du logiciel x^5+x^3+x^2+x+K(1)
256
et :
gen(3,5)
renvoie :
Rponse du logiciel x^15+x^14+x^13+x^12+x^10+x^8+x^7+x^6+x^5+x^4+K(1) % 2
On peut alors crer une matrice de contrle assez rapidement. Le problme sera de corriger lerreur... Pour des codes 1-correcteurs, notre procdure Hamming suft. On construit un polynme gnrateur dun code de Hamming grce gen(1,longueur). Pour obtenir des capacits de correction plus grande, mieux vaut se tourner vers les codes de Reed-Solomon que nous ne dvelopperons pas ici. Une procdure concernant ces codes existe dans les exemples fournis par votre distribution XCAS dans Exemples->Poly->reed_sol.xws.
257
Notions informatiques : Nous traiterons un problme qui semblerait plutt adapt un langage fonctionnel comme Caml mais qui peut cependant tre galement trait par XCAS. Nous verrons aussi comment tracer des surfaces dnies implicitement. Problmatique : On va chercher donner une quation dun polygone rgulier de R2 dni normalement laide dun systme dingalits. Pour cela on dnira une varit de R3 dont la projection sur R2 est le polygone. Ce problme est inspir dun sujet de lpreuve de modlisation de lagrgation externe, session 2006.
Commenons par descendre dune dimension pour poser le problme. La demi-droite de R dnie par lingalit x 0 peut tre galement caractrise comme tant la projection sur R de la parabole de R2 dquation x = t 2 . Le problme que nous traiterons ici concernera les polygones rguliers de R2 que nous pouvons facilement dnir ainsi, avec les b i des polynmes : S = (x, y, z) R3 , b1 (x, y, z) 0, . . . , b n (x, y, z) 0
Il sagit donc densembles semi-algbriques comparer aux ensembles algbriques qui sont des ensembles des zros dun systme dquations polynomiales. Il est souvent peu pratique de travailler avec des ensembles semi-algbriques, au moins informatiquement parlant, puisquil faut tenir compte de n conditions. Nous admettrons alors le rsultat suivant :
(x, y, z) S :t R, P(x, y, z, t ) = 0
Notre problme sera donc de trouver de tels polynmes, de tracer la surface dquation implicite P(x, y, z, t ) = 0 et de la projeter correctement pour voir le polygone.
Soit n un entier naturel non nula et k 0 ; n . On fabrique une suite de polynmes de la manire suivante :
P1 (x1 , u) = u x1 X = (x1 , . . . , xn )
Pk+1(x1 , . . . , xk+1 , u) = Pk a1 (X), . . . , ak (X), u (x1 + + xk+1 )
2
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
P2 (x, y, u) = P1 x y, u (x + y)
= u (x + y) x y
a(k,x): x[k+1]*(x[j],j,1,k)
Le problme vient surtout de cette dnition de polynmes qui dpendent dun nombre variable dindtermines et dont la dnition est triplement rcurrente puisquelle dpend du polynme dordre infrieur, mais aussi dautres polynmes, les ak et de la somme des indtermines qui dpend aussi de k. Un mathmaticien un peu informaticien voit ici des fonctions de fonctions et pencherait vers un langage fonctionnel tel que Caml. Cest une manire naturelle de voir les choses, mais peu efcace avec un langage impratif comme celui utilis par XCAS. Il faut donc apprendre rchir autrement et voir un programme impratif comme un casier tiroirs dont on peut volont modier le contenu en gardant une mme structure. Et pour changer le contenu des tiroirs, on utilise (Expression,ancien,nouveau)b . Par exemple, crons une expression :
L: a+b-c*d
et remplaons b par 2 :
b a Dans le cas qui nous intresse, n = 3.
a dautres proprits comme par exemple les changements de variables dans les intgrales.
260
L:
(L,b,2)
qui pourrait se lire : dans L, on remplace b par 2 . On peut galement faire des substitutions plus 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 travailler sur des fonctions mais sur des expressions pour palier au problme du nombre variable... de variables. Voici le cur du programme :
nouveauzarguments: [ (a(j,x),j 1k),(u-(x[j],j,1,k+1))^2] indeterminees: [ (x[j],j 1k),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 ) (not nouveauzarguments) dans polytemp, et on recommence... Voici le programme complet :
ListePoly(n): { k,polytemp,nouveauzarguments,indeterminees,liste; polytemp: u-x[1]; liste: polytemp; (k: 1;k<n;k++){ nouveauzarguments: [ (a(j,x),j 1k),(u-(x[j],j,1,k+1))^2] indeterminees: [ (x[j],j 1k),u]; polytemp: (polytemp,indeterminees,nouveauzarguments); liste: liste,polytemp; } liste; }:;
Le problme, cest que nous navons pas un polynme, mais une liste de polynmes. Ainsi :
ListePoly(2)
renvoie :
Rponse du logiciel
Nous allons utiliser (Expression,Variable(s)) qui transforme une expression en fonction de la ou des variable(s).
P2:
( (ListePoly(2)[1],[x[1],x[2]],[x1,x2]),x1,x2,u)
261
Rponse du logiciel
(x1,x2,u)->(u-x1-x2)^2-x2*x1
et donc :
P2(x,y,t^2)
renvoie :
Rponse du logiciel
(t )2 x y
yx
Notre problme est de dnir 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 , donc le polygone est compris dans un disque. Ici, cela nous donne dj une ingalit : 1 x2 y 2 0
Observons un cas particulier. On peut considrer les cts deux deux. Par exemple appelons f 1 et f 2 les fonctions afnes dont les reprsentations graphiques sont respectivement d1 et d1 . On obtient facilement quil existe deux rels a et b tels que f 1 (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 y 2 2 2 (ax b) y 2 c y2 0 0 0
262
2i 2/n
d2 c
2i 1/n
d3 e
2i 3/n
d1 e
2i 0/n
d3 e
2i 4/n
c d2
d1 e
2i 5/n
Hexagone
Observons un autre cas particulier. Avec toujours autant dastuce, on peut caractriser le polygone par le systme :
(a x + b )2 y 2 (a x + b )2 y 2 x b 1 1 2 2 3 1 x 2 y 2 0
263
b1
2i 2/n
d2 b2
2i 1/n
d1 e d1
2i 0/n
d3 b3 e
2i 3/n
d2
b 2 e b 1
2i 4/n
Pentagone
Nous utiliserons la commande (point1,point2)d qui dtermine la droite passant par les points 1 et 2. Nous utiliserons galement (courbe,[x,y]) qui donne une quation de la courbe courbe. (egalite)[0] renvoie la partie droite dune galit. Enn, la commande La lecture du programme suivant devient alors limpide :
b( g ) : { B ; B : ; ( k : 1 ; k< g / 2 ; k++) { B[ k1] : ( ( ( ( ( * ( k1) * 2 * /g ) , ( * k * 2 * /g ) ) , [ x , y ] ) [ 0 ] ) ) ^2y^2 } ( g 2 0) { ( (B[ j ] , j 0g/21) ,1x^2y ^2) } { ( (B[ j ] , j 0 ( g / 2) 1) * ( x ( 2 * * ( g / 2) /g ) ) ,1x^2y^2) } }:;
Par exemple :
b(4)
donne :
d Il y a bien dautres syntaxes possibles.
264
Rponse du logiciel
v S = X R2 , b(X)
Vous pourrez prouver pendant vos temps libres quil existe un polynme P tel que 0, c(X) 0 :z R, P(b(v), c(v), z 2 ) = 0
et 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,z 05, 0.1, 0.1, 0.1)
265
(
(p2(b(6),z^2)),x -11,y -11,z 05, 0.1, 0.1, 0.1)
266
Pour obtenir la vue de dessus, on clique sur Menu3-dvue de dessus z=cst :
http://agreg.dnsalias.org/Textes/590.pdf
Vous comprendrez alors pourquoi nous avons construit une procdure pour trouver P2 alors quil aurait t plus simple de le dterminer la main : nous navons en effet explor que le cas particulier des polygones convexes rguliers.
267
Taches des animaux
Logiciel(s) abord(s) : Scilab
Notions informatiques : Modlisation rudimentaire dquations aux drives partielles par des diffrences nies
Problmatique : Le logiciel Scilab est adapt au calcul approch de systmes dynamiques faisant intervenir des drives partielles.
Le problme tudi ici est d une conjecture dveloppe par Alan Turing concernant la formation des taches sur le pelage des animaux. Le vritable processus biologique nest pas connu : voir le livre de Murraya . Le modle mathmatique est celui de deux hypothtiques substances chimiques A et B qui interagissent et se diffusent dans la peau de lembryon dun animal. un certain stade de dveloppement de lembryon, le processus est g et la concentration de lun des deux produits en un endroit donn dtermine la couleur de la peau ou des poils quand elle dpasse un certain seuil. Les concentrations notes A et B des deux produits dpendent du temps et de lespace (bidimensionnel). Lvolution est conditionne par le systme A t B t = + DA A
F(A, B)
G(A, B)
DB B
Les fonctions F et G dcrivent la cintique chimique. Les laplaciens reprsentent le phnomne de diffusion.
a M URRAY , J. D. Mathematical biology . Berlin: Springer, 1993.
Le laplacien est la divergence du gradient : cest un oprateur diffrentiel du second ordre. La divergence dun champ de vecteurs est la trace de lapplication linaire tangente ce champ.
Il est important que les deux coefcients de diffusion DA et DB soient diffrents et non nuls. Le calcul approch sera fait sous Scilab en reprsentant lespace par un maillage rectangulaire. Les concentrations A et B sont reprsentes par des matrices. Le laplacien est ralis sous 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 : un cylindre ferm.
Les donnes sont stockes dans des chiers. Il faut dabord rcuprer les matrices qui correspondent aux dix tapes.
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 (./A0,maille,maille)/1e2 (./A1,maille,maille)/1e2 (./A2,maille,maille)/1e2 (./A3,maille,maille)/1e2 (./A4,maille,maille)/1e2 (./A5,maille,maille)/1e2 (./A6,maille,maille)/1e2 (./A7,maille,maille)/1e2 (./A8,maille,maille)/1e2 (./A9,maille,maille)/1e2 (./B0,maille,maille)/1e2 (./B1,maille,maille)/1e2 (./B2,maille,maille)/1e2 (./B3,maille,maille)/1e2 (./B4,maille,maille)/1e2 (./B5,maille,maille)/1e2 (./B6,maille,maille)/1e2 (./B7,maille,maille)/1e2 (./B8,maille,maille)/1e2 (./B9,maille,maille)/1e2 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
270
Les matrices Ai reprsentent les concentrations en produit A la date i . On dnit les coordonnes des noeuds de la grille.
xx 1:S yy xx
La palette des couleurs est rduite pour des vidoprojections en toutes conditions, et pour mettre en valeur leffet de seuil.
("colormap", (32))
r g b h [0;1]; [0;1]; [1;0]; [r g b];
("colormap",h) (xx,yy,A0)
On afche la deuxime donne aprs une demi-seconde.
Attention ! Certains interprteurs de commandes (Shell) des systmes Linux sont malheureusement franciss pour les donnes numriques, ce qui oblige soit changer les dures 0.5 en 0,5, soit changer une variable denvironnement linguistique. . .
On aurait pu construire une boucle itrative pour toutes ces oprations rptitives, mais pour un lm 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
(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 en produit B. La matrice h des couleurs est dja xe.
()
// couleurs
("colormap", (32))
Il ne reste plus qu y placer le lm 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
272
0.5)
lap(A)
Le laplacien discret appliqu une matrice carre A est construit de manire traditionnelle.
D s (A)
DA DB k1 k2 k3 k4 1 2 .1 .02 .03 .04
tt s(1) t tt-1 TT s(2) T TT-1 j (t,t) z (t,1) kk [z,0;j,z] m 2* (tt,tt)-kk-kk J (T,T) Z (T,1) KK [Z,0;J,Z] M 2* (TT,TT)-KK-KK D m*A+A*M
La fonction qui contient le systme dynamique sappelle champ. Lquation dvolution est considre comme une quation diffrentielle ordinaire en le temps t . La partie spatiale de lvolution est contenue dans la fonction champ et la dimension des matrices.
; 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
Les conditions initiales sont dabord initialises par une rpartition spatiale alatoire.
t 0:.01:.13 ; t0 0 ; maille 10 y0 0.00001* (2*maille,maille) ;
La premire photographie de la situation est calcule. Les dimensions S et T sont dnies par commodit.
y T S
Les autres tapes sont enregistres. La facilit dutilisation de lditeur de texte Emacs nous a dissuad de construire une boucle. . .
y2 (Y1,t0,t, Y2 y2(:,T-S+1:T) A2 Y2(1:S,:) B2 Y2(S+1:2*S,:) (./A2,A2) (./B2,B2) y3 (Y2,t0,t, Y3 y3(:,T-S+1:T) A3 Y3(1:S,:) B3 Y3(S+1:2*S,:) (./A3,A3) (./B3,B3) y4 (Y3,t0,t, Y4 y4(:,T-S+1:T) A4 Y4(1:S,:) B4 Y4(S+1:2*S,:) (./A4,A4)
274
(./B4,B4)
y5 (Y4,t0,t, Y5 y5(:,T-S+1:T) A5 Y5(1:S,:) B5 Y5(S+1:2*S,:) (./A5,A5) (./B5,B5) y6 (Y5,t0,t, Y6 y6(:,T-S+1:T) A6 Y6(1:S,:) B6 Y6(S+1:2*S,:) (./A6,A6) (./B6,B6) y7 (Y6,t0,t, Y7 y7(:,T-S+1:T) A7 Y7(1:S,:) B7 Y7(S+1:2*S,:) (./A7,A7) (./B7,B7) y8 (Y7,t0,t, Y8 y8(:,T-S+1:T) A8 Y8(1:S,:) B8 Y8(S+1:2*S,:) (./A8,A8) (./B8,B8) y9 (Y8,t0,t, Y9 y9(:,T-S+1:T) A9 Y9(1:S,:) B9 Y9(S+1:2*S,:) (./A9,A9) (./B9,B9)
Les chiers sont prts pour lafchage (voir section 11.2). Si des chiers Ai,Bi sont dja enregistrs, il est bon de les effacer par la commande :
(rm
A[0-9] B[0-9])
275
D s (A)
lap(A)
tt s(1) t tt-1 TT s(2) T TT-1 j (t,t) z (t,1) k [z,1;j,z] l 2* (tt,tt)-k-k J (T,T) Z (T,1) K [Z,1;J,Z] L 2* (TT,TT)-K-K D l*A+A*L
Le reste du programme est le mme. Lafchage de la concentration nale B donne des valeurs moins leves.
276
La dnition du laplacien sur un cylindre est intermdiaire entre le cas du rectangle et celui du tore.
D s (A)
lap(A)
tt s(1) t tt-1 TT s(2) T TT-1 j (t,t) z (t,1) k [z,1;j,z] l 2* (tt,tt)-k-k J (T,T) Z (T,1) KK [Z,0;J,Z] M 2* (TT,TT)-KK-KK D l*A+A*M
Les donnes sont modies pour rapprocher les deux coefcients de diffusion.
DA 1 DB 1.00001 k1 .0002
277
k2 .0002 k3 0.0002 k4 .0002
Le reste du programme est similaire aux autres cas. Lafchage de la concentration nale B montre une gure nettement diffrente.
278
Quatrime partie
ANNEXES
Tableaux comparatifs
Logiciel
Bc Maxima MuPAD Octave PARI/Gp Scilab Yacas XCAS GnuPlot
Licence GPL GPL commerciale GPL GPL Scilab GPL GPL GPL
Site internet
http://www.gnu.org/software/bc/manual/bc.html http://maxima.sourceforge.net http://www.mupad.de http://www.octave.org http://pari.math.u-bordeaux.fr/ http://www.scilab.fr http://yacas.sourceforge.net http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html http://www.gnuplot.info/
Sites de tlchargement
Logiciel Maxima PARI/Gp Yacas XCAS
Fichier de conguration
/.wxMaxima /.gprc /yacas/yacasinit.ys /.xcasrc
Logiciel Maxima MuPAD Octave PARI/Gp Scilab Yacas XCAS set[1,2] %{1,2%}
Ensemble
[1, 2] {1, 2}
Liste
[1, 2] [1, 2] [1 2] [1,2] [1 2] {1,2} [1,2]
Matrice
matrix([1,2], [3,4]) matrix([[1, 2], [3, 4]]) [1 2;3 4] [1,2 ; 3,4] A=[1 2;3 4] {1,2},{3,4}} [[1,2],[3,4]] matrix(2,2,(j,k)->j+k)
quation
x=0 x=0 x=0 x=0 x=0 x==0 x=0
length(l)
l[2]
l[2][1]
size(l)
True
0 true true 0 %t True 0
False
1 false false 1 %f False 1
And
&& and and && & MathAnd and &&
Or
|| or or || or MathOr or ||
Not
! not not ! not MathNot !
Equal
== = = == = == Equals ==
Not equal
# <>
<>
!=
Oprateurs boolens
282
Assignement
y=3 y:3; y:= 3; y=3;
Dnition de fonctions
define f(x,y) {return(x*y);} f(x, y):= x*y; f:= proc(x, y) function f(x,y) x*y endfunction begin x*y end_ proc;
PARI/Gp Scilab
y=3 y=3;
Yacas XCAS
y:=3; y:=3
Function(f,x,y)[x*y;]; f(x,y):={x*y }
If+then+else
if(test) ...;...; if test then ... else if test then ... else ... if test then ... elif test then ... else ... end_if if (test) ... else ... endif if(test,...,...) if test then, ..., else, ..., end if(test)..else... if(test)...; else ...; si(test)...; sinon ...; si test alors ...; sinon ...; fsi
Test if...then...else
283
Logiciel Bc Maxima MuPAD Octave PARI/Gp Scilab Yacas XCAS
Boucle for
for(i=1;i<=n;n=n+1){x;y;} for i:1 thru n do (x, y); for i from 1 to n do x; y end_for; for j=1:n x;y; endfor for(j=1,n,action) for k=1..n, x,end ForEach(j,1..n)[x;y;] for (k:=1;k<=n;k++)x;y; pour(k:=1;k<=n;k++)x;y; pour n de 1 jusque n pas 1 faire x; y; fpour
Boucle for
Logiciel Maxima MuPAD Octave PARI/Gp Scilab Yacas XCAS
e
%e E e exp(1) %e Exp(1) e
i
%i I i I %i I i
+
inf infinity
2
sqrt(2) sqrt(2) sqrt(2) sqrt(2) sqrt(2)
21/3
2(1/3) 2(1/3) 2(1/3) 2(1/3) 2(1/3) 2(1/3) 2(1/3)
Infinity infinity
284
ln
l(x) log(x) ln(x) log(x) log(x) log(x) Ln(x)
Arctan
a(x) atan(x) atan(x) atan(x) atan(x) atan(x) ArcTan(x)
n!
n! n! prod(1:n) n! factorial(n) n!
n mod m
mod(n, m) n mod m mod(n,m) n%m, Mod(n,m) modulo(n,m), pmodulo(n,m) Mod(n,m) n mod m, m%n
Calcul modulaire
Partie relle
realpart(f(z)) Re(f(z)) real(z)
285
Somme :
i=1
f (i )
sum(k=1,n,f(k))
Calcul de sommes
f(x)
Calcul de limites
Calcul diffrentiel :
d 3 f (x, y) d x3
Intgration :
0
f (x) d x
deriv(f(x),x) intg(0,1,f) D(x,3) f(x,y) diff(f(x, y), x$3) Integrate(x,0,1) f(x) int(f(x), x = 0..1)
286
Graphe 2D
plot(x, x, 0, 1)$ plot(acsch(x), x, 0, 1)$
Graphe 2D
Graphe 3D
plot3d(abs(x*y), x, 0, 1, y, 0, 1)$ plotfunc(abs(x*y), x = 0..1, y = 0..1):
Graphe 3D
287
Bibliographie
A BDELJAOUAD , Mahdi: lments de Gomtrie du Plan . Tunis: Association Tunisienne des Sciences Mathmatiques, 2000 A MYOTTE , Luc: Introduction au calcul avanc et ses applications en sciences . Qubec: ERPI, 2004 A PPEL , Walter: Mathmatiques pour la physique et les physiciens. Paris: H&K, 2005 B ADRIKIAN , Josphe: Mathmatiques pour tlinformatique : codes correcteurs. Paris: Ellipses, 2002 B EL ABAS , Karim: Site ofciel de PARI/GP . URL: http://pari.math.u-bordeaux.fr/ B ELLOC , J.C./T HUILLIER , P.: Mathmatiques analyse 3 . Paris: Dunod, 2004 B RUGRE , Thierry/M OLL ARD , Alain: Mathmatiques lusage des informaticiens. Paris: Ellipses, 2003 C ONNAN , Guillaume/R OUQUS , Jean-Philippe: Le simulateur de khlles de maths . Paris: Ellipses, 2002 D AL ANG , Robert C./C HAABOUNI , Amel: Algbre linaire . Lausanne: Presses polytechniques et universitaires romandes, 2001, 127137 INRIA : Site ofciel de Scilab . URL: http://www.scilab.fr I VALDI , Philippe: ressources Asymptote . URL: http://piprim.tuxfamily.org/ asymptote/travaux/index.html L E F UR , Denis: ressources Gnuplot . URL: http://mathsp.tuxfamily.org/spip.php? rubrique39 M ARLE , Charles-Michel/P ILIBOSSIAN , Philippe: Mthodes numriques itratives . Paris: Ellipses, 2006, 168185 M ONGE , M./AUDOIN - GOROFF , M.C./L MAIRE -B ODY, F.: Mathmatiques Terminales C et E . Paris: Belin, 1974 M URRAY , J. D.: Mathematical biology . Berlin: Springer, 1993, 372380 PARISSE , Bernard: Site ofciel de XCAS . URL: http://www-fourier.ujf-grenoble.fr/ ~parisse/irem.html R OUQUS , Jean-Philippe/D OMINGUEZ , Sophie: Leons particulires - Cours de Maths . Paris: Ellipses, 2002, 316328 S ORTAIS , Yvonne/S ORTAIS , Ren: La gomtrie du triangle . Paris: Hermann, 1987, 1621
T ENENBAUM , Grald/M ENDS F RANCE , Michel: Les nombres premiers . Paris: PUF, 1997 T HBAULT , Victor: Sur le tranchet dArchimde . Bulletin de la S.M.F. Tome 72 1944, 6875 W ESTER , Michael: Computer Algebra Systems: A Practical Guide . Chichester: John Wiley & Sons, 1999
290
Index gnral
ABBA, 83 Abscisse, 180 Afxes, 181, 197 Aire, 69, 70 Algbre de Boole, 185 Alignement de points, 189 Amplitude, 105 Analyse en composantes principales, 106 Animation, 103 Approximation, 165 Approximation afne, ix, 163 Approximation numrique, 55 Arrter une boucle, 103 ASCII, 35, 87 assume ou element ?, 72 Asymptote(programme), 26 awk(programme), 14 Axiome, 185 Baccalaurat, 120 Base, 85 Base 2, 248 Base canonique, 158 Base, changement de, vi, 48 Bc(programme), 3, 7, 8, 13, 23, 24, 45, 46, 48, 67, 281285 Bessel-Parseval, 228 Bote moustache, 100, 102 BSD, 7
C++(programme), 26, 31, 32 C-shell(programme), 14
Calcul formel, 183 Calcul matriciel, 75, 270 Calcul modulaire, 247 Caml(programme), 260
Centiles, 106 Cercle, 197 Cercle mdiateur, 195 Cercles tangents, 194 Chanes de Markov, vii Changement de variable, viii, 144 Chanes de Markov, 83 Chiffrement de Hill, 86 Chiffres signicatifs, 56 Classes cyclotomiques, 255 Code de Hamming, 247 Codes correcteurs, 247 Collge, 69 Commande externe, 16 Concatnation, 38 Condition dalignement, 190 Cne, 221 Congruences, vi, 49 Conique, 180 Coniques, 205 Contrapose, 186 Convergence dune suite, 174 Coordonnes barycentriques, x Coordonnes barycentriques, 189 Copier-coller, 14 Corps ni, 247, 255 Courbe de niveau, 133 Courbe paramtre, 197 Courbe reprsentative, 71, 164 Courbure, 118 Courbure de Gauss, 126 courbures(variable), 126 Cube, 94 CygWin(programme), 7 Cylindre, 270, 277
Date, 30 D, 99 Dcodage, 40 Dcomposition en lments simples, 140 Dmonstration, 180 Drive, 113 Drives partielles, 133, 135 Drives partielles, 125, 269 Dessins, 26 Dterminant, 77, 87, 190 Dveloppement limit, 116, 153 Diagramme de bifurcation, 203 Diffrentielle, 116 Dimension, 249, 273 Dimension dune matrice, 75 Directrice, x, 180, 214 Divergence, 270 Division euclidienne, 88 Droite, 180, 264 cart-type, 105 chantillon, 105 diter une commande, 13 diteur de programme, 31 diteur de texte, 3, 16 Effet papillon, 203 galit-dnition, 67 Ellipse, 211 Emacs(programme), 14, 16, 2729, 274 Enlever une colonne, 250 Ensemble, 58 Ensembles de nombres, 58 Entres-sorties standards, 30 Environnement, 17, 19 preuve experimentale, 173 quation aux drives partielles, 269 quation de courbe, 264 quation de droite, 92, 216 quation de plan, 91 quation diffrentielle ordinaire, 169, 273 quation implicite, 214, 260 quations diffrentielles ordinaires, 157 quations dpendant de paramtres, 58 Estimation derreur, ix, 165 tude mtrique, viii tude mtrique, 125 Euler-Mac Laurin, 150 Exponentielle matricielle, 160 Expression, 115, 261 Extremum, 133 Extremum relatif, 136 Fabrication de sons, xi, 238 Faux, 185 Fentre 3D, 93 Fichier eps, 21 Fichiers spciaux, 30 Figure, 20 Fink(programme), 7 Flottants, 58 Fonction, 115 Fonction dnie par morceaux, 230 Fonction drive, 115, 180 Fonction et expression, 69 Fonction exponentielle, 163 Format de lentre, 14, 15 Format double, 57 Format enjoliv, 14, 15 Forme algbrique, 197 Forme exacte, 55 Forme quadratique, 126, 208, 210 Foyer, x, 180, 214 Fraction rationnelle, 62, 140 Frquence, 105, 111 Galois, 247, 255 Gauss-Jordan, vii, 80 Gaussienne, 108 Gnrateur alatoire, viii Gnrateur alatoire, 105 Gomtrie dynamique, 173 giac(programme), 16, 26, 28 GnuPlot(programme), 3, 7, 8, 13, 20, 21, 23, 24, 26, 27, 30, 45, 47, 96, 281 Gp(programme), 3, 7, 8, 13, 15, 45, 49, 53, 61, 64, 67, 113, 116, 153, 154 GPL, 3 Gradient, 116, 133 Groupe de Lie, 157 Groupe spcial orthogonal, 157 Hauteur de casse, 14
292
Heure, 30 Histogramme, 102, 106108 Hyperbole, 215, 222 Image dune matrice, 78 Implication, 187 Incrmenter, 32 Index des commandes, 9 Intgration par parties, viii Interprteur de commande, 29 Intersection, 70, 121, 177, 216, 218, 219, 221 Intgrale, 139 Intgrales de Wallis, 147 Intgration par parties, 144 Inversion, 196 Involution, 186 Isocle, 95
Kile(programme), 16
Laplacien, 269, 276, 277 A LTEX(programme), 1518, 2023, 26 Lebesgue, 225 Lemme de Riemann-Lebesgue, 227 licence, 3 Ligne brise, ix Ligne brise, 163 Ligne de commande, 14 Lignes de niveaux, 96 Limite dune suite, 174 Linux, 7 Logiciels abords, v Logiciels abords, 2 Logiciels libres, 2 Logique, 185 Loi de Morgan, 185 Loi de rpartition, 108 Lyce, 69 MacOSX, 7 Manuel daide, 10 MAPLE(programme), 31 Matrice, 235, 241, 249, 254 Matrice antisymtrique, 157 Matrice compagne, 61 Matrice dendomorphisme, 78 Matrice de passage, 209
Matrice extraite, 241 Matrice hessienne, 116, 136 Matrice inverse, vii, 77, 79 Matrice transpose, 87 Maxima(programme), 3, 7, 8, 13, 14, 26, 28, 45, 49, 61, 62, 67, 75, 113, 114, 139141, 143, 153, 154, 157, 166, 169, 170, 281287 Mdiane, 103, 105 Mdiatrice, 218 Mesure de Lebesgue, 107 MetaPOST(programme), 22, 26 Mthode dEuler, ix Mthode dEuler, 162, 163 Mthode de Newton, 56 Mthode de Steffenson, 57 Mthode des rectangles, ix Mthode des rectangles, 148 Mode graphique, 3 Mode texte, 3 Mot-cl, 8 Moyenne, 100, 102 Moyenne arithmtique, 105 Moyenne gomtrique, 105 Moyenne harmonique, 105 Multiplicateur de Lagrange, viii, 132 MuPAD(programme), 3, 7, 26, 28, 31, 55, 58, 59, 139, 143, 146, 157, 167, 281287 Nappe paramtre, 119 Ngation, 186 Nombre driv, 115 Nombres p-adiques, 53, 64 Nombres premiers, 50 Nombres pseudo-premiers, 51 Non-contradiction, 185, 186 Normale, 108 Norme euclidienne, 75 Norme linaire, 75 Norme spectrale, 75 Notation scientique, 13 Noyau dune matrice, 78 Nuage de points, 105
Octave(programme), 3, 7, 8, 13, 45, 49, 67,
293
Oprande, 58 Oprations lmentaires sur les lignes dune matrice, 81 Orbite, 158 Ordonne, 180 Ordonne lorigine, 91, 105 Palette des couleurs, 271 Papier-crayon, 140 Parabole, 206, 218 Parallle, 70, 219 Paramtre, 70 PARI/Gp(programme), 26, 51, 52, 281287 Partie exponentielle, 13 Pente, 91, 105 Perl(programme), 14 Perpendiculaire, 70, 216, 218, 219 Phnomne de Gibbs, 233 Plan, 221 Point, 69 Point xe attractif, 202 Point xe rpulsif, 202 Points critiques, 136 Polices, 26 Polygone, xi, 259, 260, 262 Polynme de Taylor, ix Polynme, 61, 253, 260 Polynme caractristique, 78, 85 Polynme de Taylor, 155 Polynme driv, 61 Polynme irrductible, 255 Polynme minimal, 255 Polynme quotient, 253 PPCM, 255 Primitive, 139 Procdure, ix Procdure, 164 Procdure rcursive, 33, 39 Produit scalaire, 75, 116, 181, 217 Produit tensoriel, 75 Projecteur, vii, 78 Projection, 214 Propritaire, 3 Prcision, 45 Prcision dun calcul, 56 Prdicat, 185 Pseudosphre, 127 PStricks(programme), 26 Puissance dun point par rapport un cercle, 193 Puissance de matrice, vii, 79 Quantiles, 106 Quartiles, 106 Racine dun polynme, 141 Racines, 61 Rajouter une ligne, 250 Rang dune matrice, 75, 209 Rectangle, 70 Rcurrence, 178 Rcursion, 51 Rduction dendomorphisme, vii Rduction dendomorphisme, 76 rel, 55 Rpartition, 105, 107, 108 Reprsentation paramtrique, 197, 210 Rsolution de systmes non-linaires, 189 Rotationnel, 116 RSA, 40
Scilab(programme), 3, 7, 8, 1315, 30, 31,
41, 45, 49, 61, 62, 67, 7275, 77, 91, 98, 99, 105, 106, 109, 113, 114, 116, 125, 139, 142, 150, 157, 235, 238, 239, 241, 269, 270, 281287 Sections planes de surfaces, 220 sed(programme), 14 Sries de Fourier, xi Sries entires, 153 Session 2D, 92 Shell(programme), 8, 16, 26, 28, 30, 271 Simulation dexprience alatoire, viii Simulation dexprience alatoire, 99 Solutions dune quation, 55 Somme, 249 Souris, 70 Sous-espace afne, 105 Sous-espace propre, 85 Sous-espace vectoriel engendr, 86 ssh(programme), 3 Style de gure, 22
294
Subdivision, ix, 162, 163 Suites rcurrentes, 201 Surface, 96 Syldavie, 203 Symtrie orthogonale, 92 Syntaxe, 2, 37 Syracuse, suite de, 37 Systme dquations linaires, vii Systme dquations linaires, 76 Systme linaire, 59 Tableaux, 241 Tangente, 180, 212, 215 Tant que, 164 Tautologie, 185 Terminale, 163 Test boolen, 216 Test darrt, 33, 39 TeXmacs(programme), 26, 27 TeXmaker(programme), 16 Thorme de Mnlas, x Thorme de Mnlas, 190 Thorme de Pappus, 195 Thorme des nombres premiers, 50 Tiers exclu, 185, 186 Tikz(programme), 26 Tore, xii, 270, 276 Torsion, 118 Tortue XCAS, 37 Trace, 270 Tractrice, 127 Transforme de Laplace, 169 Triangle rectangle, 69 Trier, 250 Tubage de processus, 29 Turing, Alan, 269 Valeur moyenne, 227 Valeur propre, 85 Variables complexes, 55 Variance, 105 Varit, 259 Vecteur, 181 Vecteur colonne, 75 Vecteur ligne, 75 Vecteur unitaire, 86 Vecteurs propres, 76 Vrai, 185
Windows Microsoft(programme), 16 XCAS(programme), xiii, 3, 79, 13, 1518, 20,
26, 28, 31, 3436, 39, 45, 49, 5153, 5557, 61, 63, 64, 6769, 75, 81, 83, 88, 91, 95, 99, 113115, 136, 139, 143, 145, 146, 148150, 153, 157, 165, 166, 169, 170, 173, 176, 179182, 184, 189, 191, 192, 194, 196, 197, 199, 205, 210, 216, 217, 222, 225, 227, 247, 249, 257, 259, 260, 281287
Yacas(programme), 3, 7, 8, 13, 15, 26, 28, 45,
49, 61, 65, 67, 73, 113, 116, 139, 153, 185, 187, 281287 Zrjdz, 200
295
Bc
a, 45 auto, 24 define, 24, 72 for, 24 ibase, 48, 48, 49 l, 45, 72 obase, 48, 49 print, 24 quit, 24, 49 return, 72 scale, 24, 45, 45 temp, 24
GnuPlot
border, 24 clabel, 96 cntrparam, 96 color, 21, 22, 24 contour, 96 eps, 21, 24 exit, 24 exp, 24 graph, 24 hidden3d, 21, 22 isosamples, 21, 21, 22, 97 label, 24, 98 left, 24, 98 linetype, 24 nopoint, 24 norotate, 24 output, 21, 22 plot, 24 postscript, 21, 24 print, 47, 48
quit, 21, 22 replot, 24 set, 21, 22, 24, 9698 sin, 21, 22 size, 24, 97 splot, 21, 22, 98 sqrt, 21, 22 surface, 96 term, 24 terminal, 21, 22 textcolor, 24 title, 24 using, 24 view, 97 with, 98 xlabel, 24, 97 xrange, 24, 97 xtics, 97 ylabel, 24, 97 yrange, 24, 97 ytics, 97 zlabel, 97 ztics, 97
Gp
\p, 46 atan, 46 cos, 153 deriv, 64, 116 exp, 116, 153 log, 67 Mod, 49 Pi, 46, 153 polroots, 64 sqrt, 53
A LTEX
MuPAD
begin, 3740 DOM_SET, 58 else, 39 end, 38 for, 38, 40 from, 38, 40 if, 39 in, 59 intersect, 39, 59 intlib::byparts, 147 minus, 39 proc, 3740 step, 38, 40 substring, 40 then, 39 to, 38, 40 union, 39 while, 39
Maxima
:=, 67 ^^, 78 ASINH, 140 bfloat, 46, 46, 68 charpoly, 78, 78 cos, 154 cosh, 169 determinant, 77 diff, 62, 114, 114, 166, 169 DISPLAY2D:FALSE, 14 DISPLAY2D:FALSE;, 14 DISPLAY2D:TRUE, 14 eigenvalues, 78, 78 exp, 114, 154, 169 FALSE, 49 float, 68, 154 fpprec, 46, 46 ilt, 169, 170 integrate, 139141, 170 invert, 77 laplace, 169, 170 laplace(f(x),x,p), 169 log, 67, 140, 142 matrix, 77, 77 mod, 49 MODULUS, 49 ode2, 166 partfrac, 140, 141 plot2d, 154 positive, 141 ratsubst, 154 realpart, 141 rhs, 140 romberg, 141 sin, 139, 142, 170 solve, 62, 78, 140 sqrt, 140 tan, 140 taylor, 154
Octave
daspk, 161 endfunction, 74 eye, 77 function, 74 inv, 77 log, 74 lsode, 161 pinv, 77 poly, 77, 77 rand, 77 rank, 77 roots, 77 schur, 77 size, 77
Scilab
*, 73 .*, 73 .*., 75 %io(1), 30 %io(2), 30 abs, 273 atanh, 127 champ, 273275 companion, 61
298
cos, 117, 157, 161 deff, 119 derivat, 61 derivative, 113, 116118, 120 det, 62, 126, 127 disp, 41, 246 else, 41, 236239, 242 end, 41, 110, 111, 113, 123, 128, 159, matrix, 111 max, 244 mean, 105 median, 105 min, 237, 242 modulo, 49, 236, 237 nfreq, 106, 109 norm, 75, 76, 116118, 126, 159, 161 ode, 157, 158, 160, 274, 275 ones, 241, 273 param3d, 117, 123, 124, 158 param3d1, 158, 159 perctl, 106, 107 pinv, 126 plot, 73, 105, 107, 109, 113, 157, 160 plot3d1, 271273 plot3d3, 121, 121, 123 pmodulo, 49, 235, 236, 242 poly, 14, 61, 76 quart, 106 rand, 76, 105, 106, 108, 157, 274 rank, 75 read, 270 reglin, 91, 105 roots, 61, 76 rot(g,x), 117 savewave, 239 schur, 76 sci2exp, 14 sin, 14, 117, 238 size, 75, 128, 235238, 273, 274, 276,
235240, 242246
endfunction, 41, 72, 73, 113, 116123,
126128, 150, 157, 160, 235245, 273, 276, 277 evstr, 242245 exec, 41 execstr, 245 exp, 73, 109, 113, 239 expm, 73, 159, 160 eye, 62, 76, 273, 276, 277 floor, 242 for, 41, 110, 111, 113, 123, 128, 159, 235238, 240, 242245 format, 150 fplot2d, 119 fplot3d, 120, 120, 121, 121, 122, 123, 124 fplot3d1, 120, 121, 123 freq, 111 fsolve, 123 function, 41, 72, 73, 113, 116123, 125128, 150, 157, 160, 235245, 273, 276, 277 geomean, 105 graycolormap, 271, 272 gsort, 107 harmean, 105 hist3d, 111 histplot, 108 if, 41, 41, 236239, 242244, 246 intg, 142, 150 inv, 76 kernel, 76 linsolve, 76 list, 158, 159 list(), 159 log, 72, 73, 239 ls, 30
277
sort, 106 spec, 62, 76, 126 sqrt, 109, 119, 126, 127, 150 stdev, 105 strange, 106 string, 30, 41, 238, 240 sum, 111, 236, 242, 244 tabul, 106, 109, 109, 110, 111 tangent, 120, 125, 126 tanh, 239 then, 41, 236239, 242244, 246 trace, 127 unix_g, 30 unix_w, 30
299
variance, 105 while, 246 write, 30, 238, 274, 275 xbasc, 157, 158, 160 xinit, 106108, 111, 120, 121, 123, 128,
219, 221
blockmatrix, 250, 250, 252 blue, 228, 230, 232 break, 103 cat, 16, 35 cercle, 192, 194197 char, 35, 35, 36, 87, 87 charpoly, 85, 85 Cmplx_var, 55, 56 col, 85, 85, 209, 209 color, 134, 155, 156, 222, 228, 230, 232 Complex, 56 concat, 34, 35, 209, 230, 248, 251, 251,
Shell
-l, 67 bc -l, 72 info, 8 lynx, 8 man, 8 read, 30 xdvi, 8
252
cone, 221, 222 conique, 210, 215, 217 contourplot, 134, 135 convert, 154, 155, 248, 248 coordonnees, 95 cos, 34, 145, 146, 148, 154, 155, 217, 227,
XCAS
:=, 250 =<, 250 chaine, 35 abs, 56, 227 abscisse, 180, 180, 190, 195, 196, 216,
216, 217, 218 affichage, 95, 148, 175, 176 affixe, 181, 197 aire, 70, 95 alors, 36, 174, 190 and, 101, 179, 180, 229 angle, 93 animation, 103, 103 ans, 16, 115, 178 apply, 8789 approx, 56 asc, 35, 36, 87, 87 assume, 55, 72, 72, 94, 179, 180, 211, 213, 226, 231 atan, 46 augment, 80, 80, 250, 252 avance, 37 barycentre, 194 begin, 16 bissectrice, 219 bleu, 71, 101, 102, 104, 148, 155, 156, 162, 175, 178, 192, 195, 212215,
148, 162, 175, 178, 192, 194, 195, 210, 212216, 218, 219, 221, 222, 228, 228, 230 count_eq, 100 courbe_parametrique, 197 cyan, 52, 93, 134, 148, 212, 213, 221, 222 degree, 254 delcols, 250, 252 derive, 115 desolve, 20, 161, 162 det, 79, 87, 137, 190192, 209 diff, 63, 69, 69, 114, 114, 115, 133, 136, 136, 137, 145, 170, 211 DIGITS, 46, 57 Digits, 46, 46, 56, 56, 150 droite, 70, 72, 92, 93, 104, 180, 180, 181, 196, 197, 212214, 216219, 264, 264 dsolve, 162 e, 215 egv, 85, 85 eigenvals, 85, 85 eigenvalues, 209
300
eigenvectors, 209 element, 70, 70, 72, 72, 93, 95, 148, 148, infinity, 179, 227 int, 52, 53, 143145, 147, 150, 229231 integer, 226, 231 integrate, 143, 170 inter, 93, 193, 195, 196, 221, 222 inter_droite, 216 inter_unique, 70, 181 interactive_plotode, 162 intersect, 34 inv, 79, 83, 83, 88 inversion, 196, 197 iquo, 248 irem, 50, 50, 88, 88, 89, 248 is_prime, 51 isprime, 52 ispseudoprime, 52 jaune, 70, 101, 102, 218, 219 jusque, 36, 175, 176 k,T,j, 81 ker, 78, 85, 85 laplace, 144, 170 latex, 16, 17 lieu, 218 limit, 212, 227 limite, 9, 179 list2mat, 87, 87, 88, 251, 251, 252 ln, 52, 53, 55, 57, 68, 115, 144, 145, 149,
155, 162, 182, 192, 194, 201, 213, 213, 214216, 216, 218, 221, 222 else, 103, 104, 196, 214, 250255, 264 end, 16 equation, 93, 196, 216, 216, 221, 222, 264, 264 evalb, 216, 216, 218 evalc, 197 evalf, 46, 52, 53, 56, 57, 68, 100, 102, 104, 149151, 166, 229, 265, 266 exact, 221, 221 exp, 57, 114, 115, 154, 166, 170, 264 expr, 35 faire, 36, 37, 164, 165, 175, 176 fclose, 16, 17 floor, 104, 155, 155, 156, 203, 251, 252, 264 fonction_derivee, 69, 115 fopen, 16, 17 for, 32, 35, 51, 100, 101, 103, 148, 151, 162, 196, 197, 203, 230, 231, 249252, 254, 256, 261, 264 fpour, 36, 175, 176 fprint, 16, 17 fsi, 36, 174, 190 fsolve, 196 ftantque, 36, 37, 164, 165 funcplot, 134 GF, 256, 256, 257 grad, 133, 133 graphe, 71, 71, 175, 178 head, 102, 102 hessian, 136, 136, 137 histogram, 102, 102 i, 92, 190, 264 ibpdv, 144, 144, 145, 146 id, 68, 115 idn, 80, 85 if, 33, 51, 103, 104, 196, 214, 248252, 254, 264 ilaplace, 170, 170 image, 79 implicitplot, 134, 135, 265 in, 16
156
local, 32, 33, 35, 56, 100, 101, 103, 148,
151, 162, 175177, 197, 200, 203, 214, 230232, 248, 251, 252, 254257, 261, 264 longueur, 93, 94, 193, 196 longueur2, 214, 214 magenta, 194, 212, 213, 216, 218, 219 map, 34 mat2list, 88, 89, 101 mean, 100, 100, 102, 104 median, 104 mediatrice, 218 member, 249, 249, 250, 252, 254, 255 mid, 35 milieu, 93 min, 251 minus, 34 mod, 103, 250, 252, 264
301
moustache, 100, 101, 102, 104 moyenne, 102, 104 mRow, 81 mRowAdd, 81, 81, 82 ncols, 80, 249, 251, 252 nDeriv, 115, 115 newton, 56 nextprime, 51, 51 nInt, 149 nops, 252, 254, 256 normalize, 209, 209 nrows, 82, 249, 251, 252 NULL, 34, 100, 101, 103, 148, 162, 164, print, 101, 102, 102, 104, 104, 250252,
254
product, 257, 264 projection, 214 proot, 64 purge, 192, 196 q2a, 208, 208, 209 quo, 253, 254 rand, 99, 99, 100, 101 randpoly, 63 rank, 209 ranm, 100, 100, 101, 103 re, 55 read, 16, 17 rectangle_droit, 148 rectangle_gauche, 148 remove, 34 rempli, 70, 93, 95, 101, 102, 104, 134,
165, 175, 195197, 249, 252, 254, 264 op, 248, 250, 252 ordonnee, 180, 180, 190, 195, 196, 216, 216, 217, 218 parallele, 70, 70, 219 parameq, 197, 197 partfrac, 143 pas, 36, 52, 104, 175, 176, 190, 251, 252, 254 perpendiculaire, 70, 72, 216, 216, 218, 219 pi, 53, 143, 216, 221, 222, 229, 264 plan, 221, 222 plot, 20, 52, 95, 148, 155, 156, 162, 230 plotarea, 148, 148 plotfunc, 134, 212, 213, 225, 228, 232 plotimplicit, 214, 214, 222, 222, 265, 266 plotode, 162 plotseq, 176, 176, 201, 201, 202 point, 52, 6972, 9295, 148, 162, 163, 164166, 175, 176, 180, 181, 190, 192, 194197, 203, 212214, 216218 point_milieu, 148 poly2symb, 85, 85 polygone, 70, 70, 148 polygone_ouvert, 164 pour, 36, 36, 92, 104, 175, 176, 200, 215, 229 preval, 144, 145, 147
177, 190, 196, 197, 203, 214, 215, 230, 231, 248, 251255, 261, 264 right, 216, 264, 264 romberg, 143 roots, 63 rotate, 254, 254, 255 rouge, 93, 148, 162, 175, 176, 194, 214, 216, 218, 219, 221, 222 rowspace, 86, 86 scalar_product, 181, 217 segment, 93, 95, 216, 219 select, 34 seq, 34, 34, 52, 53, 103, 147, 166, 166, 200, 201, 261 set, 33, 34 si, 36, 36, 174, 190 simplifier, 70, 177, 178, 182, 182, 256 simplify, 16, 79, 93, 94, 137, 155, 191, 209212, 216, 217, 229232, 257 sin, 68, 69, 115, 143, 145147, 170, 217, 231, 232 sinon, 36, 174, 190 size, 34, 35, 53, 248, 250, 252 solve, 55, 55, 56, 57, 79, 85, 93, 133, 136, 191, 192, 195, 201, 205, 221, 222
302
sort, 250, 250, 252 SortD, 102 sqrt, 56, 115, 143, 149, 150, 180, 181, ystep, 134, 135, 265, 266 zip, 34 zstep, 265, 266
Yacas
<=, 187 And, 185, 186, 186, 187 CanProve, 185, 185, 186, 187 Clear, 186 Cos, 153 Curl, 116 D, 65, 116 Exp, 116, 153 GetPrecision, 46 Integrate, 139 Ln, 73, 139 Mod, 49 N, 46, 47, 73, 139 Not, 185, 186, 186, 187 Or, 185, 186, 186 Pi, 47, 139 Precision, 47 PrettyForm, 15, 153 Psolve, 65 Sin, 139 Tan, 139 Taylor, 153
252, 255
xstep, 134, 135, 221, 222, 265, 266
303
MATHMATIQUES
PHYSIQUE
CHIMIE
SCIENCES DE LINGNIEUR
INFORMATIQUE
SCIENCES DE LA VIE
SCIENCES DE LA TERRE
ISBN 978-2-10-053934-5
www.dunod.com