Sympy:Matrix.doit()不适用于矩阵元素

时间:2016-01-20 11:34:03

标签: python python-2.7 sympy

在以下示例中,我将函数替换为矩阵表达式。我希望在.doit()调用之后进行一些简化:

x = symbols('x', real=True)
f = symbols('f', real=True)(x)
v = Matrix([f * sin(x), f * cos(x)])
v1 = v.diff(x)

print v1.subs(f, x)
# prints: Matrix([[x*cos(x) + sin(x)*Derivative(x, x)], [-x*sin(x) + cos(x)*Derivative(x, x)]])
print v1.subs(f, x).doit()
# prints: Matrix([[x*cos(x) + sin(x)*Derivative(x, x)], [-x*sin(x) + cos(x)*Derivative(x, x)]])
print Matrix([e.doit() for e in v1.subs(f, x)])
# prints: Matrix([[x*cos(x) + sin(x)], [-x*sin(x) + cos(x)]])

但它不会发生。如果我为矩阵的每个元素调用.doit(),一切都正常。

问题:什么是错误的,我的代码或.doit()函数的行为?如何解决?

1 个答案:

答案 0 :(得分:1)

似乎已经在SymPy的开发版本中修复了这个问题。新版本(1.0)应该很快就会发布。