### 6.20.4 Derivées et derivées partielles d’une expression et derivées d’une fonction : diff derive deriver ’

#### Généralités

diff ou derive ou deriver sont des fonctions préfixées alors que ’ est la version postfixée de diff ou derive ou deriver.
Ces fonctions ont un, deux ou plus de 2 arguments :

- avec un argument qui peut être soit une fonction, soit une expression de la variable x.
  - Si cet argument est une fonction, diff ou derive ou deriver ou ’ renvoie la fonction dérivée de cette fonction.
    Ces fonctions sont alors equivalentes à function_diff.
  - Si cet argument est une expression de la variable x, diff ou derive ou deriver ou ’ renvoie la dérivée de l’expression par rapport à x
  - Remarque Dans ce cas on peut aussi utiliser convert (ou sa version infixée =>) avec l’option diff.
- avec 2 arguments qui peuvent être soit une expression et le nom d’une variable, soit une expression et une liste de noms de variables.
  Cela va permettre de calculer des dérivées et des derivées partielles du premier ordre et plusieurs arguments pour calculer des derivées partielles de tous les ordres d’une expression.
- avec plus que 2 arguments qui peuvent être:
  une expression et le nom des variables par rapport auxquelles il faut dériver cette expression (le nom des variables est éventuellement suivi de $n pour indiquer le nombre n de fois que l’on veut dériver) ,

#### Derivée et fonction derivée

diff ou derive ou deriver ou ’ ont comme argument soit une fonction, soit une expression de la variable x.

- Si cet argument est une fonction, diff ou derive ou deriver ou ’ renvoie une fonction qui est la fonction dérivée de la fonction argument.
  diff (ou derive ou deriver ou ’) est alors equivalente à function_diff.
  On tape :
  f(x):=x`^`2+x*cos(x)+
  Pour définir g comme f′, on tape :
  g:=f’
  Ou :
  g:=(f=>diff)
  Ou :
  g:=diff(f)
  Ou :
  g:=function_diff(f)
  Ou :
  g:=unapply(diff(f(x),x),x)
  Ou :
  g(x):=f’(x)
  Ou :
  g(x):=(f(x)=>diff)
  Ou :
  g(x):=diff(f)(x))
  Puis, on tape :
  g(x)
  On obtient :
  cos(x)+x*(-(sin(x)))+2*x
  Pour définir h comme f″, on tape :
  h:=f’’
  Ou :
  h:=diff(diff(f))
  Ou :
  h:=function_diff(function_diff(f))
  Ou :
  h:=diff(unapply(diff(f(x),x),x))
  Ou :
  h(x):=diff(diff(f))(x))
  Ou :
  h(x):=f’’(x)
  Puis, on tape :
  h(x)
  On obtient :
  -sin(x)+x*(-cos(x))-sin(x)+2
- Si cet argument est une expression de la variable x, diff ou derive ou deriver ou ’ renvoie une expression qui est l’expression de la dérivée de l’argument par rapport à x. On tape :
  f(x):=x*cos(x)+x`^`2
  Pour calculer la dérivée de f(x), on tape :
  A:=f(x)’
  Ou :
  A:=diff(f(x))
  On obtient :
  cos(x)+x*(-(sin(x)))+2*x
  Ou encore :
  A:=diff(f(a),a)
  On obtient :
  cos(a)+a*(-(sin(a)))+2*a
  MAIS ATTENTION
  cela ne définit pas une fonction car le résultat est une expression.
  g(x):=diff(f(x)) ou g(x):=diff(f(x),x) n’est pas correct, car lors d’une affectation ce qui est à droite de := n’est pas évalué lors de la définition....il faut utiliser unapply (g(x):=unapply(diff(f(x),x),x)) ou écrire g(x):=diff(f)(x).

#### Derivées et derivées partielles d’ordre 1 : diff derive deriver ’

Pour avoir des derivées partielles d’ordre 1 :
diff (ou derive ou deriver ou ’) a deux arguments : une expression et une variable (resp une liste contenant le nom des variables) (voir fonctions de plusieurs variables paragraphe 6.61).
diff renvoie la dérivée de l’expression par rapport à la variable donnée comme deuxième paramètre, trés utile pour calculer des dérivées partielles!) (resp renvoie une liste contenant les dérivées par rapport aux variables de la liste du 2nd argument).
Exemples :

- Soit à calculer :

  ∂ (x.y2.z3+x.y.z)
  ∂ z

  On tape :
  (x*y `^`2*z`^`3+x*y*z,z)’
  ou on tape :
  diff(x*y `^`2*z`^`3+x*y*z,z)
  On obtient :
  x*y`^`2*3*z`^`2+x*y
  Si on a cocher Pas à pas dans la configuration générale on a en plus, en vert, le détail du calcul :

      Derivative of a sum: (u+v+...)'=u'+v'+...
        with u,v,...=x*y^2*z^3,x*y*z
      Derivative of a power: (z^3)'=3*z'*(z)^(3-1)

