Я бы предположил, что Array
немного привередлив с операциями исчисления, поскольку кажется, что он наследуется от тензоров. Вам нужно будет немного покопаться, чтобы узнать почему. Однако класс Matrix
имеет тенденцию работать немного лучше. Когда я немного занимался векторным исчислением, я обнаружил, что использование Matrix
очень помогает.
Для вашего вопроса у нас есть:
from sympy import *
x = symbols('x')
print(integrate(Matrix([[x]]), (x, 0, 1)))
Что дает ожидаемые результаты:
Matrix([[1/2]])
Это также работает для больших матриц:
from sympy import *
x = symbols('x')
A = Matrix([[x],
[x+1],
[x**2]]) # column vector
print(integrate(A, x))
B = Matrix([[1, x, x**2],
[-x, 2, 0],
[sin(x), cos(x), tan(x)]])
print(integrate(B, x))
Производство:
Matrix([[x**2/2], [x**2/2 + x], [x**3/3]])
Matrix([[x, x**2/2, x**3/3], [-x**2/2, 2*x, 0], [-cos(x), sin(x), -log(cos(x))]])
Если вам действительно нужно интегрировать тензоры, тогда эта математика выходит за рамки моего диапазона, но кажется, вы можете по крайней мере различать их .