Dsolve

> dsolve(eqdiff,fcn(var),option);

Résous l'équation différentielle eqdiff pour la fonction fcn(var).

Si une solution peut-être trouvée, le résultat est retourné, sinon un résultat partiel utilisant DESol est retourné.

Attention: si une expression NULL (aucun affichage avec le point virgule ";") est retournée, alors ou bien Maple a déterminé qu'il n'y avait pas de solution, ou bien qu'il est incapable de déterminer une solution.

option: explicit pour obtenir la solution sous forme explicite si possible
method = laplace force l'utilisation des transformées de Laplace dans la résolution
type = series force l'utilisation de la méthode des séries dans la résolution
type = numeric force l'utilisation des méthodes numériques dans la résolution
method = opt si l'option type = numeric est présente, cette option permet de spécifier la méthode numérique à utiliser pour résoudre l'équation différentielle.
opt peut prendre une des valeurs suivantes:
  • rkf45 (Runge-Kutta d'ordre 4-5, défaut),
  • dverk78 (Runge-Kutta d'ordre 7-8 continue),
  • classical (contient plusieurs méthodes de base tel qu'Euler, Runge-Kutta d'ordre 2 et 3, etc. Utilise un pas fixe ce qui n'est pas approprié pour avoir des calculs à grandes précisions),
  • gear (Gear à pas simple),
  • mgear (Gear à pas multiples),
  • lsode (Livermore Stiff).
Chaque méthode possède des sous-options. Pour plus d'information, voir l'aide en ligne en utilisant les commandes ?dsolve[numeric], ?dsolve[rkf45], ?dsolve[dverk78], ?dsolve[classical], ?dsolve[gear], ?dsolve[mgear], ?dsolve[lsode].
output=basis spécifie que la solution doit être donnée sous forme de base

eqdiff peut prendre la forme {eqdiff,cond1,cond2,...,condn} pour solutionner l'équation différentielle eqdiff avec les conditions initiales cond1,...,condnn est l'ordre de l'équation différentielle. Ces conditions doivent être de la forme

(D@@n)(fcn)(val) = expr;

Attention: il peut y avoir moins de conditions initiales que l'ordre de l'équation différentielle. Cependant, les conditions initiales doivent être au plus égale à l'ordre sinon Maple V retournera une expression NULL (sauf dans le cas où les conditions supplémentaires sont redondantes).

Remarque: si des conditions initiales ne sont pas données alors des constantes d'intégrations seront données par Maple V sous la forme _C1,...,_Cn.

Exemple

> eqdiff := diff(y(x),x,x) + 5*diff(y(x),x) + 6*y(x) = cos(x);
eqdiff := æ
ç
è
2

x2
y(x) ö
÷
ø
+ 5 æ
ç
è

x
y(x) ö
÷
ø
+ 6y(x) = cos(x)

> dsolve(eqdiff,y(x));
y(x) = 1

10
cos(x) + 1

10
sin(x) + _C1e(-2x) + _C2e(-3x)

> dsolve({eqdiff,y(0) = 1,D(y)(0) = 0},y(x));
y(x) = 1

10
cos(x) + 1

10
sin(x) - 17

10
e(-3x) + 13

5
e(-2x)

eqdiff peut prendre la forme {eqdiff1, ..., eqdiffn},{fcn1(var), ..., fcnn(var)} pour résoudre un système d'équations différentielles pour les fonctions données de var.

S'il y a des conditions initiales pour le système alors eqdiff sera de la forme {eqdiff1, ..., eqdiffn,cond11,...,condmn},{fcn1(var),..., fcnn(var)}mn est la somme des ordres des n équations différentielles.

Attention: encore ici, il peut y avoir moins de conditions initiales que la somme des ordres des équations différentielles. Cependant, les conditions initiales doivent être au plus égale à la somme des ordres sinon Maple V retournera une expression NULL (sauf dans le cas où les conditions supplémentaires sont redondantes).

Exemple

> eqdiff1 := diff(y1(x),x) = 2*y1(x) + y2(x) + exp(x);
eqdiff1 :=

x
y1(x) = 2y1(x) + y2(x) + ex

> eqdiff2 := diff(y2(x),x) = 3*y1(x) + 4*y2(x) - exp(2*x);
eqdiff2 :=

x
y2(x) = 3y1(x) + 4y2(x) - e(2x)

> dsolve({eqdiff1,eqdiff2},{y1(x),y2(x)});
ì
í
î
y2(x) = - 3

16
ex - 3

4
xex + 3_C1e(5x) + æ
ç
è
-_C2 - 1

4
ö
÷
ø
ex,
y1(x) = 3

16
ex + 1

3
e(2x) + 3

4
xex + _C1e(5x) + _C2 ex ü
ý
þ

> dsolve({eqdiff1,eqdiff2,y1(0)=0,y2(0)=0},{y1(x),y2(x)});
ì
í
î
y1(x) = 1

3
e(2x) - 5

16
ex + 3

4
xex - 1

48
e(5x),

y2(x) = 1

16
ex - 3

4
xex - 1

16
e(5x) ü
ý
þ

L'exemple suivant montre la façon d'écrire les données d'un problème qui sera privilégié dans le cours d'équations différentielles.

Exemple

> eqdiff1 := diff(y1(x),x) = 2*y1(x) + y2(x) + exp(x);
eqdiff1 :=

x
y1(x) = 2y1(x) + y2(x) + ex

> eqdiff2 := diff(y2(x),x) = 3*y1(x) + 4*y2(x) - exp(2*x);
eqdiff2 :=

x
y2(x) = 3y1(x) + 4y2(x) - e(2x)

> inits := y1(0) = 0,y2(0) = 0;
inits := y1(0) = 0, y2(0) = 0

> Y := y1(x), y2(x);
Y := y1(x), y2(x)

> sys := eqdiff1, eqdiff2;
sys :=

x
y1(x) = 2y1(x) + y2(x) + ex,



x
y2(x) = 3y1(x) + 4y2(x) - e(2x)

> dsolve({sys, inits},{Y});
ì
í
î
y1(x) = 1

3
e(2x) - 5

16
ex + 3

4
xex - 1

48
e(5x),

y2(x) = 1

16
ex - 3

4
xex - 1

16
e(5x) ü
ý
þ

En fait, c'est la façon la plus appropriée compte tenu de ce qui a été dit dans la section "Syntaxe de Maple V".