我在用sympy代替MatrixSymbols时遇到问题。这是一个基本的代码示例:
>>> import sympy as sy
>>> x, y = sy.symbols('x y')
>>> v = sy.MatrixSymbol('v', 2, 1)
>>> w = sy.MatrixSymbol('w', 2, 1)
>>> 2 + 3
5
>>> (x + y).subs({x: 2, y: 3})
5
>>> sy.Matrix([2,2]) + sy.Matrix([3,3])
Matrix([
[5],
[5]])
>>> (v + w).subs({v: sy.Matrix([2,2]), w: sy.Matrix([3,3])})
Matrix([
[2],
[2]]) + Matrix([
[3],
[3]])
>>> (v + w).subs({v: sy.Matrix([2,2]), w: sy.Matrix([3,3])}).evalf()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-25398137decd> in <module>()
----> 1 (v+w).subs({v: sy.Matrix([2,2]), w: sy.Matrix([3,3])}).evalf()
AttributeError: 'MatAdd' object has no attribute 'evalf'
我希望MatrixSymbols v
和w
的行为类似于标量符号x
和y
,但它们却不一样。
是否可以通过插入v + w
和v
的向量来评估w
之类的表达式?
答案 0 :(得分:1)
我认为您正在寻找as_explicit
,它是矩阵表达式的一种方法,它将其转换为显式矩阵。
(v + w).subs({v: sy.Matrix([2,2]), w: sy.Matrix([3,3])}).as_explicit()
是Matrix([[5], [5]])