Tは抽象SymPyのシンボルである場合、T[0]
は本当に、「未解決な性質のいくつかのオブジェクトの0番目のエントリを」意味がありません。これは、あなたが持っているエラーをスローする、シンボルはインデックスの概念を持っていません。
MatrixSymbolクラスがあり、doubleインデックスをサポートしています。例:
from sympy import *
A = symbols('A')
T = MatrixSymbol('T', 1, 2) # matrix of size 1 by 2
eq = sqrt((A*T)[0,0])
ここでeqはsqrt(A * T[0,0])
です。
次に、AとT [0,0]を代用することができます。
data = {A: 1, T[0,0]: 2}
print(eq.subs(data))
出力sqrt(2)
。私はdata = {A: 1, T: Matrix([[2,3]])}
を代用しようとしたとき
は、出力は正しいものの、評価を過小に見え、
sqrt(Matrix([[3, 4]])[0, 0])
ました。
いずれにしても、タプルは必要ありません。これは、例えばPythonの3*(1,2)=(1,2,1,2,1,2)
の場合とはかなり異なるものです。ところで
あなたの本当の目標が明示的に与えられた数字の配列にいくつかの機能を適用する場合、あなたはおそらくnumpyのが欲しいです。
'IndexedBase(" T ")'を使用するとほとんど動作しますが、 '(2,3)[0]'は未評価のままであり、 'doit'は評価しません。 – asmeurer