Calcul formel : Mode d'emploi - Exemples en Maple
Claude Gomez, Bruno Salvy, Paul Zimmermann
Masson, 1995
Chapitre IX, section 3.3, exercice 8, page 254.
Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/
|
|
L'intégrale proposée se calcule sans problème à partir de la version V.4.
> J:=Int(1/(sqrt(1+x)+sqrt(1-x)+2),x=-1..1);
> value(J);
Par contre en Maple V.3, le calcul provoque une erreur.
> int(1/(sqrt(1+x)+sqrt(1-x)+2),x=-1..1);
Error, (in int/elliptic)
invalid cancellation of FAIL or infinity
Comme nous ne sommes pas chiens, nous essayons tout de même de répondre à la question. Le point crucial est l'existence d'un paramétrage rationnel pour une certaine courbe algébrique. La fonction définie par l'expression suivante est algébrique. Nous le vérifions.
> f:=sqrt(1+x)+sqrt(1-x);
> expand(f^2);
> expand((f^2-2)^2);
Nous avons trouvé un polynôme qui s'annule sur la fonction.
> P:=y^4-4*y^2+4*x^2;
> simplify(subs(y=f,P),radical);
La courbe algébrique à laquelle nous faisions allusion est la quartique (courbe du quatrième degré) d'équation P(x,y)=0. La voie naturelle pour calculer l'intégrale proposée est de trouver un paramétrage rationnel de cette courbe (son existence n'est pas garantie, mais si on pose l'exercice c'est bien parce que ce paramétrage existe). Il existe des méthodes de recherche de tels paramétrages, mais nous allons nous contenter de notre intuition.
> K:=student[changevar](sqrt((1+x)/(1-x))=t,J,t);
> L:=simplify(K,radical,symbolic);
Nous avons une intégrale qui comporte encore un radical, mais la courbe sous-jacente est une hyperbole d'équation y^2=1+t^2. Nous savons en trouver un paramétrage rationnel. Il suffit de couper l'hyperbole par une parallèle à l'une des asymptotes. Nous employons par exemple la famille de droites d'équation y=t+u (les coordonnées sont t et y, le paramètre est u).
> solve((t+u)^2=1+t^2,t);
> M:=student[changevar](t=-1/2*(-1+u^2)/u,L);
> N:=simplify(M,radical,symbolic);
Nous sommes parvenus à une intégrale de fonction rationnelle. Du point de vue théorique, la question est terminée. On pourrait poursuivre en envisageant la décomposition en éléments simples.
> r:=op(1,N);
> s:=convert(r,fullparfrac,u);
Précisons qu'à ce stade, Maple V.3 fournit la valeur de l'intégrale.
> v:=value(N);
> radnormal(v,rationalized);
Revenons sur le paramétrage de la quartique dont nous avons parlé plus haut. Nous l'obtenons en mettant bout à bout les deux changements de variables que nous avons utilisés.
> solve(sqrt((1+x)/(1-x))=t,x);
> X:=normal(subs(t=1/2*(-1+u^2)/u,%));
> Y:=simplify(subs(x=X,f),radical,symbolic);
Vérifions que ce paramétrage est correct.
> normal(subs(x=X,y=Y,P));
Un autre changement de variables, d'aspect peut-être plus simple, permettrait d'arriver au résultat, mais il aurait été dommage de ne pas voir un peu de pays.
> Int(1/(sqrt(1+x)+sqrt(1-x)+2),x=-1..1);
student[changevar](u=sqrt(1+x),%,u);
> value(%);
> expand(readlib(rationalize)(%));