Maple est capable de calculer des primitives de fonctions usuelles lorsque celles-ci peuvent s'exprimer avec des fonctions usuelles. L'algorithme implémenté est complet au sens où, pour les fonctions ne dépendant pas d'un paramètre
* soit il existe une primitive pouvant s'exprimer avec des fonctions usuelles et Maple la trouve
* soit il n'existe pas de primitive pouvant s'exprimer avec des fonctions usuelles.
Le sens à donner à fonctions usuelles est assez large puisque Maple y inclut
des fonctions classiques comme le logarithme intégral, le
sinus intégral, la fonction d'erreur, et ainsi de suite.
> int(1/(x
3+1),x);
2 1/2
1/2
1/3 ln(x + 1) - 1/6 ln(x - x + 1) + 1/3 3 arctan(1/3 (2
x - 1) 3 )
> int(sin(x)/x
sin(x)
- ------ + Ci(x)
x
> int(E
1/2
1/2 Pi erf(x)
Pour les intégrales dépendant d'un paramètre,
Maple fait de son mieux, mais il faut parfois le guider pour
lui indiquer dans quel domaine se trouve le paramètre
> int(1/(1+a*cos(x)),x);
1/2
(- 1 + a) tan(1/2 x)
arctanh(-----------------------)
1/2
(1 + a)
2 --------------------------------
1/2 1/2
(1 + a) (- 1 + a)
Ce n'est probablement pas la réponse que vous
auriez trouvée ''à la main`` car vous auriez implicitement
supposé que |a|<1, contrairement à Maple. Par contre
> int(1/(1+a
a tan(1/2 x)
arctan(------------)
2 1/2
(2 + a )
2 --------------------
2 1/2
a (2 + a )