gives a square wave that alternates between and with unit period.


gives a square wave that alternates between y1 and y2 with unit period.


  • SquareWave[{min,max},x] has value max for 0<x<1/2.


open allclose all

Basic Examples  (3)

Evaluate numerically:

Plot over a subset of the reals:

SquareWave is a piecewise function over finite domains:

Scope  (33)

Numerical Evaluation  (4)

Evaluate numerically:

Evaluate with custom heights:

SquareWave[x] always returns an exact result:

SquareWave[{min,max},x] generally tracks the precision of {min,max}:

Evaluate efficiently at high precision:

SquareWave threads over lists in the last argument:

Specific Values  (4)

Value at zero:

Values at fixed points:

Evaluate symbolically:

Find a value of x for which the SquareWave[{2,-3},x]=2:

Visualization  (4)

Plot the SquareWave function:

Visualize scaled SquareWave functions:

Visualize SquareWave functions with different maximum and minimum values:

Plot SquareWave in three dimensions:

Function Properties  (11)

Function domain of SquareWave:

It is restricted to real inputs:

Function range of SquareWave[x]:

SquareWave is periodic with period 1:

SquareWave is an odd function:

The area under one period is zero:

SquareWave is not an analytic function:

It has both singularities and discontinuities on the integers:

SquareWave[x] is neither nondecreasing nor nonincreasing:

SquareWave is not injective:

SquareWave[x] is not surjective:

SquareWave[x] is neither non-negative nor non-positive:

SquareWave is neither convex nor concave:

Differentiation and Integration  (5)

First derivative with respect to :

Derivative of the two-argument form with respect to :

If a==b, SquareWave[{a,b},x] is constant and its derivatives are zero everywhere:

Compute the indefinite integral using Integrate:

Verify the anti-derivative away from the singular points:

More integrals:

Series Expansions  (5)


Since SquareWave is odd, FourierTrigSeries gives a simpler result:

The two results are equivalent:

FourierCosSeries of a scaled SquareWave:

Taylor series at a smooth point:

Series expansion at a singular point:

Taylor expansion at a generic point:

Applications  (2)

Square wave sound sample:

Compute the Fourier decomposition:

Get the ninth-order partial sum:

At the points of discontinuity, the Gibbs phenomenon of overshooting is observed:

Properties & Relations  (4)

Use FunctionExpand to expand SquareWave in terms of elementary functions:

Use PiecewiseExpand to obtain a piecewise representation:


Compute a finite number of Fourier coefficients:

Find the formula:

Use a FourierCoefficient directly:

Verify the consistency of formulas:

Possible Issues  (2)

SquareWave is only defined on real numbers:

SquareWave[x] is upper semicontinuous but not lower semicontinuous at the origin:

This differs from TriangleWave[x], which is both upper and lower semicontinuous, and thus continuous:

As well as SawtoothWave[x], which is only lower semicontinuous:

Visualize the three functions:

Wolfram Research (2008), SquareWave, Wolfram Language function, https://reference.wolfram.com/language/ref/SquareWave.html.


Wolfram Research (2008), SquareWave, Wolfram Language function, https://reference.wolfram.com/language/ref/SquareWave.html.


Wolfram Language. 2008. "SquareWave." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SquareWave.html.


Wolfram Language. (2008). SquareWave. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SquareWave.html


@misc{reference.wolfram_2024_squarewave, author="Wolfram Research", title="{SquareWave}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/SquareWave.html}", note=[Accessed: 27-May-2024 ]}


@online{reference.wolfram_2024_squarewave, organization={Wolfram Research}, title={SquareWave}, year={2008}, url={https://reference.wolfram.com/language/ref/SquareWave.html}, note=[Accessed: 27-May-2024 ]}