> 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.