Beruflich Dokumente
Kultur Dokumente
Introduction à Mathematica
1 1
0.5 0.5
-0.5 -0.5
-1 -1
Jean-Luc Raimbault
Daniel Boulanger
19 octobre 2005
Les notes qui suivent ont pour but de vous aider à maı̂triser quelques unes
des fonctionnalités de Mathematica. Cette courte initiation poursuit un double
objectif. Tout d’abord celui d’une approche différente des concepts mathématiques
introduits en cours, complémentaires des séances traditionnelles d’exercices en
travaux dirigés, mais également, celui de la découverte (ou de l’approfondisse-
ment) d’un outil qui vous permet de produire des documents à visée pédagogique
ou scientifique.
Le premier chapitre vous met directement dans le bain, en vous permettant
dans un contexte scientifique simple et vraisemblablement connu, de tester de
façon empirique certaines des possibilités de Mathematica (calcul symbolique,
calcul numérique et représentation graphique) .
Le deuxième chapitre est plus formel et donne quelques éléments de la syn-
taxe de Mathematica. Il n’est évidemment pas possible d’être exhaustif, mais
le lecteur patient qui testera tous les exemples donnés en prenant le temps d’y
réfléchir, devrait comprendre l’essentiel de la structure et du fonctionnement de
Mathematica.
Les 2 derniers chapitres contiennent des exercices et des problèmes. Les exer-
cices sont des applications assez directes qui vous permettront d’évaluer votre
compréhension et votre maı̂trise du logiciel. Les problèmes sont plus ambitieux,
et permettent pour l’essentiel une mise en situation concrète des 2 principales
parties du cours : l’analyse de Fourier et les équations différentielles.
Suivez ces notes dans l’ordre et à votre rythme ; en 3 séances de 4 heures, il
est vraisemblable que la plupart d’entre vous ne pourront effectuer l’intégralité
du travail demandé (sauf peut être ceux qui connaissent déjà un peu Mathema-
tica). Il est plus profitable d’en faire moins mais d’une façon maı̂trisée, plutôt
que davantage d’une façon hasardeuse. Nous vous conseillerons au cours des
séances sur le choix des exercices et des problèmes. La salle étant en accès libre,
libre à vous d’en faire davantage.
Aucun compte rendu ne sera demandé, mais une courte évaluation très
élémentaire aura lieu en fin de semestre. Un corrigé-type vous sera rendu ac-
cessible à l’issue des séances encadrées. La bibliographie sur Mathematica est
importante. Si vous en ressentez le besoin, le plus simple est d’aller dans n’im-
porte quelle bibliothèque et de feuilleter les ouvrages pour trouver celui dont
le niveau et la démarche vous conviennent au moment de la consultation pour
en tirer profit. Un bon ouvrage basique et clair est celui de l’inventeur de Ma-
thematica, Stephen Wolfram, Mathematica, A system for doing mathematics by
computer, Addisson Wesley.
Chapitre 1
Commençons cette découverte par un exemple simple qui vous est sûrement
familier : la figure de diffraction d’une fente de largeur a dans la direction notée
Ox, centrée sur l’origine, et infiniment longue dans la direction notée Oy.
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
-2 -1 1 2 -4 -2 2 4
Vous devez savoir que l’amplitude diffractée par la fente (dans l’approxi-
mation de Fraunhofer) est proportionnelle à la transformée de Fourier de la
fonction de transparence (soit ici 1 si −a/2 < x < a/2, et 0 ailleurs) :
Z +a/2
A(q) ∝ e−i2πqx dx.
−a/2
3
4 CHAPITRE 1. UN EXEMPLE POUR DÉCOUVRIR MATHEMATICA
Le strict nécessaire en
Mathematica
2.1 Généralités
7
8 CHAPITRE 2. LE STRICT NÉCESSAIRE EN MATHEMATICA
Une liste est une collection d’objets que Mathematica considère comme une
entité. Le contenu d’une liste est compris entre 2 accolades { }. Par exemple,
v = {2,4,5,1} est une liste de 4 nombres que l’on peut manipuler à loisir ;
essayez par exemple v^ 2 ou v/(v-2). On peut construire des listes de listes : w
= { {a,b}, {c,d}}
On extrait un élément d’une liste à l’aide du double crochet [[n]] qui
repère la position du nème élément de la liste considérée. Essayez v[[3]]. Dans
le cas d’une liste de liste, essayez w[[ 1 ]] puis w[[ 1,2 ]]. Pour extraire plu-
sieurs éléments, il faut rajouter des accolades (puisque c’est une sous-liste) ; par
exemple v[[ {1,2} ]] ; notez que dans ce dernier cas Mathematica retourne
un résultat entre accolades : c’est à dire une liste.
On peut créer facilement des listes par l’ordre Range[n] qui crée la liste des
n premiers entiers {1,2,...,n}. La commande Table[expr,{i,imin,imax}]
construit une liste de valeurs de expr lorsque i va de imin à imax. Exemple :
Table[Cos[n Pi/3],{n,0,6}].
On est parfois gêné par l’excès d’accolades générées par Mathematica dans la
définition des listes. Une commande utile est l’ordre Flatten[list] qui ôte tous
les niveaux intermédiaires d’accolades. Essayez Flatten[w] et Flatten[v].
Pour représenter le contenu d’une liste, la commande de base est ListPlot[list]
qui représente les élements de la liste en fonction de 1, 2, · · ·. Essayez ListPlot[v] ;
on peut bien sûr passer des options, par exemple ListPlot[v,PlotJoined ->
True]. On peut aussi représenter les éléments d’une liste en fonction d’une
autre. Par exemple, après avoir donné des valeurs numériques arbitraires aux
éléments de w, testez ListPlot[w,PlotStyle -> {PointSize[0.02], RGBColor[1,
0, 0]}, PlotRange -> All].
Sous Mathematica les vecteurs sont représentés par des listes et les matrices
par des listes de listes. Voici un vecteur à 2 composantes u = v[[ {1,2} ]].
La liste w déjà définie est une matrice 2 × 2. La commande Array[a,{m,n}]
construit un une matrice m×n dont les élements sont les a[i, j]. On peut faire des
opérations. En particulier le produit de matrices (ou d’une matrice par un vec-
teur) est notée par un point. Essayez w.u. On peut représenter le résultat sous
forme d’un tableau matriciel plus lisible MatrixForm[%]. Consultez quelques
unes des opérations possibles sur les matrices dans le menu Built-in Functions/
Lists and Matrices/ Matrix Operations du Help Browser du Mathematica.
Exemples (à comprendre)
m = Table[1/(i+j+1),{i,3},{j,3}] puis MatrixForm[%] puis Det[m]
Inverse[m] puis %.m puis Inverse[m].m == IdentityMatrix[3]
gaz = Table[{Random[], Random[]}, {100}] ;
newgaz=gaz[[{1,2}]]
deuxgaz = Join[gaz, newgaz] ; Length[deuxgaz]
gagaz = Union[gaz, newgaz] ; Length[gagaz]
10 CHAPITRE 2. LE STRICT NÉCESSAIRE EN MATHEMATICA
Une procédure est une succession de commandes ; celles-ci sont séparées par
des points-virgules : Print["f(x) = sin x"] ;Plot[Sin[x],{x,-Pi,Pi}]
Mathematica permet d’exécuter des opérations successives d’une façon as-
sez comparable au C. Il est possible en particulier de définir des procédures
itératives à l’aide des commandes Do, While et For et des procédures condition-
nelles comme If et Which. Il est possible d’inclure une succession de commandes
dans les procédures itératives ou conditionnelles.
Les exemples suivant permettent de comprendre ces commandes de façon
assez intuitive. Consultez Built-in Functions/Programming/Flow Control dans
l’aide en ligne pour des précisions sur la syntaxe.
Exemples (à comprendre)
Do[Print[i^ 2 ],{i,4}] puis x = 1 ; Do[y = x - 1 ; x = y, {3}] ; y
Do[Print[i^ 2 ],{i,0,8,2}]puis For[i = 1, i < 6, i++, Print[i]]
marche[x ] :=If[x > 0,1,0] puis Plot[marche[x],{x,-2,2}]
2.6. COMPLÉMENTS SUR LE GRAPHISME 11
Outre les commandes de base Plot et ListPlot que l’on a déjà commentées,
une autre possibilité intéressante concerne les représentations paramétriques.
Par exemple, le mouvement d’un oscillateur linéaire initialement en x(0) = 1,
et sans vitesse initiale, s’écrit dans l’espace des phases (position-vitesse), sous
la forme x(t) = cos t, y(t) = − sin t. La représentation paramétrique correspon-
dante est obtenue par la commande ParametricPlot[{Cos[t],-Sin[t]},{t,0,
2 Pi}]. Dans le même esprit, on peut utiliser la représentation paramétrique
pour visualiser des fonction d’une variable complexe dans le plan partie réelle-
partie imaginaire (diagramme d’Argand).
Tous les dessins sous Mathematica sont construits à partir de primitives
de type Graphics. Pour voir la séquence d’instructions correspondant à un
dessin aussi simple que p2=ListPlot[{1,2}], tapez cette commande suivie
de InputForm[p2] dont le résultat est à peu près compréhensible. L’instruc-
tion Graphics[list] par elle-même, exécute les instructions correspondant
à un dessin mais ne le montre pas. C’est la commande Show qui l’effectue.
Exemple : p1= Graphics[{Line[{ {-1,1},{1,1} }],Line[{ {-1,1},{1,-1}
}],Line[{ {1,1},{1,-1} }]}] puis Show[p1]. On peut également placer des
points, ou du texte sur une figure par les ordres Point et Text. Les gra-
phiques peuvent être groupés pour étre présentés en lignes ou en colonnes :
p3=GraphicsArray[{p1,p2}] puis Show[p3].
D’une façon assez générale, les représentations tridimensionnelles sont obte-
nues par les mêmes mots-clés complétés par le suffixe 3D : Plot3D, ListPlot3D
et ParametricPlot3D.
Complétez votre information en consultant les rubriques du Built-in Func-
tions/Graphics and Sound de l’aide en ligne.
Exemples (à comprendre)
gr1 = Plot[Sin[1/x], {x, -1, +1}] puis Show[gr1, PlotRange -> {{-0.3,
0.3}, {-1, 1}}, PlotLabel -> "Sin(1/x)"]
v[x , y ] := 1/(x^ 2 + y^ 2) puis ContourPlot[v[x, y], {x, -5, 5}, {y,
-5, 5}]
gr2 = Graphics[ { PointSize[0.1],
{GrayLevel[0.6], Point[{0, 1}]},
{RGBColor[1, 0, 0], Point[{1, 0}]},
{RGBColor[0, 1, 0], Line[{ {0, 1}, {1, 0} }]},
Text["2 Points", {0.3, 0.3}] } ] puis Show[gr2, PlotRange -> All]
Show[GraphicsArray[{ {gr1, gr2}, {gr2, gr1} }]]
12 CHAPITRE 2. LE STRICT NÉCESSAIRE EN MATHEMATICA
Chapitre 3
Exercices
1 0.4
0.8 0.3
0.6
0.2
0.4
0.2 0.1
-3 -2 -1 1 2 3 -15 -10 -5 5 10 15
13
14 CHAPITRE 3. EXERCICES
3.3 Optimisation
Im z
0.75
0.5
0.25
Re z
-1 -0.5 0.5 1
-0.25
-0.5
-0.75
x’
2
1
x
-7.5 -5 -2.5 2.5 5 7.5
-1
-2
dans un système d’unités normalisées, peut être intégrée une fois, et conduit à
l’intégrale première (énergie) suivante :
1 ′2
x − cos x = Cte.
2
On demande de reproduire le schéma ci-dessus de 2 façons différentes :
1. En cherchant les solutions x′ de l’équation intégrale, et en représentant
ces solutions pour des valeurs bien choisies de la cte.
2. En utilisant la commande ContourPlot.
3. A quels mouvements correspondent les orbites ouvertes et les orbites
fermées ?
1 1
0.5 0.5
-0.5 -0.5
-1 -1
On peut créer une fractale ressemblant à une feuille d’arbre en itérant l’ap-
plication suivante du plan :
xn+1 = ai xn + bi yn + ei ,
yn+1 = ci xn + di yn + fi
3.7. UNE FEUILLE FRACTALE 17
1.5
0.5
0
-0.5 x 0.5
Fig. 3.5 – Feuille fractale crée par une itération dans le plan
i r ai bi ci di ei fi
1 0.00 < r < 0.01 0.00 0.00 0.00 0.16 0.00 0.00
2 0.01 < r < 0.08 0.20 −0.26 0.23 0.22 0.00 0.20
3 0.08 < r < 0.15 −0.15 0.28 0.26 0.24 0.00 0.20
4 0.15 < r < 1.00 0.85 0.04 −0.04 0.85 0.00 0.20
Problèmes
Un filtre passe-haut atténue les fréquences basses tandis qu’un filtre passe-
bas atténue les fréquences hautes. L’atténuation est d’autant plus forte que la
fréquence est basse pour un filtre passe-bas, et haute pour un filtre passe-haut.
La composante continue n’est pas atténuée dans un filtre passe-bas et ne passe
pas dans un filtre passe-haut. Les schémas sont reportés sur la figure 4.1.
Fig. 4.1 – Circuits électriques du filtre passe-haut (à gauche) et du filtre passe-
bas (à droite).
19
20 CHAPITRE 4. PROBLÈMES
jωτ
Ṽs = Ṽe , pour le filtre passe-haut,
1 + jωτ
1
Ṽs = Ṽe , pour le filtre passe-bas,
1 + jωτ
Dans un premier temps les circuits sont alimentés par le signal triangulaire.
0.8
0.6
0.4
0.2
Le modèle logistique
Le modèle le plus simple qui conduit à une population stabilisée est le modèle
introduit par Verhulst, également appelé modèle logistique. N (t) désignant le
nombre d’individus à l’instant t, ce modèle s’écrit :
N
Ṅ = rN 1 − ,
K
où r et K sont deux constantes positives.
* K s’appelle la capacité biotique. Que représentent les deux grandeurs r
et K et quelle est leur dimension ? Pour quelle valeur de K retrouve-t-on
le modèle de Malthus ?
1. Résoudre analytiquement cette équation différentielle avec la condition
initiale N (0) = N0 (DSolve).
4.2. MODÈLES DE DYNAMIQUE DES POPULATIONS 23
La chenille de l’épicéa
La chenille de l’épicéa est un insecte qui peut ravager les sapins par défoliation.
Heureusement les oiseaux mangent les chenilles, de sorte qu’une modélisation
raisonnable doit prendre en compte à la fois les effets logistiques et des effets
de prédation. Un des modèles phénoménologiques proposés par certains auteurs
est le suivant :
BN 2
N
Ṅ = rN 1 − − 2 ,
K A + N2
où A et B sont deux nouvelles constantes positives.
* Discuter le comportement du terme de prédation pour N faible ou très
grand.
* On introduit les grandeurs sans dimension : u = N/A, κ = K/A, ρ =
rA/B et τ = Bt/A.
Montrer que l’on est conduit à l’équation sans dimension :
u u2
u̇ = ρu 1 − − ,
κ 1 + u2
où la dérivée est maintenant par rapport à τ .
1. On veut trouver les solutions stationnaires non nulles du système par une
méthode graphique.
Représenter sur un même schéma les fonctions u 7→ ρ(1 − u/κ) et u 7→
u/(1 + u2 ) pour κ = 10, ρ = 0.2. Comparer avec les cas ρ = 0.5 et ρ = 1,
toujours pour κ = 10 (Plot,Show).
* En déduire que le système admet, selon les valeurs de ρ ou κ, une ou 3
solutions stationnaires.
2. On note, lorsqu’elles existent, u1 , u2 , u3 , les 3 solutions stationnaires classées
par ordre croissant.
Montrer, en variant les conditions initiales, que u1 et u3 sont des solutions
stables, tandis que u2 est instable. Commenter (NDSolve,Plot).
3. On fixe la valeur de κ à 10.
Montrer qu’une petite variation de ρ (tester le passage de 0.56 à 0.57) in-
duit une très forte variation de la population de chenilles (NDSolve,Plot).
Commenter.
24 CHAPITRE 4. PROBLÈMES
5 5
4 4
3 3
2 2
1 1
1 2 3 4 5 5 10 15 20
Le modèle de Lokta-Volterra
Ṅ = N (a − bP ) ,
Ṗ = P (cN − d) ,
du
= u (1 − v) ,
dτ
dv
= γv (u − 1) .
dτ
Predateurs
20
18
16
14
12
10
8
Proies
200 400 600 800 100012001400
Certains auteurs ont proposé une version plus réaliste du modèle de Lokta-
Volterra qui s’écrit
u̇ = (a − bv) u,
v
v̇ = c−d v,
u
où u et v désignent toujours les effectifs des proies et des prédateurs, et où
a, b, c, d sont des constantes auxquelles on donnera les valeurs respectives 1, 0.1, 0.1, 2.5.
* Discuter les hypothèses sous-jacentes à ce modèle.
1. Déterminer l’unique solution stationnaire de ce modèle.
2. Discuter la nature du point critique, et prévoir la forme de la trajectoire
dans l’espace des phases.
3. Confirmer numériquement l’évolution temporelle prévue à la question
précédente.
26 CHAPITRE 4. PROBLÈMES
Table des matières
3 Exercices 13
3.1 Figures de diffractions et d’interférences . . . . . . . . . . . . . . 13
3.2 Intégration d’une EDO à variables séparables . . . . . . . . . . . 13
3.3 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 Racines nèmes de l’unité . . . . . . . . . . . . . . . . . . . . . . . 14
3.5 Espace des phases du pendule non linéaire . . . . . . . . . . . . . 15
3.6 Phénomène de Gibbs . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.7 Une feuille fractale . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Problèmes 19
4.1 Filtrage et redressement des signaux électriques . . . . . . . . . . 19
4.1.1 Tensions de sortie pour un signal d’entrée triangulaire . . 20
4.1.2 Tensions de sortie pour un signal d’entrée carré . . . . . . 22
4.2 Modèles de Dynamique des Populations . . . . . . . . . . . . . . 22
4.2.1 Modèles de populations isolées . . . . . . . . . . . . . . . 22
27
28 TABLE DES MATIÈRES