如何批量替代同情?

时间:2015-10-06 07:00:01

标签: python numpy sympy

我有一些符号计算的代码:

from sympy import *
import numpy
A = MatrixSymbol('A',2,2)
f = Matrix(A).det() # for example only, the actual function is of the same flavor

如何使用相同尺寸的显式矩阵替换A?我尝试了以下代码,但它没有产生预期的结果:

f.subs(A,Matrix(numpy.random.rand(2,2)))

返回:

Matrix([
[ 0.204259256795002, 0.198427966386296],
[0.0929675373783559, 0.516653291115676]])[0, 0]*Matrix([
[ 0.204259256795002, 0.198427966386296],
[0.0929675373783559, 0.516653291115676]])[1, 1] - Matrix([
[ 0.204259256795002, 0.198427966386296],
[0.0929675373783559, 0.516653291115676]])[0, 1]*Matrix([
[ 0.204259256795002, 0.198427966386296],
[0.0929675373783559, 0.516653291115676]])[1, 0]

1 个答案:

答案 0 :(得分:0)

替换有效。默认情况下它仍未评估。要对其进行评估,请使用doit(),例如

>>> f.subs(A,Matrix(numpy.random.rand(2,2))).doit()
-0.0866313884475072