> 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):