:sympy.physics.vector
がsympy.vector
に書き換えられています。
私はベクトルモジュールが本当にテンソル場をサポートしていませんが、あなたはN次元の配列を使用することができ、たとえばことが表示されます:
In [6]: ta = Array([[Function("f_{0}{1}".format(j,i))(x,y,z) for i in range(1,4)
...: ] for j in range(1,4)])
In [7]: ta
Out[7]:
⎡f₁₁(x, y, z) f₁₂(x, y, z) f₁₃(x, y, z)⎤
⎢ ⎥
⎢f₂₁(x, y, z) f₂₂(x, y, z) f₂₃(x, y, z)⎥
⎢ ⎥
⎣f₃₁(x, y, z) f₃₂(x, y, z) f₃₃(x, y, z)⎦
In [9]: tensorcontraction(derive_by_array(ta, (x, y, z)), (0, 1))
Out[9]:
⎡∂ ∂ ∂ ∂ ∂
⎢──(f₁₁(x, y, z)) + ──(f₂₁(x, y, z)) + ──(f₃₁(x, y, z)) ──(f₁₂(x, y, z)) + ──
⎣∂x ∂y ∂z ∂x ∂y
∂ ∂ ∂ ∂
(f₂₂(x, y, z)) + ──(f₃₂(x, y, z)) ──(f₁₃(x, y, z)) + ──(f₂₃(x, y, z)) + ──(f₃
∂z ∂x ∂y ∂z
⎤
₃(x, y, z))⎥
⎦
点6でランク2の配列が点9で、作成されます同じ配列は別の配列(x, y, z)
によって導出され、ランク3の配列(形状は3x3x3)を作成します。この時点でtensorcontraction
は第1軸と第2軸を縮小し、結果をランク1の配列(3要素)に縮小します。