I recently when searching for parameters on a unit cube in $\mathbb{R}^9$ (we all have our more or less peculiar hobbies, don't we?) found a practical reason to implement a triangle wave function $t(x)$ which can be defined as:
$$t(x) = \left\{ \begin{array}{ll}-x, & \forall x \in [-1,0]\\\phantom{-}x, & \forall x \in [\,\,\,\,\,0,1] \\ t(x+2),& \forall x \in \mathbb{R}\end{array}\right.$$
What techniques do there exist which would give nice properties for approximations of this function? "Nice properties" include (but are not limited to) :
- good fit in some sense (for example $L^2$)
- smooth continous derivatives
- practical/easy to compute
- easy to implement
- fast to compute
Own work Having learned the use for fourier transform in my field my first reaction was to do a fast fourier transform (fft) to generate the function with the use of the fourier transform's basis functions (sines and cosines). The coefficients for these diminish quite fast ($\mathcal{O}(n^2)$) with number of coefficients for this particular function which is nice as we get then a compressed representation and also we get continuity of derivatives at the integer points which is a nice property in many cases.
Function to be approximated in blue and a smooth approximation of up to order 3 sines and cosines. Honestly it has been tweaked a bit to match the maxima and minima better - how to accomplish that automatically could maybe be a follow up question.
You can take a Fourier series of your function as it's periodic with period 2. This gives a series of $$\dfrac{1}{2} - \dfrac{4}{\pi^2} \sum_{n=1}^{\infty} \dfrac{\cos((2n-1)\pi t)}{(2n-1)^2}.$$
For instance, the first 5 terms of the series give an approximation
and the more terms you take, the better the approximation. E.g. 50 terms looks almost exactly the same: