Я работаю с SymPy vector
s:
from sympy import *
from sympy.vector import *
N = CoordSys3D('N')
x = symbols('x')
v = x * N.i + x**2 * N.j
vf=factor(v)
vf1=vf.as_independent(Vector)[1]
type(vf1)
# sympy.core.add.Add
Мне нужно вычислить dot(vf1,vf1)
. Но SymPy не оценивает скалярное произведение:
ss = dot(vf1,vf1)
ss
# 1 + 2*Dot(N.i, N.j*x) + Dot(N.j*x, N.j*x)
Я подозреваю, это потому, что vf1
был преобразован в другой тип, т.е. sympy.core.add.Add
).
Есть ли способ заставить SymPy вычислять ss
? Есть ли способ преобразовать vf1
как sympy.vector...
?
EDIT
Я написал функцию, которая выполняет скалярное произведение. Но мне нужно сделать это способом SymPy, поэтому мне не нужно повторно реализовывать мою собственную версию каждой функции в sympy.vector
.