Sauter au contenu

Section D.3 Calcul différentiel

Sous-section Fonctions de plusieurs variables

La figure de l’exemple 2.1.1. On voit comment composer une figure, étape par étape. De plus, la commande text(...) sert à ajouter des annotations. Il existe d’autres façons de le faire, par exemple en utilisant les options legend ou legend_label.
Pour tracer le graphe d’une fonction de deux variables, c’est la commande plot3d(...) qu’il faut utiliser. Voici le graphe de l’exemple 2.1.7. Noter cependant que dans le texte, la figure en question a été produite avec GeoGebra.
Plusieurs options sont disponibles, notamment on peut colorier une surface avec une couleur qui varie. Ceci utilise les « colormaps », de matplotlib. Ce sont des règles qui servent à assigner une couleur d’une échelle donnée à un nombre compris entre \(0\) et \(1\text{.}\) Ce lien mène vers les « colormaps » disponibles.
Voici un exemple.
L’élément à noter est la définition de macouleur(...) : il s’agit d’une fonction qui prendra des valeurs entre \(0\) et \(1\text{.}\) Noter que dans l’exemple qui nous occupe, \(f\) varie en \(f_{min} = -100\) et \(f_{max} = 100\text{.}\) On obtiendra quelque chose qui varie entre \(0\) et \(1\) en faisant
\begin{gather*} \frac{f-f_{min}}{f_{max} - f_{min}} \end{gather*}
À l’intérieur de Fig(...), la portion color=(macouleur, colormaps.Spectral) dit à SageMath d’utiliser macouleur(...) pour obtenir une valeur entre \(0\) et \(1\text{,}\) puis utiliser la règle Spectral pour assigner une couleur.
Voici maintenant comment faire des diagrammes de courbes de niveau. C’est la fonction de l’exemple 2.2.7
On suggère de commenter une ligne, à l’aide du caractère # en tout début de ligne, puis d’exécuter le code pour voir l’effet de chaque option. Il y a plus d’options, on pourra regarder la page de référence.
Une autre commande utile est implicit_plot3d(...). Elle a été utilisée pour produire la figure 2.1.9. Voici un exemple un peu plus simple. L’astuce ici est que les traces horizontales sont en réalité des petits morceaux de cylindres, d’une hauteur presque négligeable, en l’occurrence chaque tel cylindre va, en hauteur, de zlevel -0.02 à zlevel +0.02.

Sous-section Dérivées partielles et champs gradients

Le calcul des dérivées partielles avec SageMath se fait avec la commande diff(...). À nouveau, plusieurs options sont disponibles : diff(f,x,1,y,2) par exemple retourne la dérivée partielle d’une fonction \(f\) (qui doit être définie) par rapport à \(x\) une fois, et par rapport à \(y\) deux fois, c’est-à-dire \(\frac{\partial^3 f}{\partial x\, \partial y^2}\text{.}\) Voici d’autres exemples.
Ceci définit la fonction \(f(x,y) = xye^{x^2}\) puis on calcule certaines dérivées, à savoir :
  1. La dérivée partielle d’ordre 2 : \(\frac{\partial^2 f}{\partial x\, \partial y}\)
  2. La dérivée partielle d’ordre 2 : \(\frac{\partial^2 f}{\partial x^2}\)
  3. La dérivée totale (du premier ordre de \(f\)), à savoir la fonction que nous avons notée \(\vD f(x,y)\text{.}\)
  4. La commande f.gradient() est une autre façon d’obtenir la dérivée (totale, du premier ordre) d’une fonction à valeurs scalaires \(f\text{.}\)
  5. La dérivée totale d’ordre \(2\text{,}\) de \(f\text{,}\) \(\vD^2f(x,y)\text{,}\) c’est-à-dire la matrice hessienne de \(f\)
  6. La commande f.hessian() est une autre façon d’obtenir la matrice hessienne d’une fonction \(f\text{.}\)
Voyons maintenant comment représenter un champ de vecteurs, avec la commande plot_vector_field(..). Dans l’exemple ci-bas, on considère le champ\(\vF(x,y) = -y\, \vi + x\, \vj \text{,}\) celui de la figure 4.1.6.
Pour le champ gradient d’une fonction \(f\) déjà définie, on pourrait faire plot_vector_field(f.gradient()...).

Sous-section Approximations de Taylor

Afin de calculer les polynômes de Taylor d’une fonction d’une ou de plusieurs variables, c’est la commande taylor(...) qu’il faut utiliser. On doit spécifier le point autour duquel on calcule le polynôme, et le degré total.
Ci-bas on calcule le polynôme de Taylor de degré total 2 de \(f(x,y) = e^{2x}\sin{3y}\) autour du point \((x_0,y_0)=(0,1)\)

Sous-section Points critiques et multiplicateurs de Lagrange

Pour trouver les points critiques d’une fonction il faut résoudre certaines équations. La commande solve(...) fait ceci. On doit lui passer en paramètres deux listes, d’abord les équations à résoudre, puis les variables pour lesquelles on veut les solutions. Ci-après on fait les calculs de l’exemple 2.8.10.
On peut aussi calculer la matrice hessienne de \(f\) évaluée en chacun de ces points. La commande ().rhs extrait le terme de droite (« right-hand side ») d’une expression donnée. Il faut garder à l’esprit que les listes sont numérotées à compter de zéro.
Voyons maintenant comment optimiser un problème avec contraintes, à l’aide des multiplicateurs de Lagrange. Nous nous servons du contexte de l’exemple 2.9.9, à savoir trouver des demi-axes de l’ellipse \(3x^2-2xy+3y^2=4\text{.}\) On doit maximiser la fonction \(f(x,y) = x^2 + y^2\text{.}\)
Pour faire ceci avec Sage, on doit introduire une variable, L, qui jouera le rôle de \(\lambda\text{.}\) Par la suite, il s’agit de former le système d’équations et de le résoudre.