On Wed, Apr 6, 2011 at 5:53 AM, Aaron S. Meurer <asmeu...@gmail.com> wrote: > > On Apr 5, 2011, at 10:54 AM, Brian Granger wrote: > >> On Tue, Apr 5, 2011 at 9:26 AM, Aaron S. Meurer <asmeu...@gmail.com> wrote: >>> >>> On Apr 4, 2011, at 11:30 PM, Brian Granger wrote: >>> >>>> Hi, >>>> >>>>> Could you give an example of how you construct large sparse matrices. >>>>> What sort of constructors would you like to see in the class ? >>>> >>>> Our big sparse matrices are formed out of tensor products of 2x2 >>>> matrices, such as Pauli and Hadamard matrices. But these tensor >>>> products have *many* identity matrices as well, which makes them >>>> sparse. Here is our matrix tensor product code: >>>> >>>> https://github.com/sympy/sympy/blob/master/sympy/physics/quantum/matrixutils.py#L232 >>>> >>>> >>>> Here is some specific examples: >>>> >>>> In [1]: from sympy.physics.quantum import * >>>> >>>> In [2]: from sympy.physics.quantum.gate import * >>>> >>>> In [3]: g = X(2) >>>> >>>> In [4]: represent(g, nqubits=4) >>>> >>>> You could also look at what happens when you increase nqubits and also >>>> look at: >>>> >>>> g = Y(2) >>>> g = H(2) >>>> >>>> 2 could also be any number < nqubits >>>> >>>> In many ways one of the most useful things we could have would be a >>>> sparse tensor product. >>>> >>>>> Are there any special class of sparse matrices that you guys use >>>>> often, like tridiagonal matrix or permutation matrix ? >>>> >>>> Nope, in practice we get matrices that look quite different and have >>>> different sparsities. >>>> >>>>>>> I should also mention that we are >>>>> pretty much only interested in matrix-vector multiplies, matrix- >>>>> scalar >>>>> mult. and matrix addition. >>>> >>>>> Arent you also interested in solving A * x = B, or matrix-matrix >>>>> mult ? >>>> >>>> Nope for this particular application, we don't need linear solves or >>>> matrix-matrix mul. >>> >>> So what do you do with the matrices? >> >> 90% of the time, we build them and them apply a sequence of them to a vector: >> >> A*B*C*D*E*...(Y*(Z*v)) >> >> We could do the matrix-matrix muls first and then apply to the vector: >> >> (A*B*C*D*E*...Y*Z)*v >> >> But the product of all the matrices is usually dense, and we don't >> want to have to store the entire big dense matrix.
Yes doing Mat-Mat operations with Mat-Vec are doable is almost never the right thing to do. >> >> Brian > > This reminds me. Implementing symbolic matrices would allow us to optimize > multiplication of several matrices of different sizes using the matrix chain > multiplication algorithm. Well I could use matrix expressions, and already have a prototype implementation in Ignition. https://github.com/aterrel/ignition/tree/master/ignition/flame/tensors I would get the functionality working, which probably would sustain a student for the summer, before I dived into the matrix chain. -- Andy > > Aaron Meurer > >> >> >> >> >>> Aaron Meurer >>> >>>> >>>> Cheers, >>>> >>>> Brian >>>> >>>>> Thank you for your help, >>>>> Sherjil Ozair >>>>> >>>>> -- >>>>> 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. >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Brian E. Granger >>>> Cal Poly State University, San Luis Obispo >>>> bgran...@calpoly.edu and elliso...@gmail.com >>>> >>>> -- >>>> 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. >>>> >>> >>> -- >>> 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. >>> >>> >> >> >> >> -- >> Brian E. Granger >> Cal Poly State University, San Luis Obispo >> bgran...@calpoly.edu and elliso...@gmail.com > > -- > 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. > > -- 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.