Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre IX, section 3.3, exercice 2, page 253.

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.3 worksheet
Maple V.4 worksheet
Maple V.5 worksheet


La version V.3 de Maple apparaît parfois comme un eden calculatoire. En ce temps là tout était simple.

> i:=Int(1/(2*x-1)^3/(x*(x-1)^2)^(1/3),x);

[Maple Math]

> F:=value(student[changevar](t=((x-1)/x)^(1/3),i,t));

[Maple Math]
[Maple Math]

> F:=subs(t=((x-1)/x)^(1/3),F);

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

> factor(normal(simplify(diff(F,x),power,symbolic),expanded));

[Maple Math]

Et voilà, c'est fini.

Passons à la version V.5.

> i:=Int(1/(2*x-1)^3/(x*(x-1)^2)^(1/3),x);

[Maple Math]

> F:=value(student[changevar](t=((x-1)/x)^(1/3),i,t));

[Maple Math]

Diantre, ça commence fort. Nous n'avons même pas l'intégrale. Aidons un peu le système. Notez que nous employons l'option symbolic.

> G:=Int(simplify(op(1,F),power,symbolic),op(2,F));

[Maple Math]

> G:=value(G);

[Maple Math]
[Maple Math]

Bon, nous avons franchi le premier obstacle. Nous revenons à la primitive en x et nous la dérivons.

> H:=subs(t=((x-1)/x)^(1/3),G);

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

> diff(H,x);

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

Nous simplifions un peu l'expression de la dérivée de la primitive. Notez à nouveau l'emploi de l'option symbolic. Cet emploi a pour effet de faire sortir un (-1)^(2/3).

> K:=simplify(diff(H,x),power,symbolic);

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

Nous tentons de simplifier les puissances.

> L:=combine(subs(x-1=y^3,x=z^3,K),power,symbolic);

[Maple Math]

Il apparaît que combine ne descend pas récursivement dans les opérandes de l'expression. Nous nous en remettons donc à simplify/power, boîte noire dont nous ne contrôlons pas le comportement. Cependant nous procédons à un changement de variables pour passer à une quantité rationnelle. (Il reste toutefois ce (-1)^(2/3) que nous finissons par jeter.)

> L:=simplify(subs(x-1=y^3,x=z^3,K),power,symbolic);

[Maple Math]

> L:=1/expand(denom(L));

[Maple Math]

> M:=1/z/y^2/normal(denom(L)/z/y^2,expanded);

[Maple Math]

Nous revenons à l'ancienne variable.

> N:=subs(y=(x-1)^(1/3),z=x^(1/3),M);

[Maple Math]

> N:=factor(N);

[Maple Math]

Enfin nous sommes arrivés au but.

La question qui demeure est la suivante : vaut il mieux un système de calcul purement symbolique (dans le style de Maple V.3) ou un système qui interprète les symboles comme des variables complexes (comme le fait souvent Maple V.5) ? Certes l'interprétation évite l'écriture de résultats grossièrement faux (et qui amènent des reproches virulents de la part des utilisateurs). Cependant le calcul formel est avant tout un calcul algébrique et on peut bien imaginer de substituer autre chose que des nombres complexes dans une identité algébrique. En dernier ressort, c'est l'utilisateur et lui seul qui sait comment interpréter les formules qu'il obtient.

Retour en page principale