Построение уравнений динамики диска с помощью 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 =.

Результат