Sie sind auf Seite 1von 28

Faculté des Sciences

Université de Paris Sud

Introduction à Mathematica

1 1

0.5 0.5

-1 -0.5 0.5 1 -0.1 -0.05 0.05 0.1

-0.5 -0.5

-1 -1

Licence de Sciences Physiques

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

Un exemple pour découvrir


Mathematica

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

Fig. 1.1 – Fonction de transparence d’une fente et Intensité diffractée

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

Demandez à Mathematica de calculer cette expression par l’ordre :


A[q ] :=Integrate[Exp[-I 2 Pi q x], {x, -a/2, a/2 }]
(le sens du := et du q sera donné plus tard), puis taper Shift+Entrée pour
exécuter cette commande. Mathematica a calculé formellement cette intégrale,
mais le résultat n’est pas très explicite. Cela a meilleure allure après l’ordre :
ExpToTrig[%]
qui donne un exemple de factorisations d’expressions mathématiques que

3
4 CHAPITRE 1. UN EXEMPLE POUR DÉCOUVRIR MATHEMATICA

Mathematica sait effectuer.


Que signifie le % ? Tapez pour voir
?%
Vous pouvez trouver peu commode d’avoir à mémoriser des mots clés (comme
Integrate) et une syntaxe pour calculer des expressions simples. Il y a plus
facile. Sélectionnez le menu File, puis Palettes, puis BasicInput, et utilisez la
palette pour redemander le calcul de l’intégrale. Evidemment, vous devez être
curieux et tester les autres palettes qui vous ouvriront d’autres horizons.
Sans surprise, nous avons donc trouvé un sinus cardinal. Quelle est l’allure
de cette fonction ? Très simple ; donnons une valeur numérique à la variable a
et représentons cette fonction :
a = 1. ; Plot[A[q], {q, -5, 5 }]
Pas mal, mais on ne voit pas tout ! On passe une option (dont le sens est
évident) :
Plot[A[q], {q, -5, 5 },PlotRange -> All]
Ce serait parfait avec un peu de couleurs, encore une option :
Plot[A[q], {q, -5, 5 }, PlotRange -> All, PlotStyle -> RGBColor[1,
0, 0]]
..etc ..
Comme on ne peut pas tout mémoriser, il faut utiliser l’aide en ligne. Allez
dans le menu Help, puis dans Help Browser, et entrez la commande Plot, et
consultez les exemples et les sections correspondantes du Mathematica Book.
Faites quelques essais.
Mathematica sait faire beaucoup de choses en calcul formel.
Par exemple, vous avez pu constater sur le graphe de l’amplitude que sin(x)/x
tend vers 1 lorsque x → 0, ce qui ne devrait pas vous surprendre. Mathematica
sait calculer des limites :
Limit[Sin[x]/x, x -> 0]
avec le bon résultat. On peut même apprécier la courbure de la fonction à
l’origine en demandant un développement en série :
Series[Sin[x]/x, {x, 0, 3}]
très commode lorsqu’on a oublié les développements limités des fonctions
usuelles (mais ce n’est pas votre cas, bien sûr).
Donnons un autre exemple de calcul formel. On a dit plus haut que l’ampli-
tude étudiée était en fait une tranformée de Fourier. Mathematica sait la calcu-
ler directement. Cherchons dans l’aide en ligne à FourierTransform. Compte
tenu de la syntaxe, vous constatez qu’il faut savoir définir une fonction. On
peut remarquer que la fonction de transparence de la fente peut s’écrire comme
5

une différence de 2 fonctions de Heaviside, que Mathematica appelle UnitStep.


