I define two operators and their product

from sympy.physics.quantum.operator import Operator
A,B = Operator('A'), Operator('B')
C=A*B

later, I want to replace the operators A and B by two squared matrices of 
the same dimensions. In particular, I want C to be equal to the product of 
the matrices associated to A and B.
However, it seems that sympy does something different:

Asub = sp.Matrix([[0,1],[1,2]])
Bsub = sp.Matrix([[1,1],[1,3]])

C.subs([(A,Asub)])

this last line returns 

Matrix([
[0,   B],
[B, 2*B]])

so it considered B as a scalar, and it multiplied each element of the 
matrix A by B

If instead I try

C.subs([(A,Asub),(B,Bsub) ])

I get  (sorry for the bad formatting)

Matrix([
[                        0, Matrix([
[1, 1],
[1, 3]])],
[Matrix([
[1, 1],
[1, 3]]), Matrix([
[2, 2],
[2, 6]])]])

so essentially it returns a 2x2 BLOCK matricx.
How can I force sympy to treat A*B as a matrix product?

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/a7e2f5c4-6e67-4ff0-8061-53ddd1ff9991o%40googlegroups.com.

Reply via email to