I think Wavefunction applies more to the latter case, where there's a known
function that we want to return. I sort of saw it as more of a convenience
than anything else. For one, returning the expression itself, like
sin(n*pi*x/L), means that if you want to actually evaluate it at a point you
have to use subs() (which I guess is not too bad, but its a little less
intuitive than simply getting the function and being able to call psi(2)).
It also can provide some basic helper functions for calculating
probabilities (f*conjugate(f)) or normalization constants. The final reason
I had is that it ended up making DifferentialOperator quite simple...as
simple as defining an _apply_operator_Wavefunction function (though I guess
it's just as simple to write _apply_operator_Function or
_apply_operator_Lambda). I can go either way on this.

Tomo

On Sun, Jun 12, 2011 at 4:29 PM, Brian Granger <[email protected]> wrote:

> I am -1 on having a Wavefunction class.  The reason is that a
> wavefunction is just a plain old function.  There is no additional
> logic needed over a regular function.  But I want to understand what
> you are using these functions for.  I can think of two types of
> functions needed in quantum:
>
> * An undefined function for use in representing an unknown or abstract
> state:  <x|psi> => psi(x).  For this I would just use
> Function('psi')('x').  The name of the state (psi) can just be used
> for the name of the function.
> * A function for a known quantum state like the particle in a box.
> For this case, we should just return the special function, such as
> sin(n*pi*x/L), etc.
>
> Can you clarify how the functions you are using relate to these two cases?
>
> Cheers,
>
> Brian
>
> On Sat, Jun 11, 2011 at 2:56 PM, Tomo Lazovich <[email protected]>
> wrote:
> > Lambda seems to work for me except for one thing.
> >
> > I have a class Wavefunction for representations of states in continuous
> > bases. It subclasses Lambda and provides some additional convenience
> > functions. One thing it would like to do internally is calculate
> > self.expr*conjugate(self.expr). I've found, however, that because the
> Lambda
> > uses dummy variables internally, even if I initialize the function with a
> > symbol set to real=True, that doesn't carry over to the internal
> expression
> > and so the conjugate isn't very well simplified. Is there a way to get
> > around this?
> >
> > Thanks!
> >
> > On Fri, Jun 10, 2011 at 9:19 PM, Aaron Meurer <[email protected]>
> wrote:
> >>
> >> If you just want a placeholder to keep args, use UndefinedFunction.
> >> If you want it to have any more advanced functionality at all, create
> >> a subclass of Function.  I admit I don't know anything at all about
> >> what you are doing, but it's very likely that the case is the latter.
> >>
> >> Aaron Meurer
> >>
> >> On Fri, Jun 10, 2011 at 5:08 PM, Vinzent Steinberg
> >> <[email protected]> wrote:
> >> > On 10 Jun., 02:08, Brian Granger <[email protected]> wrote:
> >> >> Definitely use the existing Function stuff in sympy.  I am not sure
> >> >> you will even have to subclass to do this.
> >> >
> >> > There is also UndefinedFunction (BTW, I think we should rename it to
> >> > AbstractFunction or similar) if you want a rather abstract function.
> >> > If you want to implement something like sin, you should probably use
> >> > Function.
> >> >
> >> > Vinzent
> >> >
> >> > --
> >> > 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.
> >> >
> >> >
> >>
> >> --
> >> 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.
> >>
> >
> >
> >
> > --
> > Tomo Lazovich
> > Harvard College '11
> > 278 Winthrop House Mail Center
> > Cambridge, MA 02138
> >
> > --
> > 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.
>
>


-- 
Tomo Lazovich
Harvard College '11
278 Winthrop House Mail Center
Cambridge, MA 02138

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