Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre IX, section 3.3, exercice 10, page 254.

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


L'exercice fait référence à l'exemple 29 de la page 248.

Nous nous appuyons sur les remarques suivantes. D'abord le maximum est une opération associative qui permet d'écrire pour des variables réelles [Maple Math]. Ceci permet de donner une expression légérement différente et plus appropriée de l'expression à considérer

[Maple Math].

Ensuite le maximum s'exprime à l'aide de la fonction d'Heaviside, qui est mieux prise en considération par le système que le maximum. On a par exemple

[Maple Math].

La difficulté vient de ce que le maximum est itéré. Nous ne pouvons pas espérer intégrer une composée de fonction d'Heaviside. Par contre il n'y pas de problème si la fonction d'Heaviside n'apparaît qu'à un niveau. Toute la difficulté de l'exercice est donc de contourner cette composition.

Enfin la variable x joue un rôle particulier alors que les deux variables y et z jouent des rôles symétriques. Nous allons donc d'abord intégrer par rapport à x pour évaluer l'intégrale triple.

Pour alléger l'écriture nous définissons une procédure M qui exprime le maximum à l'aide de la fonction d'Heaviside.

> M:=proc(u,v)
u*Heaviside(u-v)+v*Heaviside(v-u)
end:

D'après l'expression F vue plus haut, il faut déterminer laquelle des deux quantités x*max(y,1-y) et (1-x)*max(z,1-z) donne la plus grande valeur. Pour cela nous allons tester le signe de leur différence.

> test:=x*M(y,1-y)-(1-x)*M(z,1-z);

[Maple Math]
[Maple Math]

Il est clair que les places de y et z par rapport à 1/2 sont déterminantes. Nous introduisons donc quatre cas, numérotés de manière naturelle. Les instructions qui suivent ne sont pas tout à fait satisfaisantes, d'autant que Heaviside ne se comporte pas de la même manière en V.4 et en V.5. En Maple V.5, Heaviside(2*x) est récrit Heaviside(x), ce qui n'est pas le cas en Maple V.4.

> ycase0:={Heaviside(y-1/2)=0,Heaviside(1/2-y)=1}:
ycase1:={Heaviside(y-1/2)=1,Heaviside(1/2-y)=0}:

> zcase0:={Heaviside(z-1/2)=0,Heaviside(1/2-z)=1}:
zcase1:={Heaviside(z-1/2)=1,Heaviside(1/2-z)=0}:

Ensuite nous regardons ce que devient la fonction test dans chacun des quatre cas.

> printlevel:=2:
for yi in {0,1} do for zi in {0,1} do
test.yi.zi:=collect(subs(ycase.yi,zcase.zi,test),x,factor)
od od;
printlevel:=1:

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Dans chaque cas, nous avons une expression de la forme (u+v)*x-u avec u et v entre 0 et 1. Du coup la quantité est négative pour x entre 0 et u/(u+v) et positive de u/(u+v) à 1. Pour calculer l'intégrale sur chacun des petits carrés qui correspondent à chacun des quatre cas, nous déterminons donc la valeur critique de x, puis nous intégrons successivement en x, puis en y et en z. À la fin nous additionnons les quatre intégrales partielles pour obtenir l'intégrale globale. Comme prévu, la fonction d'Heaviside ne pose pas de problème pour l'intégration.

> for yi in {0,1} do for zi in {0,1} do
x.yi.zi:=solve(test.yi.zi,x)
od od;

> for yi in {0,1} do for zi in {0,1} do
Ix.yi.zi:=normal(int(1-x,x=0..x.yi.zi))*M(z,1-z)
+normal(int(x,x=x.yi.zi..1))*M(y,1-y);
Ixy.yi.zi:=int(Ix.yi.zi,y=yi/2..(yi+1)/2);
Ixyz.yi.zi:=int(Ixy.yi.zi,z=zi/2..(zi+1)/2)
od od:

> Ixyz:=add(add(Ixyz.yi.zi,zi={0,1}),yi={0,1});

[Maple Math]
[Maple Math]

> Ixyz:=collect(Ixyz,{ln(2),ln(3)});

[Maple Math]

Nous obtenons bien le résultat annoncé.

Retour en page principale