How to define more complicated differential expressions in Sage?
Dear Community,
i have a very hard time doing something pretty straight foreward in Sage. In mechanics, there is a Lagrange-formalism that yields the equation of motion of a system of n degrees of freedom in the following way:
0=ddt(∂L∂x′i(t))−∂L∂xi(t)
where L is the Lagrange function
L=EKin(x′1(t),x′2(t)...x′n(t);x1(t),x2(t)...xn(t))−EPot(x1(t),x2(t),...,xn(t))
is the kinetic energy minus the potential energy. The kinetic energy depends on the speeds of the coordinates x′i(t), while the potential energy depends on the coordinates xi(t).
In Mathematica, the hack is
L = Ekin[x'[t]] - Epot[x[t]];
eq = 0 == D[D[L, x'[t]], t] - D[L, x[t]];
which gives
0 == Epot'[x[t]] + Ekin''[x'[t]] x''[t]
I can easily specify something for EKin and EPot, solve the latter equation for x″, and give it as a right handside to some time integration scheme.
How can this be done in Sage? Assume you have complicated expressions for EPot and EKin which you do not want to differentiate by hand.
var('L,x,t')
x = function('x',t)
L = function('L',x,t)
allows for
diff(L,t)
but not
diff(L,x)
Thanks already!