piecewise( [ [ (
end ) ,
function ] , ... ] , var=variable )
A piecewise function in SageMath defined in part by
function on the domain from
end. Consecutive domains should share an endpoint to avoid unexpected errors. The optional
var keyword argument specifies which single symbolic variable is the argument of the complete function.
function for each domain must be the name of a symbolic function, not a numeric function. Symbolic functions are constructed from numeric functions using function. Symbolic functions entail significant overhead that can make
piecewise unsuitable for purely numeric calculations.
The current version of SageMath makes a distinction for this function between open and closed domains. Open domains are specified with parentheses
( ). Closed domains are specified with square brackets
[ ]. Attempting to specify a mixed domain
( ] or
[ ) leads to Python syntax errors.
To ensure a piecewise function consisting of several domains is valid at all points in the complete domain, alternately specify successive domains as open and closed. If the domains are all open then points on the boundaries will not be included, and making all domains closed leads to the error message
domains must be pairwise disjoint.
Specifying a partial domain when plotting a piecewise function is supported in the current version of SageMath. Previously this led to the opaque error message
local variable 'G' referenced before assignment.
Including a numeric Python-callable function directly in
piecewise leads to the error message
unable to simplify to float approximation. This is avoided by constructing a symbolic function using function.
f = piecewise( [ [(0,1),x], [[1,3],2-x], [(3,4),x-4] ] ) show( plot( f, 0, 4, figsize=[4.5,2], color=(0,.5,1) ) )
f = piecewise( [ [(0,1),lambda x:-.6], [[1,2],lambda x:-.2], [(2,3),lambda x:.2], [[3,4],lambda x:.6] ] ) show( plot( f, 0, 4, figsize=[4.5,2], color=(0,.5,1) ) )
Related functions: function
Function category: basic functions sagemath-docs