如何使用 sympy 执行向量乘法矩阵?

Joh*_*bes 5 vector matrix sympy

我有:

\n\n
    \n
  • 类型向量<class 'sympy.vector.vector.VectorMul'>;和
  • \n
  • 类型矩阵<class 'sympy.matrices.dense.MutableDenseMatrix'>
  • \n
\n\n

我想将矩阵乘以向量以产生向量。

\n\n

我可以方便地执行此操作还是需要先进行一些额外的操作?

\n\n

作为参考,我试图获取应用于向量的旋转矩阵的符号结果。

\n\n

下面也是我处理上述矩阵和向量的一些代码。

\n\n
from 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

Joh*_*bes 4

虽然我没有找到一个函数来完成我想要的事情,但这段代码达到了相同的结果。我将其发布在这里,以防对其他人有用。

w = R * Matrix([v.coeff(N.i), v.coeff(N.j), v.coeff(N.k)])
Run Code Online (Sandbox Code Playgroud)