嗨,
我已经定义了多个带有时间相关角的sympy矩阵。
import sympy as sym
R1xI = sym.Matrix([ [1,0,0],
[0,sym.cos(sym.Function('phiSA')(t)),-sym.sin(sym.Function('phiSA')(t))],
[0,sym.sin(sym.Function('phiSA')(t)),sym.cos(sym.Function('phiSA')(t))]]);
R1yI = sym.Matrix([ [sym.cos(sym.Function('phiSE')(t)),0,sym.sin(sym.Function('phiSE')(t))],
[0,1,0],
[-sym.sin(sym.Function('phiSE')(t)),0,sym.cos(sym.Function('phiSE')(t))]]);
R1zI = sym.Matrix([ [sym.cos(sym.Function('phiSR')(t)),-sym.sin(sym.Function('phiSR')(t)),0],
[sym.sin(sym.Function('phiSR')(t)),sym.cos(sym.Function('phiSR')(t)),0],
[0,0,1]]);
# Combine the 3 rotations
R1I=np.asmatrix(np.dot(np.dot(R1xI,R1yI),R1zI));
我之所以使用sympy,是因为该矩阵需要多个计算步骤,因此我希望以代数方式执行(乘法,时间导数,因此角度必须取决于时间)。
现在我完成了代数计算,并希望为该角度插入实数值。
有没有可能使用它们来插入它们,或者有比使用sym.Function更好的方法以便根据变量执行派生?
谢谢您的建议
也许保留在SymPy中,而不是转换为numpy:R1I = R1xI.dot(R1yI).dot(R1zI)
,然后使用R1I.subs(old, new)
,其中old
是您要替换的内容,new
是您希望它具有的值。