Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre IX, section 3.3, exercice 4, 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.3 worksheet
Maple V.4 worksheet
Maple V.5 worksheet


Nous employons conjointement les versions V.3 et V.5 pour mettre en valeur quelques différences.

On peut représenter la suite de fonctions par une procédure. Notez que l'on tient compte du cas formel (#).

> f:=proc(n,x) 
if not type([n,x],[integer,numeric]) then 'f(n,x)' #
elif x<=1/(2*n) then 2*n^2*x
elif x<=1/n then 2*n*(1-n*x)
else 0 fi
end:

Ensuite on trace quelques graphes. La syntaxe peut paraître compliquée. Notons d'abord que la flèche -> permet de définir une procédure et l'emploi de cette procédure dispense d'indiquer le nom de la variable pour spécifier l'intervalle d'intégration.

> plot({seq(subs(n=k,x->f(n,x)),k=1..10)},0..1,color=red);

Ensuite on peut se demander pourquoi on utilise un subs. L'instruction suivante fournit la séquence cherchée sans mystère.

> seq(f(n,x),n=1..2);

[Maple Math]

Cependant elle a, en Maple V.3, un effet de bord. Le nom n est passé du statut de symbole à celui de variable, car il intervient comme compteur dans la boucle sous-jacente au seq. L'emploi du nom k, qui désigne une variable, permet d'éviter ce changement de statut.

> n;

[Maple Math]

En Maple V.5, le problème ne se pose pas (ceci est valable depuis la version V.4).

> f:=proc(n,x) 
if not type([n,x],[integer,numeric]) then 'f(n,x)'
elif x<=1/(2*n) then 2*n^2*x
elif x<=1/n then 2*n*(1-n*x)
else 0 fi
end:

> plot({seq(f(n,x),n=1..10)},x=0..1,color=red);

> n;

[Maple Math]

En Maple V.3, comme en Maple V.5, on pourrait aussi employer piecewise pour tracer les graphes.

> F:=piecewise(x<=1/(2*n),2*n^2*x,x<=1/n,2*n*(1-n*x),0);

[Maple Math]

> plot({seq(F,n=1..10)},x=0..1,color=red);

Bien sûr en V.3, la remarque sur l'emploi du subs est toujours valable.

> F:=piecewise(x<=1/(2*n),2*n^2*x,x<=1/n,2*n*(1-n*x),0);

[Maple Math]

> plot({seq(subs(n=k,F),k=1..10)},x=0..1,color=red);

Pour ce qui est du calcul d'intégrales, la bonne méthode est de dissocier à la main les différents cas.

> ifn:=int(2*n^2*x,x=0..1/(2*n))+int(2*n*(1-n*x),x=1/(2*n)..1/n);

[Maple Math]

Un calcul fondé sur l'emploi d'une expression de type piecewise ou d'une procédure est voué à l'échec parce que le caractère entier de n n'est pas spécifié.

> iFn:=int(F,x=0..1);

[Maple Math]

> int(f(n,x),x=0..1);

[Maple Math]

Pour la même raison, le calcul de l'intégrale de la fonction limite est inaccessible. Cependant il est clair que la fonction limite est la fonction nulle. Comme dans l'exemple traité, la convergence n'est pas uniforme.

Retour en page principale