Académique Documents
Professionnel 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
2
3
4
Gnralits
a. Public vis
b. Organisation
Pourquoi des logiciels libres ?
Liste des logiciels abords
Vive le calcul !
1
1
1
1
2
2
3
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
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
2.2 Obtenir des sorties compatibles avec le logiciel de typographie LATEX
a. LATEX et les calculs avec XCAS
b. LATEX et les sorties graphiques de XCAS
c. LATEX et GnuPlot
d. Combiner Bc, GnuPlot et LATEX
2.3 Utiliser des logiciels de calcul avec TeXmacs
2.4 Utiliser les logiciels de calcul en mode texte sous Emacs
2.5 Faire communiquer deux logiciels de calcul
5
7
7
7
7
8
8
8
8
9
13
13
13
13
14
15
15
18
20
23
26
27
29
a. Le copier-coller la souris
b. Communication via des fichiers
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
x premiers
1
b. La fonction Li :x
dt et les nombres premiers
2 ln t
4.6 Nombres p-adiques
C HAPITRE 5 : QUATIONS
5.1 Avec XCAS
vi
29
29
29
30
30
31
31
31
32
33
33
33
36
36
36
36
37
37
38
39
39
39
41
43
45
45
45
46
46
46
46
47
48
49
50
50
52
53
55
55
5.2 Avec MuPAD
C HAPITRE 6 : P OLYNMES
6.1
6.2
6.3
6.4
6.5
58
61
Avec Scilab
Avec Maxima
Avec XCAS
Avec Gp
Avec Yacas
61
62
63
64
65
C HAPITRE 7 : F ONCTIONS
67
7.1 Avec Gp
7.2 Avec Maxima
7.3 Avec XCAS
a. Cas gnral
b. Dfinir des fonction non numriques : un exemple en gomtrie en classe de
Seconde
7.4 Avec Bc
7.5 Avec Scilab
a. Cas gnral
b. valuation en rafale
7.6 Avec Yacas
7.7 Avec Octave
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
vii
Dans le plan
Dans lespace
b. Une activit de 2nde
9.3 Avec GnuPlot
92
93
95
96
C HAPITRE 10 : S TATISTIQUES
99
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
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
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
Avec Yacas
Avec Gp
Avec Maxima
Avec XCAS
a. Gnralits
b. Visualisation de lapproximation dune fonction par le polynme de Taylor
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
173
185
185
185
186
189
189
189
190
192
193
193
196
200
200
201
203
T HME 5 : C ONIQUES
205
y2
+ b2 = 1
x2
a2
y2
b2
b. Hyperbole dquation = 1
5.3 Ensemble des points M du plan tels que MF = eMH
5.4 Foyer et directrice dune conique
173
173
179
179
182
183
183
199
Modlisation
Observation chiffre
Observation graphique
Diagramme de bifurcation
a. Ellipse dquation
171
205
205
205
206
208
208
209
210
211
211
213
214
214
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
6.1 Exploration
6.2 Interprtation physique
6.3 Phnomne de Gibbs
225
228
229
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
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
xi
a. Carr
b. Hexagone
10.5 Prolongements
Introduction
Affichage des donnes
Construction sur un rectangle
Construction sur un tore
Construction sur un cylindre
Partie IV ANNEXES
265
266
267
269
269
270
273
276
277
279
TABLEAUX COMPARATIFS
281
B IBLIOGRAPHIE
289
I NDEX GNRAL
291
297
xii
Remerciements
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,
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 suffisamment riches
et suffisamment documents pour quon puisse aussi dcouvrir un domaine mathmatique
travers eux. La manire de penser lchange de connaissances sen trouve modifie.
Lutilisation dun logiciel pour rsoudre un problme ambitieux mne une utilisation 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 bnfique 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 profitable 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 fichiers 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
Logiciel
Type
Fonctionne
en mode
en mode
Licence
texte
graphique
oui
Bc
GPL
GnuPlot
GPL
Gp(pari)
GPL
oui
Maxima
calculateur formel
GPL
oui
MuPAD
calculateur formel
Propritaire
Octave
GPL
oui
Scilab
cecill
oui
oui
oui
oui
oui
oui
XCAS(giac)
calculateur formel
GPL
oui(iacas)
Yacas
calculateur formel
GPL
oui
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, xfig, 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.
bc
gnuplot
gp
maxima
octave
Quelques logiciels fournissent une aide substantielle avec la commande info du shell :
gnuplot
maxima
octave
Certains logiciels offrent une aide en ligne, soit en appuyant un bouton en mode graphique,
soit en tapant une commande du type help, comme Octave, Maxima, Scilab, un point 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.
Pour obtenir laide de Bc taper dans un terminal :
man bc
bc(1)
NAME
bc - An arbitrary precision calculator language
SYNTAX
bc [ -lwsqv ] [long-options] [
file ... ]
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
--mathlib
Define the standard math library.
--warn Give warnings for extensions to POSIX bc.
--standard
Process exactly the POSIX bc language.
. On
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
11
Communication
Logiciel(s) abord(s) : Bc GnuPlot Gp Maxima Octave Scilab XCAS
Yacas
"
En notation scientifique, 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 scientifique
logiciels
Bc Yacas
Gp GnuPlot XCAS
Maxima Scilab Octave
e,E
d,D,e,E
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 modifier la ligne que lon est en train de saisir.
Certains logiciels prsentent des facilits dans ce domaine.
La plupart accepte deffacer le caractre gauche du curseur quand on appuie sur la touche
deffaage vers la gauche.
Dans certains logiciels, en utilisant les flches 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 :
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 modifier 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 fichier, il est possible dutiliser des diteurs de texte automatiss tels que sed, awk, Perl. . .
opration
Logiciel
Scilab
Maxima
obtenir la sortie au
format de lentre
;
exemple
x=
(0,x)
p=x2+1
(p)
x2+1;
x2+1;
14
exemple
il ny a rien faire
;
x2+1;
;
x2+1;
opration
Logiciel
obtenir la sortie au
format de lentre
Gp
il ny a rien faire
il ny a rien faire
Yacas
il ny a rien faire
XCAS
il ny a rien faire
il ny a rien faire
exemple
obtenir la sortie au
format enjoliv
exemple
PrettyForm(%)
Chanes de caractres et instructions
Voici un exemple (Figure 2.2) daller-et-retour entre les chanes de caractres et les instructions dans Scilab.
%
&%
%' ()!
Il est possible de demander XCAS de calculer partir dun fichier LATEX. Pour cela, il faut commencer par indiquer LATEX quon lautorise excuter des tches externes en modifiant le
fichier ( ou lquivalent sur des systmes non libres ) /usr/share/texmf/web2c/texmf.cnf.
Il suffit dy remplacer shell_escape=f par shell_escape= t.
15
Une manire moins drastique est de spcifier son diteur ( Kile, TeXmaker...) de compiler
le fichier avec loption shell_escape :
latex --shell-escape fichier.tex
Si on travaille sous Emacs avec AucTeX, il suffit de rajouter la toute fin du fichier :
%%%
Local
%%% m o d e :
Variables :
latex
%%% T e X m a s t e r :
s h e l l e s c a p e
%%% E n d :
%c o m m a n d e
pour
faire
appel
giac
\
{\executGiac}[1]{
\
\
18{giac <#1 } }
\
Remplacer \write18{giac
Microsoft.
16
On cre ensuite un nouvel environnement LATEX quon appellera Xcass pour faciliter la saisie.
On utilise nouveau lenvironnement VerbatimOut, mais cette fois-ci nous devons spcifier
loption \
pour expliquer LATEX quil sagit dun environnement en
mode Verbatim :
\
{Xcass}
{\
\
{VerbatimOut}{xcass.out}}
{\
{VerbatimOut}
\executGiac{Xcass.in}
\[\{xcass}\]}
17
!"
On peut procder de la mme manire pour obtenir des sorties graphiques produites par
XCAS.
Il faut donc maintenant placer ces commandes dans le prambule du fichier LATEX.
Pour excuter un programme giac :
\
\
{\executGiac}[1]{
\
\
18{giac <#1 } }
\
18
Il ne reste plus qu faire appel cet environnement lintrieur dun fichier LATEX :
\
{xcasf}
plot(desolve([y+y0,y(0)1,y(0)1],y)[0],x-PiPi,colorblue);
\
{xcasf}
qui donne :
19
Rponse du logiciel
courbe
#
Pour insrer une figure produite par GnuPlot dans un fichier LATEX, rien de plus simple. Il suffit
tout dabord dinstaller lextension gnuplottexa .
Plusieurs possibilits soffrent alors nous :
ce qui donne :
a Disponible sur CTAN : http://tug.ctan.org/tex-archive/macros/latex/contrib/gnuplottex/
20
f(x,y)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
10
5
-10
-5
0
0
-5
10 -10
et du texte aprs.
Compilation directe de la figure GnuPlot
Le problme, cest que cette mthode fatigue trs vite la mmoire de LATEX et quon
ne peut pas demander de trop gros calculs GnuPlot et donc LATEX.
Ainsi, le dessin produit est peu prcis car on ne peut dpasser les valeurs 10 et 10 pour
Mieux vaut donc passer par lintermdiaire dun fichier eps pour laisser LATEX en dehors
des calculs. On inclut le graphique avec \
:
\begin{gnuplot}
100,100
r(x,y)(x**2+y**2)
f(x,y)(r(x,y))/r(x,y)
f(x,y)
Appel
si
VENTUEL
vous
epstopdf
travaillez
avec
pour
transformer
le
fichier
eps
en
pdfLaTeX .
\end{gnuplot}
Du texte prsentant ce graphique~:
\includegraphics{tempgnu.
}
et du texte aprs.
21
Rponse du logiciel
f(x,y)
10
5
-10
-5
0
-5
5
et du texte aprs.
10-10
Inclusion de la sortie eps produite par GnuPlot
On peut galement utiliser MetaPOST : cela conomise aussi la mmoire LATEX et permet
ventuellement de changer le style de figure en retouchant le fichier .mp :
\begin{gnuplot}
mp
tempgnu.mp
100,100
r(x,y)(x**2+y**2)
f(x,y)(r(x,y))/r(x,y)
f(x,y)
#
Appel
extrieur
pour
compiler
le
fichier
metapost
mpost tempgnu.mp
#
Appel
VENTUEL
MetaPOST
en
mptopdf
si
vous
mptopdf tempgnu.0
\end{gnuplot}
\includegraphics{tempgnu.0}
ce qui donne :
22
pour
transformer
travaillez
avec
le
fichier
pdfLaTeX .
produit
par
-5
-5
10 -10
et du texte aprs.
Inclusion de la sortie produite par MetaPOST
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.
b
Nous1 allons 1dans cet exemple illustrer la convergence de la suite de terme gnral un =
1 n vers e .
Partageons les tches :
Commenons par crer des commandes pour faire excuter des commandes en dehors de
LATEX.
Dabord pour Bc :
\
\
{\executBC}[2]{
\
\
18{bc -q -l
#1> #2 }}
% #1
fichier
contenant
les
commande
% #2
fichier
contenant
les
rsultats
de
bc
des
calculs
23
Rentrons maintenant un script Bc qui va crer une liste de valeurs de la suite (un ) :
\begin{VerbatimOut}{bcK.bc}
pour
bc
les
indices
dmarrent
*/
*/
\end{VerbatimOut}
On va ensuire inclure les donnes calcules par Bc au format attendu par GnuPlot dans le
fichier fich.gnu :
\begin{VerbatimOut}{fich.gnu}
" at
1 "exp(-1)0.3679
lt 3
# On
place
exp ( 1)
c omme
label
de
au
back
bon
endroit
[1:200]
[0.245:0.37]
donnes.dat
y
aura
la
lgende
1:2
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
image
en
eps
\end{VerbatimOut}
24
pas
titre
LaTeX
label
des
ordonnes
puisqu i l
Ce qui donne :
Rponse du logiciel
approximation de (1-1/n)^n
0.36
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.
Illustration de lim 1 n1
n
n
= e 1 avec bc,
GnuPlot et LATEX
25
*
(!
Le logiciel TeXmacs permet de crer des documents la LATEX , mais en wysiwyg c . Dans
le cas qui nous occupe, il permet galement dinsrer dans le texte des sessions de certains
logiciels : giac/XCAS, Maxima, MuPAD, Yacas, PARI/Gp, GnuPlot, Shell,...
On peut ensuite exporter le document obtenu au format pdf, ps, html, LATEX.
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 saffiche 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 inopins. Lexport LATEX 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 :
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
>>
28
- .
# $
! %! !"
!
Rponse du logiciel
Maxima restarted.
(%i1) S(x):=1/(x^3+x^2+x+1);
1
S(x) := --------------3
2
x + x + x + 1
(%o1)
(%i2) partfrac(S(x),x);
(%o2)
, -
1
x - 1
--------- - ---------2 (x + 1)
2
2 (x + 1)
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
fichier texte. En crivant le rsultat obtenu par un logiciel dans un fichier, et en lisant ce fichier
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")
. /
! 0
+
Pour fabriquer des noms de fichiers o crire, pour fabriquer des instructions GnuPlot (par
exemple) placer dans un fichier, pour utiliser ce qui prcde en gnral, il est pratique 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)
Pour inclure la date et lheure dans le nom du script, on utilise linstruction
.
.
Des fichiers spciaux qui ne sont pas des fichiers rguliers sont bien utiles : les entres-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
# !"#$
.
.
}
et
ou
double(x):{
(2*x)
}
On clique sur OK pour vrifier 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
Il ne faut pas utiliser i comme variable locale car i est un complexe !
}
32
n+"
"+p;
deux
variables
internes
au
programme
&
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;
1!
k,p;
p:1;
k:1;
( k<n){
p:p*k;
k:k+1;
}
p;
%
! 0
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; 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
On peut aussi utiliser les oprateurs
et $ pour des suites dfinies par une formule
explicite
(k^2,k15)
(p^2) (p15)
m 5
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
numro
crochets
porte
le
L2[24]
(L1,L2)
(x->x>0,L1);
(x->x<0,L1);
(L1,232); (L2,3()));
supprimer
un
//
pour
substituer
ou
oprande
(L2,);
"((x,y)->x*y,L1,L2);
34
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 "".
&
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.
alph(n):{
//
l,L;
L:[];l:(n);
chane
forme
on
rentre
//
de
ses
un
est
entier
une
liste ,
cat
transforme
en
la
chiffres
//
expr
transforme
de
nombres
une
chane
en
nombre
(L);
lettres
selon
//
les
la
liste
codes
ASCII
est
transforme
en
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
2
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
, avec la mme syntaxe quen anglais ou
bien avec une syntaxe diffrente :
k:1;
6^k%11
1%11
k:k+1;
;
36
& '!(
;
}
n;
;n:n-10;
et on obtient :
# /#0
La syntaxe gnrale:
Nom_de_la_procedure:(variables)
37
Par exemple
double:(x)
2*x
On valide. Normalement, on obtient un message encourageant :
double(x)
On rentre alors
double(37)
On calcule ainsi 7 !
On aurait pu crire une procdure pour faire plus joli :
factofor:(n)
k,p;
p:1:
k 1 7
1
p:p*k
;
(
,
'
(n)."!".
'
(p));
38
& '!(
1!
n*factif(n-1)
;
:
%
! 0
les ensembles
ens1:{2,4,1}; ens2:{2,5,8,5};
ens2; ens1
ens2; ens1
ens2;
39
les suites
5,7,5,1,2,3;
On peut aussi utiliser l oprateur $ pour des suites dfinies par une formule explicite :
p^2 p15;
m 5;
les listes
Notez quelques fonctions utiles :
s1:i i-22;
s2:a,b,c,d,e;
L1:[s1]; L2:[s2];
(L2);
/ / nombre d o p r a n d e s
L2[3];
/ / e x t r a i t l e 3 me o p r a n d e
L2[35];
(L1,x->x>0)
(L2,b32); (L1,2z); (L2,5());
tant
la
liste
//
null ()
vide
(L2,);
"(L1,L2,(x,y)->x+y);
L3:L1.L2; / / p o u r c o n c a t n e r
("123456789",4,
2)
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:(n)
/ / on
l,L;
L:[];l:
'
(n);
forms
des
chiffres
rentre
un
entier
//
de
est
une
chane
en
:
40
la
chane
//
text2expr
transforme
nombre
:
-- .(L);
lettres
liste ,
//
la
liste
est
transforme
en
chane
de
&&
(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.
(b,a) ;
or([xt])
;
y(x)+" nappartient
pas t"
and([x~t])
y(x)+" nappartient
pas t"
i[3*t
t],
test(i)
Le logiciel Scilab travaille essentiellement avec des fonctions, des nombres rels en virgule
flottante, 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 suffit de taper
1000
pour obtenir la prcision voulue en ajustant la variable
, et
4*(1)
99605187072113499999983729780499510597317328160963185950244594553469\
08302642522308253344685035261931188171010003137838752886587533208381\
42061717766914730359825349042875546873115956286388235378759375195778\
18577805321712268066130019278766111959092164201988
Le temps de rponse est variable suivant les machines, et augmente fortement quand on augmente encore la prcision.
Le rsultat est-il juste ?
On rgle la prcision avec / ou /01023 qui doit tre un nombre entre 1 et 1000
/:1000:;
4*
((1))
Voir aussi 5.1 page 56.
3
: 1000;
(4*atan(1));
4
4*(1)
\p 1000
4
4
1
4
()
Pour obtenir ponctuellement des calculs en prcision arbitraire, il suffit de le demander lors
du calcul approch.
((4,1000)
Pour basculer la valeur de la prcision, taper
46
! )
* !
4
(1000)
((4)
Pour revenir la prcision prcdente, taper
4
(10)
((1/4)
((4)
Mais la prcision maximale est conserve pour la valeur .
)
Le logiciel GnuPlot pose quelques problmes avec des nombres trop grands ou trop petits
comme le montre la retranscription de session suivante :
gnuplot>
2**(30)
Rponse du logiciel
1073741824
gnuplot>
2**(31)
Rponse du logiciel
-2147483648
gnuplot>
2**(32)
Rponse du logiciel
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.
"'
1
Le logiciel Bc dtecte naturellement une entre en base 16 avec la saisie des chiffres A, B, C, D,
E. Le rsultat par dfaut est en base 10.
Voici un exemple daddition en base 16 avec le rsultat en base 7 :
7
F+E
;
Rponse du logiciel
10
;
Rponse du logiciel
10
7;
;
A;
Rponse du logiciel
13
48
!
66+22;
Rponse du logiciel
121
A;
A;
2*7;
Rponse du logiciel
14
;
Les congruences de nombres entiers sobtiennent souvent dans les logiciels de calcul par 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
(-5,3)
Avec Maxima
5/)3:3;
(-5);
5/)3:6.)3;
Avec Octave
mod(-5,3)
Avec Scilab
(-5,3)
(-5,3)
Avec Yacas
5
(-5,3)
Avec XCAS
-5%3
49
x:7%9; y:4%9;
3*x^2-5* y^2
donne
Rponse du logiciel
4 % 9
2009
, on peut faire :
(2008)^(2007^2009)%10
...mais cela ne donne rien de probant. Mieux vaut travailler tout de suite modulo 10 :
(2008%10)^(2007^2009)
rpond instantanment que le reste est 2. On peut prfrer demander directement le 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 suffit
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.
, 2
%
!
+
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
fini par tre prouv indpendamment et simultanment par Jacques H ADDAMARD et CharlesJean de L A VALLE P OUSSIN en 1896.
50
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 dfinition rcursive :
pir(n):{
(n<2){
0;} / / p o u r s a v o i r s a r r t e r
(
(n)){
pir(n-1)+1;} / / o n
premier
et
on
rajoute
si
le
nombre
est
descend
pir(n-1);
}:;
a marche en ayant pris soin de rgler le niveau de rcursion du CAS au maximum (dans la
fentre de configuration du CAS).
Cependant, le niveau de rcursion nest pas infini 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)){
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
fiable 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(
(([50*k,pin(50*k)]),k02000))
les
points
( k , pin ( k ) )
avec
//
on
relie
un
x
ln x1
/x
x
2
1
t
ln t
G AUSS conjectura la fin du XVIII sicle que (x) tait quivalent Li(x) au voisinage de +.
tablissons un petit tableau comparatif avec XCAS. Mais dabord, dfinissons la fonction Li :
Li(x):
((1/(t),t,2,x))
Li(100000)
a B EL ABAS , Karim Site officiel de PARI/GP . URL: http://pari.math.u-bordeaux.fr/.
52
, + p -
%!
Nous obtenons :
Rponse du logiciel
[9681.171008,9661.54761,9659.001899,9658.438958,9658.302243,9658.268308,
9658.25984,9658.257723,9658.257194,9658.257062,9658.257029]
Que se passe-t-il ? XCAS renvoie en fait une srie dapproximations plus ou moins fines de
lintgrale : mthode des trapzes, point milieu, Romberg, etc., la plus fine tant la dernire.
Modifions donc notre dfinition de Li :
LI(x):{
r:
((1/(t),t,2,x));
r["
(r)-1]; / / o n p r e n d l e d e r n i e r
}
de
la
liste
(x)
Li(x)
100
25
29.1
1000
168
176.6
10000
1229
1246.5
100000
9592
9658.3
1000000
78498
78984.6
10000000
664579
668749.5
100000000
5761455
5801743.9
1/(ln(x)-1)
27.7
169.3
1218.0
9512.1
78030.4
661469.0
5740303.8
. 2
p 3
Le logiciel Gp connat les nombres p-adiques. Il suffit de les rentrer avec la notation de Landau
des dveloppements limits.
a:a49+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
:
(x^2+3*x+10) / / x e s t
(t^2+3*t+10,t)
(x^2+3*x+1) / / 0 p e u t
(x^2+x+10) / / n e p a s
l inconnue
tre
par
dfaut
omis
oublier
de
cocher
dans
" Cas
Configuration "
(x^2+a*x+10,x)
(x^2+a*x+10,a)
Notez que le paramtre a est considr par dfaut comme tant rel. Si lon veut travailler
avec des variables complexes, il faut cocher 8 dans le menu de configuration cas.
Il faudra alors utiliser la fonction assume pour mettre des hypothses sur a :
(x^2+a*x+10,x)
(
(x^2+a*x+10,x)[0])
(a,real)
(
(x^2+a*x+10,x)[0])
//
partie
//
est
relle
de
maintenant
la
premiere
suppos
(x+(x)+1000)
et cest une approximation numrique que nous obtenons.
a Nous examinerons plus prcisment les quations polynomiales la section 5.2 page 61.
rel
racine
!
Configuration du CAS
Selon les cas, il faudra veiller bien configurer le CAS b :
- ou non pour avoir des rsultats exacts ou approchs;
- 8
ou non pour avoir des rsultats (exacts ou approchs) sous forme relle
ou complexe;
- 8 ou non pour travailler avec des variables complexes ou relles.
(x^2-2,x1) / / x 1 p r c i s e
(x^2-20,x1,newton_solver)
le
dpart
de
l algorithme
(x^2-2,x1)-(2)
Nous avons donc 15 bonnes dcimales.
Si nous en voulons plus, il existe deux appels optionnels la fonction newton : le nombre
maximum ditrations et la prcision minimum recherche. Par dfaut, ces valeurs sont respectivement fixes 12 et 108 .
//
1 e 50
signifie
10^( 50)
XCAS nous affiche -2.828427. Reflexion faite, ce nest pas tonnant : la variable / qui
fixe le nombre de chiffres significatifs est par dfaut fix 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):{
un,aun,fp,k;
fp:
(f);
k:0;
aun:
(u0);
un:
(u0-f(u0)/fp(u0));
((un-aun)>pre) {
aun:un; un:
(un-f(un)/fp(un));
b Dans Cfg -> Cas Configuration
56
#
k:k+1;
}
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 :
solution appartient lintervalle ]0 ; e100 [, ce qui indique que la solution est assez petite...
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 /01023<16 (la precision est alors
independante de Digits, seul laffichage change). Si /01023 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 suffisant
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 flottants
Attention au calcul avec des flottants : laddition nest pas toujours associative, 1 x
avec x de lordre de 10100 peut tre gal 1, enfin (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
, # /#0
Loutil gnral est solve :
Vous avez remarqu que les solutions des premiers exemples sont affiches entre accolades.
Interrogeons MuPAD :
(
(x^2-4*x+30,x));
La rponse /5 32 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 affiche 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^24,x);
On peut sinon utiliser les ensembles habituels avec les notations suivantes :
58
# '!(
NonNegInt
PosInt
NegInt
Integer
2Z
Even
2Z + 1
Odd
Q
R
Real
R+
iR
Rational
PosRat
NonNegative
Positive
Imaginary
iZ
NegRat
NonNegRat
NonZero
Negative
IntImaginary
Prime
on
demande
des
solutions
dans
[ 22 ,22]
():
({x+2*y+a*z-1,a*x+y+z2,2*x+a*y-z3},{x,y,z});
Il existe des outils dalgbre linaire plus adapts que nous verrons plus tard.
On peut rsoudre des inquations
(x^2-2*x-4>2*x,x);
des quations trigonomtriques
((x)(x),x);
vous dimaginer dautres situations...
Un tudiant taquin nous a par exemple propos
((x)0*(x),x);
Pour avoir une approximation de la solution, on utilise float et hold(solve)
(
(
)(x+(x)+10));
ou numeric::solve(equation,inconnue)
--
(x+(x)+10,x);
Au-del, MuPAD semble jetter lponge :
(
(
)(x+(x)+100));
puisque la rponse propose est lensemble vide.
Mais MuPAD utilise la mthode de Newton et a donc besoin dune bonne approximation de
dpart :
59
Polynmes
Problmatique : Manipuler les oprations lmentaires sur les polynmes, notamment la recherche de racines.
.
# $
dfinir le polynme x 2 + x + 1 :
Px^2+x+1
(P)
Le polynme peut tre construit avec ses coefficients
Q([3
(Q)
2 1],x,coeff)
Il est noter que si lon ne prcise pas le drapeau coeff, le polynme est dfini 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);
(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)
(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 coefficients 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 coefficients 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)
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
5
# %
Le logiciel Gp accepte les fonctions comme des expressions donnes par un galit-dfinition.
Pour dfinir la fonction machin, il suffit dentrer linstruction :
machin(x)1/(x)
5 # /+
Le logiciel Maxima considre les galits comme des quantits valuer ; une galit-dfinition
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))
en donne lapproximation tout comme
machin(2.0)
(expression,variable)
f:(x);
f(2);
f:(f,x);
f(2);
68
(+2*
);
/&
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);
(expression,variable) :
df(x):
((x)+2*x,x);
(
"
/ 3
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 dfinissons les points A et B dans un repre judicieusement choisi :
A:(0,0)
B:(0,-4)
libre
pour
//
//
y
plaons
plaons
tracer
la
A
B
tel
courbe
que
AB
la
4
fin
en
de
laissant
la
le
1 er
quadrant
sance
69
% &
Dfinissons ensuite le point C tel que le triangle ABC soit direct, rectangle en A et que lon ait
AC = 34 AB laide de la commande
:
(0
3)
Dfinissons 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)
:
(d(x),
(B,C))
Pour obtenir P, nous commenons par dfinir 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))
(f(x))
70
/&
Rponse du logiciel
4
3
x2 + 4x
71
% &
assume ou element ?
(03)
par :
(t[1,0,3])
o 1 reprsente une valeur arbitraire modifiable la souris.
On te ensuite toute rfrence la variable formelle x qui devient inutile puisque t
garde un rle formel.
Par exemple, le code contient :
M:(t,0)
d:
(M,
(A,C))
5 # 1
Dans la calculette en mode texte appele par linstruction
dfinie comme suit :
machin(x){
1/(x)}
Dans le logiciel de calcul matriciel Scilab, la dfinition dune fonction est plus dlicate.
72
/,
.
machin(2)
Lvaluation en rafale qui est possible avec Scilab requiert un peu dattention. En utilisant ce
qui prcde,
t2: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 coefficient par coefficient
sont distinctes. Pour poursuivre lexemple, il faut alors dfinir la fonction en utilisant la division ponctuelle : attention
lespace derrire le nombre 1 !
(t,machin(t))
Le nombre de points dvaluation est volontairement limit.
Lvaluation marche avec des matrices quelconques :
v1:5
uv*t
machin(u)
Le logiciel Yacas dfinit les fonctions de manire similaire aux autres logiciels de calcul formel.
machin(x):1/)(x)
Pour obtenir une valeur approche, il suffit de le rclamer pour le rsultat prcdent.
((%)
73
% &
Le point-virgule est ncessaire dans le corps de la dfinition de la fonction, car sinon la machine retournerait deux fois lvaluation.
74
Algbre linaire
Logiciel(s) abord(s) : Scilab Octave Maxima XCAS
6
# $
"
(u)
"
(A)
(A)
Le logiciel Scilab prsente une sorte de produit tensoriel ;
u .*. A
La norme dun vecteur est par dfaut la norme euclidienne (v). On peut rclamer 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.
'
La norme sur les matrices donne par la formule
par linstruction (A,fro).
tr t A A , souvent utilise, est obtenue
5
)
*
+ )"
On se donne un systme de trois quations trois inconnues dont les donnes sont alatoires.
A
(3,3)
B
(3,1)
V(A)*B
On 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))
BA-R(2)*
(3,3)
Pour obtenir les vecteurs propres v p et la matrice diagonalise D correspondant la matrice A, il suffit de taper :
[vp,D]
(A)
On vrifie en tapant
A*vp(:,1)/D(1,1)
A*vp/D
La dcomposition de Schur donne les valeurs propres sur la diagonale de la matrice triangulaire T.
[U,T](A)
76
0
6 #
La syntaxe de base dOctave est commune avec Scilab. Les instructions ci-dessous sont encore valables.
u[2;3;5]
v[7 11 13]
tv*u
Au*v
"
(u)
"
(A)
(A)
Linstruction (A) donne les coefficients du polynme caractristique de A. On peut calculer le pseudo-inverse de la matrice dgnre.
p(A)
R(p)
BA-R(2)*
(3,3)
c(B)
c*B
B*c
:
([1,2],[3,4]);
(%i1);
(%i1);
Calculons le produit pour vrifier. On utilise le produit non commutatif symbolis par , un
point :
(%i4) )%i1%o3;
77
'
et on obtient bien lidentit.
Les valeurs propres sobtiennent avec
:
(%i5)
(%i1);
On vrifie quil sagit bien des solutions du polynme caractristique donn par :
(%i6)
((%i1,x)=0,x);
6
x
y
1
2
x y
5
5
3
6
x+ y
5
5
1
5
3
5
2
5
6
5
On retrouve A; il sagit donc de la matrice dun projecteur dtermine par son noyau :
(A)
Rponse du logiciel
[[2,-1]]
cest--dire Vect (2 ; 1) , et son image :
78
0
1
! 2 )
2
(A)
Rponse du logiciel
[[-1,3]]
1
B:[[1,a],[0,1]]
2a
,
3a
,
4a
,
5a
7
Soit A =
1
1
. Pour quelles valeurs de a, la matrice A est-elle inversible ?
1
A:[[1,0,a],[1,a,-1],[a,0,1]]
(
(A)0,a);
Rponse du logiciel
[-1,0,1]
Il y en a trois.
On peut ensuite dterminer linverse de cette matrice :
(A)
79
'
Rponse du logiciel
a
((a)3 )+a
a1
((a)3 )+a
((a)2 )
((a)3 )+a
((a)2 )
((a)3 )+a
a+1
((a)3 )+a
a
((a)3 )+a
0
((a)2 )+1
((a)3 )+a
)
)
! #
&8
Compltons-la par la matrice identit de mme taille. Profitons-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
matrice
au
de
colonnes
identit
de
bout
Ainsi :
T:GJ(M)
Rponse du logiciel
80
de
taille
correspondant
0
1
! 2 )
2
Pour effectuer une combinaison linaire des lignes, on peut utiliser 9.
(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:
9.
(-1,T,0,2)
Rponse du logiciel
On effectue L3 L3 L2 :
T:
9.
(-1,T,1,2)
Rponse du logiciel
9(-1/2,T,2)
Rponse du logiciel
1
2
1
2
1
2
On effectue L1 L1 L3 :
T:
9.
(-1,T,2,0)
81
'
Rponse du logiciel
1
2
1
2
1
2
1
2
1
2
1
2
et enfin L2 L2 L3 :
T:
9.
(-1,T,2,1)
Rponse du logiciel
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]
//
on
extrait
les
lignes
p 1
}:;
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
p 1
et
les
colonnes
0
1
! 2 )
2
qui vaut :
Rponse du logiciel
(M)
Mais cette session peut tre loccasion de montrer le mcanisme de calcul des tudiants.
! 0
9
0, 8 0, 3 0, 2
P=
0, 1 0, 2 0, 6
0, 1
0, 5
0, 2
Vrifions au passage que la somme des lments de chaque colonne vaut bien 1. On utilise
:
(P)
Rponse du logiciel
[1.0,1.0,1.0]
83
'
Les trafiquants se promenant de ville en ville, il peut tre utile de visualiser leurs dplacements
par le diagramme de transition suivant
0,8
V1
0,2
0,1
0,1
0,3
0,5
V3
V2
0,2
0,6
0,2
On notera xi(k) la proportion de trafiquants qui se trouvent au matin du jour k dans la ville Vi .
En probabilits, on appelle vecteur dtat tout lment (x1 , , xn ) de R+n tel que x1 + +xn =
1.
Ainsi, x (k) = x1(k) , x2(k) , x3(k) est un vecteur dtat.
On montre que les vecteurs dtat de la chane sont lis par la relation
x (k) = P x (k1)
et donc
x (k) = Pk x (0)
Supposons que le chef de la mafia locale dispose de 1000 trafiquants qui partent tous le matin
du jour 0 de la ville de Zlot.
X:[[1000],[0],[0]]
Quelle sera la proportion de trafiquants dans chacune des villes au bout dune semaine ?
P^7*X
Rponse du logiciel
563.887400
226.069100
210.043500
Le parrain voudrait que la proportion moyenne de trafiquants soit stable dun jour sur lautre.
Il recherche donc les vecteurs dtat x vrifiant lquation P x = x.
84
0
1
! 2 )
2
(P)
Rponse du logiciel
1.0,0.5472135955,-0.3472135955
(P)
Rponse du logiciel
0.340000
0.140000
0.130000
0.179443
0.094721
0.084721
0.000557
0.005279
0.004721
Lordre correspond aux valeurs donnes par
. Pour le vrifier, extrayons le premier
vecteur colonne avec (matrice,numro de colonne) :
v:(
(P),0)
P*v
et on retrouve v.
On aurait pu trouver ce vecteur autrement en cherchant le noyau de P Id laide de la commande
:
w:
(P-
(3))
Rponse du logiciel
[[-2.615384615,-1.076923077,-1]]
On regarde les doubles crochets : il sagit donc dune liste de liste. Il vaut donc mieux dfinir
le vecteur comme tant le premier lment de cette liste :
w:
(P-
(3))[0]
85
'
Rponse du logiciel
[-2.615384615,-1.076923077,-1]
(w)
Rponse du logiciel
[-0.8717948718,-0.358974359,-0.3333333333]
Avons-nous dfini 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]]
(v)
Rponse du logiciel
[0.8717948718,0.358974359,0.3333333333]
Nous ne sommes pas obligs de travailler avec des matrices coefficients 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
0
1
! 2 )
2
On considre les 26 lettres de lalphabet plus un espace caractris par @.
On voudrait coder chaque caractre par un nombre, en commenant par 0 pour @, puis 1
pour A, 2 pour B, etc. en finissant par 26 pour Z.
La commande nous permet dobtenir le code ASCII dun caractreb .
Le problme, cest que A est associ 65.
Nous allons donc dcaler les codes ASCII pour notre usage :
code(c):(x->(x-64),(c))
//
on
rajoute
64
cette
fois ci
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 coefficients dans Z/27Z et
inversible :
A:[[1,22,25],[0,25,1],[25,3,1]]%27
Rponse du logiciel
1%27
0%27
2%27
5%27
2%27
3%27
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
10%27
9%27
4%27
2%27
6%27
2%27
8%27
13%27
4%27
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)
(
On cre une liste avec message :
Lb:code(message)
(Lb,3))%27
88
0
1
! 2 )
2
On transforme en liste :
decryptemod:
On retourne dans N :
decrypte:(x->
(x%0,27),decryptemod)
89
Gomtrie affine
Logiciel(s) abord(s) : Scilab XCAS
8
# $
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 vrifie en tapant :
a*U+b
qui donne V.
8 # !"#$
Les fonctions de gomtrie affines sont... innombrables, et laide est exhaustive.
) *
+
Vous pouvez par exemple tracer une droite de diffrentes manires. On ouvre une session 2D
en tapant :
(2*x+5*y-10) / / p a r t i r
d une
//
quation
passant
par
cartsienne
deux
points
dont
on
connat
coordonnes
(1+,-3+) / / p a s s a n t p a r d e u x p o i n t s d o n t o n c o n n a t
([5+t,-2+2*t],t) / / p a s s a n t p a r l e p o i n t ( 5 , 2 ) e t d e
directeur
les
affixes
vecteur
(1 ,2)
([1,2,3],[-1,2,0]) / / o n c o n n a t d e u x p o i n t s
(x+y+z0,x2*y) / / i n t e r s e c t i o n d e d e u x p l a n s
([1+2*t,-1+t,-3+5*t],t) / / r e p r s e n t a t i o n p a r a m t r i q u e
"
(
tudions par exemple la symtrie orthogonale daxe la droite dquation y = x :
d:
(yx) / / o n t r a c e l a
M:(4,2) / / o n t r a c e u n
m:
(d,M) / / o n t r a c e
droite
point
son
quelconque
symtrique
P:(1,-3) / / u n a u t r e p o i n t
p:
(d,P) / / e t s o n i m a g e
(d,
(m,M)) / /
la
droite
? XCAS r p o n d 1 p o u r
oui et 0 non
(
(m,M),
(p,P))
elles parallles ?
(m,P) / / o n t r a c e l a d r o i t e ( mP )
(M,p) / / e t l a d r o i t e ( Mp )
( mM )
est e l l e
orthogonale
axe
92
//
les
droites
( mM )
et
( pP )
sont
3
est_faisceau_droite(
(m,P),
(M,p),d)
elles
concourantes
//
( mP ) ,
( Mp )
et
(d)
sont
A:
(
(P,R)) / / A
a:
(d,A) / / s o n i m a g e
(a,
(r,p)) / /
sont
est
un
lment
quelconque
appartient i l
[ pr ]
de
[ PR ]
Les
barycentres
conservs .
(
(M,P)) / / l q u a t i o n r d u i t e
(
(m,p)) / / l q u a t i o n r d u i t e
(
(
(
(M,P)),x)) / /
dans
l quation
inverss
par
la
de
( MP )
les
rles
de
de
( MP )
de
( mp )
on
x
exprime
et
de
en
ont
fonction
donc
de
rflexion .
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 )
elles
parallles
//
on
colorie
le
plan
et
( NR )
sont
( EB G )
et on obtient :
93
) *
+
(a>0) / / o n s a s s u r e q u e a e s t p o s i t i f
P:((E+G)/2) / / u n e a u t r e m a n i r e d e d f i n i r
Q:((F+C)/2)
M:((P+Q)/2)
(
(E,P)) / / o n d e m a n d e l a l o n g u e u r
Rponse du logiciel
1
2a
2
(
(A,P))
(
(A,G))
Rponse du logiciel
1
sqrt(6)a a 3
2
94
le
EP
milieu
de
[ EG ]
3
O:(0,0) / / o n p l a c e l e p o i n t d e c o o r d o n n e s ( 0 , 0 )
A:(6,0)
B:(0,-6)
(A,B) / / t r a c e l e s e g m e n t ( A , B )
a:
(0 6) / / c h o i s i t 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
fonction
P:(a,f(a)) / / o n p r e n d l e p o i n t d e l a c o u r b e y f ( x ) d
(P) / / o n d e m a n d e l e s c o o r d o n n e s d e P
(f(x),x06,
) / / o n t r a c e l a c o u r b e y f ( x )
f(x) / / o n d e m a n d e l a f o r m u l e d o n n a n t l a i r e e n f o n c t i o n d e
abscisse
95
) *
+
Aire maximale dun triangle
Pour une autre activit gomtrique de Seconde, voir section b. page 69.
dfinition
Lignes
f(x,y)x*x+y*y
de
de
la
niveau
xval2
dx0.1
lignex(x,y) (x> xval-dx && x<xval
#
Lignes
de
#
les
: d / comme nt er
lignes
si
10 ,
de
de
niveaux
xval
f(x,y):1/0)
y
yval
f(x,y):1/0)
z
zval
%4.3g
ATTENTION
enlever
lignes
niveau
yval3
dy0.1
ligney(x,y) (y> yval-dy && y<yval
zval30
fonction
on
de
les
deux
lignes
suivantes
pour
afficher /
niveaux
discrete zval
veut
des
lignes
de
niveaux
rgulires
de
10
en
100
concernant GnuPlot.
96
3& * !
# set
cntrparam
levels
xmin-5
xmax5
incr
0 ,10 ,100
Borne
de
et
[xmin:xmax]
ymin-7
ymax7
[ymin:ymax]
#
zmin0
zmax100
# set
Borne
de
z r a n g e [ zmin : zmax ]
nx50
ny50
dfinition
du
maillage
dfinition
de
la
nx,ny
1
1
"
coefx,coefy
taille
du
graphique
coefx
coefy
"
des
axes
Angle
de
vie
39,16
#
# set
Graduation
1
1
10
title
"
" Exemple
de
Dfinition
des
labels
surface "
"x"
"y"
"z"
Gestion
des
parties
caches ,
des
couleurs
# set
hidden3d
# set
nosurface
# set
p m3d
# set
palette
gray
97
) *
+
#
Affichage
de
la
lgende
Affichage
du
graphique
lines lt 1 notitle,
# splot
f (x , y)
with
lines
lt
# splot
f (x , y)
with
lines
lt
2 , lignex (x , y)
with
lines
lt
# splot
f (x , y)
with
lines
lt
2 , ligney (x , y)
with
lines
lt
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 efficace dtudier statistiques et probabilits sans tableur. On profite des capacits
de Scilab pour obtenir de belles sorties graphiques.
9
0
+
- .
/
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.
Profitant 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 rflexions, Galile rdigea un petit mmoire sur les jeux de hasard en 1620
expliquant le phnomne.
0
,1
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
(n) qui renvoie un entier appartenant [0 ; n[.
(6)+1
2 0
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
(liste).
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
0
3
Voici un exemple de simulation de ce problme :
toscane(taille,essais):{
neuf,dix,T,n,d,s,k,mn,md;
neuf:()); dix:()); / / o n c r e 2 l i s t e s v i d e s a u d p a r t
(k:1;k<essais;k++){ / / o n v a f a i r e p l u s i e u r s e s s a i s
T: (1,taille,
(6)+
(6)+
(6)+3); / / o n l a n c e
fois
taille
ds
Pour compter le nombre dapparitions dune occurrence dans une liste, on utilise
neuf:neuf,
(9,T);
dix:dix,
(10,T);
}
//
on
compte
les
//
on
compte
les
10
100
([neuf])/taille)*100;
([dix])/taille)*100;
/ / mean
en
:
anglais
:
4 (
%!
!
("Sur
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.
piece(essais):{
S,k,P,j,H,m,M,s,p,h;
On cre une liste vide pour y mettre les longueurs maximum des trajets :
S:());
(k:1;k<essais;k++){
On cre une liste vide pour y mettre les nombres de rsultats conscutifs gaux :
s:());
On effectue 10 lancers de 0 ou 1 :
P:
'(
(1,10,
(2)));
(p<9){
On regarde le suivant :
j:p+1;
(P[j]P[p]
j<9){j:j+1}
101
2 0
On enlve p j car on a commenc p+1 et on colle cette valeur dans notre liste s :
s:s,j-p;
Le test termin, on classe les lments de s dans lordre dcroissant grce 3/ :
s:SortD([s]);
);
On calcule la moyenne de S :
m:
(
([S]));
("Sur
102
du nombre maximal
4 (
%!
!
(suite
dpendant de u,
nous
allons
faire
(k:1;k<p;k++){
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++){
(n>0){
(s>n)
;} {
(s<n)
;}
(A[j]
20){s +1}
{s+-1}
}
103
2 0
On rajoute ensuite le nombre de pas trouv notre liste :
M:M,j;
}
On traduit le signe de n par des instructions plus parlantes et on transforme M en liste pour
utiliser les fonctions de statistiques :
(n>0){dir:"
M:[M];
gauche"}
104
4 *2 2
!
2
9
Le logiciel Scilab fournit un gnrateur alatoire de matrices. Pour savoir quel est le type de
rpartition par dfaut, taper
str
(info)
9 :
tant donns deux familles de nombres x et y de mme taille, on cherche la meilleure relation
affine 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.
x5*
(1,9)
y3*
(1,9)-2
[a,b]
(x,y)
(x,y,ms);X[0,5];(X,a*X+b)
9 $
Le logiciel Scilab fournit de nombreux outils tels la variance et lcart-type, les moyennes
arithmtique, gomtrique et harmonique, la mdiane, lchantillonnage alatoire :
x5*
(1,9)
(x)
(x)
(x)
(x)
(x)
(x)
ssample(22,x)
105
2 0
m
(s)
n(s)
a
(x)
(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)
9, #%%
Pour illustrer la loi de rpartition uniforme, on prend mille chantillons. Lhistogramme prsente une rpartition effectivement assez uniforme.
Y
(1,1000);
();bar(Y)
106
4#
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
();bar(X)
107
2 0
Histogramme des valeurs de la variable X
Les histogrammes par rpartition donnent le mme rsultat indpendamment de lordre des
valeurs ; plus le rsultat sapproche dune droite horizontale, plus la rpartition est uniforme.
Histogramme des frquences normalises de
la variable Y
Pour illustrer la loi de rpartition normale ou gaussienne, il suffit de modifier la premire instruction ci-dessus en :
Y
(1,1000,normal);
108
4#
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
2
exp t2
2
par la commande
t-3:.1:3;z
(-t .^ 2 ./2)/(2*%pi);(t,z)
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
2 0
Premier tirage pile ou face
Deuxime tirage pile ou face
8
Le tirage de d seffectue comme pour le tirage de pile ou face. Comme les chantillons 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]
echantillonsample(1000,de)
t(echantillon)
z"
(de);
Zt(2);
k1:6,
z(k)Z(7-k);
;
110
4#
bar(z)
Pour le tirage de deux ds, la machine peut nous donner les frquences de chaque couple.
couple[];
kde,
couple[couple;de+ +k];
;
echantillonsample(1000,couple);
t(echantillon);
yt(1);zt(2);Yy;Zz;
k1:36,
Z(k)z(37-k);Y(k)y(37-k);
;
Z (Z,[6,6]);
(Z)
Histogramme des frquences pour un tirage
de deux ds
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
[0];
k1:11,
indvectorfind(somme,k+1,c);
zzz(ind);
[
; (zz)];
;
();bar(
)
8:-1:3 7:-1:2];
111
2 0
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)
4
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
Une partie de lhlice
3
(
(2*x),x);
donne le rsultat escompt.
(
(2*x),x)
Elle donne le rsultat escompt, mais il y en a dautres...
114
(expression,variable)
(expression,variable) :
derive(
(2*x),x)
On ne peut pas lutiliser tel quel pour calculer f (2). On utilise alors
(fonction) :
f:x->
(2*x);
fd:
(f);
fd(2)
(> +
)
Rponse du logiciel
/
(((x)),x,0.00001)
Rponse du logiciel
(ln(ln(x+0.001))-ln(ln(x-0.001)))*500.0
115
4
#
(
(2*x),x)
donne un dveloppement limit (voir section b. page 153).
4
Le logiciel Yacas se comporte sans surprise ; il est toutefois sensible la hauteur de casse 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}
8(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.
116
& !
"
Pour tracer une hlice (figure 11.28), il faut dfinir sparment les fonction coordonnes.
10
9
8
7
6
5
4
3
2
1
0
1.0
0.6
0.2
Y
0.2
0.6
1.0
1.0
0.6
0.2
0.2
0.6
1.0
Une partie de lhlice
117
4
On dfinit le vecteur tangent unitaire :
(vitesse(t))
(vitesse(t))
Courbure et torsion devraient tre constantes dans le cas de lhlice ; comme on fait des drives approches jusqu lordre trois, il y a beaucoup derreur dans la torsion (figure 11.29) ;
118
!5
'
(t,kappa,style5)
'
(t,tau,style13)
La courbure de lhlice en rouge et sa torsion
en vert
$<
0
u(x1 , x2 ) =
,
f
(x1 , x2 )
x1
1
v(x1 , x2 ) =
.
f
(x1 , x2 )
x2
Une nappe paramtre est une application F de classe C 2 du 2-pav dans R3 . La fonction
suivante paramtre le graphe
(MF(x),chaine)
119
4
Largument de la fonction nappe ci-dessus est la chane de caractres qui nomme
la fonction valeurs relles.
();
(x,y,f,alpha60,theta-120)
%(x,y,f,alpha60,theta-120)
120
!5
donne des couleurs qui reprsentent la cote, donc la valeur de la fonction f (figure 11.31).
Pour obtenir le mme rsultat partir de la commande
, il faut appuyer sur le 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
flag) numro 1.
60];
Pour tracer lintersection du plan et du graphe de f , il suffit 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,alphaa,thetat)
Pour tracer les points A = (3, 2, 3) et B = (5, 2, f (5, 2)), il suffit de tracer des graphes corresondant une lgre variation horizontale (figure 11.32).
121
4
Bun[4.9:.01:5.1];Bdeux[1.8:.001:2.2];
(Bun,Bdeux,f,alphaa,thetat)
zg(x,y)
z3
(Bun-2,Bdeux,g,alphaa,thetat)
Extrait dun problme du bac de 2007
(Polynsie franaise) : intersection dun graphe et du
plan y = 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 figure 11.33 la
surface, la courbe dintersection, et les deux points A et B.
122
!5
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)
t0
La
fonction
qui
dfinit
//
n est
plus
utilis
intersection
paramtrage
de
l intersection
T0:.1:6;
abscisse[];ordonnee[];cote[];
tT,
M
([t;0;0],inter) ;
abscisse[abscisse M(1)];ordonnee[ordonnee M(2)];cote[cote M(3)];
//
dessin
(abscisse,ordonnee,cote,[alphaa,thetat])
123
4
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 figure. 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.
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 figure 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 dfini grce au produit vectoriel des drives partielles.
4
v[x;y;z]
vv/ (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.
n(F,x+deux)-n(F,x)]/h
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
1
n,
n2 = 0 pour i = 1et 2.
(x1 , x2 ) =
xi
2 xi
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.
[directions,courbures]elements(F,x)
K
(courbures)
127
4
Sa courbure est constante, gale 1.
courbure(H,x)
courbure(H,y)
On dessine maintenant sur une grille soigneusement choisie pour les exemples cits ici.
"
(Z)
();XI/maille-.55;YJ/maille-.55;surf(X,Y,Z)
();surf(X,Y,couleur)
();surf(X,Y,Z,couleur)
Linstruction
dessin(H)
demande un peu de calcul : la grille contient 900 nuds. La courbure reste proche de 1.
128
129
4
130
La selle : les couleurs reprsentent la courbure
131
4
. )+ <
R2
!"#$
3
132
, "
)! 5
R2
R
f (x, y) = g (x, y)
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]]
133
4
Rponse du logiciel
0
0
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 confirms par la reprsentation
graphique de la surface en utilisant :
134
, "
)! 5
R2
R
0.5
-0.5
-1
-2
-1
=
)3
) 3
les drives partielles de premier et second ordre sont continues dans un voisinage dun point (x0 , y 0 );
f (x0 , y 0 ) = 0 .
Posons r = f x2 (x0 , y 0 ), s = f xy (x0 , y 0 ) = f yx (x0 , y 0 ) et t = f y2 (x0 , y 0 ). Alors, si
f (x,y )
f (x,y )
(x0 , y 0 )
y 2
f (x,y )
f (x,y )
(x0 , y 0 )
y 2
135
4
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
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
Ici :
136
F(x,y )
x y
F(x,y )
x 2
en rentrant diff(F(x,y),x,2)
en rentrant diff(F(x,y),[x,y],[1,1])
, "
)! 5
R2
R
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),xa,yb)
((
(f(x,y),V,2),xa,yb)
Alors :
delta(1,1);delta(1,-1);delta(0,0)
et :
f2(1,1,x);f2(1,-1,x);f2(0,0,x)
nous permettent daffirmer que f atteint un maximum relatif aux points (1 ; 1) et ( ; 1).
La reprsentation graphique va nous permettre de confirmer ce rsultat et de constater que
(0 ; 0) est un point de selle :
137
Intgration
Logiciel(s) abord(s) : Yacas Maxima Scilab XCAS MuPAD
Problmatique : Des primitives formelles et des intgrales numriques peuvent tre obtenues.
4
La dernire commande donne le rsultat approch avec une prcision arbitraire de vingt dcimales. Des primitives plus compliques ne lui font pas peur :
0 (x)
(1+(2(x))^2)^(1/2)
ne donne rien.
3
Pour obtenir une primitive de sin(x), avec le logiciel Maxima, il suffit de taper :
((x),x);
et pour obtenir son intgrale sur lintervalle [0, ] :
((x),x,0,%pi);
Des primitives plus compliques ne lui font pas peur :
((x),x);
((1+((x))^2),
x);
Pour la dernire, il faut savoir que la notation .30(@ dsigne largument sinus hyperbolique,
not Argsh en mathmatiques. Maxima peut trouver la primitive dune fraction rationnelle :
R(x):=1/(x^3+x^2+x+1);
(R(x),x);
Mais une autre fraction rationnelle peut lui faire baisser les bras :
S(x):=1/(x^3+x+1);
(R(x),x);
Dans ce cas, il y a peut-tre une solution en utilisant les bonnes vieilles mthodes de lge du
papier et du crayon.
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 simplifi.
Prenons maintenant le cas difficile. 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-(A[2]))*(x-(A[3]));
Q(x):=1/PP(x);
140
La fraction Q est la mme que S, sauf que nous avons indiqu la machine la factorisation du
dnominateur.
T(x):=(Q(x));
TT(x):=
(Q(x),x);
(T(x));
entrane la question de Maxima :
Rponse du logiciel
Is
SQRT(31)
1 1/3
SQRT(31)
1 2/3
3 (--------- - -)
x - 3 (--------- - -)
6 SQRT(3)
2
6 SQRT(3)
2
+ 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);
qui donne une valeur numrique.
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)
1.4
1.2
1.0
0.8
0.6
0.4
0.2
0.0
0.0
0.5
1.0
1.5
2.0
2.5
Graphe de x log(x) x + 1
142
3.0
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)
(R(x),x)
(R(x),x)
S(x):1/(x^3+x+1)
(S(x),x)
(S(x),x)
Mais le logiciel XCAS ne sait pas trouver les racines du dnominateur de S. Linstruction
(S(x),x,2,3)
donne le calcul approch sans problme. Passons un calcul de primitive plus intressant. . .
XCAS peut passer le Grand Oral de lX :
((((x))^2+1),
x)
donne :
Rponse du logiciel
ln
!!
(tan (x))2 + 1 (tan (x))
donne :
Rponse du logiciel
(n + 1, x)
(1)n
143
5
On utilise (expression, ancien=nouveau), que vous pouvez comparer la commande
subsop vue au paragraphe e. page 33 pour les listes.
Par exemple :
"+
0
pxa !
"
1
g(ax)e(px) dx 0 g(xa)e a a dx
a
!
#
$ 1 a
pour les transformes de Laplaceb
nous permet de voir que L f (ax) = F
a p
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)
144
(F(x),a,b,variable) qui
2
(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)
6
Ce sont les intgrales du type
Wn =
/2
sinn (x) dx
En particulier
/2
0
sinn+2 (x) dx =
/2
0
sinn (x) dx
/2
"/2
0
ipp(((x))^n*((x))^2,(1/(n+1))*((x))^(n+1))
145
Le logiciel rpond cette fois quelque chose, mais cela reste compliqu.
La ruse est de changer sinn+1 (x) en n+1 1 sinn (x)sin(x).
Alors
r:
(((x))^n*((x))^2,(1/(n+1))*((x))^(n)*(x))
rpond :
Rponse du logiciel
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...
xn
x
On peut encore simplifier le rsultat avec la commande qui justement simplifie 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
2
(r[1])
on obtient :
Rponse du logiciel
(sin (x))2+n
n+1
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),k014)
donne :
Rponse du logiciel
en
1
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):{
RV,RR,R,k,av,ap,C;
RV:()); RR:());
(k:0;k<N;k++){
av:a+k*(b-a)/N; / / a v a n t .
ap:a+(k+1)*(b-a)/N; / / a p r s .
R:
((av,0),(av,f(av)),(ap,f(av)),(ap,0)); / /
le
rectangle
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
,
,
"
,
.
&
!
2 ) 2
Mthode des rectangles la XCAS
Ce qui nous intresse est bien sr davoir une approximation numrique :
aireRect(f,N,a,b):{
((b-a)/N*f(a+k*(b-a)/N),k1N));
}:;
(
//
subdivision
rgulire
aireRect(x->(x),100,1,10)
Rponse du logiciel
14.02524361
1 x 2 et :
4*aireRect(x->(1-x^2),1000000,0,1)
149
Match Scilab/XCAS sur lapproximation dintgrales
Interrogeons XCAS pour obtenir une approximation de
1 %
0
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]
3.1415926535897926719088
3.1415926535897931159980
150
&
!
2 ) 2
1
1
arctan
=
5
239 4
obtenue en montrant
que,
a et b tant deux rels tels que ab = 1, on a arctan a +
a+b
arctanb = arctan 1ab + avec = 0 si ab < 1, = 1 si ab > 1 et a > 0 et = 1 si
ab > 1 et a < 0.
n (1)k X 2k+1
'
On appelle polynme de G REGORY le polynme Gn (X) =
.
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.
# 4
f(x))
# %
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)
((x))
f(x)
Le rsultat na pas besoin dtre converti en polynme puisque ce nest quune reprsentation
laffichage de la fonction.
(5
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]);
Comparaison de deux polynmes au voisinage de 0
#
Reprenant le mme dveloppement que pour Gp, on obtient un rsultat plus lisible.
(
((x)),x0,6)
Le dveloppement peut etre transform en polynme avec linstruction
En voici tout de suite une application.
154
(DL,polynom).
&
>
)
3 )
*?
*
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 infini ou fini.
On construit une procdure dl(f,x,n) qui dpend de la donne dune fonction f, dun ordre
n et du point dobservation x :
dl(f,x,n):{
(
((f(x),x0,n),polynom));
}:;
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
cte
par
les
les
courbes
couleurs
et
trait
155
(5
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 :
156
quations diffrentielles
Logiciel(s) abord(s) : Scilab Octave Maxima MuPAD XCAS
# $
5
) "
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.
5
) "
le sous-groupe de Lie quelle engendre dans le groupe spcial orthogonal est construit avec
une quation diffrentielle ordinaire.
!
4
La machine se fait une joie de tracer une partie de lorbite du premier vecteur de la base canonique.
y0[1;0;0];t0-1;t-1:.1:1
()
z
(y0,t0,t,f);
(z(1,:),z(2,:),z(3,:))
1.0
0.6
0.2
0.2
1.0
0.8
0.6
0.6
0.4
1.0
0.2
0.0
0.6
0.4
0.2
0.2
0.4
0.0
0.6
0.2
0.8
0.4
1.0
158
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[];
ut-t0
G
(u*A);
XXXX[XXXX;G(1,:)]; YYYY[YYYY;G(2,:)];ZZZZ[ZZZZ;G(3,:)];
()
%(XXXX,YYYY,(ZZZZ,[2,3,4]))
([X,XX,XXX]-XXXX)
159
!
4
5
) " 3+
160
5
) " )
""
#
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.
5
3
La machine peut donner une rsolution formelle ; on nest pas oblig de fixer les conditions
initiales.
([y+100*y,y(0)a,y(0)b],y)
renvoie
Rponse du logiciel
[a*cos(10*x)+(b*sin(10*x))/10]
161
!
4
Mais on atteint vite les limites du calcul symbolique : linstruction suivante choue.
([y+y^2,y(0)a,y(0)b],y)
5
!
Pour le trac des quations unidimensionnelles du premier ordre, les instructions
et
sont trs pratiques.
! )
/
Illustrons cette mthode bien connue : on note lquation diffrentielle du premier ordre 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 ,
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:
([yf(y,x),y(0)uo],y)[0]:;
avoir
la
solution
notre
polygone
//
on
utilise
de
Cnum,Cexact;
}:;
la
//
solution
on
dsolve
pour
exacte
trace
):;
//
//
on
on
construit
construit
le
attendue
les
deux
graphes .
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 :
1
+
On sintresse aux fonctions f drivables sur R satisfaisant la condition
f (x) = k f (x)
(1)
f (a + h) f (a)
h
0
5
Pour obtenir ce trac, nous allons choisir un rel k, un segment [a; b], nous allons fixer 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 dfinit un point dont on connat les coordonnes avec la commande :
163
!
4
A:(1,2);
B:(3,-1);
C:(4,5);
(liste
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 vrifiant :
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 rflchir
au moyen dobtenir les images par f de chacune des extrmits des segments de la subdivision.
g (x+0,25)g (x)
Il suffit 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);
une
suite
de
vaut
vaut
//
tant
//
on
que
points
vide
s crit
rajoute
le
au
tantque
point
de
dpart
en
XCAS
coordonnes
(X,Y)
notre
liste
X:X+0.25; / / o n a v a n c e d e 0 , 2 5 c h a q u e t o u r
Y:0.5+Y; / / o n s a i t q u e g ( X + 0 , 2 5 ) 0 , 5 + g ( X )
:; / / f c omme f i n d e l a b o u c l e
polygone_ouvert(S); / / o n r e l i e l e s p o i n t s d e l a
de
boucle
liste
la
rgle
Cela fonctionne pour ce cas particulier mais a devrait aussi marcher si lon change les
valeurs du pas, du coefficient directeur, des bornes de lintervalle de dfinition, 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 coefficients quelconques quon donnera lordinateur. On
cre ainsi une sorte de fonction de plusieurs variables.
164
&
//
on
prcise
quels
sont
les
variables
de
procdure
S:()); / / o n c r e t o u j o u r s u n e s u i t e d e p o i n t s
X:a; / / a u d p a r t X v a u t a c e t t e f o i s
Y:yo; / / a u d p a r t Y v a u t y o
X<b
/ / o n s a r r t e X b
S:S,(X,Y); / / o n
r a j o u t e l e p o i n t de
vide
au
dpart
coordonnes
(X,Y)
notre
liste
X:X+h; / / o n a v a n c e d e h c h a q u e t o u r d e
Y:h*m+Y; / / o n s a i t q u e g ( X + h ) h * m+ g ( X )
:; / / f c omme f i n d e l a b o u c l e
polygone_ouvert(S); / / o n r e l i e l e s p o i n t s d e
}:; / / o n t e r m i n e l a p r o c d u r e e n f e r m a n t l
boucle
la
liste
la
rgle
accolade
7 5 8
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)...
9
,
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 suffit 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
!
4
:;
}:;
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)),x0100)
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);
ne donne pas de surprise.
Rponse du logiciel
y=%k1sin(10x)+%k2cos(10x)
'(
(y,x,2)=y^2,y,x);
apporte une rponse plus substantielle que le logiciel XCAS
Rponse du logiciel
sqrt(3)*integrate(1/sqrt(y^3+3*%k1),y))/sqrt(2)=x+%k2,
(sqrt(3)*integrate(1/sqrt(y^3+3*%k1),y))/sqrt(2)
Le chapitre daide sur les quations diffrentielles dcrit dautres instructions puissantes, notamment pour rsoudre des conditions initiales et des conditions aux limites.
a Cest--dire suite .
166
# '!(
, # /#0
On obtient la mme chose sur MuPAD
Dune part
ode(y(t)-100*y(t),y(t));
(%)
Rponse du logiciel
{C1*exp(-100*t) - 1/100*C2}
et
ode(y(t)(y(t))^2,y(t));
(%)
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 (x)e px d x
avec linstruction
$$ &= =&. La transforme de e ax est calcule en saisissant :
g(x):=
(a*x);
G(p):=
(g(x),x,p);
G(p);
(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);
:
La rsolution dune"quation linaire coefficients constants de nimporte quel ordre est si+
milaire. Calculons 0 sin(x)/x d x. On sait que la transforme de x f (x) est la drive de la
transforme de f (x). Si F(p) est la transforme de sin(x)/x, sa drive F (p) est donne par :
Fprime(p):=
(-(x),x,p);
Lintgrale recherche est la valeur F(0). Comme F tend vers 0 en +, cest aussi
+
F (p) d p.
, # !"#$
Le logiciel XCAS a un comportement similaire Maxima. La transforme inverse sappelle
au lieu de .
g(x):
(a*x)
G(p):
(g(x),x,p)
G(p)
(G(p),p,x)
F(p):
(
(f(x),x),x,p)
F(p)
Il ne connat pas les relations entre transforme et drive, mais il peut rsoudre aussi lquation diffrentielle :
g(p):
((a*x),x,p)
y(x):
((g(p)+1)/(p-a),p,x)
y(x)
Lintgrale est calcule de la mme faon ; attention la dernire ligne : la dfinition dune
constante et la notation de linfini diffrent de Maxima.
Fprime(p):
(-(x),x,p)
I:
(Fprime(p),p,+,0);
170
Troisime partie
THMES
XCAS au lyce ?
Logiciel(s) abord(s) : XCAS
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,... ?
!"#$
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.
//
C e s t d i r e
u(n)
a * u ( n 1 ) + b
}:;
//
le
1 0 0 me
et
le
5 0 0 me
terme
Rponse du logiciel
3.333333333,3.333333333
uo;
}:;
et alors :
a:0.7
b:1
uo:1
u(100);
On a limpression davoir de srieux candidats pour la valeur de la limite. Pour confirmer 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
k) )
notre
de
points
coordonnes
(k ,u(
liste
On affiche les valeurs de la suite ainsi que la limite prsume issue de notre calcul :
AffSuite(20,-.5,1,1),
(0.66666667,x020,
)
et on obtient pour a = 0, 7, b = 1 et u0 = 1 :
et pour a = 1/2, b = 1 et u0 = 1 :
175
notre
le
point
de
coordonnes
( k , u_k )
liste
((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+1x,x)
Rponse du logiciel
10
3
177
!
7 n
7
10
10
+
3
3
Et voil... Nous pouvons mme nous payer le luxe de vrifier que expu vrifie 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
Oups...
(())
//
simplifie
le
rsultat
prcdent
Rponse du logiciel
0
178
(a )n
b
a1
!!
) b
& %!
!1 !
22 ! 5
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 :
(a>0)
(a<1); / / 0<a<1
(expu(n,a,b,uo),n,+)
Rponse du logiciel
b
a1
(a>1);
(expu(n,a,b,uo),n,+)
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
Nous allons adapter lnonc au cas dune demi-ellipse dfinie laide dune fonction :
Soient a et b deux rels strictement positifs tels que a > b et f la fonction dfinie sur [a ; a] par
(
f (x) = b
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 = a2 2 .
a 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 vrifie.
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 dfinir la fonction f :
f:x->b*(1-(x^2/a^2)):;
(a>0):;
(t>-a)
(t<a):;
M:(t,f(t)):;
Pour dfinir 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 dfinir
une droite de multiples faons (par une quation, deux points, comme intersection de deux
plans, une reprsentation paramtrique...). Nous la dfinirons ici par lquation classique y =
f (x) (x xM ) + f (xM ) :
fp:
(f):;
d:
(yfp(
(M))*(x-
(M))+
(M)):;
180
& %!
!1 !
22 ! 5
Mode muet
Vous noterez que chaque ligne de commande se termine par :; ce qui indique
XCAS quil doit valuer cette ligne mais sans renvoyer de rsultat. En effet, aucun
trac ne peut tre effectu pour linstant car aucune valeur numrique nest affecte
aux paramtres a, b et t .
(d,D):;
Il ne reste plus qu calculer le produit scalaire FM FT laide de
.
(
(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 affixes 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
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 difficults de calcul algbrique.
Cette fois-ci :
renvoie bien 0, ce qui prouve notre thorme car les calculs ont t effectus dans le cas gnral.
7
!"
Pour observer ce phnomne en gomtrie dynamique, il suffit douvrir une fentre de gomtrie en tapant - puis en dfinissant a, b et t comme tant des paramtres que nous
ferons varier la souris :
a:
b:
t:
(05)
(0a)
(-aa)
182
'
2
Nous voici donc en mesure de tracer nimporte quelle tangente une ellipse laide dune
querre puisquil suffit 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 justifis compte tenu des limitations des logiciels promus officiellement : le tableur et les logiciels de gomtrie dynamique, par essence, ne permettent
183
184
Logique lmentaire
Logiciel(s) abord(s) : Yacas
Si largument de la commande 84
(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.
Vrifions dabord laxiome du tiers exclu. On suppose que le prdicat A na pas t utilis plus
avant dans la session Yacas.
84 (A (
A)
84
(A .
(
A)
#> 1
Vrifions 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 flches du clavier.
Nous allons essayer de prouver lquivalence de deux prdicats P et Q.
84
(P >
84
(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 dfinition :
P:( (A .
B)
Q:( A ( B
84
(P >
84
(Q >
Q)
P)
(A et B)
non A ou non B.
Vrifions maintenant que la double ngation est bien lidentit, cest--dire que la ngation
est une involution. On efface dabord Q qui sert redfinir P :
Q
8
(Q)
Q
P:(
(
84
( (P > Q)
.
(Q > P) )
8
(A);8
(B)
P:( (B .
( A)
Q:A ( B
84
( (P > Q) .
(Q > P) )
%
Le raisonnement par labsurde consiste dmontrer une implication en dmontrant que sa
contrapose (cest--dire son contraire) est fausse.
Redfinissons les prdicats P et Q pour rutiliser la procdure de test.
186
&
)
!
P: ( (x > y)
Q: x .
( y
84
( (P > Q)
.
(Q > P) )
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. >
"
&
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 coefficients , et .
(1 a b)AM + a BM + b CM = 0
On appelle (, , ) un systme de coordonnes barycentriques de M dans le repre affine
(A,B,C). Si + + = 1, le systme est dit normalis.
Soit (A,B,C) un repre affine 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
&
&x
& 2
&
&x
3
&
&
z1 &
&
z2 && = 0
&
z3 &
y1
y2
y3
y1
y2
y3
& &
& &
z1 && &&x1 + y 1 + z1
& &
z2 && = &&x2 + y 2 + z2
& &
z 3 & &x 3 + y 3 + z 3
y1
y2
y3
& &
& &
z1 && &&0
& &
z2 && = &&0
& &
z 3 & &1
y1 y3
y2 y3
y3
&
&
z1 z3 &&
&
z2 z3 && = (y 1 y 3 )(z2 z3 ) (y 2 y 3 )(z1 z3 )
&
z3 &
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);
barycentrique
//
donne
la
1 re
coordonne
normalise
yb:M->
(M);
zb:M->
(M);
cb:M->[xb(M),yb(M),zb(M)]; / / d o n n e l e s y s t m e n o r m a l i s
align(A,B,C):{
([cb(A),cb(B),cb(C)])0
("les points sont aligns
");
("les points ne sont aligns");;}:;
Alors :
align((1+),(2+2*),(3+3*))
renvoie :
Rponse du logiciel
les points sont aligns
.
!
+ @
Rappelons ce thorme
190
JC
JA
KA
KB
=1
Nous allons bien sr utiliser la condition dalignement vue prcdemmenta . Nous allons travailler dans le repre affine (A,B,C) et mettre en vidence lappartenance des points aux droites
A:[1,0,0]:;
B:[0,1,0]:;
C:[0,0,1]:;
K:A+k*B:;
J:j*A+C:;
I:x*B+C:;
C ONDITION NCESSAIRE. On suppose que les points sont aligns. On peut alors traduire cette
proprit par le fait que
&
&
& xI
&
&x
& J
&
&x
K
yI
yJ
yK
&
&
zI &
&
zJ && = 0
&
zK &
(1)
((-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
([I,J,K])
Oui, rpond XCAS : la preuve est faite !
> /
Le 5 aot 2007, nous sommes tombs sur la figure suivante parue dans le journal Le Monde
yC
M_6
7
M_3
6
T
3
O
M_4
1
M_5
A
M_2
M_1
B
x
-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:
(05);
x:
(-33);
y:
(-15);
O:(x,y); / / u n p o i n t O v a r i a b l e
c:
(O,R); / / l e c e r c l e c a u s s i
a:
(0 5,);
A:(-a,0);B:(a,0);
T:
(
(A,B,C),
+line_width_2)
triangle
192
bleu
ct
variable
//
un
beau
//
on
construit
les
points
a(CM6 +AM2 +BM4 ) = AM5 (AM6 +CM6 )+BM1 (BM2 +AM2 )+CM3 (CM4 +BM4 ) = a(AM5 +BM1 +CM3 )
"
%%
! !
"
Dabord un dessin :
193
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),
+
);
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
du
point .
//
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]
Mais connatre ces deux points ne suffit 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:
([(
(k1)-a)^2+(
(k1))^2b^2,(
(I)-a)^2+(
(I))^2b^2],[a,b]);
K:
(
((S[1][0],0),S[1][1]),
);
a y est ! Nous avons tous les lments pour crer une procdure pappus(n) qui tracera les n
premiers cercles tangents, et mme leurs symtriques par rapport laxe (Ox)
pappus(n):{
ks:());ks:ks,k1;
//
une
liste
//
liste
de
points
de
contact
qui
contient
dj
k1
cs:());cs:cs,c1;
des
cercles
195
//
liste
des
cercles
symtriques
(j:1;j<n;j++){
ks:ks,(
(
(cs[j-1],K)[1])>
(
(cs[j-1],K)[0])
)
(cs[j-1],K)[1];
(cs[j-1],K)[0]; / / p o u r p r e n d r e l e b o n p o i n t d e c o n t a c t
oj:(xx,yy); / / 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],xxx); / / c e c i p e r m e t d
obtenir
droite
(x);
l ordonne
( O _ j 1
//
on
de
oj
sachant
que
ce
point
appartient
la
K_j )
re v i d e
car
on
va
utiliser
nouveau
solve
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
hj
r j = 2(j +1) comme nous laffirme 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:
([
(os[j-1],oj)
(os[j-1],ks[j])+0.5*yy/(j+1)
,yyeqj],[xx,yy],[
(ks[j]),
(ks[j])],dnewton_solver
);
(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,
(
(y0),
(os[j],
(os[j],ks[j])));
//
son
symtrique
};
(cs,css)
//
on
trace
les
deux
sries
de
cercles
}:;
5
"
)
index.html.
196
les images densembles de points et non pas de points isols. Lide est dutiliser des reprsentations paramtriques de ces ensembles. Nous profiterons de lexistence sur XCAS des commandes
(courbe) qui renvoie lcriture paramtrique complexe dune courbe et
(affixe,paramtre). Par exemple :
//
evalc
renvoie
la
forme
algbrique
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 :
inv_courbe(C,k,g):{
paramg,paramG;
paramg:
(g); / / g s o u s f o r m e p a r a m t r i q u e
paramG:
(C,k,paramg); / / s o n i m a g e p a r
Le
rsultat
est
un
point
dont
il
faut
.
l inversion
extraire
attention
l affixe .
(courbe_parametrique(
(paramG),t-500500,tstep0.5),g);
on
affiche
et
son
image
par
//
l inversion .
}:;
et
C:(-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; j < n; j++) {
g:inv_courbe(C,10,
((0,2*j),1));
L:L,g;
}:;
L
197
Cercles de pappus obtenus en utilisant une inversion.
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 afin 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 suffisant 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 fluide parfait comme celui dun point sur
une hypersurface de dimension infinie. 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 simplifie, 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 .
0
/
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 coefficient 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);
}
}:;
(u(1.5,0.2,10* k),k110)
Rponse du logiciel
0.3329912894,0.3333329986,0.333333333,0.3333333333,0.3333333333
(u(2.5,0.2,10* k),k15)
Rponse du logiciel
0.6,0.6,0.6,0.6,0.6
(u(3.5,0.2,10* k),k15)
200
&
%!
Rponse du logiciel
0.8683116395,0.8284245987,0.8749972464,0.8269407066,0.8749972636
(u(3.71,0.2,10* k),k15)
Rponse du logiciel
0.6260986177,0.5214383835,0.6950564063,0.2789286664,0.772755663
%'
Observer des sries de rsultats chiffrs, un peu comme cela se fait sur les tableurs, nest pas
trs parlant ni efficace.
Nous allons donc utiliser la commande
(f(x),uo,n) qui donne la reprsentation
classique des suites dfinies par une relation un+1 = f (un )a :
(1.6*x*(1-x),x0.9,5)
point
de
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
0
fp(x1)
//
on
vrifie
si
le
point
(f(x),x1+0.0000001,2500)
fixe
//
on
est
attractif
choisit
uo
ou
plus
x1
202
rpulsif
ou
moins
proche
de
(
5!
0
<
avance
res:[0 tmp];
// i l
aura
20
pas
points
le
1/N ,
par
ligne:[0 20];
(r:0;r<R;r+1/N){
tmp:0.2;
//
calcul
de
calcul
des
pas
il
ligne
entre
deux
aura
car
on
valeurs
R *N
fait
points
varier
de
tracs
de
100
120
u100
(k:0;k<100;k++){
tmp:r*tmp*(1-tmp);
}
//
suivants
et
stockage
(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
0
204
Coniques
Logiciel(s) abord(s) : XCAS
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 simplifier 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;
, j . Nous supposerons que a et b ne
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+E0)
Rponse du logiciel
(A)(x)2 (2xC)E
2D
a
e
En posant = 2d
, = dc et = 2d
, est donc la courbe dquation y = x 2 + x + dans
O; , j avec = 0 :
(a*x^2+b*x+c)
Rponse du logiciel
a x + 2ba
2
4ac((b)2 )
4a
42
4
.
(x^2+2*C/A*x+E/A)
Rponse du logiciel
x+
!
2C 2
+
2A
4E
A
!
2C 2
A
x+
c 2 c 2 ea
=
a
a2
c 2 ea 2 < 0, alors = ;
? ab = 0
On obtient comme quation quivalente puisque a et b sont non nuls :
206
(A*x^2+2*C*x)+
# 6!
2%!
%!
Rponse du logiciel
A x + 22CA
2
2
2
2
(24CA) + B x + 22DB (24DB) + E
, j .
Soit le point de coordonnes ac ; db dans O;
2
Posons k = ca db + e.
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.
ka et =
kb on obtient que
x2 y 2
+
=1
2 2
dans ;
, j ;
= 1
2 2
dans ;
, j .
Finalement :
@
207
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
j du plan. On supposera que (a, b, c) = (0, 0, 0).
dans un repre O; ,
!
,
Posons V =
x
y
,A=
et L =
d
c
Avec XCAS,
VAV + t LV + k = 0
'(a*x^2+2*b*x*y+c*y^2,[x,y])
Rponse du logiciel
On sait quil existe une matrice de rotation P SO2 (R) telle que :
t
PAP =
=D
u ,
v
u
,
v la base orthonormale de R2 telle queP soit la matrice de pasage de
Soit
,
j . Soit V tel que V = PV , alors dans le repre O;
u ,
v , a pour quation :
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
# 6!
2%!
%!
91
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:
(A)
[4 (X)2 + 2 X 2 2 (Y)2 + ( (2 Y)) 2]
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...
(
(x^2+6*x*y+y^2+4x))
donne successivement :
#1
$
3
4, 4
la nouvelle base :
Rponse du logiciel
2
2
2
2
2
2
2
2
4 (x)2 2 (y)2 + 12 = 0
# 6!
%!
%!
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 vrifier que lellipse (E) est globalement invariante par reflexion daxe
O; , O; j et par symtrie par rapport O. Nous pouvons donc nous restreindre tudier
lensemble (E ) des points de (E) dabscisse et dordonne positives.
(E ) est la courbe reprsentative de la fonction
f:
R+
(a>0); / / p o u r e x p l i q u e r
f:x->b*(1-x^2/a^2)
R
2
b 1 ax 2
XCAS
que
est
positif .
(
(f(x),x))
Rponse du logiciel
(a)2 ((x)2 ) )bx
(a)3 (a(x)2 )
bx
On obtient f (x) =
pour tout x [ ; a[.
a a2 x2
211
fp:
(f);
(fp(x),x,a,-1) / / 1 i n d i q u e
la
direction
de
la
limite
On a lim
f (x) = , donc (E ) admet une demi-tangente verticale au point dabscisse a.
xa
x<a
y:fp(xo)*(x-xo)+f(xo);
(y*f(xo)/b^2)
Rponse du logiciel
(a^2-x*xo)/(a^2)
ce qui donne :
212
B),
# 6!
%!
%!
On peut visionner linfluence des coefficient a et b en les faisant varier grce la commande
(intervalle) :
a:
(0 10);
b:
(0 10);
f:x->b*(1-x^2/a^2):;
G:(f(x),x0a):;
G1:
((0),G):;
G2:
(
(x0),G):;
G3:
(
(y0),G):;
(G,
+
B),
(G1,
+
B),
(G2,+
),
(G3,
)
x2
a2
y2
b2 = 1
R+
R
:
2
b ax 1 1
(a>0):;
F:x->b*(x^2/a^2-1)
a:2:;
b:1:;
H:(F(x),x25):;
H1:
((0),H):;
H2:
(
(x0),H):;
H3:
(
(y0),H):;
(H,
+
B),
(H1,
+
B),
(H2,+
),
(H3,
)
ce qui donne :
213
, )
%
/ %
Ouvrons une fentre de gomtrie
de coordonnes (x ; y).
MF = eMH
F:(0,0);
M:(x,y):;
((-5)
(0 2)
5)
On trace le lieu du point M vrifiant MF = eMH avec (f(x,y),x,y) qui trace
la courbe dquation implicite f (x, y) = 0 et
'(A,B) qui calcule le carr de la distance AB.
(
(xd),
)
On visualise alors parfaitement les 3 cas : e < 1, e = 1 et e > 1.
)
un vecteur unitaire
Soit le centre de lellipse. Dans le repre orthonorm ;
, j , avec
2
y2
@
c = a2 b2
c
a
F (c ; 0)
F(c ; 0)
D: x =
e=
a2
c
D : x = ac
214
a et b")}
{
c:(a^2-b^2);
E:c/a;
(
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.
! +
@
)
a:
(15)
b:
(1.5)
E:
(x^2/a^2+y^2/b^21):;
(E,
)
215
On dfinit maintenant un point quelconque de E avec la fonction
un rel t entre 0 et 2 :
en faisant varier
t:
M:
(0 2*)
(E,t)
(M,
+point_width_5)
On dfinit un foyer et une directrice et le segment [M, F] :
F:((a^2-b^2),0)
D:
(
(xa^2/(a^2-b^2)),
)
(
(M,F),
)
(point,droite) :
d:
(
(F,
(M,F)),
)
et lintersection de D et d avec
(courbe1,courbe2) :
T:
(d,D)
(T,
+point_width_5)
(
(T,M),
+
)
(droite) :
(
(T,M))
Puis on se souvient du rsultat vu page 212 qui dit que la tangente en M(x0 ; y 0 ) lellipse a
yy
0
pour quation xx
+ b 20 = 1. On obtient donc que :
a2
xx0 b 2
y = 1 2
a
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))
On obtient le mme rsultat. XCAS nous le confirme avec
test boolen :
216
Effectuons la preuve dans le cas gnral grce aux capacits formelles de XCAS :
C:
(x^2/a^2+y^2/b^21):;
M:(a*(t),b*(t)):; / / d f i n i t u n p o i n t d e C
F:((a^2-b^2),0):;
D:
(xa^2/(a^2-b^2)):;
d:
(y(b/
(M))*(1-x*
(M)/a)):; / /
1
T:
(d,D):;
en
effet
xxo / a+
yyo / b
(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 12 x 2 admet
pour foyer F(0 ; 14 ) et une directrice dquation y = 14 .
1. Tracer la droite D dquation y = 1/4 en vert :
D:
(
(y-1/4),
)
(-22)
(D,s), )
(m,F),,
)
(p,med), )
(
(M)(
(M))^2)
Ceci permet de tracer point par point une parabole dont on connat le foyer F et la directrice D :
218
"
"
&
"
C
)
(p,para), )
, : que constatez-vous ?
4. Tracer en jaune pointill (jaune+dash_line) la bissectrice FMmm
bis:
(
(M,F,mm),,
+
)
(
(M,mm),
+
);
(
(M,F),
+
)
219
Rayon rflchi
Pourquoi les antennes sont paraboliques ?
Nous ne vous apprendrons pas lorigine du mot coniques. Nous allons nous contenter de
lillustrer.
220
#/ %! 8
)
221
Rponse du logiciel
%
(y)2 + 1
%
2
(y) + 1
%
Cest dire que z = y 2 + 1 ce qui est quivalent z 2 = y 2 + 1.
Nous reconnaissons bien sr une hyperbole. XCAS nous le confirme.
%
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 :
:
Rponse du logiciel
Hyperbola of center (0,0)
Nous allons rajouter un nouveau paramtre, k, qui va nous permettre de visualiser lvolution
des sections suivant la pente du plan de coupe :
K:
([0,0,0],[0,0,1], /6,
t:
((-10) 10)
k:
((-2) 2)
P:(xt+k*z,+
)
(
(K,P),
+
, 0.01)
B)
222
#/ %! 8
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 coefficients de Fourier :
cn =
1
T
a+T
2int/T
f (t )e
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)
" 0
&
(x^2,x,2*Pi,n,-Pi)
Rponse du logiciel
(n,
)
(x^2,x,2*Pi,n,-Pi)
renvoie cette fois :
Rponse du logiciel
2 (1)n
(n )2
a a lair mieux...
Nous pouvons prfrer les coefficients rels :
(x^2,x,2*Pi,n,-Pi);
(x^2,x,2*Pi,n,-Pi)
226
, "
Rponse du logiciel
4 (1)n
,0
(n )2
On vrifie 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, vrifions le lemme de Riemann-Lebesgue pour rigoler :
Lemme de Riemann-Lebesgue
Soit f L 1 [a ; a + T]. Alors
a+T
lim
n+ a
2int/T
f (t )e
dt = 0
cn:
(x^2,x,2*Pi,n,-Pi);
((cn),n+)
cre la fonction t a0 +
4
'
(x^2,x,2*Pi,n,-Pi)*(
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 suffit de rentrer :
227
" 0
&
([t^2,f4(t)],t-PiPi,[red,
])
Mais pour limpression de ce livre, nous avons augment lpaisseur des traits avec la fonction
:
. %
%'&
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
1
T
a+T
f 2 (t ) dt
+
'
an2 + bn2
n=1
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
Par exemple :
efficace(99.9)
Rponse du logiciel
Il suffit de prendre n=5 pour obtenir 99.9% du signal
Vrifions :
Energie:n->^4/9+ (8/k^4,k1n);
100*
(Energie(4))/
(E);
100*
(Energie(5))/
(E)
0
;
1/
2 et f (0) =
f 1/2 = 0.
On peut rentrer f de manire explicite :
f:t->piecewise(t-.5,0,(-.5<t)
(t<0),-1,t0,0,(0<t)
.5,0)
(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
" 0
&
Reprsentons dabord graphiquement des fonctions dfinies par morceaux en rentrant comme
arguments la liste des intervalles, la liste des valeurs correspondantes, le nombre dintervalles
et la couleur.
plot_mor(LI,LV,m,
):{
P;
P:[];
(k:0;k<m;k++){
P:(P,(LV[k],xLI[k],
));
" morceaux "
de
//
on
cre
courbes
}
}
Par exemple :
plot_mor([-1/20,01/2],[-1,1],2,
)
donne :
230
une
liste
de
et les b n :
four_bn(LI,LV,m,T,p):{
integ,k;
integ:0;
(k:0;k<m;k++){
integ:integ+(2/T)*((LV[k]*(p*2*Pi*x/T),xLI[k]));
}
(integ)
}
4
3
(integ)
}
Alors :
four_bn_general([-1/20,01/2],[-1,1],2,1)
231
" 0
&
nous donne cette fois un rsultat satisfaisant :
Rponse du logiciel
(2 (1)p ) + 2
p
N
'
n=1
s_fourier(LI,LV,m,T,N):{
k;
(four_ao(LI,LV,m,T)+ (four_an(LI,LV,m,T,k)*(k*2*Pi*x/T)+
four_bn(LI,LV,m,T,k)*(k*2*Pi*x/T),k1N))
}
Par exemple :
s_fourier([-1/20,01/2],[-1,1],2,1,5)
Rponse du logiciel
et on obtient pour N = 8 :
232
et on obtient :
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.
5
"
$
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 fix, seuls certains intervalles sont autoriss, chaque note apparat au plus une
fois, on retombe sur la note initiale la fin. Par convention, la note initiale est toujours 0.
Dans notre construction, la premire note est omise et est toujours 0 (do = C) ; on construit
une matrice dont chaque ligne reprsente une gamme. La matrice obtenue la fin 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.
La fonction gamme donne les gammes associes aux suites dintervalles.
% =
y(:,j)
(
(x(:,[1:j]),c),12)
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 !
//
//
limination
de
//
chaque
qu u n e
//
et
//
il
note
ne
doit
mauvaises
pas
seule
y
avoir
lignes
on
ne
doit
rencontrer
fois
deux
intervalles
successifs
k 1
Y0 ;
Yy(i,k-1) ;
;
ZZZ-2*yy+Y ;
or([
(ZZ,12)0,Z0, or(y(i,[1:k])Z)])
identiques .
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(:,s)x(:,1)
On marque les lignes redondantes et on les limine la fin.
236
/ !
)!
yx
y(marque,:)[]
marque[marque,j] ;
3.
mib
7.
sol
10.
sib
2.
r
8.
sol#
4. !
mi
Pour
viter
deux
intervalles
identiques
s"
(z,1) ;
is:-1:1 ,
(z(i,1)+z(i,taille),12)0
aux
bouts
de
z(i,:)[] ;
la
gamme
237
% =
//
on
limine
//
affichage
les
permutations
circulaires
zgamme(nettoie(intervalle(z)))
du
s" (z,1)
//
//
si
[6;3]
rsultat
et
taille
2
ou
.
//
5 -
Le logiciel Scilab permet de fabriquer des sons sous forme de fichiers dextension .wav .
Le son de lorgue lctronique modlis grossirement ici est produit par des oscillateurs
circuits bobine-condensateur. Dans le circuit magntique de chaque bobine tourne une 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.)
//
attention
//
pour
ne
doit
pas
tre
un
tableau
nergie
indpendante
de
amplitudenuance/(1+frequence/441)
uamplitude *(t*omega) ;
la
frquence
Lcriture des chantillons numriques dans un fichier sonore se fait automatiquement. Linstruction y=[u,v] ; wavwrite(y,44100,16,nom) donnerait des rsultats bizarres.
/ $
y[u;v] ;
ynom
(nom,y,44100)
Il reste craser les extrmits pour diminuer les dgts du jeu en boucle.
Puis utiliser les fonctions prcdentes en initialisant les variables.
rotationRoues7 / / l e s r o u e s t o u r n e n t . h e r t z
profondeur.003
frequence441 / / l a d u d i a p a s o n
nuance.999 / / f f f f o n n e p e u t p a s a l l e r p l u s l o i n .
zconcret(enveloppe,2,frequence,rotationRoues,profondeur,nuance);
nomorgueA3.wav
nomorgueBIS.wav
sortie(z,z,nom)
La fabrication automatique du sons peut produire des chantillons pour un squenceur informatique. La grandeur dune octave pour loreille humaine, cest--dire le coefficient 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. Profitons-en
pour construire des fonctions logarithme et exponentielle musicales.
(mkdir
Sons)
Lautomate est prt tre crit ; le lecteur pourra aisment modifier 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
% =
ysequence(duree,rotationRoues,profondeur,nuance,octave)
n-2:8;N(n)
gamme[A]
suite[]
kN,
suite[suite gamme+k];
ksuite,
nomorgue+(k)+.wav ;
ivectorfind(suite,k,c)-5 / / 5 e s t l a p l a c e d u l a 3 .
frequence441*em(i*12,octave) / / 4 4 1 Hz p o u r l e l a d u d i a p a s o n
zconcret(enveloppe,duree,frequence,rotationRoues,profondeur,nuance)
sortie(z,z,Sons/+nom) ;
ysuite
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.
octave2.01
rotationRoues7 / /
profondeur.003
nuance.999 / / f f f f
duree1
les
le
roues
maximum
tournent
.
hertz
.
240
Carrs magiques
Logiciel(s) abord(s) : Scilab
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 affiche 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) ;
uI; d2*I; t3*I; q4*I; c5*I; s6*I; e7*I; h8*I; n9*I;
'
znumero(k)
kk
(k,3) ; K(k-kk)/3
; zz
(kk,K)+2*K/3
; z
((zz),2)
Quand une case de la matrice M est remplie, on procde aux liminations dans la matrice Y,
qui sera lune de celles o sont stocks les nombres encore inutiliss.
La premire action pour remplir la matrice est de vrifier les nombres qui ne sont utiliss
quune fois dans chaque ligne ou colonne.
s il
//
on
ny
remplit
qu u n e
la
rponse
case
par
ligne
ou
de M c o r r e s p o n d a n t e
par
Mm
liste[u,d,t,q,c,s,e,h,n]
compteur1
// boucle1
yliste
Y
(y)
colonne
// boucle2
j1:9
//
si
une
seule
rponse
// boucle3
colonne(j)compteur
// boucle4
k1:9
// boucle5
M(k,j)0
M(k,j)Y(k,j)
// f i n
de
242
sur
boucle5
la
colonne
colonne
/ $
// fin
de
boucle4
// fin
de
boucle3
// fin
de
boucle2
// boucle2bis
j1:9
//
si
une
seule
rponse
sur
// boucle3bis
ligne(j)compteur
la
ligne
// boucle4bis
k1:9
// boucle5bis
M(j,k)0
M(j,k)Y(j,k)
// fin
de
boucle5bis
// fin
de
boucle4bis
// fin
de
boucle3bis
// fin
de
boucle2bis
de
boucle1
compteurcompteur+1
// fin
Si tous les nombres sauf un ont t limins pour un emplacement donn, lemplacement
peut tre attribu.
si
//
compte
un
//
on
seul
tenu
remplit
chiffre
de
la
est
toutes
case
apparat
les
possibilits
de M c o r r e s p o n d a n t e
Mm
liste[u,d,t,q,c,s,e,h,n]
// boucleA
k1:9
// boucleB
l1:9
verticale"
(9,1)
compteur1
// boucleC
yliste
Y
(y)
verticale(compteur)Y(k,l)
243
'
compteurcompteur+1
// f i n
de
boucleC
//
seul
test (verticale)
un
chiffre
est
possible
// boucleCbis
test (verticale)
M(k,l)test
// f i n
de
// f in
boucleCbis
de
// f i n
boucleB
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
ny
remplit
qu u n e
la
case
rponse
par
matrice
par
extraite
de M c o r r e s p o n d a n t e
Mm
liste[u,d,t,q,c,s,e,h,n]
compteur1
// boucle1
yliste
Y
(y)
// boucle2
K0:2
// boucle3
L0:2
ZY(3*K+[1:3],3* L+[1:3])
test (Z)
//
si
une
seule
// boucle4
rponse
testcompteur
// boucle5
sur
kk1:3
// boucle6
ll1;3
k3*K+kk ; l3*L+ll
// boucle7
M(k,l)0
M(k,l)Y(k,l)
// f i n
244
de
boucle7
la
matrice
par
extraite
/ $
// fin
de
boucle6
// fin
de
boucle5
// fin
de
boucle4
// fin
de
boucle3
// fin
de
boucle2
de
boucle1
compteurcompteur+1
// 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)
fonction
principale
[M,U,D,T,Q,C,S,E,H,N]egale(m,u,d,t,q,c,s,e,h,n)
liste[U,D,T,Q,C,S,E,H,N]
yliste
Y
(y)
Zannulation(Y,M)
(y+Z)
MMattribution(M,U,D,T,Q,C,S,E,H,N)
yliste
Y
(y)
Zannulation(Y,MM)
(y+Z)
MMMATTRIBUTION(MM,U,D,T,Q,C,S,E,H,N)
yliste
Y
(y)
Zannulation(Y,MMM)
(y+Z)
Mattrib(MMM,U,D,T,Q,C,S,E,H,N)
245
'
stop0
//
une
tape
de
//
mesure
de
//
est ce
fini
travail
[M,U,D,T,Q,C,S,E,H,N]op(m,u,d,t,q,c,s,e,h,n) ;
l effort
longueurlongueur+1 ;
[M,U,D,T,Q,C,S,E,H,N][m,u,d,t,q,c,s,e,h,n]
stop1 ;
[m,u,d,t,q,c,s,e,h,n]egale(M,U,D,T,Q,C,S,E,H,N) ;
Quand la machine sarrte, le point darrive est affich avec leffort fourni.
(m);
(longueur);
Si a bloque avant de trouver une solution, cest quon ne peut pas continuer par limination : il faut fixer une valeur arbitraire dans M (de prfrence o la collision est faible). Les
instructions suivantes donnent des indications.
collisionu+d/2+t/3+q/4+c/5+s/6+e/7+h/8+n/9-1 ;
(u);
(d);
(t);
(q);
(c);
(s);
(e);
(h);
(n)
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
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
) ,
8
/ '
A
Fk2
Nous voudrions crire les 2k vecteurs de Fk2 sous forme de listes de longueur k. Plusieurs options 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 fixe le nombre de composantes k :
Fdeux(n,k):{
L;
L:[];
(n>2){
L:([
n:(n,2);
(n,2)],L);
}
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
:
Fn2
(m) =
-n
i=1 m i
248
Fn2 Fn2
(m, m )
(m + m ) = (m m )
3 '2
:
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 suffit dutiliser pour effectuer la somme des composantes dun vecteur :
([1,2,3,4])
Rappelons que nous rentrons une matrice de codage M et un message v et que nous 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 Fk2 par uM , lendomorphisme canoniquement associ M.
Ima:());
(j:0;j<2^k;j++){
Ima:Ima,M*Fdeux(j,k)%2;
};
Ima:[Ima];
construit la liste des images des vecteurs de Fk2 par uM . Techniquement, on rajoute la squence 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:(M);
n:(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 Fn2 qui nappartiennent pas I m(uM ). Nous
utiliserons la fonction C8.3(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;k<2^n;k++){
(
(Fdeux(k,n)%2,Ima)0)
L:L,Fdeux(k,n);
};
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 Fn2 : si cest un des
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 A pour plus de rapidite (=< fait la modification 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)
On rajoute une ligne nulle quon remplacera par les vecteurs de I m(uM )
U:
([[0
n]],U)%2
On forme ensuite la premire ligne de notre matrice finale en ajoutant la premire ligne de U
celle de Ima
N:[(U[0]+Im[g]) (g02^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.
h:1;
(h<(2^n-2^k)){
(
(U[h],N)0)
N: (2,1,[N,[(U[h]+Im[g])
h:h+1;
(g02^k-1) ]]):;
3 '2
:
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
en "+Ima[q]%0);
corrig en "+Ima[q]%0);} };
Il reste vrifier que le choix du message corrig est justifi. 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 :
PoiMin(M):{
L,k;
k:(M);
L:[];
(j:1;j<2^k;j++){
L:(L, (M*Fdeux(j,k)));
}
( (L));
}
Un code t -correcteur est dit parfait si la runion des boules fermes de centre chaque lment
de I m(uM ) et de rayon t donne Fn2 .
Il sagit en fait pour nous de vrifier 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
) ,
La procdure sous sa forme finale est donc
decod1(M,v):{
Ima,L,P,U,N,W,X,l,j,k,K,g,h,x,y,q,r,p,n,m,current,nbsolutions,pos;
k:(M);
n:(M);
((v) n)("Le message nest de la bonne taille.");
{
Ima:());L:());P:[];U:[];
(j:0;j<2^k;j++){
Ima:Ima,M*Fdeux(j,k)%2;
};
Ima:[Ima];
(K:0;K<2^n;K++){
(
(Fdeux(K,n)%2,Ima)0)
L:L,Fdeux(K,n);
};
L:[L];
(j:0;j<"
(L);j++){
L[j]<[ (L[j]),(L[j])];
}
(L,(x,y)->x[0]<y[0]);
U:
(L,00);
U:
([[0 n]],U)%2;
N:[(U[0]+Ima[g]) (g02^k-1)]:;
h:1;
(h<(2^n-2^k)){
(
(U[h],N)0)
N: (2,1,[N,[(U[h]+Ima[g])
h:h+1;
(g02^k-1) ]]):;
}:;
X:N%0;
W:[];
(r:0;r<(X);r:r+2^k){
W:(W,X[r]);
};
W:' (W,n);
("Le code est "+((PoiMin(M)-1)/2)+"-correcteur");
(PoiMin(W)<((PoiMin(M)-1)/2))("Le code est parfait");
{("Le code nest parfait")};
en "+Ima[q]%0);
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 inefficace 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 !
8 "
&
%
&@
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 Fn2 mais plutt par
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
-n
j
j
n
(X + 1) qui est nul dans F2 [X]/
donc que m(X) h(X) = j =0 m j X g (X)h(x) =
j =0 m j X
n
(X + 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);
c Voir B RUGRE , Thierry/M OLL ARD , Alain, ibid. page 321
253
) ,
On transforme ensuite h(X) en la liste des coefficients grce la fonction
ajoute autant de zros que ncessaires pour former une liste de longueur n :
L:
' et on
'(h(x)*x^(n-1-
(h(x))));
(n-
(h(x)))]%2) {
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 Fn2 , il suffit de
rajouter au message reu le k e vecteur de la base canonique de Fn2 :
{
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
254
de la bonne taille.");
3& *
- 2
8 2 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);
}
}
}
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 efficace que notre premier algorithme.
8 "
%
3 "
%
&@
3
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 fixant sa longueur n et sa capacit de correction t .
Nous ntudierons que des codes dont la longueur sexprime sous la forme n = 2m 1.
Le rsultat fondamental est que le corps de Galois de caractristique 2 et de cardinal 2m (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 finis 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){
e B ADRIKIAN , Josphe, ibid.
255
) ,
L:L,l;l:2*l%n
};
L:[L]
}
Par exemple,
cyclo(3,5)
renvoie :
Rponse du logiciel
[3 % 31,6 % 31,12 % 31,-7 % 31,-14 % 31]
On construit ensuite le polynme minimal de k qui est le polynme normalis de racines 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 16(caractristique,longueur,options).
Par exemple, avec :
K:16(2,5,[x,K]);
on obtient :
Rponse du logiciel
GF(2,x^5+x^3+1,[x,K],undef)
renvoie :
Rponse du logiciel
x^5+x^3+x^2+x+K(1)
256
3& *
- 2
8 2 2
!
gen(t,m):{
g,alpha,j,p;
K:16(2,m,[x,K]);alpha:K(x);
p:
(poly_min(cyclo(2*j-1,m),alpha),j1t);
(p%2);
}
et :
gen(3,5)
renvoie :
Rponse du logiciel
x^15+x^14+x^13+x^12+x^10+x^8+x^7+x^6+x^5+x^4+K(1) % 2
On peut alors crer une matrice de contrle assez rapidement. Le problme sera de corriger
lerreur...
Pour des codes 1-correcteurs, notre procdure Hamming suffit. 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
Surfaces de projection
impose
Logiciel(s) abord(s) : XCAS
9
2@
9 "
%
&@ %
( ! "
Soit n un entier naturel non nula et k 0 ; n. On fabrique une suite de polynmes de la
manire suivante :
(A
2@
Pour se familiariser
avec ces polynmes,
on peut construire les premiers la main.
2
P2 (x, y, u) = P1 a1 (x, y), u (x + y) . Or a1 (x, y) = y(x), donc
2
2
P2 (x, y, u) = P1 x y, u (x + y) = u (x + y) x y
"
Le problme vient surtout de cette dfinition de polynmes qui dpendent dun nombre variable dindtermines et dont la dfinition 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 efficace avec un langage impratif comme celui utilis par XCAS.
Il faut donc apprendre rflchir autrement et voir un programme impratif comme un casier
tiroirs dont on peut volont modifier le contenu en gardant une mme structure. Et 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 :
a Dans le cas qui nous intresse, n = 3.
b
a dautres proprits comme par exemple les changements de variables dans les intgrales.
260
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),j1k),(u- (x[j],j,1,k+1))^2]
indeterminees:[
(x[j],j1k),u];
polytemp:(polytemp,indeterminees,nouveauzarguments);
Le problme, cest que nous navons pas un polynme, mais une liste de polynmes. Ainsi :
ListePoly(2)
renvoie :
Rponse du logiciel
261
(x1,x2,u)->(u-x1-x2)^2-x2*x1
et donc :
P2(x,y,t^2)
renvoie :
Rponse du logiciel
(t )2 x y
2
yx
9 0B
3 %
&
+
Notre problme est de dfinir avec un minimum dingalits un polygone convexe rgulier,
ou plus prcisment lintrieur du polygone.
Une chose est dabord sre : les sommets du polygone sont inscriptibles dans un cerclec , donc
le polygone est compris dans un disque. Ici, cela nous donne dj une ingalit :
1 x2 y 2 0
En fait, nous allons tenter de nutiliser quune deuxime ingalit.
*
?
(ax + b)2 y 2 0
(ax b)2 y 2 0
2
c y2 0
c Nous considrerons ici quil sagit du cercle de centre O et de rayon 1.
262
2i 2/n
d2
c
d3
e
2i 1/n
d1
2i 3/n
e
d 3
2i 4/n
c
d 2
2i 0/n
d 1
e
2i 5/n
1 x 2 y 2 0
*
Observons un autre cas particulier. Avec toujours autant dastuce, on peut caractriser le polygone par le systme :
2
2
1x y 0
263
b1
d2 b2
2i 2/n
2i 1/n
d1
d3
b3
e
2i 3/n
d 2
b 2
2i 0/n
d 1
2i 4/n
e
b 1
(
(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
((x + 1)2 (y)2 ) ((x + 1)2 (y)2 ), 1 (x)2 (y)2
9 "
? %
B
3
Vous pourrez prouver pendant vos temps libres quil existe un polynme P tel que
v S = X R2 , b(X) 0, c(X) 0 :z R, P(b(v), c(v), z 2 ) = 0
et que P2 dcrit plus haut convient.
Pour visualiser, nous utiliserons la commande
(
(p2(b(4),z^2)),x-11,y-11,z05,
0.1,
0.1,"
0.1)
Varit dont la projection est un carr
Pour obtenir la vue de dessus, on clique sur Menu3-dvue de dessus z=cst :
265
;3
(
(p2(b(6),z^2)),x-11,y-11,z05,
0.1,
0.1,"
0.1)
266
9,
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
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 fig 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
F(A, B)
DA A
B
t
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.
1
Il est important que les deux coefficients de diffusion DA et DB soient diffrents et non nuls.
Le calcul approch sera fait sous Scilab en reprsentant lespace par un maillage 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 tore, cest--dire un rectangle ; dont les cts opposs sont recolls deux--deux : un
cylindre ferm.
#C'
Les donnes sont stockes dans des fichiers. Il faut dabord rcuprer les matrices qui correspondent aux dix tapes.
A0
(./A0,maille,maille)/1e2
A1
(./A1,maille,maille)/1e2
A2
(./A2,maille,maille)/1e2
A3
(./A3,maille,maille)/1e2
A4
(./A4,maille,maille)/1e2
A5
(./A5,maille,maille)/1e2
A6
(./A6,maille,maille)/1e2
A7
(./A7,maille,maille)/1e2
A8
(./A8,maille,maille)/1e2
A9
(./A9,maille,maille)/1e2
;
;
;
;
;
;
;
;
;
;
B0
(./B0,maille,maille)/1e2
B1
(./B1,maille,maille)/1e2
B2
(./B2,maille,maille)/1e2
B3
(./B3,maille,maille)/1e2
B4
(./B4,maille,maille)/1e2
B5
(./B5,maille,maille)/1e2
B6
(./B6,maille,maille)/1e2
B7
(./B7,maille,maille)/1e2
B8
(./B8,maille,maille)/1e2
B9
(./B9,maille,maille)/1e2
;
;
;
;
;
;
;
;
;
;
270
=
2
Les matrices Ai reprsentent les concentrations en produit A la date i . On dfinit les coordonnes des noeuds de la grille.
xx1:S
yyxx
La palette des couleurs est rduite pour des vidoprojections en toutes conditions, et pour
mettre en valeur leffet de seuil.
("colormap", (32))
r[0;1];
g[0;1];
b[1;0];
h[r g b];
On affiche la premire donne, concentration en produit A au dbut.
("colormap",h)
%(xx,yy,A0)
On affiche la deuxime donne aprs une demi-seconde.
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 film de dix images cela nen vaut pas la peine.
1
(sleep 0.5)
%(xx,yy,A6)
(sleep 0.5)
%(xx,yy,A7)
(sleep 0.5)
%(xx,yy,A8)
(sleep 0.5)
%(xx,yy,A9)
On ouvre une nouvelle fentre pour y placer la reprsentation colore de la concentration en
produit B. La matrice h des couleurs est dja fixe.
()
//
couleurs
("colormap", (32))
Il ne reste plus qu y placer le film pour B.
("colormap",h)
%(xx,yy,B0)
(sleep 0.5)
%(xx,yy,B1)
(sleep 0.5)
%(xx,yy,B2)
(sleep 0.5)
%(xx,yy,B3)
(sleep 0.5)
%(xx,yy,B4)
(sleep 0.5)
%(xx,yy,B5)
(sleep 0.5)
%(xx,yy,B6)
(sleep 0.5)
%(xx,yy,B7)
(sleep
272
0.5)
%(xx,yy,B8)
(sleep 0.5)
%(xx,yy,B9)
"
Le laplacien discret appliqu une matrice carre A est construit de manire traditionnelle.
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.
1
Les conditions initiales sont dabord initialises par une rpartition spatiale alatoire.
t0:.01:.13 ;
t00 ;
maille10
y00.00001*
(2*maille,maille) ;
La premire photographie de la situation est calcule. Les dimensions S et T sont dfinies par
commodit.
y
(y0,t0,t,
T"
(y,2)
S"
(y,1)/2
)
Les autres tapes sont enregistres. La facilit dutilisation de lditeur de texte Emacs nous a
dissuad de construire une boucle. . .
y2
(Y1,t0,t,
Y2y2(:,T-S+1:T)
A2Y2(1:S,:)
B2Y2(S+1:2*S,:)
(./A2,A2)
(./B2,B2)
)
y3
(Y2,t0,t,
Y3y3(:,T-S+1:T)
A3Y3(1:S,:)
B3Y3(S+1:2*S,:)
(./A3,A3)
(./B3,B3)
)
y4
(Y3,t0,t,
Y4y4(:,T-S+1:T)
A4Y4(1:S,:)
B4Y4(S+1:2*S,:)
(./A4,A4)
)
274
(./B4,B4)
y5
(Y4,t0,t,
Y5y5(:,T-S+1:T)
A5Y5(1:S,:)
B5Y5(S+1:2*S,:)
(./A5,A5)
(./B5,B5)
)
y6
(Y5,t0,t,
Y6y6(:,T-S+1:T)
A6Y6(1:S,:)
B6Y6(S+1:2*S,:)
(./A6,A6)
(./B6,B6)
)
y7
(Y6,t0,t,
Y7y7(:,T-S+1:T)
A7Y7(1:S,:)
B7Y7(S+1:2*S,:)
(./A7,A7)
(./B7,B7)
)
y8
(Y7,t0,t,
Y8y8(:,T-S+1:T)
A8Y8(1:S,:)
B8Y8(S+1:2*S,:)
(./A8,A8)
(./B8,B8)
)
y9
(Y8,t0,t,
Y9y9(:,T-S+1:T)
A9Y9(1:S,:)
B9Y9(S+1:2*S,:)
(./A9,A9)
(./B9,B9)
)
Les fichiers sont prts pour laffichage (voir section 11.2). Si des fichiers Ai,Bi sont dja enregistrs, il est bon de les effacer par la commande :
(rm
A[0-9] B[0-9])
275
1
"
Le recollement des artes du rectangle affecte seulement la dfinition du laplacien.
276
, "
&
La dfinition du laplacien sur un cylindre est intermdiaire entre le cas du rectangle et celui
du tore.
277
1
k2.0002
k30.0002
k4.0002
Le reste du programme est similaire aux autres cas. Laffichage de la concentration finale B
montre une figure nettement diffrente.
278
Quatrime partie
ANNEXES
Tableaux comparatifs
D
Logiciel
Licence
Site internet
Bc
GPL
http://www.gnu.org/software/bc/manual/bc.html
Maxima
GPL
http://maxima.sourceforge.net
MuPAD
commerciale
http://www.mupad.de
Octave
GPL
http://www.octave.org
PARI/Gp
GPL
http://pari.math.u-bordeaux.fr/
Scilab
Scilab
http://www.scilab.fr
Yacas
GPL
http://yacas.sourceforge.net
XCAS
GPL
http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html
GnuPlot
GPL
http://www.gnuplot.info/
Logiciel
Fichier de configuration
Maxima
/.wxMaxima
PARI/Gp
/.gprc
Yacas
/yacas/yacasinit.ys
XCAS
/.xcasrc
O se trouve le fichier de configuration ?
Ensemble
Liste
Matrice
Maxima
[1, 2]
[1, 2]
matrix([1,2], [3,4])
MuPAD
{1, 2}
[1, 2]
Octave
[1 2]
[1 2;3 4]
PARI/Gp
[1,2]
[1,2 ; 3,4]
Scilab
[1 2]
A=[1 2;3 4]
Yacas
{1,2}
{1,2},{3,4}}
[1,2]
[[1,2],[3,4]]
XCAS
set[1,2]
%{1,2%}
matrix(2,2,(j,k)->j+k)
Logiciel
quation
Maxima
x=0
l[2]
m[2, 3]
length(l)
MuPAD
x=0
l[2]
m[2, 3]
nops(l)
Octave
x=0
l(2)
l(2,1)
PARI/Gp
x=0
l[2]
l[1,2]
Scilab
x=0
l(2)
l(2,1)
Yacas
x==0
XCAS
x=0
length(l)
l[2][1]
l[2]
l[2][1]
size(l)
Logiciel
True
False
And
Or
Not
Equal
Bc
&&
||
==
Maxima
true
false
and
or
not
MuPAD
true
false
and
or
not
<>
PARI/Gp
&&
||
==
Scilab
%t
%f
&
or
not
= ==
Yacas
True
False
MathAnd
MathOr
MathNot
Equals
XCAS
and &&
or ||
==
282
Not equal
<>
!=
"
!"
5
Logiciel
Assignement
Dfinition de fonctions
Bc
y=3
Maxima
y:3;
MuPAD
y:= 3;
f:= proc(x, y)
Octave
y=3;
function f(x,y)
x*y
endfunction
PARI/Gp
y=3
f(x,y)=x*y
Scilab
y=3;
function f(x,y)
x*y
endfunction
Yacas
y:=3;
Function(f,x,y)[x*y;];
XCAS
y:=3
f(x,y):={x*y }
Logiciel
If+then+else
Bc
if(test) ...;...;
Maxima
MuPAD
if test then ... elif test then ... else ... end_if
Octave
PARI/Gp
if(test,...,...)
Scilab
Yacas
if(test)..else...
XCAS
283
Boucle for
Bc
for(i=1;i<=n;n=n+1){x;y;}
Maxima
MuPAD
Octave
PARI/Gp
for(j=1,n,action)
Scilab
Yacas
ForEach(j,1..n)[x;y;]
XCAS
for (k:=1;k<=n;k++)x;y;
pour(k:=1;k<=n;k++)x;y;
pour n de 1 jusque n pas 1 faire x; y; fpour
Logiciel
Maxima
MuPAD
PARI/Gp
print("sin(",0,")=",sin(0))
Yacas
Echo("sin(",0,")=",MathSin(0));
XCAS
print("sin("+0+")="+sin(0))
/ '
%'
21/3
Logiciel
Maxima
%e
%pi
%i
inf
sqrt(2)
2(1/3)
MuPAD
PI
infinity
sqrt(2)
2(1/3)
Octave
pi
sqrt(2)
2(1/3)
PARI/Gp
exp(1)
Pi
sqrt(2)
2(1/3)
Scilab
%e
%pi
%i
sqrt(2)
2(1/3)
Yacas
Exp(1)
Pi, Pi()
Infinity
Sqrt(2), MathSqrt(2)
2(1/3)
XCAS
Pi,pi,PI
infinity
sqrt(2)
2(1/3)
284
"
!"
5
Logiciel
ln
Arctan
n!
Bc
l(x)
a(x)
Maxima
log(x)
atan(x)
n!
MuPAD
ln(x)
atan(x)
n!
Octave
log(x)
atan(x)
prod(1:n)
PARI/Gp
log(x)
atan(x)
n!
Scilab
log(x)
atan(x)
factorial(n)
Yacas
Ln(x)
ArcTan(x)
n!
Logiciel
n mod m
Maxima
mod(n, m)
MuPAD
n mod m
Octave
mod(n,m)
PARI/Gp
n%m, Mod(n,m)
Scilab
modulo(n,m), pmodulo(n,m)
Yacas
Mod(n,m)
XCAS
n mod m, m%n
Calcul modulaire
Logiciel
Partie relle
Maxima
realpart(f(z))
rectform(f(z))
MuPAD
Re(f(z))
rectform(f(z))
Octave
real(z)
PARI/Gp
Scilab
real(z)
Yacas
Re(z)
XCAS
Re(z)
evalc(z)
285
Somme :
n
'
f (i )
i=1
Maxima
sum(f(i),i,1,n) ,simpsum
MuPAD
sum(f(i), i = 1..n)
Octave
PARI/Gp
sum(k=1,n,f(k))
Scilab
Yacas
Sum(i,1,n,f(i))
XCAS
sum(f(k),k,1,n), sum(f(k),k=1..n)
Logiciel
Maxima
limit(f(x), x, 0, minus)
taylor(f(x), x, 0, 3)
MuPAD
limit(f(x), x = 0, Left)
series(f(x), x = 0, 4)
x0
Octave
PARI/Gp
f(x)
Scilab
Yacas
Limit(x,0,Left) f(x)
Taylor(x,0,4) f(x)
XCAS
limit(f(x),x=0,-1)
series(f(x), x = 0, 4)
Logiciel
Calcul diffrentiel :
d 3 f (x, y)
d x3
1
Intgration :
f (x) d x
0
Maxima
diff(f(x, y), x, 3)
integrate(f(x), x, 0, 1)
MuPAD
int(f(x), x = 0..1)
quad("f",0,pi/2)
Octave
PARI/Gp
deriv(f(x),x)
intg(0,1,f)
Scilab
Yacas
D(x,3) f(x,y)
Integrate(x,0,1) f(x)
XCAS
int(f(x), x = 0..1)
286
"
!"
5
Logiciel
Graphe 2D
Maxima
plot(x, x, 0, 1)$
MuPAD
plot(acsch(x), x, 0, 1)$
Octave
PARI/Gp
Scilab
fplot2d(x,f)
Yacas
Plot2D(x,ArcCos(x),0:1)
XCAS
plot([x,acosh(x)],x=1..2,color=[green,red],legende=["x","Argch"])
Graphe 2D
Logiciel
Graphe 3D
Maxima
plot3d(abs(x*y), x, 0, 1, y, 0, 1)$
MuPAD
Octave
PARI/Gp
Scilab
fplot3d(x,y,f)
Yacas
Plot3DS(Abs(x*y), 0:1,0:1)
XCAS
Graphe 3D
287
Bibliographie
1 B
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
Affixes, 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 affine, 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
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 significatifs, 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 fini, 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
1
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-dfinition, 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
292
1
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
293
1
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 fixe attractif, 202
Point fixe 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
294
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,
1
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,
295
Bc
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
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
Gp
\p, 46
atan, 46
cos, 153
deriv, 64, 116
exp, 116, 153
log, 67
Mod, 49
Pi, 46, 153
polroots, 64
sqrt, 53
\VerbatimEnvironment, 17
\includegraphics, 21
fancyvrb, 16
VerbatimOut, 16
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
298
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
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
235240, 242246
endfunction, 41, 72, 73, 113, 116123,
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,
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
Shell
-l, 67
bc -l, 72
info, 8
lynx, 8
man, 8
read, 30
xdvi, 8
XCAS
:=, 250
=<, 250
chaine, 35
abs, 56, 227
abscisse, 180, 180, 190, 195, 196, 216,
300
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,
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,
156
local, 32, 33, 35, 56, 100, 101, 103, 148,
301
302
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,
252, 255
xstep, 134, 135, 221, 222, 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
303
Guillaume Connan
Stphane Grognet
GUIDE DU CALCUL
AVEC LES LOGICIELS LIBRES
Le Guide du Calcul avec les logiciels libres vous propose de
matriser les bases de plusieurs logiciels gratuits de calcul formel
et numrique, et de gomtrie dynamique : XCAS, Scilab, Bc,
Gp, GnuPlot, Maxima, Octave, Yacas, et galement MuPAD
(non libre). Ces logiciels sont multiplateformes (Windows, Mac,
Linux) et sinstallent rapidement.
La grande originalit de cet ouvrage est de dtailler pas pas
lutilisation de plusieurs logiciels pour plusieurs types de calcul.
Il propose ainsi des applications en mathmatiques, en physique
et en sciences de lingnieur (par exemple : quations
diffrentielles utilises en physique, traitement du son...). Il vous
aidera savoir utiliser le bon logiciel au bon moment pour
rsoudre le bon problme.
Cet ouvrage sadresse toute personne voulant utiliser le calcul
en mathmatiques laide de logiciels libres : tudiants en
mathmatiques ou en informatique, professeurs de lyce
souhaitant utiliser ces outils dans le cadre de leur cours et
jusquaux candidats lagrgation dsirant se prparer
lpreuve de modlisation.
Un index thmatique et un index des commandes par logiciel
aident le lecteur trouver rapidement linformation quil
recherche.
GUILLAUME CONNAN
Professeur agrg de
mathmatiques au Lyce
Jean Perrin (Rez).
STPHANE GROGNET
Matre de confrences
lUniversit de Nantes,
directeur de lIREM
des Pays de la Loire.
MATHMATIQUES
PHYSIQUE
CHIMIE
SCIENCES DE LINGNIEUR
INFORMATIQUE
SCIENCES DE LA VIE
SCIENCES DE LA TERRE
ISBN 978-2-10-053934-5
www.dunod.com