# How to write a piecewise-defined function (in Python, using SymPy)

## Task

In mathematics, we use the following notation for a “piecewise-defined” function.

\[f(x) = \begin{cases} x^2 & \text{if } x>2 \\ 1+x & \text{if } x\leq 2 \end{cases}\]This means that for all $x$ values larger than 2, $f(x)=x^2$, but for $x$ values less than or equal to 2, $f(x)=1+x$.

How can we express this in mathematical software?

## Solution

This answer assumes you have imported SymPy as follows.

1
2

from sympy import * # load all math functions
init_printing( use_latex='mathjax' ) # use pretty math output

SymPy has support for piecewise functions built in, using `Piecewise`

.
The function above would be written as follows.

1
2
3

var( 'x' )
formula = Piecewise( (x**2, x>2), (1+x, x<=2) )
formula

$\displaystyle \begin{cases} x^{2} & \text{for}\: x > 2 \\x + 1 & \text{otherwise} \end{cases}$

We can test to be sure the function works correctly by plugging in a few $x$ values and ensuring the correct $y$ values result. Here we’re using the method from how to substitute a value for a symbolic variable.

1

formula.subs(x,1), formula.subs(x,2), formula.subs(x,3)

$\displaystyle \left( 2, \ 3, \ 9\right)$

For $x=1$ we got $1+1=2$. For $x=2$ we got $2+1=3$. For $x=3$, we got $3^2=9$.

Content last modified on 24 July 2023.

See a problem? Tell us or edit the source.

Contributed by Nathan Carter (ncarter@bentley.edu)