Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre II, section 3.4, exercice 5, page 74.

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


Comme dans l'exercice précédent, il suffit de recopier le code fourni dans le texte. Cependant le code de la page 72 comporte une petite erreur que nous corrigeons à la ligne marquée d'un dièse. Signalons que l'aide sur l'opérateur de concaténation qu'est le point s'obtient par ?. jusqu'en V.3 et par ?dot pour V.3, V.4, V.5.

> lndiff:=proc(f,x)
local i,fct;
if not has(f,x) then 0
elif f=x then 1/x
elif type(f,`+`) then diff(f,x)/f
elif type(f,`*`) then
add(lndiff(op(i,f),x),i=1..nops(f))
elif type(f,`^`) then
if not has(op(2,f),x) then op(2,f)*lndiff(op(1,f),x)
else lndiff(exp(op(2,f)*ln(op(1,f))),x)
fi
elif type(f,function) then
fct:=`lndiff/`.(op(0,f)); #
if not type(fct,procedure) then traperror(readlib(fct)) fi;
if not type(fct,procedure) then
ERROR("not yet implemented",args)
else fct(op(f),x)
fi
else ERROR("arguments do not match the definition",args)
fi
end:

Ensuite nous étendons lndiff aux fonctions de notre choix. Par exemple la première procédure ci-dessous donne la dérivée logarithmique de f=exp(g).

> `lndiff/exp`:=proc(g,x)
diff(g,x)
end:
`lndiff/ln`:=proc(g,x)
diff(g,x)/g/ln(g)
end:
`lndiff/sin`:=proc(g,x)
diff(g,x)*cot(g)
end:
`lndiff/cos`:=proc(g,x)
diff(g,x)*tan(g)
end:

>  f:=(x^3+1)/(x-1);

[Maple Math]

> lndiff(f,x);

[Maple Math]

> f:=exp(x^2+x);

[Maple Math]

> lndiff(f,x);

[Maple Math]

> f:=ln((x^3+1)/(x-1));

[Maple Math]

> lndiff(f,x);

[Maple Math]

> f:=tan(x);

[Maple Math]

> lndiff(f,x);

Error, (in lndiff) not yet implemented, tan(x), x

Retour en page principale