我用sympy做向量演算,我想知道是否有一个简单的方法来数值计算向量和并矢表达式。我知道lambdify
函数可以这样使用:
from sympy.abc import x,lambdify
expr=x**x+1
lambda_expr=lambdify(x,expr)
print(lambda_expr(5.0))
二进/矢量表达式有类似的功能吗?我尝试了以下代码,但它引发了语法错误:
from sympy.vector import CoordSys3D, Del
C=CoordSys3D('C')
nabla=Del()
#define some test vectorial field
B=C.x*C.y*C.z*(C.i+C.j+C.k)
#compute a field and a dyad
nabla_B=nabla.dot(B).doit()
rot_B=nabla.cross(B).doit()
#try to get lambda expressions...
lambda_nablaB=lambdify((C.x,C.y,C.z),nabla_b
lambda_rotB=lambdify((C.x,C.y,C.z),rot_B)
语法错误:
lambda C.x,C.y,C.z: (C.x*C.y*C.z*C.i + C.x*C.y*C.z*C.j + C.x*C.y*C.z*C.k)
^
SyntaxError: invalid syntax
我想数值计算一个场/二元并得到一个numpy数组。你知道吗
这可能不是一个理想的答案,但下面的解决方案似乎是可行的。函数evalsym将sympy向量转换为numpy向量:
相关问题 更多 >
编程相关推荐