Calcul formel : Mode d'emploi - Exemples en Maple
Claude Gomez, Bruno Salvy, Paul Zimmermann
Masson, 1995
Chapitre VIII, section 1.4, exercice 3, page 203.
Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/
|
|
Notons d'abord que la suite double considérée est sommable. En effet l'inégalité élémentaire (m+n)/2>=(mn)^(1/2) donne comme suite double majorante 1/2/(mn)^(3/2). Du coup une somme partielle sur n'importe quelle partie finie est majorée par dzêta(3/2)^2/2.
Comme demandé, nous décomposons le terme général de la somme en éléments simples.
> t:=1/(m+n+2)/m/n:
> t_m:=convert(t,parfrac,m);
On voit effectivement la mise en facteur annoncée.
> convert(n*(n+2)*t,parfrac,m);
> sum(%,m=1..infinity);
La sommation fait apparaître les nombres harmoniques H_n=1+1/2+1/3+...+1/n. Ils sont un peu cachés par le fait que le logiciel fait systématiquement appel à la fonction Psi (la dérivée logarithmique de la fonction Gamma) pour les représenter. On s'en convainc en lisant la page d'aide qui leur est consacrée.
> ?harmonic
Ceci dit, il suffit d'en appeler à sum pour arriver au même résultat.
> s_m:=sum(t,m=1..infinity);
La somme cherchée est donc la suivante.
> s:=Sum(s_m,n=1..infinity);
La locution obscure annuler deux à deux les contributions signifie que l'on réorganise la somme, ou encore que l'on procède à une transformation d'Abel (ou sommation par parties). La sommation par parties est similaire à l'intégration par parties, mais on y utilise l'opérateur de différence Delta au lieu de la dérivation. Cet opérateur est défini par Delta z(n)=z(n+1)-z(n). Nous l'appliquons à la suite des nombres harmoniques apparue précédemmment.
> u:=Psi(n+3)+gamma;
> Deltau:=normal(subs(n=n+1,u)-u);
> Deltau:=combine(Deltau,Psi);
Dans l'intégration par parties, on effectue une primitivation. Il est de même ici, mais il s'agit d'une primitivation discrète qui nous est fournie par sum.
> Deltav:=1/n/(n+2);
> v:=sum(Deltav,n);
La dérivée d'une primitive est la fonction de départ. La différence d'une primitive discrète est la suite. On peut le vérifier sur cet exemple.
> normal(subs(n=n+1,v)-v);
Maintenant nous appliquons la formule de sommation par parties. Nous calculons d'abord le terme entre crochets.
> bracket:=limit(u*v,n=infinity)-subs(n=1,u*v);
> bracket:=combine(bracket,Psi);
Ensuite nous exprimons la nouvelle somme qui apparaît, puis nous l'évaluons.
> otherSum:=Sum(Deltau*v,n=1..infinity);
> othersum:=value(otherSum);
Finalement nous obtenons le résultat demandé.
> s:=bracket-othersum;
On aurait pu aussi évaluer la somme en sommant d'abord à m+n constant.