>
restart:
>
with(plots):
>
lagrange := proc (n, q, r, L) local i, uzm_q, uzm_r, rel_r_q, Lq,
Lr, Lrt; global row; uzm_q := seq(q[i] = q[i](t), i = 1 .. n); uzm_r
:= seq(r[i] = r[i](t), i = 1 .. n); for i to n do Lq[i] := subs([uzm_q,
uzm_r], diff(L, q[i])); Lr[i] := subs([uzm_q, uzm_r], diff(L, r[i]))
end do; for i to n do Lrt[i] := diff(Lr[i], t) end do; rel_r_q :=
seq(r[i](t) = diff(q[i](t), t), i = 1 .. n); for i to n do row[i] :=
subs(rel_r_q, Lrt[i]-Lq[i] = 0) end do; seq(row[i], i = 1 .. n) end
proc:
>
>
#Zad1
>
E := (1/2)*m*v[1]^2:
>
U := (1/2)*k*x^2:
>
L := E-U:
>
lagrange(1, x, v, L):
>
>
#Zad2
>
restart:
>
E := (1/2)*m*l^2*omega[1]^2:
>
U := -m*g*l*cos(phi[1]):
>
L := E-U:
>
lagrange(1, phi, omega, L):
>
>
#Zad3
>
restart:
>
E := (1/2)*m*(v[1]^2+v[2]^2):
>
U := (1/2)*k*(sqrt(x[1]^2+x[2]^2)-l)^2+m*g*x[2]:
>
L := E-U:
>
lagrange(2, v, x, L):
>
>
#Zad4
>
restart:
>
E :=
(1/2)*m[1]*v[1]^2+(1/2)*m[2]*(v[1]^2+2*v[1]*v[2]*l*cos(x[2])+l^2*
v[2]^2):
>
U := (1/2)*k*x[1]^2-m[2]*g*l*cos(x[2]):
>
m[1] := 1: m[2] := .1: g := 9.81: l := .1: k := 100:
>
wp := x[1](0) = .5*l, (D(x[1]))(0) = 0, x[2](0) = (1/3)*Pi,
(D(x[2]))(0) = 0:
>
L := E-U:
>
lagrange(2, x, v, L):
>
dsolve({wp, row[1], row[2]}, {x[1](t), x[2](t)}, numeric):