In[]:=
ϕ[x_]:=
#1
-#2
#2
#1
&
1-
2
x
1+
2
x
,
2x
1+
2
x
​​ℒ[n_,a_,b_]:=Module​​{q,M,V,θ,Θ,z},​​q=Table[Slot[i],{i,n}];​​

q
=Table[Slot[n+i],{i,n}];​​Θ=Table[
θ
k
,{k,n}];​​z={Cos@#,Sin@#}&/@Θ;​​M=Accumulate[MapThread[Dot,{ϕ/@q,z}]];​​V=Accumulate[MapThread[Dot,{

q
ϕ'/@q,z}]];​​Construct​​Function,​​Simplify​​Plus@@
1
2
MapThread[Dot,{V,V}]​​-Plus@@({0,1}.M)​​/.​​Cos[
θ
(k:_)
]:>a[[k]],​​Sin[
θ
(k:_)
]:>b[[k]]​​​​​​​​​​EulerLagrange[n_,a_,b_]:=Table[​​Dt[​​(Derivative@@Table[KroneckerDelta[n+k,j],{j,2n}])[ℒ[n,a,b]]@@Table[Slot[i][t],{i,2n}],​​t,​​Constants->Join[Table[{a[[k]],b[[k]]},{k,n}]]​​]==​​(Derivative@@Table[KroneckerDelta[k,j],{j,2n}])[ℒ[n,a,b]]​​@@Table[Slot[i][t],{i,2n}]/.Slot[i:_]/;i>n:>Slot[i-n]',​​{k,n}​​]
In[]:=
Module[​​{n=3,tmax=60,q},​​Block[​​{s=ParametricNDSolve[​​Join[​​Construct[​​Function,​​EulerLagrange[n,Table[
a
k
,{k,n}],Table[
b
k
,{k,n}]]​​]@@Table[
q
k
,{k,n}],​​Table[
q
k
[0]==0,{k,n}],​​Table[
q
k
'[0]==If[k==3,.4,0],{k,n}]​​],​​Table[
q
k
,{k,n}],​​{t,tmax},​​Join[Table[
a
k
,{k,n}],Table[
b
k
,{k,n}]],​​Method->{"EquationSimplification"->"Residual"}​​],​​params=Join[ConstantArray[0,n],ConstantArray[-1,n]]​​},​​Plot[​​Evaluate[#[t]&/@(Table[
q
k
@@params,{k,n}]/.s)],​​{t,0,tmax}​​]​​]​​]
Out[]=
10
20
30
40
50
60
-0.4
-0.2
0.2
0.4