不可哈希类型:替换时出现“mutabledensematrix”错误

问题描述 投票:0回答:1

尝试将值替换为 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 值从未改变。当然,我希望它将这些值替换到正确的位置,但他们从来没有这样做

python jupyter sympy
1个回答
0
投票

.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
不能以这种方式替换,因为它本身就是一个矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.