如何检查表达式是否为 sympy 向量

How to check if an expression is a sympy vector

如何判断 sympy 表达式是否为向量?请参阅以下示例:

from sympy import *
from sympy.vector import *
N = CoordSys3D('N')
x = symbols('x')
v = x * N.i + x**2 * N.j + x**3 * N.k
type(v)
# sympy.vector.vector.VectorAdd

vf=factor(v)
vfs = vf.as_ordered_factors()
vfs
#[x, N.i + N.j*x + N.k*x**2]

type(vfs[1])
# sympy.core.add.Add

v 因式分解后,none 个因式具有 sympy.vector... 类型。我怎么知道它的哪个因子是向量?有测试吗?

SymPy 有多种方式来 search/parse 表达式。 as_independent 方法可能对您有用:

>>> vf.as_independent(Vector)
(x, N.i + N.j*x + N.k*x**2)

vf 的 Vector-dependent 部分将是最右边的元素。