Chapitre 6 : Suites et séries 

1. Suites du type  

1.1 Composition d'opérateurs 

> restart:f:=x->x+1/x;
 

proc (x) options operator, arrow; x+1/x end proc 

L'opérateur  @@  représente l'application répétée de la composition d'opérateurs. 

 

> f@@n;
 

 

> u:=n->(f@@n)(5.);
 

proc (n) options operator, arrow; (`@@`(f, n))(5.) end proc 

> u(6);(f@@6)(5);evalf(%);
 

6.099353937 

5519766539886130575883647631116463281665994701/904975608308766682421341716652985404052232130 

6.099353938 

> (f@@7)(5.);(f@@7)(5);
 

6.263305728 

31286803506480328622084074629103503534972622195545235386293830684045146492480086139164416301/4995254082155827270938663257401055860016769691322158321840249923138749414162549055801943130
31286803506480328622084074629103503534972622195545235386293830684045146492480086139164416301/4995254082155827270938663257401055860016769691322158321840249923138749414162549055801943130
31286803506480328622084074629103503534972622195545235386293830684045146492480086139164416301/4995254082155827270938663257401055860016769691322158321840249923138749414162549055801943130
31286803506480328622084074629103503534972622195545235386293830684045146492480086139164416301/4995254082155827270938663257401055860016769691322158321840249923138749414162549055801943130
 

> u(999),u(1000),u(1001);
 

45.00230349, 45.02452457, 45.04673469 

Donc il semble que la suite diverge 

1.2 Divergence 

On veut montrer qu'effectivement la suite précédente est divergente : 

> limit((f@@n)(5.),n=infinity);
 

(`@@`(f, n))(5.) 

Donc la commande  limit ne donne rien. Il faut donc utiliser une autre méthode : 

> g:=x->(f(x))^2-x^2;
 

proc (x) options operator, arrow; f(x)^2-x^2 end proc 

> expand(g(x));
 

2+1/x^2 

> sum(g(u(k)),k=0..m);
 

2.*m+2.+(sum(1/(`@@`(f, k))(5)^2, k = 0 .. m)) 

et donc ?. Donc la suite diverge.  

1.3 points fixes 

Étudier la suite définie par :  

> f:=x->(1+x^2)/2;
 

proc (x) options operator, arrow; 1/2+1/2*x^2 end proc 

Un point fixe doit vérifier f(x)=x : la commande fsolve donne ici une racine double : 

 

> fsolve(f(x)=x,x);
 

1.000000000, 1. 

> factor(f(x)-x);
 

1/2*(x-1)^2 

Ce carré montre que la suite est toujours croissante 

> factor(f(x)-1);
 

1/2*(x-1)*(x+1) 

Donc la suite converge pour  

1.4 Représentation graphique 

> a:=1.75:M := NULL:for k to 5 do M := M,[a,a],[a,f(a)]:a := f(a): od: M;
 