- Soit à calculer les 3 derivées partielles premières de x*y2*z3+x*y*z.
  On tape :
  (x*y`^`2*z`^`3+x*y,[x,y,z])’
  Ou on tape :
  diff(x*y`^`2*z`^`3+x*y,[x,y,z])
  On obtient :
  [y`^`2*z`^`3+y*z, x*2*y*z`^`3+x*z, x*y`^`2*3*z`^`2+x*y]
  Si on a cocher Pas à pas dans la configuration générale on a en plus, en vert, le détail du calcul :

      Derivative of a sum: (u+v+...)'=u'+v'+...
        with u,v,...=x*y^2*z^3,x*y
      Derivative of a sum: (u+v+...)'=u'+v'+...
        with u,v,...=x*y^2*z^3,x*y
      Derivative of a power: (y^2)'=2*y'*(y)^(2-1)
      Derivative of a power: (z^3)'=3*z'*(z)^(3-1)

- Soit à calculer :

  ∂3 (x.y2.z3+x.y.z)
  ∂ y∂2 z

  On tape :
  (x*y `^`2*z`^`3+x*y*z,y,z$2)’
  Ou on tape :
  diff(x*y `^`2*z`^`3+x*y*z,y,z$2)
  On obtient :
  12*x*y*z
  Si on a cocher Pas à pas dans la configuration générale on a en plus, en vert, le détail du calcul :

      Derivative of a sum: (u+v+...)'=u'+v'+...
        with u,v,...=x*y^2*z^3,x*y*z
      Derivative of a power: (y^2)'=2*y'*(y)^(2-1)
      Derivative of a sum: (u+v+...)'=u'+v'+...
        with u,v,...=2*x*y*z^3,x*z
      Derivative of a power: (z^3)'=3*z'*(z)^(3-1)
      Derivative of a power: (z^2)'=2*z'*(z)^(2-1)

#### Derivée et derivée partielle d’ordre n : diff derive deriver

Lorsque derive (ou diff) a plus de deux arguments, ce sont : une expression et le nom des variables par rapport auxquelles il faut dériver cette expression (le nom des variables est éventuellement suivi de $n pour indiquer le nombre n de fois que l’on veut dériver).
diff renvoie la dérivée de l’expression par rapport aux variables données après le premier paramètre (utile pour calculer des dérivées partielles de tous les ordres).
Donc pour dériver n fois :
diff (ou derive) a n+1 arguments : une expression et le nom de la variable qui sera répété n fois. Pour avoir une écriture plus facile on écrira plutôt le nom de la variable suivi de $n pour indiquer que l’on veut dériver n fois (en effet x$3=(x,x,x)). Par exemple pour dériver exp(x*y) 1 fois par rapport à x et 2 fois par rapport à y, on met comme arguments l’expression, puis, les noms des variables éventuellement suivi de $ pour indiquer le nombre de fois que l’on veut dériver et on tape diff(exp(x*y),x,y$2) qui est équivalent à diff(exp(x*y),x,y,y) (en effet y$2=(y,y)).
Exemples

- Soit à calculer :

  ∂2 (x.y2.z3+x.y.z)
  ∂ x∂ z

  On tape :
  (x*y `^`2*z`^`3+x*y*z,x,z)’
  Ou on tape :
  diff(x*y `^`2*z`^`3+x*y*z,x,z)
  On obtient :
  y`^`2*3*z`^`2+y
- Soit à calculer :

  ∂3 (x.y2.z3+x.y.z)
  ∂ x∂2 z

  On tape :
  (x*y `^`2*z`^`3+x*y*z,x,z,z)’
  Ou on tape :
  (x*y `^`2*z`^`3+x*y*z,x,z$2)’
  Ou on tape :
  diff(x*y `^`2*z`^`3+x*y*z,x,z,z)
  Ou on tape :
  diff(x*y `^`2*z`^`3+x*y*z,x,z$2)
  On obtient :
  6*y`^`2*z
- Soit à calculer la dérivée troisième de :

  1
  x2+2

  On tape :
  (1/(x`^`2+2),x,x,x)’
  Ou on tape :
  (1/(x`^`2+2),x$3)’
  Ou on tape :
  diff((1)/(x`^`2+2),x,x,x)
  Ou on tape :
  diff((1)/(x`^`2+2),x$3)
  On obtient :
  (-24*x`^`3+48*x)/(x`^`8+8*x`^`6+24*x`^`4+32*x`^`2+16)

Remarque
Bien voir la différence entre diff(Xpr,x,y) et diff(Xpr,[x,y]) où Xpr est une expression :
diff(Xpr,x,y) renvoie ∂2(Xpr)/∂ x∂ y et
diff(Xpr,[x,y]) renvoie [∂(Xpr)/∂ x,∂ (Xpr)/∂ y]