Informatique
Équations différentielles
I. Equations différentielles
1. Comment formuler une équation différentielle en Maple ? Consultez l' aide ; regardez les exemples . Certaines fonctions de base sont disponibles immédiatement ; d'autres nécessitent le chargement du package DEtools :
| > | with(DEtools): |
2. On va étudier le fonctionnement de Maple sur l'exemple de cette e.d. vue en exercice :
2 x (1 -x ) y' + (1 -x ) y = 1
(a) Définissez-la en Maple (en lui donnant un nom), puis demandez la résolution. Sur quel intervalle Maple la résout-il "spontanément" ?
| > |
| > |
(b) Traçons cette première solution. On observe qu'elle est fournie sous la forme d'une égalité dont le membre de droite contient l' expression de la fonction dont on a besoin. Il faut donc extraire ce membre de droite ( rhs ) puis récupérer en tant que fonction l'expression obtenue ( unapply ). Ensuite, on peut tracer cette fonction sur le domaine convenable avec plot , après avoir fixé une valeur (p.ex. 0) pour la constante qui intervient dans l'expression.
| > |
| > |
(c) Utilisez assume pour forcer Maple à effectuer la résolution sur tous les intervalles possibles.
| > |
| > |
| > |
3. tracé des solutions :
(a) Comment récupérer en tant que fonctions ( unapply ) les membres de droite ( rhs ) des expressions proposées par Maple comme solutions ?
| > |
| > |
(b) En fixant des valeurs arbitraires pour les constantes, tracer une solution sur chaque domaine de résolution.
| > |
| > |
II. Méthode d'Euler
On rappelle que la méthode d'Euler consiste à approcher la courbe d'une solution d'une équation différentielle
y' = F( x , y ) (1)
par une ligne polygonale rejoignant les points (
) où
,
,
et
(2)
pour des valeurs de
k
telles que
.
1.
On rappelle en outre qu'étant données deux séquences
s1
et
s2
en
Maple
, leur concaténation (mise bout à bout) s'obtient en écrivant simplement
s1,s2
.
Soit
une
séquence
Maple
supposée contenir, à la suite de précédents calculs, la succession de points [
,
],[
,
], ..., [
,
]. On donne le point [
,
] et on souhaite former la séquence [
,
],[
,
], ..., [
,
],[
,
], notée
.
Écrire une procédure
ajoutePoint(x,y)
effectuant ce travail. Cette procédure utilisera la variable globale
s
(donc comportera la déclaration
global s;
dans son en-tête).
| > | ajoutePoint := proc(x,y) global s ; |
| > |
2.
Les données sont l'équation (1) :
y
' =
F
(
x
,
y
),
,
,
h
et
b
. Les
sont définis à l'aide de la relation (2). On souhaite construire la séquence de points
= [
,
],[
,
], ..., [
,
]. Pour cela, on va gérer une variable
s
(de type
exprseq
) valant successivement tous les
.
(a) Quelle doit être la valeur initiale de s ?
(b) Écrire une procédure construitS(F,h,a0,an,b) effectuant ce travail à l'aide d'une boucle. On déclarera à nouveau s comme variable globale, afin de pouvoir réutiliser le 1.
| > |
| > |
3. Quelle instruction doit-on utiliser pour effectuer le tracé de la séquence de points s obtenue en 2.(b) ?
4.
Déduire des question précédentes une procédure
Euler(F,h,a0,an,b)
effectuant le tracé de la ligne polygonale approchant la solution
y
de (1) telle que
. Cette procédure fera éventuellement appel à celles des questions précédentes.
| > |
Testez maintenant la procédure sur un exemple :
| > | F := (x,y) -> -y + exp(-x)*cos(10*x) : |