[1.75, 1.75], [1.75, 2.031250000], [2.031250000, 2.031250000], [2.031250000, 2.562988281], [2.562988281, 2.562988281], [2.562988281, 3.784454464], [3.784454464, 3.784454464], [3.784454464, 7.661047795...
[1.75, 1.75], [1.75, 2.031250000], [2.031250000, 2.031250000], [2.031250000, 2.562988281], [2.562988281, 2.562988281], [2.562988281, 3.784454464], [3.784454464, 3.784454464], [3.784454464, 7.661047795...
[1.75, 1.75], [1.75, 2.031250000], [2.031250000, 2.031250000], [2.031250000, 2.562988281], [2.562988281, 2.562988281], [2.562988281, 3.784454464], [3.784454464, 3.784454464], [3.784454464, 7.661047795...
[1.75, 1.75], [1.75, 2.031250000], [2.031250000, 2.031250000], [2.031250000, 2.562988281], [2.562988281, 2.562988281], [2.562988281, 3.784454464], [3.784454464, 3.784454464], [3.784454464, 7.661047795...
[1.75, 1.75], [1.75, 2.031250000], [2.031250000, 2.031250000], [2.031250000, 2.562988281], [2.562988281, 2.562988281], [2.562988281, 3.784454464], [3.784454464, 3.784454464], [3.784454464, 7.661047795...
 

> plot([f,[M],x->x],0..5,0..5,color=black);
 

Plot 

> a:=-0.25:M := NULL: for k to 5 do M := M,[a,a],[a,f(a)]:a := f(a): od: M;
 

[-.25, -.25], [-.25, .5312500000], [.5312500000, .5312500000], [.5312500000, .6411132812], [.6411132812, .6411132812], [.6411132812, .7055131196], [.7055131196, .7055131196], [.7055131196, .7488743810...
[-.25, -.25], [-.25, .5312500000], [.5312500000, .5312500000], [.5312500000, .6411132812], [.6411132812, .6411132812], [.6411132812, .7055131196], [.7055131196, .7055131196], [.7055131196, .7488743810...
[-.25, -.25], [-.25, .5312500000], [.5312500000, .5312500000], [.5312500000, .6411132812], [.6411132812, .6411132812], [.6411132812, .7055131196], [.7055131196, .7055131196], [.7055131196, .7488743810...
[-.25, -.25], [-.25, .5312500000], [.5312500000, .5312500000], [.5312500000, .6411132812], [.6411132812, .6411132812], [.6411132812, .7055131196], [.7055131196, .7055131196], [.7055131196, .7488743810...
[-.25, -.25], [-.25, .5312500000], [.5312500000, .5312500000], [.5312500000, .6411132812], [.6411132812, .6411132812], [.6411132812, .7055131196], [.7055131196, .7055131196], [.7055131196, .7488743810...
 

> plot([f,[M],x->x],-1/3..1,-1/3..1,color=black);
 

Plot 

1.5 Étude analogue pour la suite  

> f:=x->exp(-x)/x;
 

proc (x) options operator, arrow; exp(-x)/x end proc 

Point fixe : 

> alpha:=fsolve(f(x)=x,x);
 

.7034674225 

La dérivée de f est obtenue par l'opérateur D: cette dérivée est toujours négative si x>0 : 

> D(f);
 

proc (x) options operator, arrow; -exp(-x)/x-exp(-x)/x^2 end proc 

Par le théorème des accroissements finis, on a : f(x)-f(alpha) = (x-alpha)D(f)(u), u étant un réel compris entre x et alpha. Ainsi,  f(x)-f(alpha) est toujours de signe opposé à  x-alpha. Et donc la suite saute alternativement de part et d'autre de alpha d'où le bel escargot suivant: 

 

> a:=0.6:M := NULL: for k to 5 do M := M,[a,a],[a,f(a)]:a := f(a): od: M:
plot([f,[M],x->x],0..3,0..3,color=black);
 

Plot 

2. Suites du type  

2.1 Suite de Fibonacci :   

> a:=1:b:=1:for k to 10 do c:=a+b:print(c):a:=b:b:=c:od:
 

2 

3 

5 

8 

13 

21 

34 

55 

89 

144 

2.2 Fonctions récursives 

Il est possible en Maple, comme en beaucoup d'autres langages (sauf en Fortran), de définir des fonctions récursives, c'est à dire des fonctions qui s'appellent elles-mêmes. Ici, par exemple, pour Fibonacci :  

 

> fib:=n-> if n<=1 then n else fib(n-1)+fib(n-2);fi;
 

proc (n) options operator, arrow; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc 

> fib(11),fib(12);
 

89, 144 

La fonction trace montre le déroulement du calcul : 

> trace(fib):fib(4);untrace(fib);
 

{--> enter fib, args = 4
{--> enter fib, args = 3
{--> enter fib, args = 2
{--> enter fib, args = 1
 

 

<-- exit fib (now in fib) = 1}
{--> enter fib, args = 0
 

 

<-- exit fib (now in fib) = 0} 

 

<-- exit fib (now in fib) = 1}
{--> enter fib, args = 1
 

 

<-- exit fib (now in fib) = 1} 

 

<-- exit fib (now in fib) = 2}
{--> enter fib, args = 2
{--> enter fib, args = 1
 

 

<-- exit fib (now in fib) = 1}
{--> enter fib, args = 0
 

 

<-- exit fib (now in fib) = 0} 

 

<-- exit fib (now in fib) = 1} 

 

<-- exit fib (now at top level) = 3} 

 

 

Il y a eu 9 appels à la fonction fib. De façon générale, on montre qu'il y a 2 fib(n+1)-1 appels. Si on regarde attentivement le schéma ci-dessus, on voit qu'il y a plusieurs fois appel à fib(0),   fib(1) et fib(2) ; pour éviter ces répétitions, on utilisera comme ci-dessous, l'option remember. Il n'y a plus que 5 appels ! 

> fib:=proc(n) option remember: if n<=1 then n else fib(n-1)+fib(n-2);fi;end;
 

proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
proc (n) option remember; if n <= 1 then n else fib(n-1)+fib(n-2) end if end proc
 

2.3 Solution d'équation de récurrence avec rsolve 

Le terme général de la suite est obtenu à l'aide de la commande de solution d'équation de récurrence rsolve : 

> restart:lapin:={f(n)=f(n-1)+f(n-2),f(1..2)=1};
 

{f(n) = f(n-1)+f(n-2), f(1 .. 2) = 1} 

> sol:=rsolve(lapin,f);g:=unapply(factor(sol),n);
 

-1/5*5^(1/2)*(1/2-1/2*5^(1/2))^n+1/5*5^(1/2)*(1/2+1/2*5^(1/2))^n 

proc (n) options operator, arrow; -1/5*5^(1/2)*((1/2-1/2*5^(1/2))^n-(1/2+1/2*5^(1/2))^n) end proc 

La commande evala donne une évaluation algébrique dans le champ algébrique le plus petit possible : 

> evala(g(11)),evala(g(12));
 

89, 144 

2.4 La commande fibonacci 

> combinat[fibonacci](11),combinat[fibonacci](12);
 

89, 144 

La commande fibonacci de la bibliothèque combinat  marche aussi pour des nombres négatifs et donne de plus les polynômes de Fibonacci. On peut obtenir le listing de cette fonction (comme 95% des fonctions de Maple) avec la variable  verboseproc mise à 2 : 

> interface(verboseproc=2);print(combinat[fibonacci]):
 

1 

proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
proc (n, x) local i, b, p, f1, f2, s1, s2, s3, r; option `Copyright (c) 1990 by the University of Waterloo. All rights reserved.`; if type([args], '[integer]') then if n = 0 then return 0 end if; if n...
 

2.5 Série Génératrice 

Les valeurs de , pour n grand, s'obtiennent  à l'aide de la série génératrice définie par v := proc (z) options operator, arrow; sum(u[n]*z^n, n = 0 .. infinity) end proc.  La commande  ztrans  de Maple donne la transformée Z  de , c'est à dire , qui est toujours une fraction rationnelle dans le cas de récurrence linéaire à coefficients constants. Pour les nombres de Fibonacci, les commandes ci-dessous calculent successivement   avec les conditions initiales, puis . 

 

> restart: rel := ztrans(u(n+2)=u(n+1)+u(n),n,z);
 

z^2*ztrans(u(n), n, z)-u(0)*z^2-u(1)*z = z*ztrans(u(n), n, z)-u(0)*z+ztrans(u(n), n, z)
z^2*ztrans(u(n), n, z)-u(0)*z^2-u(1)*z = z*ztrans(u(n), n, z)-u(0)*z+ztrans(u(n), n, z)
 

> v := solve( rel, ztrans(u(n),n,z));
 

z*(u(0)*z+u(1)-u(0))/(z^2-z-1) 

> v := subs({u(0)=0,u(1)=1},v);
 

z/(z^2-z-1) 

> v := normal(subs(z=1/z,v));
 

-z/(-1+z+z^2) 

> solve(denom(v),z);
 

-1/2+1/2*5^(1/2), -1/2-1/2*5^(1/2) 

> d:=factor(denom(v),sqrt(5));
 

1/4*(2*z+1-5^(1/2))*(2*z+1+5^(1/2)) 

> v:=convert(-z/d,parfrac,z);
 

-1/5*(-1+5^(1/2))*5^(1/2)/(2*z+1-5^(1/2))-1/5*(1+5^(1/2))*5^(1/2)/(2*z+1+5^(1/2)) 

Ci-dessous, la plus petite racine en valeur absolue sera appelée a (ici a est l'inverse du nombre d'or) et on calculera le coefficient   qui lui est relatif. En développant en puissance de z le terme 1/(1-z/a), on obtiendra une approximation de et en particulier   sera approximé par a/ 

 

> alpha:=-1/2+1/2*sqrt(5);
 

-1/2+1/2*5^(1/2) 

> principal:=op(2,v);
a:=subs(z=0,principal);
 

-1/5*(1+5^(1/2))*5^(1/2)/(2*z+1+5^(1/2)) 

-1/5*5^(1/2) 

On doit remarquer que les coefficients en z du développement de Taylor ci-dessous donnent bien les nombres de Fibonacci, même pour des valeurs de n petites (n=9, 10, 11) : 

 

> evalf(taylor(principal,z,12));
 

series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
series(-.4472135954+.2763932022*z-.1708203933*z^2+.1055728090*z^3-0.6524758426e-1*z^4+0.4032522477e-1*z^5-0.2492235953e-1*z^6+0.1540286526e-1*z^7-0.9519494257e-2*z^8+0.5883371009e-2*z^9-0.3636123251e-...
 

> evalf(a/alpha^9),combinat[fibonacci](9); evalf(a/alpha^10),combinat[fibonacci](10);   evalf(a/alpha^11),combinat[fibonacci](11);
 

-33.99411700, 34 

-55.00363678, 55 

-88.99775392, 89 

 

3. Développement asymptotique du reste d'une série 

3.1 Détermination numérique de α et ß 

Un développement asymptotique est un développement du type Pour m assez grand les termes correctifs sont de plus en plus petits. On cherche tout d'abord à déterminer par tatonnements a et ß : 

 

> restart: f:=n->sum(1/k^2,k=1..n);
 

proc (n) options operator, arrow; sum(1/k^2, k = 1 .. n) end proc 

> for p to 5 do m:=10^p:r1:=evalf((f(infinity)-f(m))*m):print(m,r1):od:
 

10, .95166337 

100, .9950168 

1000, .9995001667 

10000, .9999500017 

100000, .9999950000 

Donc α = 1 . 

> f(infinity);
 

1/6*Pi^2 

> for p to 5 do m:=10^p:r2:=evalf((Pi^2/6-f(m)-1/m)*m^2):print(m,r2):od:
 

10, -.4833663 

100, -.49832 

1000, -.4998333 

10000, -.499983 

100000, -.50000 

Donc α = 1 et ß = -0.5 

3.2 Détermination analytique de α et ß 

> m:='m':1/k^2-z*(1/(k-1)-1/k);factor(1/k^2-z*(1/(k-1)-1/k));
 

1/k^2-z*(1/(k-1)-1/k) 

-(-k+1+z*k)/(k^2*(k-1)) 

Pour avoir un reste en 1/,  il faut que z = 1, c'est à dire α = 1. 

 

> sum(z/(k*(k-1)),k=m+1..infinity);
 

z/m 

> sum(zz/(k*(k-1)*(k-2)),k=m+1..infinity);
 

1/2*zz/((m-1)*m) 

Donc le terme en 1/ est -1/2. 

3.3 Détermination numérique des termes jusqu'au 7ème ordre 

> Digits:=20:for p to 5 do m:=10^p:print(m,evalf((Pi^2/6-f(m)-1/m+1/(2*m^2))*m^3)) od:
 

10, .1663356816857461 

100, .1666633335714 

1000, .16666663333336 

10000, .166666666333 

100000, .1666666667 

Donc γ = 1/6. 

> for p to 5 do m:=10^p:print(m,evalf((Pi^2/6-f(m)-1/m+1/(2*m^2)-1/(6*m^3))*m^4)):od:
 

10, -0.3309849809205e-2 

100, -0.33330952e-3 

1000, -0.3333331e-4 

10000, -0.334e-5 

100000, 0. 

Donc le terme en est égal à 0. 

> Digits:=50:
for p to 5 do m:=10^p:print(m,evalf((Pi^2/6-f(m)-1/m+1/(2*m^2)-1/(6*m^3))*m^5)):od:
 

10, -0.3309849809205444656597586107392265023537693e-1 

100, -0.33330952714209982009652441310384654911e-1 

1000, -0.3333330952384285706709982021195355355e-1 

10000, -0.333333330952380985714284956709982e-1 

100000, -0.33333333330952380952714285715e-1 

Donc le terme en est égal à 1/30. 

> for p to 5 do m:=10^p:print(m,evalf((Pi^2/6-f(m)-1/m+1/(2*m^2)-1/(6*m^3)+1/(30*m^5))*m^6)):od:
 

10, 0.23483524127888676735747225941068309795641e-2 

100, 0.2380619123351323680892022948678422e-3 

1000, 0.2380949047626623351312137977979e-4 

10000, 0.2380952347619048376623352e-5 

100000, 0.2380952380619047619e-6 

Donc le terme en est égal à 0. 

> for p to 5 do m:=10^p:print(m,evalf((Pi^2/6-f(m)-1/m+1/(2*m^2)-1/(6*m^3)+1/(30*m^5))*m^7)):od:
 

10, 0.23483524127888676735747225941068309795641e-1 

100, 0.2380619123351323680892022948678422e-1 

1000, 0.2380949047626623351312137977979e-1 

10000, 0.2380952347619048376623352e-1 

100000, 0.2380952380619047619e-1 

En remarquant que le coefficient entier doit être 42.
En fait, la fonction asympt donne directement tous les résultats précédents !!!
 

> m:='m':asympt(f(infinity)-f(m),m,8);
 

1/m-1/2/m^2+1/6/m^3-1/30/m^5+1/42/m^7+O(1/m^8) 

4. Sommes partielles de séries numériques simples 

: factor(sum(i,i=1..n)); 

1/2*n*(n+1) 

: factor(sum(i^2,i=1..n)); 

1/6*n*(n+1)*(2*n+1) 

: factor(sum(i^3,i=1..n)); 

1/4*n^2*(n+1)^2 

: factor(sum(3*i^2-3*i+1,i=1..n)); 

n^3 

On cherche à déterminer le polynôme P(n) tel que :     

> factor(sum(2*i - 1, i=1..n));
 

n^2 

> expand(sum(4*i^3 - 6*i^2 + 1, i=1..n));
 

n^4-2*n^2 

> expand(sum(4*i^3 - 6*i^2 + 4*i - 1, i=1..n));
 

n^4 

> expand(sum(5*i^4 - 10*i^3 + 10*i^2 - 5*i + 1, i=1..n));
 

n^5 

>