### 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)