Définissez la fonction de transparence de la fente :
fente[x ] := UnitStep[x + a/2] - UnitStep[x - a/2]
Mieux vaut vérifier si on ne s’est pas trompé, et visualiser la fonction
Plot[fente[t], {t, -2, 2}]
ce qui a l’air correct. Après avoir désaffecté a de sa valeur numérique, cal-
culons la transformée de Fourier
Clear[a] ; FourierTransform[fente[x], x, q]
Cela ressemble à notre résulat antérieur, mais avec des 2π en trop. Reconsul-
tez l’aide en ligne. Vous avez compris : il y a plusieurs conventions de définitions
des transformées de Fourier. Passons une option
FourierTransform[fente[x], x, q, FourierParameters -> {0, -2 Pi }]
et retrouvons le sinus cardinal :
ExpToTrig[%]
Visiblement il faut aider un peu Mathematica. Essayons
Simplify[%]
Enfin !
Dans le problème d’optique considéré, les positions des maxima ou mi-
nima d’intensité nous intéressent évidemment au premier chef. La position
des minima d’intensité sont donnés trivialement par les valeurs de q telles que
sin(πaq) = 0, c’est-à-dire tous les q = n/a avec n entier. Il est intéressant de
noter que les fonctions Solve (ou NSolve) de Mathematica, faites pour résoudre
analytiquement (ou numériquement) les équations ne trouvent qu’une seule so-
lution :
Solve[Sin[Pi a q] == 0, q]
(le sens du double == sera expliqué plus loin) ; ainsi que l’indique le mes-
sage, la difficulté pour Mathematica provient de l’impossibilité de définir une
fonction inverse sur tout R. Cherchons des solutions numériques dans le cas
plus intéressant des maxima. Calculons la dérivée de l’amplitude, soit
Clear[a] ; D[Sin[a Pi q]/(Pi q), q] ; Simplify[%]
Les positions des maxima sont donc les solutions de l’équation transcendante
tan(πx) = πx (pour a = 1). Représentons ces 2 fonctions sur un même graphe
Plot[{Tan[Pi q], Pi q}, {q, 0, 3}]
On peut maintenant déterminer numériquement les solutions de cette équation
à partir d’une valeur d’essai par une commande qui utilise l’algorithme de New-
ton. Par exemple,
FindRoot[Tan[Pi x] == Pi x, {x, 1.7}]
6 CHAPITRE 1. UN EXEMPLE POUR DÉCOUVRIR MATHEMATICA

trouve la position du maximum compris dans l’intervalle [1.5, 2.5] à partir


de la valeur d’essai 1.7.
Une dernière chose. Il est assez facile d’exporter du texte ou des graphiques
réalisés avec Mathematica vers d’autres logiciels. Par exemple pour placer la
figure 1 dans ce texte tapé en LaTex, on peut générer la figure sous Mathematica
par la commande
Show[GraphicsArray[
Plot[fente[x], {x, -2, 2}],
Plot[Abs[A[q]]^ 2, {q, -5, 5}, PlotRange -> All,
PlotStyle -> RGBColor[1, 0, 0]]]]
qui permet une présentation des figures en tableau, puis on l’exporte (au
format eps) en sélectionnant la figure et en activant Eps dans le menu Edit/Save
Selection As ... D’autres formats d’exportation sont possibles en particulier wmf
vers les applications Windows.
Chapitre 2

Le strict nécessaire en
Mathematica

2.1 Généralités

On entre la nème commande sous le prompt In[n] := ,


Shift+Entrée permet d’éxecuter la commande,
et Mathematica répond (éventuellement) sous le prompt Out[n]=
% et %n donnent le dernier résultat et le résultat correspondant à Out[n].
Un point-virgule ; placé à la fin d’une ligne de commande supprime l’affichage
à l’écran (mais effectue la commande).
Les commentaires, ignorés par Mathematica, se placent entre (* et *)
Les arguments des expressions sont entre [ ].
Les fonctions propres à Mathematica commencent toujours par une majuscule.
Les multiplications sont représentées par un espace (ou une *) et les exposants
à l’aide de ˆ . √
Pi, E, I, Infinity représentent respectivement π, e, −1 ≡ i, ∞.
N[x,n] donne une valeur numérique approximative de x à n décimales.
x = a assigne la valeur a à la variable x. L’assignation est définitive tant
qu’on n’utilise pas la commande Clear[x] ou x=.
Exemples (à comprendre)
2/4^ 2 puis N[2/4^ 2] puis 2./4^ 2
N[Pi,40],
Sqrt[-4],
p = (4+ 3 I)/(2- I),
(* Définition de r *) puis r = Sin[Pi/4], %+1.,
Conjugate[p] puis p puis Clear[p],
u = ArcSin[r]+p ; puis u

