#python #sympy
#python #симпатия
Вопрос:
Я пытаюсь решить эту проблему в sympy 1.7, используя vector_integrate:
Я думал, что это сработает:
import sympy
from sympy.vector import CoordSys3D, ParametricRegion, vector_integrate
from sympy.abc import t,x,y
C = CoordSys3D('C')
region = ParametricRegion((t, t), (t, 0, 1))
field = x * C.i (x y) * C.j
vector_integrate(field, region)
Но результат:
2*x y
Я неправильно перевел проблему в sympy или это проблема типа, которая еще не поддерживается vector_integrate
?
Ответ №1:
Вам нужно использовать координаты из заданной системы координат , например C.x
, а не какой — либо другой вызываемый символ x
.
In [15]: from sympy.vector import CoordSys3D, ParametricRegion, vector_integrate
...: C = CoordSys3D('C')
In [16]: region = ParametricRegion((t, t), (t, 0, 1))
In [17]: field = C.x * C.i (C.x C.y) * C.j # note C.x rather than x
In [18]: vector_integrate(field, region)
Out[18]: 3/2
Любой другой символ рассматривается как скалярная константа в поле. Возможно, это будет легче понять, если мы изменим названия символов:
In [19]: from sympy.abc import a, b
In [20]: field = a * C.i (a b) * C.j
In [21]: vector_integrate(field, region)
Out[21]: 2⋅a b