Fonctions mathématiques et équations différentielles
Les fonctions Sages
Sage permet de définir simplement des fonctions mathématiques à l'aide d'expressions symboliques comme suit :
Ces fonctions possède un certain nombre de méthodes (comme integrate
, derivative
, etc...) listées en utilisant la tapant f. et tabulation
En particulier, il est possible d'obtenir le développement de Taylor à l'ordre N d'une fonction à l'aide de la commande taylor
.
Définissez une fonction non polynomial continue et dérivable en 0 (par exemple sin(x)). Affichez cette fonction ainsi que son développement limité à l'ordre 1,2 et 3 au voisinage de 0 (avec des couleurs différentes).
Résolution des équations
Sage permet notamment de résoudre de manière exacte de nombreuses équations. Dans l'exemple ci-après, on considère une fonction polynomial dont on cherche les racines. Executez cet exemple.
La fonction solve renvoie la liste des solutions de notre équation. Il est également possible de résoudre des systèmes d'équations (même non linéaires) comme suit :
Remarque : L'instruction initiale permet de définir symboliquement 'x1', 'x2' et 'x3' comme des inconnues. Elle est indispensable pour définir le système qu'on souhaite résoudre.
Donner et résoudre un système permettant de trouver le (ou les) points d'intersections de 2 cercles définis par :
Tracez ces deux cercles.
Mêmes questions dans le cas où le 2ème cercle a pour centre (3,5) et le même rayon. Commentez la réponse donnée par Sage.
Mêmes questions dans le cas où le 2ème cercle devient une ellipse (trouvez l'équation sur internet). Tracez les deux courbes (le cercle et l'ellipse)
Par ailleurs, lorsque l'on cherche les solutions d'une équation de type , on peut utiliser implicit_plot
et voir sa solution de façon graphique.
Utilisez implicit_plot
pour afficher un cercle de rayon 1.
Le logiciel sage permet également de résoudre des équations différentielles. Executez l'exemple ci-dessous.
Expliquons un peu cet exemple. Ici, on commence par déclarer une variable 't' et une fonction x dépendant de t. La fonction x(t) est ainsi définie symboliquement et on peut l'utiliser pour écrire notre équation différentielle. La fonction diff(x,t) permet de dériver x par rapport à t. Pour obtenir une dérivée d'ordre supérieur, il suffit d'écrire diff(x,t,2) pour l'ordre 2 par exemple. De plus, le terme ics
correspond à la définition des conditions initiales (Initial ConditionS). La première valeur de la liste est la valeur initiale de et la seconde celle de .
Résoudre l'équation différentielle avec comme condition initial et .
Nous propopns dans ce petit exercice de résoudre le problème suivant : une masse est accrochée à un ressort selon le schéma suivant
|Mur|--/\/\/\/\/\--()
On note x(t) la possition de la masse à l'instant t. Le ressort a les caractéristiques suivantes :
- il est au repos lorsque la masse est à une distance du bord
- et il possède une raideur
Résoudre cette équation et afficher la solution. À l'aide de la commande animate
, affichez une animation simple permettant de voir la masse (dessinée par exemple par un cercle) bouger au cours du temps. Pour les paramètres, prendre et .
Simulation d'un système de masses oscillantes.
Revenons à notre système Masse - Ressort et essayons d'aller plus loin. On se propose maintenant d'étudier le cas de 2 masses liées entres elles par deux ressorts comme représentée ci-dessous :
|Mur|--/\/\/\/\/\--(M_1)--/\/\/\/\/\--(M_2)
On note cette fois et les positions des masses et . Les deux ressorts ont les caractéristiques suivantes :
- le premier ressort à une raideur et est au repos lorsque sa longueur est égale à ,
- le second ressort à une raideur et est au repos lorsque sa longueur est égale à .
Pour résoudre ce système d'équations, nous allons procéder en plusieurs étapes :
- Nous allons le réécrire sous la forme d'un système différentiel d'ordre en introduisant deux variables et
- Ensuite, on va définir une fonction F(X), où tel que . Cette fonction F renvoie un vecteur de éléments.
Dans le modèle à une seule masse, nous avions effectué une résolution exacte de l'équation différentielle. C'est-à-dire que nous avions obtenu une formule pour . Pour ce nouveau modèle, nous allons faire une résolution numérique : nous allons calucler des valeurs de et à différents temps mais nous n'aurons pas de formule.
Pour cela, on utilise la fonction desolve_system_rk4
qui prend en paramètre un système d'équation différentielle de type :
(Dans notre cas, le système porte sur quatre équations sur )
La fonction desolve_system_rk4
prend en premier paramètre une liste contenant la du sytème d'équation et en second paramètre la liste des variables . Il faudra aussi lui spécifier ivar
la variable de dérivation ainsi que les conditions initiales (la première valeur est la condition initiale en ).
Avec la commande desolve_system_rk4
, résoudre l'équation différentielle en prenant comme condition initiale .
La fonction desolve_system_rk4
renvoie la solution de notre équation calculée numériquement en une série de temps . On obtient ainsi une liste dont chaque élément est un tableau composé de .
Affichez les solutions et obtenues (utilisez pour cela la commande line2d
avec comme argument la liste des points ). Comme précemment, créez une animation pour montrer le mouvement des deux masses au cours du temps.