Построение уравнений динамики диска с помощью Mathematica
Представленные на сайте программы выполняются с помощью системы Mathematica 7. Текст программ можно скопировать с экрана и вставить в файл с расширением nb.
Введение вспомогательных функций
Для построения уравнений движения диска введём пополняющие систему компьютерной алгебры Mathematica 7 функции скалярного и векторного произведения векторов, дифференцирования скаляра по вектору, вектора по вектору и т. д., в которых векторы рассматриваются как матрицы-столбцы 3×1. Рассмотрим также несколько примеров применения этих функций.
При задании функций будем использовать [11] представление произвольного кососимметричного оператора ΩX, определённого в ориентированном евклидовом пространстве размерности 3, в виде оператора векторного умножения на фиксированный вектор q :
ΩX q = [Ω, q] для всех q ∈R3, (8)
Ω = Ω1 e1 + Ω2 e2 + Ω3 e3,
q = q1 e1 + q2 e2 + q3 e3,
e1, e2, e3 - базис евклидового пространства.
Согласно (8) вектору угловой скорости диска Ω = ( ΩOX*, ΩOY*, ΩOZ*)T, заданному в проекциях на оси неподвижной системы координат OX*Y*Z*, соответствует кососимметрический оператор B' B-1, вектору угловой скорости диска Ω = ( ΩCx, ΩCy, ΩCz)T, заданному в проекциях на оси подвижной системы координат Сxyz, соответствует кососимметрический оператор B-1 B', где B - матрица направляющих косинусов осей Сx, Cy, Cz относительно осей OX*, OY*, OZ*
( ΩOX*, ΩOY*, ΩOZ*)T = B ( ΩCx, ΩCy, ΩCz)T (9)
Функции дифференцирования скаляра T и вектора X по вектору q
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]}];
Пример №1
Найти производную от скаляра T = 2 x2 - 3 x y + 4 z4 и вектора X = (x2 + 4 y z,- z2 - 2 x y)T по вектору q = (x,y,z)T
Решение
T = 2 x ^2 - 3 x y + 4 z^ 4 ;
q = { { x } , { y } , { z } } ;
X = { { 5 x^ 2 + 4 y z } , { - z^ 2 - 2 x y } } ;
DS [ T , q ] // TraditionalForm
DST [ T , q ] // TraditionalForm
DV [ X , q ] // TraditionalForm
T =.
q =.
X =.
Результат
Функция, определяющая вектор Ω в (8) по кососимметричной матрице Ωx и обратная ей функция, определяющая матрицу Ωx по вектору Ω
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"]]
Пример №2
Найти вектор Ω, соответствующий в смысле (8) кососимметричной матрице
Решение
ReverseXX[{{0,-z^2,-y},{z^2,0,-x},{y,x,0}}]//TraditionalForm
Результат
Функции скалярного и векторного произведения векторов
XS[r_,p_]:=(Transpose[r].p)[[1,1]];
XV[r_,p_]:=XX[r].p;
Пример №3
Найти скалярное и векторное произведение векторов (2, -1, 3)T, (-4, 1, 0)T
Решение
s1={{2},{-1},{3}};
s2={{-4},{1},{0}};
XS[s1,s2]
XV[s1,s2]//TraditionalForm
Результат
-9
Функции, определяющие по матрице направляющих косинусов В в (9) вектор Ω в проекциях на оси подвижной Сxyz и неподвижной OX*Y*Z* систем координат
OmegaMov[B_] := ReverseXX[Transpose[B].\!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]B\)];
OmegaFix[B_] := ReverseXX[\!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]B\).Transpose[B]];
Пример №4
Найти зависимость от углов Эйлера и производных по времени от углов Эйлера проекций на оси системы координат Cxyz (5) и оси системы координат OX*Y*Z* (3) вектора угловой скорости тела Ω.
Решение
B = RotationMatrix [ ψ [ t ] , { 0 , 0 , 1 } ] . RotationMatrix [ θ [ t ] , { 1 , 0 , 0 } ] . RotationMatrix [ φ [ t ] ,
{ 0 , 0 , 1 } ] ;
OmegaMov [ B ] // Simplify // TraditionalForm
OmegaFix [ B ] // Simplify // TraditionalForm
B =.
Результат