【发布时间】:2016-01-25 15:19:34
【问题描述】:
我正在尝试使用 sympy 计算一些带有矩阵的符号表达式。 sympy 函数 subs 的行为对于矩阵来说很奇怪。我需要的是用符号表达式取字符串,用一些特定的矩阵代替这个表达式中的符号并计算结果。
对于标量,sympy.subs 可以完成这项工作:
import sympy as sp
sp.sympify("x1*x2**2").subs({"x1":5,"x2":10})
按预期给出 500。
如果改为标量,我会使用像
这样的矩阵sp.sympify("x1*x2**2").subs({"x1":sp.Matrix([[0,1],[1,0]]),"x2":sp.Matrix([[1,0],[0,1]])}
结果是AttributeError: 'MatPow' object has no attribute 'as_base_exp'。这看起来很奇怪,只要
aa,bb = sp.Matrix([[0,1],[1,0]]), sp.Matrix([[1,0],[0,1]])
aa*bb**2
按预期工作。
在 sympy 中执行此类计算的正确方法是什么?
【问题讨论】:
标签: sympy substitution