integrate_by_parts
Integrate by parts away from the indicated expression
Integrate by parts. This requires an expression with an
object carrying a Derivative
property. The algorithm should be given
an expression that any derivatives should be integrated away from. An example
makes this more clear:\partial{#}::PartialDerivative;
ex:= \int{ \partial_{m}{ A } B C D }{x};
\(\displaystyle{}\text{Attached property PartialDerivative to }\partial{\#}.\)
\(\displaystyle{}\int{}\partial_{m}{A} B C D\, {\rm d}x\)
integrate_by_parts(_, $A$);
\(\displaystyle{}-\int{}A \partial_{m}\left(B C D\right)\, {\rm d}x\)
product_rule(_);
\(\displaystyle{}-\int{}A \left(\partial_{m}{B} C D+B \partial_{m}{C} D+B C \partial_{m}{D}\right)\, {\rm d}x\)
distribute(_);
\(\displaystyle{}-\int{}\left(A \partial_{m}{B} C D+A B \partial_{m}{C} D+A B C \partial_{m}{D}\right)\, {\rm d}x\)
Note that
integrate_by_parts
only does the formal manipulation of moving the
derivative around. If you want to discard derivatives of objects which are constant,
you need to use the Depends
property to indicate on which coordinates or derivatives
objects depend, and the unwrap
algorithm to eliminate derivatives of constants,
as in the following lines.{B,D}::Depends(\partial);
\(\displaystyle{}\text{Attached property Depends to }\left(B, \mmlToken{mo}[linebreak="goodbreak"]{} D\right).\)
unwrap(ex);
\(\displaystyle{}-\int{}\left(A \partial_{m}{B} C D+A B C \partial_{m}{D}\right)\, {\rm d}x\)