import sympy as sm
import sympy.physics.mechanics as me
v1, v2, v3 = me.dynamicsymbols('v1:4')
v1
me.dynamicsymbols._t
v1.diff(me.dynamicsymbols._t)
N = me.ReferenceFrame('N')
A = me.ReferenceFrame('A')
t = sm.symbols('t')
sm.Function('x')(t)
t = me.dynamicsymbols._t
v = v1*A.x + v2*A.y + v3*A.z
v.dt?
Signature: v.dt(otherframe) Docstring: Returns a Vector which is the time derivative of the self Vector, taken in frame otherframe. Calls the global time_derivative method Parameters ========== otherframe : ReferenceFrame The frame to calculate the time derivative in File: /opt/conda/lib/python3.6/site-packages/sympy/physics/vector/vector.py Type: method
v.dt(A)
a1, a2, a3 = me.dynamicsymbols('a1:4')
N_omega_A = a1*A.x + a2*A.y + a3*A.z
N_omega_A
A.set_ang_vel?
Signature: A.set_ang_vel(otherframe, value) Docstring: Define the angular velocity vector in a ReferenceFrame. Defines the angular velocity of this ReferenceFrame, in another. Angular velocity can be defined with respect to multiple different ReferenceFrames. Care must be taken to not create loops which are inconsistent. Parameters ========== otherframe : ReferenceFrame A ReferenceFrame to define the angular velocity in value : Vector The Vector representing angular velocity Examples ======== >>> from sympy.physics.vector import ReferenceFrame, Vector >>> N = ReferenceFrame('N') >>> A = ReferenceFrame('A') >>> V = 10 * N.x >>> A.set_ang_vel(N, V) >>> A.ang_vel_in(N) 10*N.x File: /opt/conda/lib/python3.6/site-packages/sympy/physics/vector/frame.py Type: method
A.set_ang_vel(N, N_omega_A)
A.ang_vel_in(N)
v.dt(A) + me.cross(N_omega_A, v)
v.dt(N)
N = me.ReferenceFrame('N')
B = me.ReferenceFrame('B')
w1, w2, w3 = me.dynamicsymbols('omega1:4')
w1
I1, I2, I3 = sm.symbols('I1:4')
w = w1*B.x + w2*B.y + w3*B.z
Hc = I1*w1*B.x + I2*w2*B.y + I3*w3*B.z
w
Hc
B.set_ang_vel(N, w)
m1, m2, m3 = me.dynamicsymbols('m1:4')
M = m1*B.x + m2*B.y + m3*B.z
Hc.dt(N)
Hc.dt(B) + me.cross(w, Hc)
M.to_matrix(B)
Hc.dt(N).to_matrix(B)
sm.Eq(M.to_matrix(B), Hc.dt(N).to_matrix(B))
me.init_vprinting()
sm.Eq(M.to_matrix(B), Hc.dt(N).to_matrix(B))