2015-10-06 2 views
2

Мне нужно создать полностью символические матрицы, есть ли готовые функции для этого в sympy?Как создать символическую матрицу и заменить ее на партию с помощью sympy?

Например, если бы я создать матрицу 2х2 вручную, я бы

from sympy import * 

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

Проблема заключается в том, я не знаю, измерение до моделирования и создания каждый символ вручную стареет быстро, когда измерение становится выше. В идеале я хочу создать матрицу 10x10 с A=Matrix(10,10) с A[0,0]=Symbol('A00') и т. Д.

Кроме того, если это возможно, было бы здорово также сделать замену в пакетном режиме. Например, я хочу что-то вроде 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.

Смежные вопросы