Partial seems useful, thank you. The Lambda solutions also work.

But what IS lambda anyway? I don't see that its doing anything other
than being syntactic verbose.

On Apr 9, 7:24 am, Jason Grout <jason-s...@creativetrax.com> wrote:
> On 4/8/11 2:00 PM, John H Palmieri wrote:
>
>
>
>
>
> > On Friday, April 8, 2011 11:03:14 AM UTC-7, ObsessiveMathsFreak wrote:
>
> >     I have a python type function taking two variables is defined in such
> >     a say that accidental evaluation is a possibility. Here is a
> >     simplified version
>
> >     def h(x,n):
> >     if x>2:
> >     return n-x
> >     else:
> >     return n*x-2
>
> >     How can functions like this be plotted over x for a constant value of
> >     n in sage?
>
> > sage: plot(lambda x: h(x,3), (x, 0, 4))
>
> > works for me.
>
> Another approach that supplies default arguments for the *first*
> variables is to use functools.partial:
>
> def h(x,n):
>         if x>2:
>             return n-x
>         else:
>             return n*x-2
> from functools import partial
> plot(partial(h,1),(n,-1,1))
>
> This effectively plots h(1,n), where n goes from -1 to 1.
>
> Note that we can't do
>
> plot(partial(h,x=1),(n,-1,1))
>
> since plot calls the function by positional arguments, rather than
> keyword arguments (i.e., this last plot calls h like this:
> h(-.5434344,x=1), and so we get two values for x).  I think this is a
> bug; I think if the variable is specified in the plot range, the
> function should be called with a keyword argument, so that the function
> would be called as h(n=-.5434344,x=1).  I believe I even have a patch
> from late last year somewhere on my laptop that changes this behavior to
> call a function using keyword arguments if the variable is specified in
> the plot range.  Once this bug is fixed, then doing plot(partial(h,x=1),
> (n,-1,1)) would work.
>
> Thanks,
>
> Jason

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to