Triangle wave

From Wikipedia, the free encyclopedia
Revision as of 16:29, 18 March 2025 by imported>AshPlasek (Update image to svg version)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Short description Template:Infobox mathematical function

Script error: No such module "Listen". Script error: No such module "Listen".

A triangular wave or triangle wave is a non-sinusoidal waveform named for its triangular shape. It is a periodic, piecewise linear, continuous real function.

Like a square wave, the triangle wave contains only odd harmonics. However, the higher harmonics roll off much faster than in a square wave (proportional to the inverse square of the harmonic number as opposed to just the inverse).

Definitions

File:Waveforms.svg
Sine, square, triangle, and sawtooth waveforms

Definition

A triangle wave of period p that spans the range [0, 1] is defined as x(t)=2|tptp+12|, where   is the floor function. This can be seen to be the absolute value of a shifted sawtooth wave.

For a triangle wave spanning the range Template:Closed-closed the expression becomes x(t)=2|2(tptp+12)|1.

File:Triangle wave with amplitude=5, period=4.png
Triangle wave with amplitude = 5, period = 4

A more general equation for a triangle wave with amplitude a and period p using the modulo operation and absolute value is y(x)=4ap|((xp4)modp)p2|a.

For example, for a triangle wave with amplitude 5 and period 4: y(x)=5|((x1)mod4)2|5.

A phase shift can be obtained by altering the value of the p/4 term, and the vertical offset can be adjusted by altering the value of the a term.

As this only uses the modulo operation and absolute value, it can be used to simply implement a triangle wave on hardware electronics.

Note that in many programming languages, the % operator is a remainder operator (with result the same sign as the dividend), not a modulo operator; the modulo operation can be obtained by using ((x % p) + p) % p in place of x % p. In e.g. JavaScript, this results in an equation of the form 4*a/p * Math.abs((((x - p/4) % p) + p) % p - p/2) - a.

Relation to the square wave

The triangle wave can also be expressed as the integral of the square wave: x(t)=0tsgn(sinup)du.

Expression in trigonometric functions

A triangle wave with period p and amplitude a can be expressed in terms of sine and arcsine (whose value ranges from −π/2 to π/2): y(x)=2aπarcsin(sin(2πpx)). The identity cosx=sin(p4x) can be used to convert from a triangle "sine" wave to a triangular "cosine" wave. This phase-shifted triangle wave can also be expressed with cosine and arccosine: y(x)=a2aπarccos(cos(2πpx)).

Expressed as alternating linear functions

Another definition of the triangle wave, with range from −1 to 1 and period p, is x(t)=4p(tp22tp+12)(1)2tp+12.

Harmonics

File:Synthesis triangle.gif
Animation of the additive synthesis of a triangle wave with an increasing number of harmonics. See Fourier Analysis for a mathematical description.

It is possible to approximate a triangle wave with additive synthesis by summing odd harmonics of the fundamental while multiplying every other odd harmonic by −1 (or, equivalently, changing its phase by Template:Pi) and multiplying the amplitude of the harmonics by one over the square of their mode number, Template:Math (which is equivalent to one over the square of their relative frequency to the fundamental).

The above can be summarised mathematically as follows: xtriangle(t)=8π2i=0N1(1)in2sin(2πf0nt), where Template:Mvar is the number of harmonics to include in the approximation, Template:Mvar is the independent variable (e.g. time for sound waves), f0 is the fundamental frequency, and Template:Mvar is the harmonic label which is related to its mode number by n=2i+1.

This infinite Fourier series converges quickly to the triangle wave as Template:Mvar tends to infinity, as shown in the animation.

Arc length

The arc length per period for a triangle wave, denoted by s, is given in terms of the amplitude a and period length p by s=(4a)2+p2.

See also

References

Template:Reflist

  • Script error: No such module "Template wrapper".

Template:Waveforms Template:Use dmy dates