7
8 CHAPITRE 2. LE STRICT NÉCESSAIRE EN MATHEMATICA

2.2 Affectations, Equations et Fonctions

En plus de l’affectation définitive déjà rencontré =, il existe une affectation


différée désignée par le symbole := Par exemple, considérons une affectation
définitive pour la grandeur x : x = 3. Définissons 2 grandeurs qui dépendent de
x, une par affectation définitive : u = x+3, et une autre par affectation différée
v := x+3. Si l’on demande u ou v, on trouve 6. Changeons la valeur de x par
une nouvelle affectation définitive, par exemple x = 2. On trouve alors u = 6
mais v = 5. Autrement dit, la valeur de u a été calculée une fois pour toute,
tandis que la valeur de v n’est évaluée (de façon différée) que lorsqu’on l’appelle,
et prend donc en compte les éventuelles modifications de la variable.
La commande x == y teste si x et y sont égaux ; il ne faut donc pas
confondre cette égalité logique avec les signes d’affectations précédemment définis.
L’égalité logique == est évidemment importante pour définir et résoudre des
équations.
La commande f[x ] := x^ 2 définit la fonction x 7→ x2 , c’est-à-dire que
x représente une variable muette que l’on peut donc remplacer par n’importe
quoi. On pourrait se dire qu’il est également possible de définir une fonction par
la simple affectation différée g[x] := x^ 2 ; l’argument x n’est cependant pas
une variable muette, mais représente une valeur spécifique de x. Il est certains
cas où l’on doit définir une fonction par l’ordre f[x ]= x^ 2, c’est-à-dire sans
l’affectation différée. C’est le cas en particulier lorsque la définition de la fonction
résulte d’un calcul qui met en jeu la variable muette de la fonction (cf. exemples
à suivre).
La commande de base pour représenter les fonctions est Plot[f[x],{x,xmin,
xmax}] qui trace la fonction f en fonction de la variable x, pour les valeurs de x
comprises netre xmin et xmax. On peut représenter plusieurs fonctions sur un
même schéma : Plot[{f[x],g[x]},{x,xmin, xmax}] (noter la présence des
accolades). On peut passer de nombreuses options (consulter l’aide en ligne) en
ajoutant une régle immédiate exprimée à l’aide des symboles ->.
Exemples (à comprendre)
Clear[x] puis Solve[x x + 3 x == 0,x]
f[1]=1 ; f[n ] :=n f[n-1] puis f[10] == 10 !
x=2 ;r=x^ 2 ;s :=x^ 2 ;x=3 ;
Print["x= ",x "r= ","s= ",s]
f[x ] := x^ 2 ; g[x] := x^ 2 ; h[x ]= x^ 2 ; f[dudu] puis g[dudu] puis h[dudu]
x=2 ; f[2] puis g[2] puis h[2]
Plot[f[x],{x,-2,2}] puis Plot[g[x],{x,-2,2}] puis Plot[h[x],{x,-2,2}]
Plot[f[t],{t,-2,2}] puis Plot[g[t],{t,-2,2}] puis Plot[h[t],{t,-2,2}]
Clear[f,g,x] ;
f[x ] := D[Exp[x^ 2],x] puis g[x ]= D[Exp[x^ 2],x]
Plot[f[x],{x,-2,2}] puis Plot[g[x],{x,-2,2}]
Plot[Sin[x],{x,0, 5}, PlotLabel -> "Graphe de sin(x)"]
Plot3D[Sin[x] Sin[3 y],{x,-2, 2},{y,-2,2}, PlotPoints -> 40]
2.3. LISTES ET MATRICES 9

2.3 Listes et Matrices

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

2.4 Règles et Substitutions

On a déjà souligné que l’affectation par le signe égal était définitive. On a


