Ask Your Question

shift picewise functions

asked 2011-11-03 05:15:34 -0500

sagefan gravatar image

Suppose I define a piecewise function f for example:

f = Piecewise([[(-infinity,1),1],[(1,+infinity),x]])

How to define the shifted function g with g(x) = f(x-2) for all x?

Or more generally: If h is another function. How to define $g = f\circ h$ in sage?

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2012-10-16 16:49:41 -0500

rbeezer gravatar image

The following works as expected:

c = compose(f, h)
plot(c, -8, 12)
edit flag offensive delete link more


Wow, I had no idea that existed. Nice!

kcrisman gravatar imagekcrisman ( 2012-10-17 02:08:43 -0500 )edit

answered 2011-11-03 05:58:40 -0500

kcrisman gravatar image

To answer your second question:

sage: f(x) = x^2+5
sage: g(x) = 25*sqrt(x+1)
sage: g(f(x))
25*sqrt(x^2 + 6)
sage: f(g(x))
625*x + 630
sage: h(x) = f(g(x))
sage: h
x |--> 625*x + 630

The first one is harder, because Piecewise functions were implemented long before we even had symbolic functions, and hence are missing a lot of functionality. This is a long-standing need, but it takes a certain expertise in both the old and new code, as well as Ginac, to do this.

(To the cognoscenti - sympy seems to have piecewise functions, but I can't find much documentation, just obscure hints that they are there. How powerful are theirs?)

edit flag offensive delete link more


So there is no workaround to compose piecewise-defined functions?

sagefan gravatar imagesagefan ( 2011-11-04 10:41:47 -0500 )edit

There may be, but I can't think of one offhand. That doesn't mean it doesn't exist, just that I can't think of it right now.

kcrisman gravatar imagekcrisman ( 2011-11-04 16:53:20 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2011-11-03 05:15:34 -0500

Seen: 266 times

Last updated: Oct 16 '12