This isn't a solution for you Comer unless you want to play with the
code, but the BlockMatrix class is almost able to do this. To get the
code below to work I had to make a slight (one line) alteration to the
Matrix class.

BlockMatrix(Matrix([[eye(3), eye(3)],[eye(3), eye(3)]]))
⎡⎡1  0  0⎤  ⎡1  0  0⎤⎤
⎢⎢       ⎥  ⎢       ⎥⎥
⎢⎢0  1  0⎥  ⎢0  1  0⎥⎥
⎢⎢       ⎥  ⎢       ⎥⎥
⎢⎣0  0  1⎦  ⎣0  0  1⎦⎥
⎢                    ⎥
⎢⎡1  0  0⎤  ⎡1  0  0⎤⎥
⎢⎢       ⎥  ⎢       ⎥⎥
⎢⎢0  1  0⎥  ⎢0  1  0⎥⎥
⎢⎢       ⎥  ⎢       ⎥⎥
⎣⎣0  0  1⎦  ⎣0  0  1⎦⎦

Anyway, it'd be nice if all the matrix types could work together. The
biggest impediment to this is the need for an explicit Matrix type
which is also Basic.

On Jan 20, 5:48 pm, Aaron Meurer <asmeu...@gmail.com> wrote:
> The best way to do this is to use row_join and col_join:
>
> In [53]: a = Matrix([[1, 2], [3, 4]])
>
> In [54]: b = Matrix([[5, 6], [7, 8]])
>
> In [55]: a.row_join(b)
> ⎡1  2  5  6⎤
> ⎢          ⎥
> ⎣3  4  7  8⎦
>
> In [56]: a.col_join(b)
> ⎡1  2⎤
> ⎢    ⎥
> ⎢3  4⎥
> ⎢    ⎥
> ⎢5  6⎥
> ⎢    ⎥
> ⎣7  8⎦
>
> There is an open issue that would add a better interface for this
> (http://code.google.com/p/sympy/issues/detail?id=2221), but it remains
> to be fixed.  You're welcome to give it a shot! Ideally, you should be
> able to build a Matrix from block elements just as easily as you can
> from atomic elements.
>
> Aaron Meurer
>
>
>
>
>
>
>
> On Fri, Jan 20, 2012 at 3:59 PM, Comer Duncan <comer.dun...@gmail.com> wrote:
> > I have some 3x3 matrices, to be exact there are four of them. I want
> > to form a 6 x 6 matrix from a two by two block of the four.
> > Specifically here they are:
>
> >>>> FEx
> > [0, 0, 0]
> > [0, 0, 0]
> > [0, 0, 0]
> >>>> FBx
> > [0, 0,  0]
> > [0, 0, -1]
> > [0, 1,  0]
> >>>> GEx
> > [0,  0, 0]
> > [0,  0, 1]
> > [0, -1, 0]
> >>>> GBx
> > [0, 0, 0]
> > [0, 0, 0]
> > [0, 0, 0]
>
> > The block matrix I want can be written
> > (FEx   FBx)
> > (GEx  GBx)
>
> > If the above formatted ok you should see what I want.
>
> > However, the following attempt:
>
> > Matrix(((Fex,FBx),(GEx,GBx)))
>
> > produces
> > Matrix((FEx,FBx),(GEx,GBx))
> > Traceback (most recent call last):
> >  File "<stdin>", line 1, in <module>
> >  File 
> > "/usr/local/lib/python2.6/dist-packages/sympy-0.7.1-py2.6.egg/sympy/matrice 
> > s/matrices.py",
> > line 158, in __init__
> >    raise TypeError("Data type not understood")
> > TypeError: Data type not understood
>
> > When I enter Matrix((FEx,FBx,GEx,GBx))  I get:
> > [0,  0,  0]
> > [0,  0,  0]
> > [0,  0,  0]
> > [0,  0,  0]
> > [0,  0, -1]
> > [0,  1,  0]
> > [0,  0,  0]
> > [0,  0,  1]
> > [0, -1,  0]
> > [0,  0,  0]
> > [0,  0,  0]
> > [0,  0,  0]
>
> > which is a 12 x 3 matrix.
> > So my question is how to create a 6 x 6 matrix in the form indicated above?
>
> > Thanks for suggestions.
>
> > Comer
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "sympy" group.
> > To post to this group, send email to sympy@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > sympy+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://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 sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to