souvent besoin de plus de souplesse, par exemple en demandant qu’une affecta-
tion ait lieu seulement dans une expression particulière. Cela peut être réalisé en
spécifiant une règle de transformation à l’aide du symbole ->, et en demandant
son application dans une expression particulière à l’aide du symbole /.
Les règles peuvent être nommées. Par exemple rule1=x->2 donne le nom
rule1 à la règle x->2, et x^ 2/. rule1 applique cette règle à x2 pour donner 4.
Un résultat équivalent aurait pu être obtenu sans avoir nommé la règle : x^ 2/.
x->2. Noter que la valeur de x n’est pas fixée de façon définitive. Demandez x.
Dans le cas où on a besoin de spécifier plusieurs remplacements, on peut
définir une liste de règles. Exemple : rule2={x->2,y->3} puis x^ 2 + y^ 2 /.
rule2 donne 13. On peut combiner affectation et remplacements : t = x^ 2
+ y^ 2 puis t/.{x->2,y->3} donne le même résultat. Qu’obtenez-vous si vous
demandez t ?
Exemples (à comprendre)
sincos2 = Sin[2 x ] -> 2 Sin[x] Cos[x] puis t = Sin[2 x] + Sin[z]
puis t/. sincos2
sincos1 = Sin[x ] -> 2 Sin[x/2] Cos[x/2] puis t puis t/. sincos1
goldnb = Solve[x^ 2-x-1==0,x] puis solutions = x /. goldnb
y > 2 /. y -> 4
?/ ; puis marche[x ] :=1 / ; x > 0 puis marche[x ] :=0 / ; x < 0 puis
Plot[marche[x],{x,-2,2}]

2.5 Procédures itératives et conditionnelles

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

h[x ] :=Which[x < 0,x^ 2,x<5,-x^ 3,x>5,0] puis Plot[h[x],{x,-2,8}]

2.6 Compléments sur le graphisme

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

3.1 Figures de diffractions et d’interférences

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

Fig. 3.1 – Figure d’interférences produite par 2 fentes

Cet exercice est un prolongement du premier chapitre.


1. Vous avez appris dans votre cours d’optique que l’intensité diffractée par
une fente n’était pas modifiée lorsqu’on déplaçait cette fente dans le plan
qui la contient. Vérifiez ce résultat en utilisant Mathematica.
2. Représentez la figure d’interférences obtenue à partir de 2 fentes placées
symétriquement de part et d’autre d’un axe. Etudiez l’importance de la
largeur de la fente et la distance entre les fentes.

3.2 Intégration d’une EDO à variables séparables

Comme exemple d’équation différentielle à variables séparables, nous considérons


l’exemple traité en TD, d’un mobile soumis à une force de frottement non
linéaire :
dv
m v̇ = mg − av − bv 2 , ⇔ = g − αv − βv 2
dt
où α et β sont 2 coefficients positifs, et on supposera que v(0) = 0.

13
14 CHAPITRE 3. EXERCICES

1. La solution de l’équation différentielle v(t) est donnée par l’équation im-


plicite :
Z v(t)
du
= t.
0 g − αu − βu2
Résoudre cette équation analytiquement avec Mathematica en précisant
que g, α et β sont des grandeurs strictement positives.
2. On fixe désormais les valeurs des constantes : g = 9.81, α = 0.1 et β =
0.05. Déterminer la vitesse limite atteinte par le projectile aux temps longs
(c’est un des points fixes du système).
3. Représenter sur un même schéma la solution v(t) et la vitesse limite.

3.3 Optimisation

Montrer en utilisant Mathematica que le parallélépipède de plus petit vo-


lume pour une surface donnée est le cube.
a, b, c désignant les 3 côtés du parallélépipède, on introduira les fonctions
de trois variables v = abc et s = 2(ab + ac + bc). La surface s étant constante,
une première méthode consiste à exprimer une des 3 variables en fonction des
2 autres et de s, de substituer dans v puis de minimiser v par rapport aux 2
variables restantes.
Dans un deuxième temps, on résoudra à nouveau ce problème en utilisant
la méthode des multiplicateurs de Lagrange vue en cours.

3.4 Racines nèmes de l’unité

Im z

0.75

0.5

0.25

Re z
-1 -0.5 0.5 1
-0.25

-0.5

-0.75

Fig. 3.2 – Racines de l’équation z 6 = 1.

Résoudre l’équation z 6 = 1 dans le plan complexe.


