obsidian_backup/补课/多体动力学/06_Vector_differentiation.py

33 lines
613 B
Python

import sympy as sm
import sympy.physics.mechanics as me
me.init_vprinting()
theta, beta, alpha, l = me.dynamicsymbols('theta, beta, alpha, l')
A, B, C, D = sm.symbols('A, B, C, D', cls=me.ReferenceFrame)
B.orient_axis(A, theta, A.z)
C.orient_axis(B, beta, -B.x)
D.orient_axis(C, alpha, C.z)
r = l *D.x
print(r)
print(r.express(C))
print(r.express(B))
print(r.express(A))
print(r.dot(C.x).diff(alpha))
print(r.dot(C.y).diff(alpha))
r_alpha_C = r.dot(C.x).diff(alpha) * C.x + r.dot(C.y).diff(alpha) * C.y
print(r_alpha_C)
print(r.diff(alpha, C).express(C))
t = me.dynamicsymbols._t
print(theta.diff(t))