Also, it's far less practical, but you may find http://github.com/mrocklin/matrix-algebra to be of interest.
On Mon, Mar 17, 2014 at 5:12 PM, Matthew Rocklin <[email protected]> wrote: > Hi Chris, > > Thanks for the kind words. > > At the moment Matrix Expressions in the main branch do not use assumptions > while simplifying. IIRC they actually used to but I removed it so that I > could approach this more cleanly. One lofty reason for this was so that > this could be used as a model for the rest of sympy when it eventually > jumps over to the new assumptions system. > > If other devs see this e-mail - what are your thoughts on `refine`, the > simplify API suggested (but rarely used) by new assumptions? Should we > start using this? Should we roll it into simplify? In general at what > point should we appeal to new assumptions? At expression creation time? > At simplify time? At another simplify-like api time (e.g. refine time)? I > decided not to call upon new assumptions while creating expressions (e.g. > X.T creates a Transpose(X) even if X is symmetric). I think that my > reasoning at the time was performance. > > Chris, in general what you're asking for is easy for us to add. I would > like to make sure that we add it correctly. > > Also, it's been some time since this was all in my head. I may have said > some untrue things. > > Best, > -Matthew > > > > > On Mon, Mar 17, 2014 at 4:57 PM, Chris <[email protected]> wrote: > >> Hi all, >> >> >> I stumbled upon the discussion on matrix assumptions and the bit of >> history behind this sympy module: >> >> http://scicomp.stackexchange.com/questions/74/symbolic-software-packages-for-matrix-expressions >> >> First off all, thank you Matt, this is incredibly cool stuff! >> >> Now, I'm trying to do some matrix algebra while encoding knowledge about >> the matrices involved. For instance, say my matrix U is unitary, i.e. U * >> U.T = I. I've looked around in the documentation and source code, but >> couldn't figure out, if the new assumption system can be used to simplify >> matrix expressions. >> >> I was trying to exploit this using sympy as follows: >> >> from sympy import Q, symbols, MatrixSymbol, ask, simplify >> from sympy.assumptions.assume import global_assumptions >> >> n = symbols('n', integer=True) >> U = MatrixSymbol('U', n, n) >> >> global_assumptions.add(Q.unitary(U)) >> >> UU = U * U.T >> >> print UU >> >> simpleUU = simplify(UU) >> print simpleUU >> >> >> I was hoping that the second print would output the Identity, but somehow >> this didn't work. Any suggestions, pointers, hints? >> >> >> Cheers, >> Chris >> >> -- >> 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 post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/31aaea36-675d-40b0-8d77-aec8828f6c31%40googlegroups.com<https://groups.google.com/d/msgid/sympy/31aaea36-675d-40b0-8d77-aec8828f6c31%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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 post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAJ8oX-GxN1qJEQ-T5JZG7n9NU8W-pSunDfUkJtXSZo60urObAA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
