Right i**2 is a MatrixExpr. At some point someone suggested that we have unevaluated dense matrix expressions. This choice was made to satisfy that desire. We can change things around though.
In [1]: X = ImmutableMatrix(3,3, range(9)) In [4]: Y = ImmutableMatrix(ones(3, 3)) In [6]: X*Y Out[6]: ⎡0 1 2⎤⋅⎡1 1 1⎤ ⎢ ⎥ ⎢ ⎥ ⎢3 4 5⎥ ⎢1 1 1⎥ ⎢ ⎥ ⎢ ⎥ ⎣6 7 8⎦ ⎣1 1 1⎦ In [7]: (X*Y)[0,0] # indexing works Out[7]: 3 In [8]: (X*Y).as_explicit() Out[8]: ⎡3 3 3 ⎤ ⎢ ⎥ ⎢12 12 12⎥ ⎢ ⎥ ⎣21 21 21⎦ This isn't necessarily the way that things should be done though. One could imagine a number of alternatives. This conversation ties in well to the container vs. canonicalizer idea happening in this thread.<http://groups.google.com/group/sympy/browse_thread/thread/aca9ea914fe22b8e> -Matt On Sun, Mar 11, 2012 at 1:18 PM, [email protected] < [email protected]> wrote: > Actually one can use as_explicit. I did not saw it in the > documentations, only when I checked the code I found about it. > > On 11 March 2012 21:14, [email protected] > <[email protected]> wrote: > > n [8]: i = ImmutableMatrix(eye(3)) > > > > In [9]: i**2 > > Out[9]: > > > > 2 > > ⎡1 0 0⎤ > > ⎢ ⎥ > > ⎢0 1 0⎥ > > ⎢ ⎥ > > ⎣0 0 1⎦ > > > > In [10]: _.doit() > > TypeError > > > > Casting to Matrix does not work either. How to actually calculate the > > product with Immutable matrices? > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
