a field-theory motivated approach to computer algebra


Generic variation algorithm for functional derivatives.
Generic variation command. Takes a rule or a set of rules according to which the terms in a sum should be varied. In every term, apply the rule once to every factor.
ex:= A B + A C; vary(_, $A -> \epsilon D, B -> \epsilon C, C -> \epsilon A - \epsilon B$ );
\(\displaystyle{}A B% +A C\)
\(\displaystyle{}\epsilon D B% +A \epsilon C% +\epsilon D C% +A \left(\epsilon A% -\epsilon B\right)\)
It also works when acting on powers, in which case it will use the product rule to expand them.
ex:= A**3; vary(_, $A -> \delta{A}$);
\(\displaystyle{}3A^{2} \delta\left(A\right)\)
This algorithm is thus mostly intended for variational derivatives.
\partial{#}::PartialDerivative; ex:= -\int{\partial_{\mu}{\phi} \partial^{\mu}{\phi} + m**2 \phi**2}{x};
\(\displaystyle{}\text{Attached property PartialDerivative to }\partial{\#}.\)
\(\displaystyle{}-\int{}\left(\partial_{\mu}{\phi} \partial^{\mu}{\phi}% +m^{2} \phi^{2}\right)\, {\rm d}x\)
vary(ex, $\phi -> \delta{\phi}$);
\(\displaystyle{}-\int{}\left(\partial_{\mu}{\delta\left(\phi\right)} \partial^{\mu}{\phi}% +\partial_{\mu}{\phi} \partial^{\mu}{\delta\left(\phi\right)}% +2m^{2} \phi \delta\left(\phi\right)\right)\, {\rm d}x\)
integrate_by_parts(ex, $\delta{\phi}$);
\(\displaystyle{}-\int{}\left(-\delta\left(\phi\right) \partial_{\mu}\,^{\mu}{\phi}% -\partial^{\mu}\,_{\mu}{\phi} \delta\left(\phi\right)% +2m^{2} \phi \delta\left(\phi\right)\right)\, {\rm d}x\)
canonicalise(_) sort_product(_);
\(\displaystyle{}-\int{}\left(-2\delta\left(\phi\right) \partial^{\mu}\,_{\mu}{\phi}% +2\delta\left(\phi\right) \phi m^{2}\right)\, {\rm d}x\)
factor_out(_, $\delta{\phi}$);
\(\displaystyle{}-\int{}\delta\left(\phi\right) \left(-2\partial^{\mu}\,_{\mu}{\phi}% +2\phi m^{2}\right)\, {\rm d}x\)
Copyright © 2001-2023 Kasper Peeters