Équations différentielles : desolve deSolve dsolve

### 6.64.1 Équations différentielles : desolve deSolve dsolve

desolve (ou deSolve) permet de résoudre :

- les équations différentielles linéaires à coefficients constants du premier ou du deuxième ordre,
- les équations différentielles linéaires du premier ordre,
- les équations différentielles du premier ordre incomplète en y,
- les équations différentielles du premier ordre incomplète en x,
- les équations différentielles du premier ordre à variables séparées,
- les équations différentielles du premier ordre homogènes (y′=F(y/x)),
- les équations différentielles du premier ordre ayant un facteur intégrant,
- les équations différentielles de Bernoulli (a(x)y′+b(x)y=c(x)yn),
- les équations différentielles de Clairaut (y=x*y′+f(y′)).
- les équations différentielles de Lagrange (y=a(y′)x+b(y′)).
- les systèmes différentiels linéaires à coefficients constants ([y′=[[1,2],[2,1]]*y+[x,x+1],y(0)=[1,2]])).

Les paramètres de desolve:

- quand l’équation différentielle est du premier ordre, que la variable est x et que l’inconnue est y, les paramètres sont :
  l’équation différentielle, par exemple :
  desolve(y’+x*y=0)
  ou
  l’équation différentielle suivie de la liste [x0,y0] qui donne comme condition initiale y(x0)=y0, par exemple
  desolve(y’+x*y=0,[0,1])
  ou
  la liste formée par l’équation différentielle et de la relation y(x0)=y0 qui donne la condition initiale et comme 2nd argument l’inconnue y, par exemple
  desolve([y’+x*y=0,y(0)=1],y)
  desolve([y’’+2*y’+y,y(0)=1,y’(0)=0],y])
