Python symphy将符号矩阵替换为符号
-或- 但这两种方法都不管用。当我评估以下内容时:Python symphy将符号矩阵替换为符号,python,matrix,sympy,lambdify,Python,Matrix,Sympy,Lambdify,-或- 但这两种方法都不管用。当我评估以下内容时: q_0_dot_str = '.5 * dot(q_vec, omega_vec)' q_0_dot_symp = sym.sympify(q_0_dot_str) q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3]), \ (omega_vec, sym.Matrix([w1, w2, w3]).T))
q_0_dot_str = '.5 * dot(q_vec, omega_vec)'
q_0_dot_symp = sym.sympify(q_0_dot_str)
q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3]), \
(omega_vec, sym.Matrix([w1, w2, w3]).T))])
q_0_dot_symp = q_0_dot_symp.xreplace([{q_vec: sym.Matrix([q1, q2, q3])},\
{omega_vec: sym.Matrix([w1, w2, w3]).T}])
q_0_dot_fcn = lambdify((q1, q2, q3, w1, w2, w3), q_0_dot_symp, 'numpy')
我得到:
q_0_dot_fcn(1,2,3,4,5,6)
而不是将我为符号矩阵中的符号变量提供的值进行细分(然后得到实际的m=数值结果)。在subs调用中有一个输入错误。应该是
0.5*omega_vec*q_vec
而不是
q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3])), \
(omega_vec, sym.Matrix([w1, w2, w3]).T)])
(注意括号的位置)
完成此修复后,它在SymPy 1.0中对我有效
q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3]), \
(omega_vec, sym.Matrix([w1, w2, w3]).T))])
你在潜艇呼叫中有一个输入错误。应该是
0.5*omega_vec*q_vec
而不是
q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3])), \
(omega_vec, sym.Matrix([w1, w2, w3]).T)])
(注意括号的位置)
完成此修复后,它在SymPy 1.0中对我有效
q_0_dot_symp = q_0_dot_symp.subs([(q_vec, sym.Matrix([q1, q2, q3]), \
(omega_vec, sym.Matrix([w1, w2, w3]).T))])
本期完成后将对您有用本期完成后将对您有用