M:entetemax: titre="Intégration par parties" taille="1.3" SH:rm -f *.mc SH:rm -f *.png FICHIER:ipppro.mc::n: /* Macros de présentation de l'intégration par parties */ /* Jean-Michel Sarlat - avril 2003 */ /* http://melusine.eu.org/syracuse/maxima/ */ § %P{L'§iintégration par parties§ est une technique bien utile pour calculer des primitives. §gMaxima§ 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.} FICHIER:ipp_a::n: ipp_a(u,v,x) := block([U], U:integrate(u,x), 'integrate(u*v,x) = U*v -'integrate(U*diff(v,x),x)); § SH:cat ipppro.mc ipp_a > ipp.mc SH:cp ipp.mc ../../input/ipp.mc M:macro: m="ipp_a" %P{§gRemarque§ -- La commande §vintegrate§(§iexpression§,§ivariable§) permet de calculer une primitive de l'§iexpression§ selon la §ivariable§. Lorqu'elle est précédée d'une apostrophe §v'§ 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.} %S{Premiers exemples} FICHIER:A.txt::n: >load("ipp.mc")$ >load("integration.mc")$ >primitive(asin(x)^2,x); >ipp_a(1,asin(x)^2,x); >ipp_a(x/sqrt(1-x^2),asin(x),x); %P{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 §v1§), l'§iexpression§ sur laquellle porte l'intégration est constante vis à vis de la variable d'intégration, le calcul est §ieffectif§. De la même façon §gmaxima§ effectuera la factorisation par une constante (si cette constante factorise l'intégrande) dans la forme inerte de l'intégrale.} >ipp_a(1,log(t)^2,t); >ipp_a(1,log(t),t); § M:seq2fabA: f="A" %S{À la recherche d'une relation de récurrence} FICHIER:ipp::n: ipp(u,v,x) := block([U], U:integrate(u,x), U*v - integrate(U*diff(v,x),x)); § SH:cat ipp >> ipp.mc SH:cp ipp.mc ../../input/ipp.mc =M:macro: m="ipp" FICHIER:B.txt::n: >load("ipp.mc")$ >f[n](x) := 1/(x^2+1)^n;def >I[n](x) := integrate(f[n](x),x);def >A:ipp_a(1,f[n](x),x); >block(B:'(f[n](x)-f[n+1](x)),B = ev(B,radcan,nouns)); >C:'(I[n](x)-I[n+1](x)) = integrate(rhs(%),x); >subst(lhs(%),rhs(%),subst('(I[n](x)),I[n](x),A)); >solve(%,'(I[n+1](x))); >distrib(part(%,1)); %P{Voici la relation de récurrence recherchée. On peut donc, de proche en proche, calculer les primitives §vI[n](x)§ ... ce que §gmaxima§ sait faire de toute façon.} >load("integration.mc")$ >primitive(f[2](x),x); >primitive(f[4](x),x); >primitive(f[5](x),x); § M:seq2fabA: f="B" FICHIER:integration.mc:*:: FICHIER:ipp.mc:*:: %RM{*.tmp *.log *.aux *.dvi *.tex}