Benjamin COLLAS
benjamin.collas@telaxo.com

Mi-101           Mathematica	          2004-2005
Leçon 0 : Découverte et familiarisation

L'objectif de cette leçon est de vous présenter un aperçu général de Mathematica ainsi que quelques commandes qui reviendront régulièrement.
Pour la fois prochaine, vous devrez apporter une disquette étiquettée à votre nom afin de sauvegarder vos travaux. 
Exceptionnellement, vous pouvez sauvegarder ce TD dans le répertoire etudiants du disque dur, sous le nom votrenom0.

Déroulement d'une session

Démarrer

Le PC

Allumez l'écran, puis l'unité centrale (la tour à coté). L'allumage est confirmé par un bouton qui passe au vert au bout de quelques instants, ainsi que par quelques bruits de ventilateur.
Lorsque l'écran affiche "MsDos6.2", "Windows" et "Unix",  il  faut choisir notre environnement de travail. Appuyez sur le "2" du pavé numérique (partie droite du clavier) pour valider "Windows 2000".
Lorsque le système vous demande un mot de passe ainsi qu'un identifiant, appuyez sur "Entrée" pour court-circuiter cette demande (il n'y a pas de mot de passe).
Vous voilà arrivé sur le bureau, votre espace de travail sous Windows 2000. C'est à partir de là que vous pourrez lancer des logiciels (traitement de texte, tableur, internet explorer, ...et Mathematica !).

Mathematica

Une fois Windows lancé, il  faut lancer Mathematica :
Cliquez sur "Démarrer" en bas à gauche de l'écran, allez sur "Programmes". Une liste de tous les logiciels installés sur l'ordinateur s'affichera. Cherchez y "Mathematica3.0", un menu se déroule, puis cliquez avec le bouton gauche sur "Mathematica".
Une page blanche (le notebook) s'affiche ainsi qu'un bloc empli de bouton (une palette). C'est dans le notebook que seront saisies les commandes et les ordres pour dialoguer avec Mathematica.

L'environnement de travail

Nous travaillerons avec deux notebooks sumultanément. Le premier vous servira de cahier de brouillon pour rechercher les exercices et étudier les fonctions. Le second contiendra la version rédigée de votre travail. A la fin de chaque scéance, vous me remettrez une version imprimée de votre cahier rédigé qui ne devra pas dépasser 2 pages.

Le cahier de rédaction

Le cahier de rédaction contiendra vos réponses aux exercices sous forme rédigée accompagnées de code Mathematica.
Il sera formaté avec le titre du TD, vos noms et prénoms, et votre groupe.
Reportez vous à la leçon Rédaction avec Mathematica pour savoir comment présenter votre travail.

Terminer et sauvegarder une session

A la fin du cours, vous devrez sauvegarder votre travail via le menu "Files/Save As...". Choisissez bien l'emplacement de la sauvegarde afin de retrouver facilement votre travail la semaine suivante, et donnez lui un nom.

Reprendre une session

Lorsque vous voudrez reprendre un TD la semaine suivante, vous devrez recharger le fichier dans "File/Open..". Mais ceci ne suffit pas à réutiliser votre travail : il vous faut revalider les lignes de commandes dont vous aurez besoin.

Une commande affichée n'est pas forcément utilisable. Il faut la valider pour qu'elle soit connue du Kernel.

Mathematica

Pour commencer, tapez 2+2 et validez avec la touche Enter (en bas à droite) afin de communiquer votre saisie à Mathematica.

2 + 2

Attention :  la touche Entrée  située entre le clavier alphabétique et le clavier sert à commencer au début d'une nouvelle ligne mais ne demande pas l'évaluation d'une expression.

La longue attente est dûe au chargement du kernel en mémoire qui ne s'effectue qu'une fois par session. C'est lui qui est responsable des calculs.
La réponse apparait alors précédée de l'intitulé Out[1]. Effectivement, Mathematica numérote chacune des entrées (In[]) et des sorties (Out[]). Si jamais l'intitulé n'est pas [1] c'est que quelqu'un vous précédant n'a pas quitté Mathematica correctement : il reste alors tous ses calculs ainsi que ses variables en mémoire. Pour les éliminer, allez dans Kernel/Quit Kernel/Local et recommencez le 2+2 pour vérifier que tous est en ordre.

Le clavier

Voici comment accèder à quelques caractères:

