首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sympy向量加法返回sympy.core.add.Add而不是sympy.vector.vector.VectorAdd

Sympy向量加法返回sympy.core.add.Add而不是sympy.vector.vector.VectorAdd
EN

Stack Overflow用户
提问于 2020-05-03 17:32:46
回答 1查看 53关注 0票数 0

我正在尝试添加向量,然后做一个点积。但是,我不能做乘积,因为添加的向量的类型是错误的。

代码语言:javascript
复制
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'>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-03 18:37:03

代码语言:javascript
复制
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.xN.y是标量,并且sympy没有将它们注册为基向量。sympy使用i, j and k代替x,y和z作为基向量。因此,您只需将x替换为i,将y替换为j,将z替换为k

代码语言:javascript
复制
    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'>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61572304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档