id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
11225 improve piecewise plotting kcrisman jason was "Until we actually totally rewrite piecewise functions (done in #14801), we should improve some things.
For concreteness, here is one thing that should work but doesn't. I'm sure there are more - add to this list, and then whatever isn't fixed in this ticket can be moved to another ticket. I just want to make sure they're listed in one place, not ten tickets.
List:
* plotting more than one
{{{
sage: f = Piecewise([[(0,1),x^3], [(1,2),x^2]], x)
sage: plot([f,x^3],(x,0,2))
}}}
A very similar example was at [http://ask.sagemath.org/question/868/two-piecewise-defined-functions-in-one-plot this ask.sagemath.org post]:
{{{
sage: f = Piecewise([[(-2,1),1],[(1,4),x]])
sage: g = Piecewise([[(-2,1),1],[(1,4),2*x]])
sage: plot([f,g])
AttributeError: PiecewisePolynomial instance has no attribute '__float__'
}}}
Both examples work in the new `piecewise` (#14801):
{{{
sage: f = piecewise([[(0,1),x^3], [(1,2),x^2]], var=x)
sage: plot([f,x^3],(x,0,2))
}}}
{{{
sage: f = piecewise([[(-2,1),1],[(1,4),x]])
sage: g = piecewise([[(-2,1),1],[(1,4),2*x]])
sage: plot([f,g], xmin=-3, xmax=5)
}}}
* plotting a product of a piecewise with a symbolic (well, the problem is multiplying the two, but still worth putting here - see [http://groups.google.com/group/sage-support/browse_thread/thread/7357d08529de32dd this sage-support thread])
fixed in new `piecewise`
* Maybe unify with `plot_step_function`, which currently is sort of its own thing?
* In this example:
{{{
sage: zero_func(x)=0
sage: g = Piecewise([[(-1000,1),zero_func],[(1,1000),(x-1)^3]],x)
sage: G = g.plot()
sage: G.show(xmin=-5,xmax=5,ymax=100)
sage: g(1)
0
}}}
* You can use oo (infinity) for endpoints, but then the plot code for Piecewise gets screwed up.
* You can try putting in zero instead of defining this new zero function, but then g(1) and g(-1) etc. won't work.
* You can try using extend_by_zero to make the zero part, but it gives the same problem.
* You can plot without xmin and xmax, but that gives the whole function.
* You can plot without ymax, but that gives the range further out than you want.
* You can try plot(g), but that turns out to uncover a very strange error that may or may not be a bug.
In new `piecewise` (#14801) 0 is no longer in the domain (open intervals?); and there is now support for unbounded intervals.
{{{
sage: zero_func(x)=0
sage: g = piecewise([[(-1000,1),zero_func],[(1,1000),(x-1)^3]])
sage: G = g.plot()
sage: G.show(xmin=-5,xmax=5,ymax=100)
Launched png viewer for Graphics object consisting of 1 graphics primitive
sage: g(1)
ValueError: point 1 is not in the domain
}}}
See also #1773.
" defect new major sage-7.3 graphics piecewise wdj jason jondo kcrisman vbraun slelievre mkoeppe eviatarbach rws N/A #14801