Hi Matthew,

Thank you for the crystal clear explanation. Will update you once my 
implementation is complete.

-Sreeraj

On Wednesday, July 24, 2013 7:15:31 PM UTC+5:30, Matthew wrote:
>
> Hi Sreeraj
>
> Stefan is correct that you should not expect operations from sympy.physics 
> to interoperate smoothly with operations from sympy.matrices.expressions. 
>  They have different designs.
>
> sympy.matrix.expressions doesn't have a kronecker product operation but it 
> could if you're willing to build it.  We'd love the contribution and I'd be 
> happy to support you if you're willing to do some development work.
> You could also build whatever matrix functionality you need into the 
> sympy.physics family of operations; I'm less able to help here but it's an 
> equally valid approach and presumably other members of the sympy community 
> could help out.
>
> If you wanted to get started with a KroneckerProduct operator in 
> sympy.matrices.expressions I would take a look at our Development 
> Workflow<https://github.com/sympy/sympy/wiki/Development-workflow> wiki 
> page.  I would then take a look at the following files to serve as examples
>
> sympy/matrices/expressions/transpose.py
> sympy/matrices/expressions/hadamard.py
> sympy/matrices/expressions/fourier.py
>
> Each of them are decent examples of how to add simple operations to matrix 
> expressions.  Hadamard is probably the closest/simplest to what you're 
> looking for.  The minimum you need to do is to implement the shape 
> property.  You might also want to implement _entry for indexing into the 
> kronecker product or any of the methods like _eval_transpose for any of the 
> simplifications you want to be done.  For example your example above 
> of KP(X,Y).T = KP(X.T, Y.T)  can be implemented as follows
>
> def _eval_transpose(self):
>     return KroneckerProduct(*[arg.T for arg in self.args])
>
> _eval_transpose will be called automatically whenever anyone uses the .T 
> property of a matrix expression. 
>
> In recent memory this is the second time this operation has come up. 
>  Sounds like it would be a meaningful contribution.
>
> Best,
> -Matthew
>
>
> On Wed, Jul 24, 2013 at 7:42 AM, Stefan Krastanov 
> <[email protected]<javascript:>
> > wrote:
>
>> I guess you will have to implement the Kroenecker product yourself. 
>> Matthew Rocklin might have more details (he did most of the matrix symbols 
>> stuff).
>>
>>
>> On 24 July 2013 13:44, Sreeraj Rajendran <[email protected] <javascript:>
>> > wrote:
>>
>>> Let me explain my needs. MatrixSymbol supports basic matrix operations 
>>> like 
>>>
>>> With
>>>  X = MatrixSymbol('X', 3, 3)
>>>  Y = MatrixSymbol('Y', 3, 3)
>>>
>>>  (X*Y).T will give me 
>>>
>>>  T  T
>>> Y ⋅X 
>>>
>>> I just wanted to try similar properties of "kronecker product" i.e 
>>> KP(X,Y).T = KP(X.T, Y.T). What is the best way to implement these?
>>> What if I want to try some basic decompositions, say KP(X,Y) = KP(X,I_m) 
>>> KP(X,I_n)?
>>>
>>> I am just a beginner in to sympy. Should I implement some new methods to 
>>> work on kronecker product (
>>> http://en.wikipedia.org/wiki/Kronecker_product) on matrix symbols?
>>>
>>> Thank you for your previous comments.
>>>
>>>
>>>
>>> On Wednesday, July 24, 2013 2:05:53 PM UTC+5:30, Stefan Krastanov wrote:
>>>
>>>> Well, these two modules do not have anything in common, they are not 
>>>> meant to be inter-operable.
>>>>
>>>> The matrixexpr do not have a notion of basis, vector space or linear 
>>>> operator. `MatrixSymbol` is meant to represent a matrix, not an operator 
>>>> (though if you wish, you can make the mental assumption that you are 
>>>> working in certain basis and just consider all matrices to be operators).
>>>>
>>>> The quantum module has all this (different bases, Hilbert spaces, 
>>>> operators, etc). If that is what you need just use it.
>>>>
>>>> There is also the `diffgeom` module for differential geometry which you 
>>>> might find useful depending on what exactly you want to do.
>>>>
>>>>
>>>> On 24 July 2013 10:22, Sreeraj Rajendran <[email protected]> wrote:
>>>>
>>>>> Stefan,
>>>>>
>>>>> My imports
>>>>> from sympy.physics.quantum import TensorProduct
>>>>> from sympy import MatrixSymbol
>>>>>
>>>>>
>>>>> On Wednesday, July 24, 2013 1:35:38 PM UTC+5:30, Stefan Krastanov 
>>>>> wrote:
>>>>>
>>>>>> From what submodules of sympy are you importing these classes?
>>>>>>
>>>>>>
>>>>>> On 24 July 2013 09:38, Sreeraj Rajendran <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> With 
>>>>>>>  X = MatrixSymbol('X', 3, 3)
>>>>>>>  Y = MatrixSymbol('Y', 3, 3)
>>>>>>>
>>>>>>>  TensorProduct(X,Y) throws me the following error
>>>>>>>  AttributeError: 'MatrixSymbol' object has no attribute 'args_cnc'
>>>>>>>
>>>>>>> TensorProduct(Matrix(X),**Matrix**(Y)) works fine.
>>>>>>> Is tensorproduct over matrixsymbols is currently under development 
>>>>>>> or am I doing something terribly wrong?
>>>>>>>
>>>>>>> -- 
>>>>>>> Regards
>>>>>>> Sreeraj Rajendran
>>>>>>> http://home.iitb.ac.in/~**rsreer**aj<http://home.iitb.ac.in/%7Ersreeraj>
>>>>>>>
>>>>>>>
>>>>>>>  -- 
>>>>>>> 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 sympy+un...@**googlegroups.com.
>>>>>>> To post to this group, send email to [email protected].
>>>>>>>
>>>>>>> Visit this group at 
>>>>>>> http://groups.google.com/**group**/sympy<http://groups.google.com/group/sympy>
>>>>>>> .
>>>>>>> For more options, visit 
>>>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out>
>>>>>>> .
>>>>>>>  
>>>>>>>  
>>>>>>>
>>>>>>
>>>>>>  -- 
>>>>> 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 sympy+un...@**googlegroups.com.
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at 
>>>>> http://groups.google.com/**group/sympy<http://groups.google.com/group/sympy>
>>>>> .
>>>>> For more options, visit 
>>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>>>> .
>>>>>  
>>>>>  
>>>>>
>>>>
>>>>  -- 
>>> 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] <javascript:>.
>>> To post to this group, send email to [email protected]<javascript:>
>>> .
>>> Visit this group at http://groups.google.com/group/sympy.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>
>>  -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] <javascript:>
>> .
>> Visit this group at http://groups.google.com/group/sympy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to