Программа составления уравнений движения

Составим уравнения связей (4) и уравнения Чаплыгина (6) с помощью Mathematica

Текст программы

(* Определение вспомогательных функций *)

DS[T_, q_] := {Table[D[T, q[[i, 1]]], {i, Length[q]}]};

DST[T_, q_] := Transpose[DS[T, q]];

DV[X_, q_] := Table[D[X[[i, 1]], q[[j, 1]]], {i, Length[X]}, {j, Length[q]}];

XX[r_]:={{0,-r[[3,1]],r[[2,1]]},{r[[3,1]],0,-r[[1,1]]},{-r[[2,1]],r[[1,1]],0}};

ASymmQ[A_]:=Simplify[(A+Transpose[A])]==DiagonalMatrix[{0,0,0}];

ReverseXX[A_]:=If[ASymmQ[A],{{A[[3,2]]},{A[[1,3]]},{A[[2,1]]}},Print["Matrix is not ScrewMatrix"]];

XS[r_,p_]:=(Transpose[r].p)[[1,1]];

XV[r_,p_]:=XX[r].p;

OmegaMov[B_] := ReverseXX[Transpose[B].\!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]B\)];

OmegaFix[B_] := ReverseXX[\!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]B\).Transpose[B]];

(* Задание векторов обобщённых координат и обобщённых скоростей q1 , q2 , q1', q2', координаты z центра масс диска *)

q1 = { {ψ [ t ]} , {θ [ t ]} , {φ [ t ]} } ;

q2 = { {x [ t ] },{ y [ t ]} } ;

qv1 = D [ q1 , t ] ;

qv2 = D [ q2 , t ] ;

z = ρ Sin [ θ [ t ] ] ;

(* Введение радиус-вектора и скорости центра масс диска С в неподвижной системе координат OX*Y*Z* *)

rC = {{x[t]}, {y[t]}, {z}};

vC = D[rC, t];

(* Построение матрицы направляющих косинусов осей подвижной системы координат Cxyz относительно осей неподвижной системы координат OX*Y*Z* *)

B = RotationMatrix[ψ[t], {0, 0, 1}].RotationMatrix[θ [ t ], {1, 0, 0}].RotationMatrix[φ[t], {0, 0, 1}];

(*Определение вектора угловой скорости диска Ω в проекциях на оси неподвижной системы координат OX*Y*Z* *)

Ωf = OmegaFix[B] // Simplify;

(* Нахождение вектора угловой скорости диска Ω в проекциях на оси подвижной системы координат Сxyz (формулы Эйлера ) *)

Ωm = OmegaMov[B] // Simplify;

(* Построение вектора CP в проекциях на оси промежуточной системы координат Сx1, Cy1, Cz (Сх1 направлена по горизонтальному диаметру диска, Cz - перпендикулярно плоскости диска) *)

CP = { {0} , - { ρ} ,{0} } ;

(* Определение вектора CP в проекциях на оси неподвижной системы координат OX*Y*Z*)

CPf =RotationMatrix [ ψ [ t ] , { 0 , 0 , 1 } ] . RotationMatrix [ θ [ t ] , { 1 , 0 , 0 } ] . CP ;

(*Нахождение скорости точки P контакта диска с горизонтальной поверхностью (Vp = Vc + [Ω, CP]) с помощью теоремы о распределении скоростей в твердом теле *)

vP = D[rC, t] + XV[Ωf, CPf] // Simplify;

(* Введение уравнений неголономных связей, выражающих условия равенства нулю скорости точки P (отсутствие проскальзывания диска в точке Р ) *)

eq1 = vP[[1, 1]] == 0;

eq2 = vP[[2, 1]] == 0;

(* Разрешение уравнения неголономных связей относительно проекций скоростей центра масс диска *)

sub1 = Solve[{eq1, eq2}, Flatten[qv2]][[1]];

(* Нахождение матрицы A в матричной записи уравнений неголономных связей в виде qv2 = A.qv1*)

A = DV[qv2 /. sub1, qv1] ;

(* Задание тензора инерции диска относительно центра масс С как бесконечно тонкого однородного круглого диска *)

IC = m ρ^ 2 / 4 DiagonalMatrix[{1, 1, 2}];

(* Определение кинетической энергии диска по теореме Кенига как суммы кинетической энергии центра масс диска 1/2 m v2C и кинетической энергии диска в его движении относительно центра масс С *)

T = 1/2 m XS[vC, vC] + 1/2 XS[ Ωm, IC.Ωm] // Simplify ;

(* Введение силовой функции силы тяжести диска *)

U = - m g z ;

(* Нахождение приведённой кинетической энергии диска *)

Θ = T /. sub1 // Simplify ;

(* Определение вектора обобщённого импульса *)

p2 = DST[T, qv2] /. sub1 // Simplify;

(* Построение левых частей уравнений Чаплыгина d(∂Θ/∂q'1 )T/dt - (∂Θ/∂q1)T - ( ∂U/∂q1 )T - [ d AT/dt - ( ∂( Aq'1 )/∂q1 )T ] p2 = 0, *)

EqChaplygin = D[DST[Θ, qv1], t] - DST[Θ, q1] - DST[U, q1] - Transpose[D[A, t] - DV[A.qv1, q1]].p2 // Simplify;

(* Представление полученных уравнений Чаплыгина в традиционной форме записи *)

EqChaplygin == {{0}, {0}, {0}}// TraditionalForm

Результат исполнения программы , уравнения Чаплыгина (6)

В обычной математической нотации полученные уравнения после тождественных преобразований примут вид

( 7 + 5 cos 2θ ) ψ''+ 12 cos θ φ'' - 4 sin θ θ' (φ' + 5 cos θ ψ' ) = 0,

5 θ '' + 5 cos θ sin θ ψ' 2 + 6 sin θ φ' ψ' + 4 g cos θ = 0, (10)

3 (cos θ ψ''+ φ'' ) - 5 sin θ θ' ψ' = 0