Python Sympy中通过sympify方法定义向量

Python Sympy中通过sympify方法定义向量,python,vector,sympy,Python,Vector,Sympy,我在Python项目中使用了Sympy,通过sympify方法将表达式的字符串定义转换为Sympy。例如: import sympy as sp exp1 = sp.sympify('Add(Rational(1, 5), pi)') 虽然我能够描述几乎所有的功能,但我遇到了用sympify方法理解向量描述的问题。以正常方式定义向量: from sympy.vector import CoordSys3D R = CoordSys3D('R') v = 3*R.i + 4*R.j + 5*R.

我在Python项目中使用了Sympy,通过sympify方法将表达式的字符串定义转换为Sympy。例如:

import sympy as sp
exp1 = sp.sympify('Add(Rational(1, 5), pi)')
虽然我能够描述几乎所有的功能,但我遇到了用sympify方法理解向量描述的问题。以正常方式定义向量:

from sympy.vector import CoordSys3D
R = CoordSys3D('R')
v = 3*R.i + 4*R.j + 5*R.k
下一个例子是一个品种的失败:

exp2 = sp.sympify('Vector(Coord3D().i*3, Coord3D().j*4, Coord3D().k*5')
我希望保持矢量格式以支持旋度、散度和梯度功能。一行矩阵的定义在这里不适合我。文献研究没有给出结果


如果能为sympify方法的sympy.vector定义提供一个正确方法的示例或建议,我将不胜感激。

如果您传入一本本地词典,这会满足您的要求吗:

>>> from sympy.vector import *
>>> sympify('Vector(R.i*3, R.j*4, R.k*5)',
... locals=dict(R=CoordSys3D('R'), Vector=Vector))
Vector(3*R.i, 4*R.j, 5*R.k)
>>> type(_)
<class 'sympy.vector.vector.Vector'>

谢谢@smichr,这个建议很有帮助!然而,在输出结果值期间,我有一个属性错误:AttributeError:“Vector”对象没有属性“\u components”。这个案例在我的工作环境和jupyter笔记本中反复出现。你可能知道它与什么有关吗?不确定…试着下载SymPy的开发版本。我从GitHub用SymPy 1.4和1.5b1测试了这个案例。两种情况下都会发生错误。我在GitHub Symphy的相应部分中添加了这个问题。