如何使用sympy通过矢量乘法执行矩阵?

时间:2019-02-20 03:00:18

标签: matrix vector sympy

我有:

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

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

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

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

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

from sympy.vector import CoordSys3D

σ, θ, γ, λ, a, b, c = symbols('σ, θ, γ, λ, a, b, c, a_v, b_v, c_v')
σ = sin(θ)
γ = cos(θ)
λ = 1 - γ

N = CoordSys3D('N')
u = a*N.i + b*N.j + c*N.k # Axis of rotation

R = Matrix([
    [a*a*λ + γ, a*b*λ-c*σ, a*c*λ+b*σ],
    [b*a*λ+c*σ, b*b*λ + γ, b*c*λ-a*σ],
    [c*a*λ-b*σ, c*b*λ+a*σ, c*c*λ + γ],
])

# Input vector prior to rotation
v = a_v*N.i + b_v*N.j + c_v*N.k

# How to calculate the post rotation output vector w = Rv?

总而言之,在sympy中是否存在用于通过矢量乘法矩阵的内置机制?

1 个答案:

答案 0 :(得分:0)

尽管我没有找到可以执行我想要的功能的代码,但是此代码获得了相同的结果。我将其张贴在这里,以防其他人使用。

w = R * Matrix([v.coeff(N.i), v.coeff(N.j), v.coeff(N.k)])