### 6.14.21 Substituer une valeur à une variable : subst substituer

subst a deux ou trois arguments : une expression dépendant d’un paramètre et une égalité (paramètre=valeur de substitution) ou une expression dependant d’un paramètre , le paramètre et la valeur de substitution.

- subst effectue la substitution demandée dans l’expression à condition que le paramètre ne soit pas affecté car subst évalue tout d’abord l’expression et remplace donc le paramètre (si il a été affecté) par sa valeur sans tenir compte de la valeur de substitution donné par le deuxième paramètre.
  On tape :
  subst(a`^`2+1,a=2)
  ou :
  subst(a`^`2+1,a,2)
  On obtient si la variable a n’est pas affectée :
  5
  Si la variable a est affectée, il faut taper auparavant purge(a) pour obtenir 5.
  Lorsque l’on veut substituer plusieurs variables, pour eviter de faire plusieurs substitutions à la suite, on met comme deuxième argument la liste de ces variables et comme troisième argument la liste de les valeurs de substitution (ou encore on met comme deuxième argument la liste formée des noms de variables = valeur de substitution).
  On tape :
  subst(a`^`2+b,[a,b],[2,1])
  Ou on tape :
  subst(a`^`2+b,[a=2,b=1])
  On obtient si les variables a et b ne sont pas affectées :
  2`^`2+1
- subst permet aussi d’effectuer des changements de variables dans une intégrale mais subst ne gère les changements de variable dans une integrale que si le changement de variable est de la forme x=f(u). Dans ce cas il faut quoter l’intégrale pour que celle-ci ne soit pas calculée si on utilise integrate ou bien il faut utiliser la commande Int. Dans les deux cas il faut spécifier le nom de la variable d’intégration même si celle-ci est x.
  On tape :
  subst(’integrate(sin(x`^`2)*x,x,0,pi/2)’,x=sqrt(t))
  Ou on tape :
  subst(Int(sin(x`^`2)*x,x,0,pi/2),x=sqrt(t))
  On obtient
  integrate(sin(t)*sqrt(t)*1/2*1/t*sqrt(t),t,0,(pi/2)`^`2)
  On tape :
  subst(’integrate(sin(x`^`2)*x,x)’,x=sqrt(t))
  Ou on tape :
  subst(Int(sin(x`^`2)*x,x),x=sqrt(t))
  On obtient
  integrate(sin(t)*sqrt(t)*1/2*1/t*sqrt(t),t)