Processing math: 38%

First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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(Lxi(t))Lxi(t)

where L is the Lagrange function

L=EKin(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 xi(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 E_{Pot} and E_{Kin} which you do not want to differentiate by hand.

Thanks already!

click to hide/show revision 2
No.2 Revision

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=\frac{d}{dt}\left(\frac{\partial L}{\partial x'_i(t)}\right) - \frac{\partial L}{\partial x_i(t)}

where L is the Lagrange function

$$ L=E_{Kin} (x'_{1}(t),x'_2(t)...x'_n(t) (x'_{1}(t),x'_2(t)...x'_n(t); x_1(t),x_2(t)...x_n(t) ) - E _{Pot}(x_1(t),x_2(t),...,x_n(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 x_i(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 E_{Kin} and E_{Pot}, 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 E_{Pot} and E_{Kin} 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!