Joh*_*bes 5 vector matrix sympy
我有:
\n\n<class 'sympy.vector.vector.VectorMul'>
;和<class 'sympy.matrices.dense.MutableDenseMatrix'>
我想将矩阵乘以向量以产生向量。
\n\n我可以方便地执行此操作还是需要先进行一些额外的操作?
\n\n作为参考,我试图获取应用于向量的旋转矩阵的符号结果。
\n\n下面也是我处理上述矩阵和向量的一些代码。
\n\nfrom sympy.vector import CoordSys3D\n\n\xcf\x83, \xce\xb8, \xce\xb3, \xce\xbb, a, b, c = symbols('\xcf\x83, \xce\xb8, \xce\xb3, \xce\xbb, a, b, c, a_v, b_v, c_v')\n\xcf\x83 = sin(\xce\xb8)\n\xce\xb3 = cos(\xce\xb8)\n\xce\xbb = 1 - \xce\xb3\n\nN = CoordSys3D('N')\nu = a*N.i + b*N.j + c*N.k # Axis of rotation\n\nR = Matrix([\n [a*a*\xce\xbb + \xce\xb3, a*b*\xce\xbb-c*\xcf\x83, a*c*\xce\xbb+b*\xcf\x83],\n [b*a*\xce\xbb+c*\xcf\x83, b*b*\xce\xbb + \xce\xb3, b*c*\xce\xbb-a*\xcf\x83],\n [c*a*\xce\xbb-b*\xcf\x83, c*b*\xce\xbb+a*\xcf\x83, c*c*\xce\xbb + \xce\xb3],\n])\n\n# Input vector prior to rotation\nv = a_v*N.i + b_v*N.j + c_v*N.k\n\n# How to calculate the post rotation output vector w = Rv?\n
Run Code Online (Sandbox Code Playgroud)\n\n总之,sympy 中是否有用于矩阵乘法向量乘法的内置机制?
\n虽然我没有找到一个函数来完成我想要的事情,但这段代码达到了相同的结果。我将其发布在这里,以防对其他人有用。
w = R * Matrix([v.coeff(N.i), v.coeff(N.j), v.coeff(N.k)])
Run Code Online (Sandbox Code Playgroud)