Python在矩阵内为sympy.Function插入值

问题描述 投票:0回答:1

嗨,

我已经定义了多个带有时间相关角的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更好的方法以便根据变量执行派生?

谢谢您的建议

python-3.x matrix sympy derivative
1个回答
0
投票

也许保留在SymPy中,而不是转换为numpy:R1I = R1xI.dot(R1yI).dot(R1zI),然后使用R1I.subs(old, new),其中old是您要替换的内容,new是您希望它具有的值。

© www.soinside.com 2019 - 2024. All rights reserved.