在sympy中计算向量的x分量

时间:2013-07-16 23:13:54

标签: python sympy

我确信这是一个非常基本的问题,但我用Google搜索并没有找到它。假设我有一个同情的载体

z = 3*x + 4*y

如何计算向量的x分量(即3)? z / x没有给它(仍然是y部分),z [x]或z.x也没有。当然有办法做到这一点,对吗?

2 个答案:

答案 0 :(得分:2)

是否如此简单:

>>> from sympy.abc import x, y
>>> z = 3*x + 4*y
>>> z.coeff(x)
3

答案 1 :(得分:1)

我认为将此表达式称为向量有点不正确。实际上,如果您认为xy是一些基本向量的假设,它将在您的脑海中 。但是,该库不会提供任何类似矢量的功能,因为它不知道您希望将其视为矢量。

对于包含所有优秀辅助方法的向量,您可以使用sympy的diffgeom子模块,该子模块提供具有多个坐标系的预定义R^2R^3空间。

但是,对于您的情况,模式匹配似乎是一个更自然的选择。所有模式匹配都是像Mathematica等其他CAS的基本构建块之一。

在SymPy中,就像在所有其他CAS中一样,您使用符号表达式,这些符号表达式基本上是大树,每个节点都有运算符,叶子处有一些符号。您可以将树与某些预定义模式匹配,就像在字符串上使用正则表达式一样。与此同时,您使用Wild来执行此操作:

x, y = Symbols("x y")
a, b = Wild('a', exclude=[x, y]), Wild('b', exclude=[x, y])
(2*x + 3*y).match(a*x + b*y)

对于线性组合的特殊情况,请检查另一个答案中描述的coeff

请参阅:https://github.com/sympy/sympy/wiki/Idioms-and-Antipatterns#wild-and-match