Добавление вектора Sympy возвращает sympy.core.add.Add вместо sympy.vector.vector.VectorAdd - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь добавить векторы, а затем сделать скалярное произведение. Однако я не могу сделать продукт, потому что тип добавленного вектора неправильный.

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'>

1 Ответ

2 голосов
/ 03 мая 2020
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 не регистрирует их как базисные векторы. Вместо x, y и z в качестве базисных векторов sympy использует i, j и k . Так что вам просто нужно заменить 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'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...