On 01/21/2012 10:16 AM, Comer wrote:
note that is the sympy matrix is insufficient for you needs the numpy array type can accept sympy expressions as well as numbers for cell values and I think numpy has all or most of the tensor operations.Mathew,Can you please let me know what change you made to the BlockMatrix class, so I can just do it and move forward. Thanks for your suggested solution/ workaround. Comer On Jan 21, 9:59 am, Matthew<mrock...@gmail.com> wrote: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.