Ugur,

Welcome!

2011/11/3 Uğur Güney <[email protected]>:
> Dear Sympy users,
> I'm a physics PhD student, doing research on differences between classical
> and quantum correlations.
> I was in need of a simple calculator which works with quantum states etc.
> While searching for quantum simulators in Python I came to know that there
> is already a quantum module in SymPy. Because I couldn't find an explicit
> documentation I looked at the source files to understand how basic
> calculations can be done using the quantum module.

Great, currently this is the best way to learn about how it all works.

> Can you please help me in applying a projection operator on a general state.
> This is the code that I tried:
> from sympy import *
> from sympy.physics.quantum import *
> from sympy.physics.quantum.qubit import *
> [c00,c01,c10,c11]=var('c00,c01,c10,c11')  # coefficients
> state = c00*Qubit('00')+c01*Qubit('01')+c10*Qubit('10')+c11*Qubit('11') #
> most general two-qubit state
> qbt=Qubit('01') # a qubit
> proj = qbt*qbt.dual # projection operator
> # proj*state # operator applied on the state

The following will work:

qapply(proj*state)

The need for qapply ("quantum apply") is as follows.  Because of how
python/sympy handle multiplication, we are only able to detect inner
products in very simple situations like Qubit('01').dual*Qubit('01').
For more complex situations, we just leave it as a general
"multiplication" operation.  The qapply function walks through a
general quantum expression and does a couple of things:

* Applies any operators to states.
* Looks for <bra|*|ket> expressions and turns them into inner products.

This is why you need to call qapply by hand after creating a general
quantum expression.

Hope this helps.  Also, we would love to know how you end up using
this stuff.  It is pretty new, so there is a ton left to do.  Also, if
you are looking at classical/quantum correlations, you may be
interested in the work we have done on density matrices.  That has not
yet been merged into sympy's master branch, but we plan on doing
that....always looking for help.

Cheers,

Brian

> # (proj*state).expand() operator applied on each term in the expansion
> print (proj*state).expand().doit() # try to do the inner-products
> In the last step "doit()" did not work as I expected, it did not do the
> inner products. I suspect that the expression involving TensorProduct is not
> converted to InnerProduct automatically. But normally
> "(Qubit('01').dual*Qubit('01')).doit()" and
> "(Qubit('00').dual*Qubit('01')).doit()" work as expected and give 1 and 0.
> I'll be happy if you can guide me how to use this beautiful tool.
> Best,
> ugur guney
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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
[email protected] and [email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to