尝试将值替换为 sympy 矩阵时,我收到 TypeError: unhashable type: 'MutableDenseMatrix' 错误消息,我很困惑为什么
x1,x2 = symbols('x1,x2', real = true)
a,b,c,d,e,f = symbols('a,b,c,d,e,f', real = true)
x = Matrix([x1,x2])
xT = x.T
A = Matrix([[a,b],[c,d]])
b = Matrix([e,f])
qx = xT * A*x + xT*b
A = A.subs({a:2,b:-1,c:-1,d:2})
我尝试将其中的值一一替换,但 b 和 d 值从未改变。当然,我希望它将这些值替换到正确的位置,但他们从来没有这样做
.subs
函数具有不同的语法:它是一个元组列表。
代码:
from sympy import *
x1,x2 = symbols('x1,x2', real = true)
a,b,c,d,e,f = symbols('a,b,c,d,e,f', real = true)
x = Matrix([x1,x2])
xT = x.T
A = Matrix([[a,b],[c,d]])
b = Matrix([e,f])
qx = xT * A*x + xT*b
print(A)
# prints Matrix([[a, b], [c, d]])
A = A.subs([(a,2),(b,1),(c,-1),(d,2)])
print(A)
# prints Matrix([[2, b], [-1, 2]])
请注意,
b
不能以这种方式替换,因为它本身就是一个矩阵。