On effectuera une boucle pour extraire les racines, puis on construira une
table, et on représentera les racines sur un diagramme d’Argand.
3.5. ESPACE DES PHASES DU PENDULE NON LINÉAIRE 15

3.5 Espace des phases du pendule non linéaire

x’

2
1
x
-7.5 -5 -2.5 2.5 5 7.5
-1
-2

Fig. 3.3 – Espace des Phases d’un pendule non linéaire

Il est bien connu que l’équation différentielle du pendule non linéaire (x


représente un angle), qui s’écrit

x′′ (t) + sin x(t) = 0,

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 ?

3.6 Phénomène de Gibbs

On a vu en cours et en Td que la fonction



−1 −1 < x < 0
f (x) =
+1 0<x<1
admettait pour développement en série de Fourier

4 X sin(2n − 1)πx
.
π 2n − 1
n=1

On considère la somme finie correspondante, et on s’attend naturellement à


retrouver le créneau carré pour des valeurs de n suffisamment grandes :
N
4 X sin(2n − 1)πx
f (x, N ) = .
π 2n − 1
n=1
16 CHAPITRE 3. EXERCICES

1. Définir une fonction dépendant des variables x et N qui permettent de


représenter cette somme pour différentes valeurs de N .
2. Représenter la somme pour N = 10.
3. Représenter la somme sur un même schéma pour N = 10, N = 30 et
N = 60 au voisinage de x = 0.5. Mêmes questions au voisinage de x = 1.
Que constatez-vous ?
4. Utilisez Mathematica pour établir le résultat :
∂f sin 2N πx
=2
∂x sin πx
(on pourra utiliser la commande FullSimplify en précisant que N est
entier).
5. Vérifier que le premier maximum de f est en x = 1/2N .
6. La valeur de la fonction en ce maximum est donc donnée par :
Z 1/2N
2 π
 
1 sin 2N πx sin z
Z
f ,N = 2 dx = dz.
2N 0 sin πx π 0 2N sin(z/2N )
Ainsi, même lorsque N → ∞, la somme dépasse systématiquement la
valeur attendue (1) puisque :
2 π sin z
 
1
Z
lim f ,N = dz.
N →∞ 2N π 0 z
Utilisez Mathematica pour calculer ce nombre et comparer avec les représentations
de f données précédemment.

1 1

0.5 0.5

-1 -0.5 0.5 1 -0.1 -0.05 0.05 0.1

-0.5 -0.5

-1 -1

Fig. 3.4 – Phénomène de Gibbs pour le créneau carré

3.7 Une feuille fractale

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

à partir du point initial x0 = y0 = 0. Les 6 coefficients (ai , bi , · · · , fi ) sont fixés


