Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre VIII, section 3.8, exercice 2, page 225.

Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/

Page du Projet Algorithmes | Page de Philippe Dumas | Page Maple de Philippe Dumas

Retour en page principale
Table des matières
Index
Maple V.4 worksheet, bis
Maple V.5 worksheet, bis


1 | 2

1. Les termes de la série croissent puis décroissent. Si nous considérons le rapport r de deux termes consécutifs, il est donc d'abord plus grand que 1, puis plus petit que 1. Nous cherchons l'entier où il vaut approximativement 1. Pour cela nous explicitons r, nous fixons la précision du calcul et nous résolvons asymptotiquement l'équation r=1. Précisément, nous écrivons [Maple Math] et l'équation est sous la forme [Maple Math]. Cependant le premier terme du développement de ce coefficient a est en [Maple Math] et non en [Maple Math]. Suivant la recommandation de la page 207, nous récrivons donc l'équation sous la forme [Maple Math] et nous employons [Maple Math] pour calculer au voisinage de zéro.

> u:=(Pi/2)^(2*n+1)/(2*n+1)!/(4*n+3)*x^(4*n+3):

> r:=simplify(convert(subs(n=n+1,u)/u,GAMMA),GAMMA):

> r:=combine(r,power,symbolic):

> Order:=15:

> s:=series(subs(n=1/z,r/x^4),z);

[Maple Math]
[Maple Math]
[Maple Math]

> da:=subs(t=1/x^2,series(1/solve(series(s^(1/2),z)=t,z),t));

[Maple Math]
[Maple Math]
[Maple Math]

Nous obtenons ainsi un développement asymptotique de l'entier qui fournit le terme maximal en fonction de x. On nous demande la valeur maximale. Il suffit donc de substituer ce développement dans l'expression du terme général et de développer le résultat. Il est plus efficace de substituer le développement de l'entier dans le développement du terme général fourni par la formule de Stirling. Nous commençons par exprimer le terme général à de l'aide de la fonction Gamma et à prendre le logarithme de façon à appliquer la formule de Stirling. En Maple V.3, ceci se fait sans problème.

> lnu:=expand(ln(convert(u,GAMMA)));

[Maple Math]
[Maple Math]

En Maple V.5, la paranoïa usuelle qui fait voir toute expression comme une fonction de variable complexe bloque le développement du logarithme et oblige à employer assume.

> assume(n,posint);
assume(x>0);

> lnu:=expand(ln(convert(u,GAMMA)));

[Maple Math]
[Maple Math]

On peut ensuite calculer le développement asymptotique du logarithme de la valeur maximale.

> lnumax:=subs(n=da,lnu);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> asympt(lnumax,x);

[Maple Math]
[Maple Math]
[Maple Math]

> dalnumax:=map(combine,%,exp);

[Maple Math]
[Maple Math]
[Maple Math]

On passe enfin à la valeur maximale elle-même.

> daumax:=asympt(exp(dalnumax),x);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> daumax:=combine(daumax,ln);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

On peut tenter d'améliorer l'expression. Cela demande beaucoup d'energie pour peu de chose. On note que la valeur maximale est de l'ordre de [Maple Math].

2. Nous cherchons l'indice n du terme de taille epsilon pour epsilon tendant vers 0. Précisément nous voulons un développement asymptotique de cet indice en fonction d'epsilon. Il s'agit donc de chercher le développement asymptotique d'une fonction réciproque. Pour cela nous commencer par chercher un développement du terme d'indice n.

> Order:=3;

[Maple Math]

> u:=(Pi/2)^(2*n+1)/(2*n+1)!/(4*n+3)*x^(4*n+3):
assume(n,posint);
assume(x>0);
lnu:=expand(ln(convert(u,GAMMA)));

[Maple Math]
[Maple Math]

> dalnu:=asympt(lnu,n);

[Maple Math]
[Maple Math]

Cette dernière expression est un développement asymptotique du logarithme du terme général. L'équation qui nous intéresse s'ecrit, à l'aide de ce développement,

[Maple Math].

ou encore (Nous préférons ln(1/epsilon) qui va vers l'infini positif à ln(epsilon) qui va vers l'infini négatif.)

[Maple Math].

Nous prenons le logarithme des deux membres pour récrire le terme dominant n*ln(n) sous une forme plus maniable. Cela donne

[Maple Math]
[Maple Math].

Le terme

[Maple Math]

se développe suivant les puissances de [Maple Math] et [Maple Math] Cependant les termes qui comportent [Maple Math] sont négligeables devant tous les termes qui ne comportent que des puissances de [Maple Math] Pour obtenir un développement asymptotique, il revient donc au même de considérer l'équation simplifiée

[Maple Math].

On notera la similitude du raisonnement avec celui de l'exercice 3, page 74. Nous récrivons l'équation simplifiée

[Maple Math].

Sous cette forme, nous avons une équation de point fixe qui par itération et développement asymptotique va fournir un développement suivant les puissances de ln(ln(1/epsilon)). Précisément, avec les notations [Maple Math], [Maple Math], [Maple Math], [Maple Math], que nous allons employer dans la suite, nous allons obtenir un développement suivant les puissances de ln(ln(1/epsilon)) à coefficients des polynômes en ln(ln(ln(1/epsilon))),

[Maple Math]

Par exponentiation cela fournira pour l'indice n du terme de valeur epsilon un développement de la forme

[Maple Math].

Pour obtenir le développement, il suffit d'expliciter le membre droit de l'équation et d'itérer la transformation correspondante.

> assume(C>0);

> Order:=4:

> equ:=lambda[2]-ln(L[1])-ln(2)-ln(1-C/2/L[1]);

[Maple Math]

> da:=lambda[2]-ln(L[1])-ln(2):
to 4 do
da:=asympt(map(collect,subs(ln(lambda[2])=lambda[3],
asympt(subs(L[1]=da,equ),lambda[2])),
lambda[3]),lambda[2])
od;

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> assume(x>0);

> Cvalue:=combine(-ln(4)+2-2*ln(2)+2*ln(Pi)+4*ln(x),ln);

[Maple Math]

> da:=subs(C=Cvalue,da);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> DA:=asympt(exp(da),lambda[2]);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> DA:=subs(exp(lambda[2])=lambda[1],
exp(-lambda[3]-ln(2))=1/2/lambda[2],DA);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> DA:=lambda[1]/2/lambda[2]*
asympt(DA/(lambda[1]/2/lambda[2]),lambda[2]);

[Maple Math]
[Maple Math]
[Maple Math]

Finalement nous avons obtenu le petit développement

[Maple Math]
[Maple Math].

On voit que l'on retrouve bien le résultat annoncé page 197. En particulier le premier terme du développement est bien indépendant de x.

Retour en page principale