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

`series` permet de faire le développement limité d’une expression au voisinage d’un point à un ordre donné.
`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)`
- Développement en séries formelles. Utilisez la commande `series("h",10)` pour définir h comme variable de série formelle et 10 comme ordre par défaut. Ensuite par exemple `a:=ln(1+h); diff(a); 1/(1+h); a*a; a@a`. Les coefficients peuvent appartenir à un corps fini (attention toutefois à la caractéristique pour les fonction transcendantes), on peut aussi avoir des séries de Laurent.