Intégration par parties

Jean-Michel Sarlat (
jm-sarlat@melusine.eu.org) - 13 avril 2003
1Premiers exemples
2À la recherche d'une relation de récurrence


L'intégration par parties est une technique bien utile pour calculer des primitives. Maxima ne propose pas de procédure spécifique pour l'invoquer, il est bien sûr possible de la mettre en scène en créant des macros adaptées.


ipp_a(u,v,x) := block([U],
                 U:integrate(u,x),
                 'integrate(u*v,x) = U*v -'integrate(U*diff(v,x),x));

Remarque -- La commande integrate(expression,variable) permet de calculer une primitive de l'expression selon la variable. Lorqu'elle est précédée d'une apostrophe ' elle est rendue inerte dans le sens où elle n'est pas évaluée à priori, cela permet de disposer de son affichage en tant qu'intégrale.

1 - Premiers exemples

maxima >>
(C2) load("ipp.mc")$
(C3) load("integration.mc")$
(C4) primitive(asin(x)^2,x);

tex
(C5) ipp_a(1,asin(x)^2,x);

tex
(C6) ipp_a(x/sqrt(1-x^2),asin(x),x);

tex

L'intégrale qui aurait dû apparaître dans le second membre n'est pas au rendez-vous! C'est normal la variable ne figure plus dans l'intégrande (il vaut 1), l'expression sur laquellle porte l'intégration est constante vis à vis de la variable d'intégration, le calcul est effectif. De la même façon maxima effectuera la factorisation par une constante (si cette constante factorise l'intégrande) dans la forme inerte de l'intégrale.

(C7) ipp_a(1,log(t)^2,t);

tex
(C8) ipp_a(1,log(t),t);

tex

2 - À la recherche d'une relation de récurrence

maxima >>
(C2) load("ipp.mc")$
(C3) f[n](x) := 1/(x^2+1)^n;

tex
(C4) I[n](x) := integrate(f[n](x),x);

tex
(C5) A:ipp_a(1,f[n](x),x);

tex
(C6) block(B:'(f[n](x)-f[n+1](x)),B = ev(B,radcan,nouns));

tex
(C7) C:'(I[n](x)-I[n+1](x)) = integrate(rhs(%),x);

tex
(C8) subst(lhs(%),rhs(%),subst('(I[n](x)),I[n](x),A));

tex
(C9) solve(%,'(I[n+1](x)));

tex
(C10) distrib(part(%,1));

tex

Voici la relation de récurrence recherchée. On peut donc, de proche en proche, calculer les primitives I[n](x) ... ce que maxima sait faire de toute façon.

(C11) load("integration.mc")$
(C12) primitive(f[2](x),x);

tex
(C13) primitive(f[4](x),x);

tex
(C14) primitive(f[5](x),x);

tex
Autres réalisations de ce document : index.pdf, index.ps.
Une archive des sources : index-sources.tgz
Source index.txt mouliné par petitParseur(Z+B) le dimanche 13 avril 2003.