Développement limité : series

### 6.37.3 Développement limité : `series`

`series` permet de faire le développement limité d’une expression au voisinage d’un point à un ordre donné.
Développement limité au voisinage de 0
Pour un développement limité au voisinage de 0 on peut utiliser la commande `series` de 2 façons :
Soit on tape par exemple :
`series("h",8)`
puis
`ln(1+h)`
cela effectura le développement limité à l’odre 8 de `ln(1+x)` au voisinage de 0. On obtient alors : `h-h```^```2/2+h```^```3/3-h```^```4/4+h```^```5/5-h```^```6/6+h```^```7/7-h```^```8/8+O(h```^```9)`
ce qui signifie qu’il existe une constante C tel que :
O(h9)<Ch9.
Ou bien on tape directement :
`series(ln(1+x),x=0,8)` ou `series(ln(1+x),x=0,8)`
et on obtient :
`x-x```^```2/2+x```^```3/3-x```^```4/4+x```^```5/5-x```^```6/6+x```^```7/7-x```^```8/8+x```^```9)*order_size(x)`
ce qui signifie qu’il existe une constante C tel que :
h9*order_size(x))<Cx9.
Développement limité au voisinage de `x=a` `series` peut avoir de un à quatre paramètres si on veut une écriture avec reste et de un à cinq paramètres si on ne veut pas mettre le reste :
l’expression à développer, `x=a` (par défaut `x=0`), l’ordre du développement (par défaut `5`), la direction `-1, 1` (pour un développement unidirectionel) ou `0` (pour un développement bidirectionel) (par défaut `0`).
Si on veut un développement limité sans mettre le reste il faut utiliser comme dernier paramètre l’option `polynom`.
Remarque on peut aussi mettre `x,` `a``,``n` au lieu de `x=``a``,``n`
`series` renvoie un polynôme en `x-a`, plus un reste que `Xcas` écrit :
`(x-a)```^```n*order_size(x-a)`
cela signifie que l’on a un développement limité à l’ordre n−1 (ou à l’ordre p<n). En effet `order_size` désigne une fonction telle que, quelque soit `r` positif :
`x```^```r*order_size(x)` tend vers zéro quand `x` tend vers zéro.
Par exemple, les fonctions constantes, la fonction log (ou ln), sont des fonctions `order_size`.
Attention!!!
L’ordre que l’algorithme utilise pour les développements limités peut être plus petit que celui demandé : l’ordre peut diminuer si il y a des compensations (voir les exemples qui suivent)

- développement au voisinage de `x=0` de sin(x)/x
  On tape :
  `series(sin(x)/x)`
  On obtient :
  `1-x```^```2/6+x```^```4/120+x```^```6*order_size(x)`
  On tape :
  `series(sin(x)/x),polynom)`
  On obtient seulement le polynôme le développement à l’ordre 5 mais sans reste:
  `1-x```^```2/6+x```^```4/120`
- développement au voisinage de `x=0`
  Donner le développement de x3+sin(x)3/x−sin(x) au voisinage de `x=0`
  On tape :
  `series(x```^```3+sin(x)```^```3/(x-sin(x)))`
  On obtient :
  `6+-27/10*x```^```2+x```^```3+711*x```^```4/1400+x```^```6*order_size(x)`
  On tape :
  `series(x```^```3+sin(x)```^```3/(x-sin(x)),x=0,7)`
  On obtient seulement un développement à l’ordre 4 :
  `6+-27/10*x```^```2+x```^```3+711/1400*x```^```4+x```^```5*order_size(x)`
- développement au voisinage de `x=a`
  Exemple :
  Donner un développement limité à l’ordre 4 au voisinage de x=π/6 de cos(2x)2.
  On tape :
  `series(cos(2*x)```^```2,x=pi/6, 4)`
  On obtient :
  `1/4+(-(4*sqrt(3)))/4*(x-pi/6)+(4*3-4)/4*(x-pi/6)```^```2+ 32*sqrt(3)/3/4*(x-pi/6)```^```3+(-16*3+16)/3/4*(x-pi/6)```^```4+ (x-pi/6)```^```5*order_size(x-pi/6)`
- développement au voisinage de `x=+``∞` ou `x=-``∞`
  Exemple 1 :
  Donner un développement de arctan(x) à l’ordre 5 au voisinage de `x=+``∞` en prenant comme infiniment petit h=1/x.
  On tape :
  `series(atan(x),x=+infinity,5)`
  On obtient :
  `pi/2-1/x+1/3*(1/x)```^```3-1/5*(1/x)```^```5+`
  `(1/x)```^```6*order_size(1/x)`
  Donner un développement de arctan(x) à l’ordre 5 au voisinage de `x=-``∞` en prenant comme infiniment petit h=1/x.
  On tape :
  `series(atan(x),x=-infinity,5)`
  On obtient :
  `-pi/2-1/x-1/3*(-1/x)```^```3+1/5*(-1/x)```^```5+`
  `(-1/x)```^```6*order_size(-1/x)`

  Exemple 2 :
  Donner un développement de (2x−1)e1/x−1 à l’ordre 2 au voisinage de `x=+``∞` en prenant comme infiniment petit h=1/x.
  On tape :

  `series((2*x-1)*exp(1/(x-1)),x=+infinity,3)`

  On obtient seulement l’ordre 1 :

  `2*x+1+2/x+(1/x)```^```2*order_size(1/x)`

  On tape pour avoir le développement à l’ordre 2 en 1/x:

  `series((2*x-1)*exp(1/(x-1)),x=+infinity,4)`

  On obtient :

  `2*x+1+2/x+17/6*(1/x)```^```2+(1/x)```^```3*order_size(1/x)`

  Exemple 3 :
  Donner un développement de (2x−1)e1/x−1) à l’ordre 2 au voisinage de `x=-``∞` en prenant comme infiniment petit h=−1/x.
  On tape :

  `series((2*x-1)*exp(1/(x-1)),x=-infinity,4)`

  On obtient :

  `-2*(-x)+1-2*(-1/x)+17/6*(-1/x)```^```2+`
  `(-1/x)```^```3*order_size(-1/x)`
- développement unidirectionnel
  Il faut utiliser un paramètre supplémentaire pour indiquer la direction :
  - `1` pour faire un développement au voisinage de x=a avec x>a,
  - `-1` pour faire un développement au voisinage de x=a avec x<a,
  - `0` pour faire un développement au voisinage de x=a avec x ≠ a.
  Exemple
  Donner un développement de (1+x)1/x/x3 à l’ordre 2, au voisinage de x=0+.
  On tape :
  `series((1+x)```^```(1/x)/x```^```3,x=0,2,1)`
  On obtient :
  `exp(1)/x```^```3+(-(exp(1)))/2/x```^```2+1/x*order_size(x)`