我有参数A和元组T,我在名为data的字典中给它们赋值。然后我创建了方程方程。现在,当我想用值替换符号时,我得到错误的“符号”对象不支持索引。我应该如何编写代码来获得元组的第一个值来计算方程?
from sympy import *
A, T = symbols('A T')
data = {A: 1, T: (2,3)}
eq = sqrt(A*T[0])
print(eq.subs(data))发布于 2016-05-21 18:06:09
如果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]) 现在,eq是sqrt(A * T[0,0])。
然后你可以代替A和T0,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。
https://stackoverflow.com/questions/37360826
复制相似问题