comme suit. Pour chaque valeur de n, on tire au hasard un nombre r dans
l’intervalle ]0, 1[. Le résultat fixe un des 4 jeux différents de valeurs (i = 1 à 4)
que peuvent prendre ces coefficients :

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

1. Ranger les coefficients (ai , bi , · · · , fi ) dans des vecteurs à 4 composantes,


et initialiser les vecteurs x et y.
2. Définir une fonction xx(i, n) dont le second membre est donné par xn+1 =
ai xn + bi yn + ei . Même chose pour yy(i, n).
3. Construire une table comprenant les itérés successifs (xx(i, n), yy(i, n))
à l’aide d’un test Which portant sur le nombre aléatoire r (un nombre
aléatoire compris entre 0 et 1 peut être généré par la commande Random[]).
18 CHAPITRE 3. EXERCICES

4. Représenter la table à l’aide de l’ordre ListPlot et tester le résultat


obtenu en fonction du nombre maximal d’itérations.
Chapitre 4

Problèmes

On vous propose dans les 2 problèmes indépendants qui suivent d’utiliser


Mathematica pour
– traiter une application de l’analyse de Fourier au problème du filtrage et
du redressement de signaux électriques
– analyser quelques modèles, de dynamique des populations qui reprend la
présentation succinte des modèles de Malthus, Verhulst et Lokta-Volterra
qui vous a été faite en cours.
Bien qu’il soit possible de répondre à certaines questions sans utiliser Ma-
thematica, on s’efforcera, à titre d’exercice, d’utiliser au maximum le logiciel,
ce qui ne doit pas vous empêcher de vous interroger en effectuant un calcul à
la main. Les quelques questions où on ne demande pas d’utiliser Mathematica
seront distinguées par une ∗.

4.1 Filtrage et redressement des signaux électriques

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

G est le générateur de tension. Ve indique la tension fournie par le générateur,


et Vs la tension de sortie aux bornes de la résistance R ou de la capacité C.
Pour une onde sinusoı̈dale en régime établi (on ne s’intéresse pas au régime
transitoire), de fréquence ν = 1/T et de pulsation ω = 2πν, on établit facilement
(le vérifier !)

jωτ
Ṽs = Ṽe , pour le filtre passe-haut,
1 + jωτ
1
Ṽs = Ṽe , pour le filtre passe-bas,
1 + jωτ

où τ = RC est la constante de temps des filtres.


Pour tester ces circuits, nous utiliserons successivement un générateur de
tension triangulaire et un générateur de tension carrée (cf. figures 4.2). La ten-
sion générée est positive ou nulle, son amplitude est 1 V, et sa période T .

Fig. 4.2 – Deux exemples de tensions d’entrées .

4.1.1 Tensions de sortie pour un signal d’entrée triangulaire

Dans un premier temps les circuits sont alimentés par le signal triangulaire.

Analyse exacte du signal d’entrée

* Effectuer le développement en série de Fourier de la tension d’entrée Ve .


* Quelle est la signification du coefficient correspondant à la fréquence
nulle ?
* La série converge-t-elle rapidement ?
* Calculer les séries dérivée et intégrée.
* Quelles sont les relations entre les coefficients de Fourier de la tension de
sortie Vs et ceux de la tension d’entrée Ve pour les 2 filtres ?
4.1. FILTRAGE ET REDRESSEMENT DES SIGNAUX ÉLECTRIQUES 21

Analyse numérique du signal d’entrée

Charger le ”package“ FourierTransform par l’ordre <<Calculus‘FourierTransform‘.


1. Utiliser la fonction x 7→ 1 − 2|x| pour construire la fonction périodique
correspondant à Ve . (Round).
Représenter la fonction x 7→ Ve (x) pour |x| ≤ 1.5.
2. Soit fN : x 7→ fN (x) la fonction obtenue à partir du développement
en série de Fourier de Ve lorsqu’on limite le développement aux 2N + 1
premiers termes (n = −N, · · · , +N ).
Définir fN (FourierTrigSeries).
3. Représenter sur une même figure les fonctions Ve et f5 pour |x| ≤ 1.5.
4. Calculer les coefficients de Ve correspondant aux 5 premières harmoniques
(positives et négatives) (FourierCoefficient).
5. Afficher les coefficients calculés et les comparer à ceux calculés à la main
(Do, Print, Expand).
6. Reconstruire f5 à partir des coefficients de Ve et vérifier sur un schéma
que le résultat obtenu correspond avec f5 calculée à partir de fN .

Analyse du filtre passe-haut

1. Les paramètres du circuit sont choisis tels que R = 300 Ω, C = 1 µF et


ν = 50 Hz. Montrer qu’on a alors τ ω ≪ 1. Pourquoi le filtre passe-haut
est-il qualifié de différentiateur dans ces conditions ?
2. On appelle gN la fonction obtenue à partir du développement en série
de Fourier de Vs lorsqu’on limite le développement aux 2N + 1 premiers
termes.
En utilisant la relation donnant Ṽs en fonction de Ṽe , exprimer les coeffi-
cients de gN en fonction de ceux de fN (pour chaque harmonique, pensez
à la substitution ω → nω).
3. Afficher les coefficients de g5 . Que devient la composante continue de Vs ?
Quels sont les coefficients les plus atténués ?
4. Former une liste des coefficients de f5 , une liste des coefficients de g5 et
une dernière liste des rapports des coefficients de ces 2 fonctions (c’est la
réponse spectrale).
5. Tracer les listes précédentes.
6. Représenter la fonction g5 puis, sur un même schéma les fonctions f5 et
g5 .
7. Le résultat est-il proche de la dérivée du signal de Ve , sinon pourquoi ? Vs
est-il déphasé par rapport à Ve ?
8. Etudier l’effet d’une augmentation de la fréquence et/ou du nombre des
coefficients calculés.
22 CHAPITRE 4. PROBLÈMES

Analyse du filtre passe-bas

Effectuer la même analyse pour le filtre passe-bas. Les valeurs de C et ν


sont inchangées, mais on prendra R = 300 kΩ. Dans ces conditions, expliquez
pourquoi le filtre passe-bas fonctionne comme un intégrateur.

0.8

0.6

0.4

0.2

-1.5 -1 -0.5 0.5 1 1.5


-0.2

Fig. 4.3 – Tensions d’entrée et de sortie en mode intégrateur.

4.1.2 Tensions de sortie pour un signal d’entrée carré


1. Reprendre l’analyse précédente dans le cas d’un signal d’entrée carré.
2. Les fonctions de différentiateur ou d’intégrateur sont-elles meilleures ou
moins bonnes avec un signal d’entrée carré ou triangulaire ?

4.2 Modèles de Dynamique des Populations

4.2.1 Modèles de populations isolées

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

2. Représenter sur un même schéma les solutions pour r = K = 1, et pour


4 conditions initiales différentes N0 = 0, 0.5, 1, 1.5 (Plot).
3. Résoudre numériquement l’équation différentielle pour r = K = 1 et pour
N0 = 0.5. Refaire le calcul pour les mêmes valeurs de r et K, mais pour
N0 = 1.5.
Représenter sur un même schéma, la différence entre les solutions analy-
tiques et numériques (NDSolve).
4. Etudier la précision du résultat obtenu par le calcul numérique en fonc-
tion du nombre de décimales utilisées par Mathematica dans les calculs
(WorkingPrecision).

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

Fig. 4.4 – Modèle de Lokta-Volterra

4.2.2 Modèles de populations en interaction

Le modèle de Lokta-Volterra

Le modèle de Lokta-Volterra est le premier modèle historique qui met en


jeu 2 populations en compétition ; les hypothèses sous-jacentes à ce modèle ont
été données en cours. On note N (t) et P (t) les effectifs respectifs des proies et
des prédateurs. Le modèle s’écrit :

Ṅ = N (a − bP ) ,
Ṗ = P (cN − d) ,

où a, b, c, d sont des coefficients positifs.


* Montrer que les changements de variables u = cN/d, v = bP/a, τ = at et
γ = d/a, conduisent au système adimentionné :

du
= u (1 − v) ,

dv
= γv (u − 1) .

1. Déterminer les 2 solutions stationnaires du système différentiel (Solve).


2. Calculer les solutions numériques du système différentiel pour des condi-
tions initiales proches des 2 solutions stationnaires et les représenter en
fonction du temps (NDSolve, Plot).
Faire une représentation paramétrique de ces solutions dans le plan (u, v)
(espace des phases) (ParametricPlot).
Commentez.
3. Procédez à une linéarisation de ce système au voisinage des 2 solutions
stationnaires (D, MatrixForm).
4. Calculer le déterminant, la trace et les valeurs propres des matrices as-
sociées aux systèmes linéarisés et en déduire la nature des 2 points cri-
tiques (Eigenvalues, Det, Tr).
4.2. MODÈLES DE DYNAMIQUE DES POPULATIONS 25

Predateurs
20
18
16
14
12
10
8
Proies
200 400 600 800 100012001400

Fig. 4.5 – Modèle de Lokta-Volterra généralisé

Un modèle de Lokta-Volterra généralisé

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

1 Un exemple pour découvrir Mathematica 3

2 Le strict nécessaire en Mathematica 7


2.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Affectations, Equations et Fonctions . . . . . . . . . . . . . . . . 8
2.3 Listes et Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Règles et Substitutions . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Procédures itératives et conditionnelles . . . . . . . . . . . . . . . 10
2.6 Compléments sur le graphisme . . . . . . . . . . . . . . . . . . . 11

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

4.2.2 Modèles de populations en interaction . . . . . . . . . . . 24

Das könnte Ihnen auch gefallen