"符号"对象不支持索引



我有参数 A 和元组 T,我在字典命名数据中为它们分配了值。然后我创建了方程方程。现在,当我想用值替换符号时,我收到错误"符号"对象不支持索引。我应该如何编写代码来获取元组的第一个值来计算方程?

from sympy import *
A, T = symbols('A T')
data = {A: 1, T: (2,3)}
eq = sqrt(A*T[0])
print(eq.subs(data))

如果T是一个抽象的SymPy符号,T[0]并没有真正的意义,"某个未确定性质的对象的第0个条目"。这会抛出您得到的错误,交易品种没有索引的概念。

有MatrixSymbol类,它支持索引。例如:

from sympy import *
A = symbols('A')
T = MatrixSymbol('T', 1, 2)   # matrix of size 1 by 2
eq = sqrt((A*T)[0,0]) 

现在情商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。

最新更新