- quand la variable est x et l’inconnue n’est pas y :
  les paramètres sont : l’équation différentielle (ou la liste formée par l’équation différentielle et les conditions initiales) et l’inconnue y (ou z ou ..), par exemple

      desolve(z'+x*z=0,z)
      desolve([y'+x*y=0,y(0)=1]);
      desolve([y'+x*y=0,y(0)=1],y)
      desolve([z'+x*z=0,z(0)=1],z)
      desolve([y''+2*y'+y,y(0)=1,y'(0)=0]);
      desolve([y''+2*y'+y,y(0)=1,y'(0)=0],y)
      desolve([z''+2*z'+z,z(0)=1,z'(0)=0],z)

  Dans l’équation différentielle y s’écrit y et y′ s’écrit y′ et y" s’écrit y″ car on dérive par rapport à la variable x. Par exemple : desolve(y’’+2*y’+y,y) et desolve([y’’+2*y’+y,y(0)=1,y’(0)=0],y).
- quand la variable n’est pas x (par exemple t.) et l’inconnue est ou n’est pas y:
  les paramètres sont : l’équation différentielle (ou la liste formée par l’équation différentielle et les conditions initiales), la variable t et l’inconnue z ou l’inconnue z(t) (la variable est alors t et l’inconnue est z).
  Dans l’équation différentielle, y s’écrit y et y′ s’écrit y′ et y" s’écrit y″ car on dérive par rapport à la variable que l’on a spécifiée ; on peut aussi écrire y sous la forme y(t) et y ′ sous la forme diff(y(t),t), y′′ sous la forme diff(y(t),t$2) si la la variable que l’on a spécifiée est t. Mais l’écriture est moins conviviale !
  Par exemple :
  desolve(diff(y(t),t$2)+2*diff(y(t),t)+y(t),y(t)); ou
  desolve(diff(y(t),t$2)+2*diff(y(t),t)+y(t),t,y); ou
  desolve(y’’+2y’+y,t,y); ou
  desolve(y’’+2y’+y,y(t))
  et
  desolve([y’’+2*y’+y,y(0)=1,y’(0)=0],t,y) ou
  desolve([y’’+2*y’+y,y(0)=1,y’(0)=0],y(t)) ou
  desolve([z’’+2*z’+z,z(0)=1,z’(0)=0],u,z) ou
  desolve([z’’+2*z’+z,z(0)=1,z’(0)=0],z(u)).
  Lorsqu’il n’y a pas de conditions initiales (ou une seule condition initiale pour une équation du second ordre), desolve renvoie la solution écrite avec des constantes d’intégration : c_0, c_1 où y(0)=c_0 et y’(0)=c_1 ou renvoie une liste des solutions.
- quand on a un système différentiel linéaire à coefficients constants les paramètres sont :
  - si la variable est x et que l’inconnue est y, les paramètres sont le système différentiel donné sous forme matricielle, par exemple :
    desolve(y’=[[1,2],[2,1]]*y+[x,x+1])
    ou
    la liste formée par le système différentiel donné sous forme matricielle et de la relation qui donne la condition initiale (par y(x0)=[a0,a1]).
    par exemple :
    desolve([y’=[[1,2],[2,1]]*y+[x,x+1],y(0)=[1,2]])
  - si la variable n’est pas x (par exemple t) es paramètres sont le système différentiel, la variable t et l’inconnue z ou l’inconnue z(t) par exemple :
    desolve(z’=[[1,2],[2,1]]*z+[t,t+1],t,z) ou
    desolve(z’=[[1,2],[2,1]]*z+[t,t+1],z(t))
    et
    desolve([z’=[[1,2],[2,1]]*z+[t,t+1],z(0)=[1,2]],t,z) ou
    desolve([z’=[[1,2],[2,1]]*z+[t,t+1],z(0)=[1,2]],z(t))
- Si vous avez trouvé une solution particulière vous pouvez la donner en la mettant comme valeur de y (ou de z) :
  Par exemple si f0(x) est une solution on écrira ;
  desolve(y’+y=2*exp(x),y=exp(x))
  ou
  desolve(z’+z=2*exp(x),z=exp(x))

Exemples

- Exemples de résolution d’une équation différentielle linéaire à coefficients constants du deuxième ordre.
  1. Résoudre :

     y″+y=cos(x)

     On tape (en tapant deux fois prime pour y’’):
     desolve(y’’+y=cos(x),y)
     ou encore :
     desolve(diff(diff(y))+y=cos(x),y)
     On trouve :
     c_0*cos(x)+(x+2*c_1)*sin(x)/2
     c_0, c_1 sont les constantes d’intégration : y(0)=c_0 et y’(0)=c_1.
     ou bien si la variable n’est pas x mais t, on tape :
     desolve(derive(derive(y(t),t),t)+y(t)=cos(t),t,y)
     ou encore
     desolve(derive(derive(y(t),t),t)+y(t)=cos(t),[t,y])
     On trouve alors :
     c_0*cos(t)+(t+2*c_1)/2*sin(t)
     c_0, c_1 sont les constantes d’intégration : y(0)=c_0 et y’(0)=c_1.
  2. Résoudre :

     y″+y=cos(x) y(0)=1

     On écrit, si veut les solutions vérifiant y(0)=1 :
     desolve([y’’+y=cos(x),y(0)=1],y)
     On obtient
     [cos(x)+(x+2*c_1)/2*sin(x)]
     les composantes de ce vecteur sont solutions (ici on a une seule composante car on obtient une seule solution dépendant de la constante c_1).
  3. Résoudre :

     y″+y=cos(x) (y(0))2=1

     On veut les solutions vérifiant (y(0))2=1, on tape alors :
     desolve([y’’+y=cos(x),y(0)`^`2=1],y)
     On obtient
     [-cos(x)+(x+2*c_1)/2*sin(x), cos(x)+(x+2*c_1)/2*sin(x)]
     chaque composantes de cette liste est une solution, on a donc deux solutions dépendant de la constante c_1 qui correspondent à y(0)=1 et à y(0)=−1.
  4. Résoudre :

     y″+y=cos(x) (y(0))2=1 y′(0)=1

     On veut les solutions vérifiant (y(0))2=1 et y′(0)=1, on tape alors :
     desolve([y’’+y=cos(x),y(0)`^`2=1,y’(0)=1],y)
     On obtient :
     [-cos(x)+(x+2)/2*sin(x),cos(x)+(x+2)/2*sin(x)]
     chaque composante de cette liste est une solution.On a donc deux solutions.
  5. Résoudre :

     y″+2y′+y=0

     On tape alors :
     desolve(y’’+2*y’+y=0,y)
     On obtient les solutions dépendant de 2 constantes d’intégration c_0 et c_1:
     (x*c_0+x*c_1+c_0)*exp(-x)
  6. Résoudre :

     y″−6y′+9y=xe3x

     On tape alors :
     desolve(y’’-6*y’+9*y=x*exp(3*x),y)
     On obtient :
     (x`^`3+(-(18*x))*c_0+6*x*c_1+6*c_0)*1/6*exp(3*x)
     la solution dépend de 2 constantes d’intégration c_0 et c_1.
- Exemples de résolution d’une équation différentielle linéaire du premier ordre.
  1. Résoudre :

     xy′+y−3x2=0

     On tape alors :
     desolve(x*y’+y-3*x`^`2,y)
     Ou on tape :
     desolve(x*y’+y-3*x`^`2)
     On obtient :
     (c_0+x`^`3)/x
  2. Résoudre :

     y′+x*y=0, y(0)=1

     On tape alors :
     desolve([y’+x*y=0, 0,1])
     Ou on tape :
     desolve([y’+x*y=0, y(0)=1],y)
     Ou on tape :
     desolve((y’+x*y=0) && (y(0)=1),[x,y])
     Ou on tape :
     desolve((y’+x*y=0) && (y(0)=1),x,y)
     Ou on tape :
     desolve((y’+x*y=0) && (y(0)=1),y)
     On obtient :
     [exp(-x`^`2)/2)]
  3. Résoudre :

     x(x2−1)y′+2y=0

     On tape alors :
     desolve(x*(x`^`2-1)*y’+2*y=0)
     Ou on tape :
     desolve(x*(x`^`2-1)*y’+2*y=0,y)
     On obtient :
     (c_0)/((x`^`2-1)/(x`^`2))
  4. Résoudre :

     x(x2−1)y′+2y=x2

     On tape alors :
     desolve(x*(x`^`2-1)*y’+2*y=x`^`2)
     Ou on tape :
     desolve(x*(x`^`2-1)*y’+2*y=x`^`2,y)
     On obtient :
     (c_0*x`^`2+x`^`2*ln(x))/(x`^`2-1)
     Si la variable est t et non x, par exemple :

     t(t2−1)y′(t)+2y(t)=t2

     On tape :
     desolve(t*(t`^`2-1)*diff(y(t),t)+2*y(t)=(t`^`2),y(t))
     On obtient :
     (c_0*t`^`2+t`^`2*ln(t))/(t`^`2-1)
  5. Résoudre :

     x(x2−1)y′+2y=x2,y(2)=0

     On tape alors :
     desolve(x*(x`^`2-1)*y’+2*y=x`^`2,[2,0])
     Ou on tape :
     desolve([x*(x`^`2-1)*y’+2*y=x`^`2,y(2)=0],y)
     On obtient :
     [(-ln(2)*x`^`2+x`^`2*ln(x))/(x`^`2-1)]
  6. Résoudre :

     √ |
     1+x2
     | y′−x−y= | √ |
     1+x2

     On tape alors :
     desolve(y’*sqrt(1+x`^`2)-x-y-sqrt(1+x`^`2))
     Ou on tape :
     desolve(y’*sqrt(1+x`^`2)-x-y-sqrt(1+x`^`2),y)
     On obtient :
     (-c_0+ln(sqrt(x`^`2+1)-x))/(x-sqrt(x`^`2+1))
- Exemples de résolution d’une équation différentielle à variables séparées.
  1. Résoudre :

     y′=2 | √ |
     y

     On tape alors :
     desolve(y’=2*sqrt(y))
     Ou on tape :
     desolve(y’=2*sqrt(y),y)
     On obtient :
     [x`^`2+-2*x*c_0+c_0`^`2]
  2. Résoudre :

     xy′ln(x)−y(3ln(x)+1)=0

     On tape alors :
     desolve(x*y’*ln(x)-(3*ln(x)+1)*y)
     Ou on tape :
     desolve(x*y’*ln(x)-(3*ln(x)+1)*y,y)
     On obtient :
     c_0*x`^`3*ln(x)
- Exemples de résolution d’une équation différentielle de Bernoulli du premier ordre, de type a(x)y′+b(x)y=c(x)yn avec n=constante réelle.
  Ces équations se résolvent en divisant par yn, car on se ramène à une équation linéaire en u=1/yn−1.
  1. Résoudre :

     xy′+2y+xy2=0

     On tape alors :
     desolve(x*y’+2*y+x*y`^`2)
     Ou on tape :
     desolve(x*y’+2*y+x*y`^`2,y)
     On obtient :
     [(-1/x+c_0))*x`^`2]
  2. Résoudre :

     xy′−2y=xy3

     On tape alors :
     desolve(x*y’-2*y-x*y`^`3)
     Ou on tape :
     desolve(x*y’-2*y-x*y`^`3,y)
     On obtient :
     [((-2*x`^`5/5+c_0)/x`^`4)`^`(1/-2), -((-2*x`^`5/5+c_0)/x`^`4)(1/-2)]
  3. Résoudre :

     x2y′−2y=xe(4/x)y3

     On tape alors :
     desolve(x`^`2*y’-2*y-x*exp(4/x)*y`^`3,y)
     On obtient :
     [((-2*ln(x)+c_0)*exp(4*/x))`^`(1/-2),
     -((-2*ln(x)+c_0)*exp(4/x))`^`(1/-2))]
- Exemples de résolution d’une équation différentielle homogéne du premier ordre qui se résout en posant y=t*x.
  1. Résoudre :

     3x3y′=y(3x2−y2)

     On tape alors :
     desolve(3*x`^`3*y’=((3*x`^`2-y`^`2)*y))
     Ou on tape :
     desolve(3*x`^`3*y’=((3*x`^`2-y`^`2)*y),y)
     On obtient :
     [0,pnt[c_0*exp((3/(2*‘ t‘`^`2)),‘ t‘*c_0*exp((3/(2*‘ t‘`^`2))]]
     donc les solutions sont y=0 et la famille de courbes d’équation paramétrique x=c0exp(3/(2t2)), y=t*c0exp(3/(2t2)) (le paramètre est noté ‵ t‵ dans la réponse).
  2. Résoudre :

     xy′=y+ | √ |
     x2+y2

     On tape alors :
     desolve(x*y’=y+sqrt(x`^`2+y`^`2))
     Ou on tape :
     desolve(x*y’=y+sqrt(x`^`2+y`^`2),y)
     On obtient :
     [(-i)*x,(i)*x,pnt[c_0/(sqrt(‘ t‘`^`2+1)-‘ t‘),(‘ t‘*c_0)/(sqrt(‘ t‘`^`2+1)-‘ t‘)]]
     donc les solutions sont :

     y=ix,y=−ix

     et la famille de courbes d’équation paramétrique

     x=c0/( | √ |
     t2+1
     | −t), y=t*c0/( | √ |
     t2+1
     | −t)

     (le paramètre est noté ‵ t‵ dans la réponse.
- Exemples de résolution d’une équation différentielle du premier ordre ayant un facteur intégrant.
  1. Résoudre :

     yy′+x

     On tape alors :
     desolve(y*y’+x)
     Ou on tape :
     desolve(y*y’+x,y)
     On obtient :
     [sqrt(-2*c_0-x`^`2),-(sqrt(-2*c_0-x`^`2))]
     dans cet exemple, xdx+ydy est une différentielle totale, et le facteur intégrant est 1.
  2. Résoudre :

     2xyy′+x2−y2+a2=0

     On tape alors :
     desolve(2*x*y*y’+x`^`2-y`^`2+a`^`2)
     Ou on tape :
     desolve(2*x*y*y’+x`^`2-y`^`2+a`^`2,y)
     On obtient :
     [sqrt(a`^`2-x`^`2-c_1*x),-(sqrt(a`^`2-x`^`2-c_1*x))]
     dans cet exemple le facteur intégrant est 1/x2.
- Exemple de résolution d’une équation différentielle du premier ordre incomplète en x.
  Résoudre :

  (y+y′)4+y′+3y=0

  Ce genre d’équations n’est pas résoluble directement par Xcas, nous allons expliquer ce qu’il faut faire pour l’aider à résoudre de telles équations. On doit trouver pour résoudre F(y,y′)=0, une représentation paramétrique de F(u,v)=0, par exemple, u=f(t),v=g(t) puis, poser y=f(t) et dy/dx=y′=g(t).
  On a donc dy/dt=f′(t)=y′*dx/dt=g(t)*dx/dt.
  On trouve alors, comme solution la courbe d’équation paramétrique x(t), y(t)=f(t), où x(t) est obtenu en résolvant l’équation différentielle g(t)dx=f′(t)dt.
  Ici on peut poser y+y′=t ce qui donne :
  y=−t−8*t4 et y′=dy/dx=3*t+8*t4 et donc dy/dt=−1−32*t3 donc
  (3*t+8*t4)*dx=(−1−32*t3)dt.
  On tape alors :
  desolve((3*t+8*t`^`4)*diff(x(t),t)=(-1-32*t`^`3),x(t))
  On obtient :
  (9*c_0 -11*ln(8*t`^`3+3)-ln(t`^`3))/9
  on a donc comme solution la courbe d’équation :

  x(t)=−11*1/9*ln(8*t3+3)+1/−9*ln(t3)+c0, y(t)=−t−8*t4

- Exemples de résolution d’une équation différentielle de Clairaut du premier ordre, de type y=x*y′+f(y′) avec f continument dérivable ; c’est un cas particulier de l’équation différentielle de Lagrange, en hommage au mathḿaticien Alexis Clairaut.
  On pose dy/dx=y′=t et on remplace l’équation différentielle y=x*y′+f(y′) par le système paramétrique :
  y=x*t+f(t) et dy=tdx
  ce système est équivalent au système obtenu en éliminant dy :
  y=x*t+f(t) et (x+f′(t))dt=0
  car dy=tdx+xdt+f′(t)dt=tdx
  On a alors deux types de solutions :
  - celles qui vérifient y=x*t+f(t) et dt=0
    donc t=m=cste et y=mx+f(m)
    y=mx+f(m) est l’équation des droites Dm. Ces droites sont appelées les solutions générales de l’équation.
  - celles qui vérifient y=x*t+f(t) et x+f′(t)=0
    c’est à dire la courbe d’équation paramétrique :
    x=−f′(t) et y=−tf′(t)+f(t) cette solution est appelée solution singulière.
    La courbe représentative de cette solution est l’enveloppe de la famille des droites Dm.
    En effet si y=mx+f(m), l’enveloppe de ces droites est l’ensemble des points de coordonnées x,y qui vérifient :
    y=mx+f(m) et 0=x+f′(m) lorsque m∈ ℝ
    qui sont les 2 équations qui definissent la solution singulière/
  - Des solutions hybrides peuvent être obtenues par raccordement de ces différentes courbes solutions, d’autant plus simplement qu’il s’agit d’une famille de droites et de sa courbe enveloppe.
  Exemple
  1. Résoudre :

     xy′+y′3−y)=0

     On tape alors :
     desolve(x*y’+y’`^`3-y,y)
     On obtient :
     [c_0*x+c_0`^`3,[-3*‘ t‘`^`2,-‘ t‘*3*‘ t‘`^`2+‘ t‘`^`3]]
     On tape dans un niveau de géométrie 2d :
     supposons(m=[-0.7,-5,5,0.1]);
     droite(y=m*x+m`^`3);
     plotparam(-3*t`^`2+i*(-2*t`^`3))
     On obtient :
     en faisant bouger le curseur m on voit que les droites enveloppe la courbe d’équation paramétrique x=−3*t2,y=−2*t3
  2. Résoudre :

     y−xy′= | √ |
     a2+b2*y′2
     | =0

     On tape alors :
     desolve(y-x*y’-sqrt(a`^`2+b`^`2*y’`^`2),y)
     On obtient :
     [c_0*x+sqrt(a`^`2+b`^`2*c_0`^`2), [-b`^`2*2*‘ t‘*(sqrt(a`^`2+b`^`2*‘ t‘`^`2))`^`-1/2,-‘ t‘*b`^`2*2*‘ t‘*(sqrt(a`^`2+b`^`2*‘ t‘`^`2))`^`-1/2+sqrt(a`^`2+b`^`2*‘ t‘`^`2)]]
- Résoudre le système différentiel : u′(t)=u(t)+2v(t)+t
  v′(t)=2u(t)+v(t)+t+1
  Puis trouver les solutions de ce sytème qui vérifie u(0=1,v(0)=2 On tape :
  desolve(y’=[[1,2],[2,1]]*y+[x,x+1])
  On obtient
  [[(9*exp(-x)+5*exp(3*x)+9*c_0*exp(-x)+9*c_0*exp(3*x)- 9*c_1*exp(-x)+9*c_1*exp(3*x)-6*x-14)/18, (-9*exp(-x)+5*exp(3*x)-9*c_0*exp(-x)+ 9*c_0*exp(3*x)+9*c_1*exp(-x)+9*c_1*exp(3*x)-6*x+4)/18]]
  cela donne les expressions de u(x) et v(x).
  Ou on tape :
  desolve(y’=[[1,2],[2,1]]*y+[t,t+1],t,y)
  ou on tape :
  desolve(z’=[[1,2],[2,1]]*z+[t,t+1],t,z)
  ou on tape :
  desolve(z’=[[1,2],[2,1]]*z+[t,t+1],z(t))
  On obtient
  [[(9*exp(-t)+5*exp(3*t)+9*c_0*exp(-t)+9*c_0*exp(3*t)- 9*c_1*exp(-t)+9*c_1*exp(3*t)-6*t-14)/18, (-9*exp(-t)+5*exp(3*t)-9*c_0*exp(-t)+ 9*c_0*exp(3*t)+9*c_1*exp(-t)+9*c_1*exp(3*t)-6*t+4)/18]]
  cela donne les expressions de u(t) et v(t).
  Puis, on tape :
  desolve([y’=[[1,2],[2,1]]*y+[x,x+1],y(0)=[1,2]])
  On obtient
  [[(16*exp(3*x)-3*x-7)/9,(16*exp(3*x)-3*x+2)/9]]
  cela donne les expressions de u(x) et v(x) tels que u(0)=1 et v(0)=2.
  Ou on tape :
  desolve([z’=[[1,2],[2,1]]*z+[t,t+1],z(0)=[1,2]],t,z)
  ou on tape :
  desolve([z’=[[1,2],[2,1]]*z+[t,t+1],z(0)=[1,2]],z(t))
  On obtient
  [[(16*exp(3*t)-3*t-7)/9,(16*exp(3*t)-3*t+2)/9]]
  cela donne les expressions de u(t) et v(t) tels que u(0)=1 et v(0)=2.