2015-10-06 115 views
2

我需要創建完全符號矩陣,在sympy中準備好了嗎?如何創建符號矩陣並用sympy批量替換?

例如,如果我是手動創建一個2x2矩陣,我會做

from sympy import * 

a00, a01, a10, a11 = symbols('a00 a01 a10 a11') 
A = Matrix([[a00, a01],[a10, a11]]) 

的問題是我不知道的尺寸模擬之前和創建快時尺寸得到每個符號手動變老更高。理想情況下,我希望能夠用A=Matrix(10,10)A[0,0]=Symbol('A00')等創建一個10x10矩陣。

另外,如果以上可能,那麼能夠批量進行替換也是非常好的。例如,我想要類似some_equation.subs([(A,numpy.random.rand(2,2))])

+0

所以'MatrixSymbol'似乎做了這項工作,但替代部分呢? – lingxiao

回答

1

您可以使用subs方法進行替換。

In [5]: A = MatrixSymbol('A', 2, 2) 

In [6]: B = MatrixSymbol('B', 2, 2) 

In [7]: C = A*B 

In [8]: C.subs({A: Matrix([[0, 1], [1, 0]]), B: Matrix([[2, 3], [4, 5]])}) 
Out[8]: 
Matrix([ 
[0, 1], 
[1, 0]])*Matrix([ 
[2, 3], 
[4, 5]]) 

可能您需要符號尺寸爲您的MatrixSymbol對象。