* Les accolades "{" et "}" :
Elles sont accessibles en appuyant à la fois sur " ' " et "Alt Gr",  et sur "=" et "Alt Gr".
* Les crochets "[" et "]" :
Ils sont accessibles en appuyant à la fois sur " ( " et "Alt Gr",  et sur ")" et "Alt Gr".

Voici quelques raccourcis bien utiles et que vous devez savoir utiliser :
Une fois un objet sélectionné (une cellule ou du texte)

Ctrl c 		 copie en mémoire la sélection (copier).
	Ctrl x		 copie en mémoire la sélection et l'efface de l'écran (couper).
	Ctrl v 		 colle sur l'écran la dernière chose copiée ou coupée.
	
	Ctrl k		fais apparaitre un choix de commandes qui complètent ce que vous avez déja tapé.

Attention : Mathematica est sensible à la casse, c'est à dire qu'il  fait la différence entre les majuscules et les minuscules.
Ainsi, "Cos", "cos" et"cOs" sont trois expressions différentes.

Trois règles de syntaxe

1) Les commandes Mathematica commencent toutes par une majuscule.
	2) Les accolades "{" et "}"servent à encadrer des listes.
	Les crochets "[" et "]" servent à encadrer les arguments utilisés dans les fonctions.
	Les parenthèses "(" et ")" servent à structurer une formule, comme en mathématiques.
	3) Les noms de variables peuvent comporter plusieurs lettres et plusieurs chiffres, mais doivent commencer par une lettre.
	Ainsi, 2a sera compris comme 2*a,  tandis que ab sera compris comme une variable et non pas le produit a*b.

Principe de déroulement dans le temps

Il est possible, mais dangereux de modifier une ligne Input en remontant dans la page de travail.
 En effet lors d'une session, le numéro des cellules permet de reconstituer l'ordre des réponses, mais ces numéros ne réapparaîtront pas quand vous rappelerez le fichier sauvegardé. La seule succession visible sera la succession des demandes dans la page et la réinterprétation ne sera plus la même.
Si l'on a besoin de modifier une demande antérieure, il est vivement conseillé de la recopier à la suite avec un copier-coller et de ne modifier que la copie.

Obtenir de l'aide

Cela doit être un réflexe pour vous de savoir l'utiliser, que ce soit pour découvrir une nouvelle fonction Mathematica  ou au moment d'un trou de mémoire  quant à la syntaxe d'une fonction.

On y accède de deux manières:
*Dans Help/Help Browser
*En ligne, en tapant directement dans le notebook ?nomdelafonction ou ??nomdelafonction pour une version plus complète.

?Plus

?? Plus

Nota Bene : pour les familiers d'Unix ou de DOS, il est possible d'utiliser les Wildcard *.

Calculs dans ℤ

Mathematica sait calculer avec de très grands nombres sans perdre de chiffres en route.

Calculs de grands nombres

Demandez le calcul de 100!

100!

Vérifiez que Mathematica sait ce qu'il fait en entrant les lignes suivantes:

100!

%*101 - 101!

% représente le dernier calcul demandé

(10^9 - 25^7)*(10^9 + 25^7)

Arithmétique

Mathematica présente des fonctions pour tester si un nombre est premier, connaitre ses diviseurs dans le cas contraire ou bien donner le n-ième nombre premier.

PrimeQ[5]

PrimeQ[2*3]
PrimeQ[18]

Divisors[18]

Divisors[128]

Prime[1]

Prime[3]

Exercice

Testez chacune de ces fonctions sur des exemple en augmentant progressivement la taille des nombres. Découvrez les avec l'aide en ligne "??".
Testez aussi le Ctrl k.

Exercice

En faisant varier p entre le 1er et le 7ème nombre premier, calculez (2^p)-1. Testez la primalité des nombres obtenus.

