简体   繁体   English

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

[英]How to check if an expression is a sympy vector

How can I tell if a sympy expression is a vector?如何判断 sympy 表达式是否为向量? See the following example:请参见以下示例:

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

After v was factored, none of its factors have a sympy.vector... type.v被分解后,它的任何一个因子都没有sympy.vector...类型。 How can I tell which one of its factors is a vector?我怎么知道它的哪个因子是向量? Is there a test for that?有测试吗?

SymPy has a variety of ways to search/parse expressions. SymPy 有多种搜索/解析表达式的方法。 Something that may work for you is the as_independent method:可能对您有用的是as_independent方法:

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

You Vector-dependent part of vf will be the rightmost element. vf的向量相关部分将是最右边的元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM