> The way opeket works is that you define kets by an eigenvalue and an
> operator for which the ket is an eigenvector. For example
>
> Ket(2,'A')
>
> is an eigenvector of operator 'A' with eigenvalue 2. Then, if you
> define the operator 'A' with

Interesting, how do you define general states that are not
eigenvectors?  This does bring up the general design question of how
Kets/Bras/Operators know which bases they can be represented in.
While I do think we should be able to declare that states are
eigenvectors of an operator, I think this should be handled
differently, maybe using the assumption system.  Need to think more
about this though.

> A = Operator('A')
>
> then
>
> A*Ket(2,'A') = 2*Ket(2,'A').
>
> In case you try to do something like
>
> Operator('B')*Ket(2,'A')
>
> the expression is left alone as is, since we don't know how to
> evaluate it. Usually the label which is not the eigenvector can be
> understood as the Hilbert space in which the ket lives.
>
>> Here is a start...
>>
>> * Basic objects:
>>
>> Operator
>> Ket
>> Bra
>> BasisSet
>> DiscreteBasisSet
>> ContinuousBasisSet
>> Orthogonal/NonOrthogonal versions of basis sets.
>>
>> * Operations
>>
>> Dagger
>> InnerProduct
>> OuterProduct
>> Sum, Mul of scalar vectors
>> DirectProduct (|a>|b>)
>> Representation of a Bra, Ket, Operator in a given basis.
>
> With the scheme I mentioned above we'll only need...
>
> *Basic Objects
> Operator
> Bra
> Ket
>
> I'm still not sure if Operator should be only one kind of thing or
> maybe a couple of different things. For example, creation and
> annihilation operators can be a kind of operators which is implemented
> with a python function and we could have "symbolic" operators which
> only hold the place of an operator.  This is not clear to me so I
> still want to think about it and get back to you once I figure it out.

I think the base Operator class should not really do too much other
than implement non-commutative multiplication, dagger, etc.

> *Operatons
> Dagger
> Product (A single type of product can represent InnerProduct and
> OuterProduct), it can be Mul or a special purpose product
>
> What do you mean by Sum, Mul of scalar vectors?

Sum:  |a> + |b>
Mul: 2*|a>, A*|a> etc.

> The approach used in openket seems to be limited but really it is very
> general and practical.

I do think we want that capability though.


> I prefer it if you post the branch on git hub. I will send you my
> github username by email.

Ok, I will do that tomorrow.

>> Out of curiosity, where are you located Asaf?
> I'm an almost ex-(undergraduate student) of physics located in Mexico :)

Nice!

Cheers,

Brian

> Greetings,
> Asaf
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to sy...@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 sy...@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.

Reply via email to