On a longtemps cru que les nombres de la forme (2^p)-1 (nombres de Mersenne) étaient premiers quelque soit p premier (jusqu'en 1536).
La "preuve" en était une démonstration, à la main, pour p ≤7.
Qu'en déduisez vous à partir de vos résultats ?

Exercice

Découvrez comment la commande suivante permet d'additionner une liste de nombres.

Apply[Plus, {1, 1, 1, 1}]

Apply[Plus, {1, 2, 3, 4, 5}]

Exercice

Un nombre est dit parfait s'il est égale à la somme de ses diviseurs (lui même exclu bien sûr). 
En utilisant les fonctions précédentes, trouvez un nombre parfait.

Dans les ℝéels et les ℂomplexes

Principe de la précision infinie

Mathematica travaille en précision infinie, en précision standard ou en précision aussi grande que l'on veut.
Encore faut il savoir ce que l'on veut et distinguer pour cela l'entier 7 en précision infinie de 7. qui représente un réel arrondi à sa 16ème décimale.
Il faut bien comprendre que (1/3), Pi ou (Sqrt[3]) sont en précision infinie. Mathematica les conservera sous cette forme lors des calculs, sauf si l'utilisateur en demande une valeur approchée.
Si un terme est en précision finie, alors le résultat de l'opération est en précision finie.

Classez ces expressions selon qu'elles sont en précision finie ou infinie:

({{N[7/3], Sqrt[3], Sqrt[2. ], Π/5, 7/3 + 
            3/4, E + 1. }})

Sqrt[2. ]

N[Pi, 3]

N[Pi, 200]

Exercice:

Affichez N[Sqrt[2]], ensuite retapez le résultat et élevez le au carré.
Que remarquez vous ? Pourquoi ?
Faites de même mais en utilisant un copier-coller du résultat.
Explications ?

Exercice:

Calculez à partir de p et q donnés, les expressions de p+q et (p/q)+(q/p).
Demandez une approximation de  (p/q)+(q/p) et conjecturez en la valeur.
Utilisez ensuite Simplify pour la confirmer.
Quelle différence remarquez vous entre les deux dernières réponses ?

p = Sqrt[5] + Sqrt[3];
q = Sqrt[5] - Sqrt[3];

p + q

p/q + q/p

N[%]

Simplify[p/q + q/p]

Mathematica peut aussi jongler avec les complexes, même s'il faut parfois lui donner des indications en utilisant ComplexExpand. Pour développer une expression algébrique, on utilise d'habitude Expand. Mais par défaut, Mathematica considère que les variables sont des nombres complexes et non des réels. ComplexExpand indique implicitement à Mathematica que les variables sont réelles.

Expand[a + b*I]

ComplexExpand[a + b*I]

Re[2 + Sqrt[2] I]

Im[2 + Sqrt[2]*I]

Sqrt[-8]

Sqrt[I]

ComplexExpand[Sqrt[I]]

N[%]

Sqrt[1 - I]

ComplexExpand[Sqrt[1 - I]]

N[%]

Avec la notation d'Euler:

Re[Exp[I*Pi/6]]

Im[Exp[I*Pi/6]]

Exercice:

Retrouvez les valeurs des Cosinus et Sinus de certains angles remarquables tels Pi/4, Pi/3,7Pi/6, etc...

Quelques Listes

La liste est un élément fondamental de Mathematica:

Table[n^2, {n, 0, 8}]

Table[Binomial[n, p], {n, 0, 5}, {p, 0, n}]

Table[Binomial[n, p], {n, 0, 5}, {p, 0, n}] // TableForm

La commande "//" permet d'appliquer la fonction qui suit à l'expression qui précède :

Sqrt[2] // N

Exercice:

Faire la liste de (((a + b))^n) pour n entre 0 et 5. 
L'afficher sous forme de tableau.
En déduire une interprétation des Binomial[n,p].

Table[Expand[(a + b)^n], {n, 0, 2}]

Exercice:

Construire la liste des cubes pour les entiers entre 1 et 10.

Un peu de graphisme

Plot[Cos[x], {x, -Pi, 2*Pi}]

Plot[1/x, {x, -1, 1}]

Plot[Cos[x]/x, {x,  .1, 100}]

Plot[Cos[1/x^2] x, {x,  .001, 1}]

Plot[{Cos[x], Cos[x]/2, Cos[x] 2/3, Cos[x]/4}, {x, -10, 10}, 
      PlotStyle -> {RGBColor[0, 1, 0], RGBColor[0, 0, 1], 
          RGBColor[1, 0, 0], RGBColor[0, 0, 0]}]

Plot3D[
      Sin[x*y] - Cos[x*y], {x, -Pi, Pi}, {y, -Pi, Pi}]

Plot3D[Sin[x*y] - Cos[x*y], {x, -Pi, Pi}, {y, -Pi, Pi}, 
      Mesh -> False, PlotPoints -> 80]

ParametricPlot3D[{Sinh[u] Cos[5*v], Sinh[u] Sin[5*v], v}, {v, 0, 
        1}, {u, -1, 1}]

Pour finir....

N'oubliez pas de sauvegarder votre travail achevé sous le nom votrenom0. Vous pouvez amener une disquette pour transférer vos fichiers de ce poste vers votre ordinateur personel.
Enfin..quittez Mathematica  = ; - )