我正在尝试添加向量,然后做一个点积。但是,我不能做乘积,因为添加的向量的类型是错误的。
a = N.x*2
b = N.y*2
vec = a + b
print("Vector type", type(vec))输出:Vector type <class 'sympy.core.add.Add'>
预期输出:<class 'sympy.vector.vector.VectorAdd'>
发布于 2020-05-03 18:37:03
from sympy.vector import CoordSys3D
N = CoordSys3D('N')
a = N.x * 2
b = N.y * 2
vec = a + b
print(type(N.x))
>>> <class 'sympy.vector.scalar.BaseScalar'>这里的问题是,N.x和N.y是标量,并且sympy没有将它们注册为基向量。sympy使用i, j and k代替x,y和z作为基向量。因此,您只需将x替换为i,将y替换为j,将z替换为k。
from sympy.vector import CoordSys3D
N = CoordSys3D('N')
print(type(N.i))
>>> <class 'sympy.vector.scalar.BaseVector'>
print(type(N.j))
>>> <class 'sympy.vector.scalar.BaseVector'>
print(type(N.k))
>>> <class 'sympy.vector.scalar.BaseVector'>
vec = N.i * 2 + N.j * 2
print(type(vec))
>>> <class 'sympy.vector.vector.VectorAdd'>https://stackoverflow.com/questions/61572304
复制相似问题