Dear all,

just started exploring Sage (via sagenb.org), I'm very enthousiastic
about the concept and am very eager to leave 'black box' Mathematica
asap. One issue however I can't seem to get my head around, namely
what exactly is the 'right' way to think of and work with Sage-
functions (as opposed to function constructs in the Python language)?

E.g. when trying to plot a piecewise function, this works:

f1 = lambda x:x
f2 = lambda x:x^2
f = Piecewise([[(0,1),f1],[(1,2),f2]])
P = f.plot()

whereas this (and several modifications of it I tried):

x=var('x')
f1(x)=x
f2(x)=x^2
f(x)=Piecewise([[(0,1),f1(x)],[(1,2),f2(x)]])
P=f.plot()

throws a TypeError:

  File "ring.pyx", line 272, in
sage.symbolic.ring.SymbolicRing._element_constructor_ (sage/symbolic/
ring.cpp:4456)
TypeError

Personally I would prefer the second approach as I would like to use
only Sage-functions for mathematical functions (so not use lambda:
etc.) to keep a notion of distinction between the mathematical objects
on the one hand and the Python code on the other hand that controls
the program flow. But it seems that I just don't really understand how
to do that. Why is the second piece of code wrong and what would be
the 'right' way to do it? Is there a function construct in Sage like
the concept of a 'pure function' in Mathematica, so something like
f=Function(x,x^2), where x is only a dummy that has no link with any x
that might be defined before this command?

Many thanks in advance for your time.

--~--~---------~--~----~------------~-------~--~----~
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/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to