# Refinable function

In mathematics, in the area of wavelet analysis, a refinable function is a function which fulfils some kind of self-similarity. A function $\varphi$ is called refinable with respect to the mask $h$ if
    $\varphi (x)=2\cdot \sum _{k=0}^{N-1}h_{k}\cdot \varphi (2\cdot x-k)$
This condition is called refinement equation, dilation equation or two-scale equation.
Using the convolution (denoted by a star, *) of a function with a discrete mask and the dilation operator $D$ one can write more concisely:
    $\varphi =2\cdot D_{1/2}(h*\varphi )$
It means that one obtains the function, again, if you convolve the function with a discrete mask and then scale it back. There is a similarity to iterated function systems and de Rham curves.
The operator $\varphi \mapsto 2\cdot D_{1/2}(h*\varphi )$ is linear. A refinable function is an eigenfunction of that operator. Its absolute value is not uniquely defined. That is, if $\varphi$ is a refinable function, then for every $c$ the function $c\cdot \varphi$ is refinable, too.
These functions play a fundamental role in wavelet theory as scaling functions.

## Properties
### Values at integral points

A refinable function is defined only implicitly. It may also be that there are several functions which are refinable with respect to the same mask. If $\varphi$ shall have finite support and the function values at integer arguments are wanted, then the two scale equation becomes a system of simultaneous linear equations.
Let $a$ be the minimum index and $b$ be the maximum index of non-zero elements of $h$, then one obtains ${\begin{pmatrix}\varphi (a)\\\varphi (a+1)\\\vdots \\\varphi (b)\end{pmatrix}}={\begin{pmatrix}h_{a}&&&&&\\h_{a+2}&h_{a+1}&h_{a}&&&\\h_{a+4}&h_{a+3}&h_{a+2}&h_{a+1}&h_{a}&\\\ddots &\ddots &\ddots &\ddots &\ddots &\ddots \\&h_{b}&h_{b-1}&h_{b-2}&h_{b-3}&h_{b-4}\\&&&h_{b}&h_{b-1}&h_{b-2}\\&&&&&h_{b}\end{pmatrix}}{\begin{pmatrix}\varphi (a)\\\varphi (a+1)\\\vdots \\\varphi (b)\end{pmatrix}}.$
Using the discretization operator, call it $Q$ here, and the transfer matrix of $h$, named $T_{h}$, this can be written concisely as $Q\varphi =T_{h}Q\varphi .$
This is again a fixed-point equation. But this one can now be considered as an eigenvector-eigenvalue problem. That is, a finitely supported refinable function exists only (but not necessarily), if $T_{h}$ has the eigenvalue 1.

### Values at dyadic points

From the values at integral points you can derive the values at dyadic points, i.e. points of the form $k\cdot 2^{-j}$, with $k\in \mathbb {Z}$ and $j\in \mathbb {N}$.
    $\varphi =D_{1/2}(2\cdot (h*\varphi ))$
    $D_{2}\varphi =2\cdot (h*\varphi )$
    $Q(D_{2}\varphi )=Q(2\cdot (h*\varphi ))=2\cdot (h*Q\varphi )$
The star denotes the convolution of a discrete filter with a function. With this step you can compute the values at points of the form ${\frac {k}{2}}$. By replacing iteratedly $\varphi$ by $D_{2}\varphi$ you get the values at all finer scales.
$Q(D_{2^{j+1}}\varphi )=2\cdot (h*Q(D_{2^{j}}\varphi ))$

### Convolution

If $\varphi$ is refinable with respect to $h$, and $\psi$ is refinable with respect to $g$, then $\varphi *\psi$ is refinable with respect to $h*g$.

### Differentiation

If $\varphi$ is refinable with respect to $h$, and the derivative $\varphi '$ exists, then $\varphi '$ is refinable with respect to $2\cdot h$. This can be interpreted as a special case of the convolution property, where one of the convolution operands is a derivative of the Dirac impulse.

### Integration

If $\varphi$ is refinable with respect to $h$, and there is an antiderivative $\Phi$ with Φ(t)=∫$_0$$^t$φ(τ)dτ{\textstyle \Phi (t)=\int _{0}^{t}\varphi (\tau )\, \mathrm {d} \tau }, then the antiderivative $t\mapsto \Phi (t)+c$ is refinable with respect to mask 1/2 ⋅h{\textstyle {\frac {1}{2}}\cdot h} where the constant $c$ must fulfill c⋅(1−∑$_j$h$_j$)=∑$_j$h$_j$⋅Φ(−j){\textstyle c\cdot \left(1-\sum _{j}h_{j}\right)=\sum _{j}h_{j}\cdot \Phi (-j)}.
If $\varphi$ has bounded support, then we can interpret integration as convolution with the Heaviside function and apply the convolution law.

### Scalar products

Computing the scalar products of two refinable functions and their translates can be broken down to the two above properties. Let $T$ be the translation operator. It holds $\langle \varphi ,T_{k}\psi \rangle =\langle \varphi *\psi ^{*},T_{k}\delta \rangle =(\varphi *\psi ^{*})(k)$ where $\psi ^{*}$ is the adjoint of $\psi$ with respect to convolution, i.e., $\psi ^{*}$ is the flipped and complex conjugated version of $\psi$, i.e., $\psi ^{*}(t)={\overline {\psi (-t)}}$.
Because of the above property, $\varphi *\psi ^{*}$ is refinable with respect to $h*g^{*}$, and its values at integral arguments can be computed as eigenvectors of the transfer matrix. This idea can be easily generalized to integrals of products of more than two refinable functions.

### Smoothness

A refinable function usually has a fractal shape. The design of continuous or smooth refinable functions is not obvious. Before dealing with forcing smoothness it is necessary to measure smoothness of refinable functions. Using the Villemoes machine one can compute the smoothness of refinable functions in terms of Sobolev exponents.
In a first step the refinement mask $h$ is divided into a filter $b$, which is a power of the smoothness factor $(1,1)$ (this is a binomial mask) and a rest $q$. Roughly spoken, the binomial mask $b$ makes smoothness and $q$ represents a fractal component, which reduces smoothness again. Now the Sobolev exponent is roughly the order of $b$ minus logarithm of the spectral radius of $T_{q*q^{*}}$.

## Generalization

The concept of refinable functions can be generalized to functions of more than one variable, that is functions from $\mathbb {R} ^{d}\to \mathbb {R}$. The most simple generalization is about tensor products. If $\varphi$ and $\psi$ are refinable with respect to $h$ and $g$, respectively, then $\varphi \otimes \psi$ is refinable with respect to $h\otimes g$.
The scheme can be generalized even more to different scaling factors with respect to different dimensions or even to mixing data between dimensions. Instead of scaling by scalar factor like 2 the signal the coordinates are transformed by a matrix $M$ of integers. In order to let the scheme work, the absolute values of all eigenvalues of $M$ must be larger than one. (Maybe it also suffices that $\left|\det M\right|>1$.)
Formally the two-scale equation does not change very much: $\varphi (x)=\left|\det M\right|\cdot \sum _{k\in \mathbb {Z} ^{d}}h_{k}\cdot \varphi (M\cdot x-k)$ $\varphi =\left|\det M\right|\cdot D_{M^{-1}}(h*\varphi )$

## Examples

* If the definition is extended to distributions, then the Dirac impulse is refinable with respect to the unit vector $\delta$, that is known as Kronecker delta. The $n$-th derivative of the Dirac distribution is refinable with respect to $2^{n}\cdot \delta$.
* The Heaviside function is refinable with respect to ${\frac {1}{2}}\cdot \delta$.
* The truncated power functions with exponent $n$ are refinable with respect to ${\frac {1}{2^{n+1}}}\cdot \delta$.
* The triangular function is a refinable function. B-spline functions with successive integral nodes are refinable, because of the convolution theorem and the refinability of the characteristic function for the interval $[0,1)$ (a boxcar function).
* All polynomial functions are refinable. For every refinement mask there is a polynomial that is uniquely defined up to a constant factor. For every polynomial of degree $n$ there are many refinement masks that all differ by a mask of type $v*(1,-1)^{n+1}$ for any mask $v$ and the convolutional power $(1,-1)^{n+1}$.
* A rational function $\varphi$ is refinable if and only if it can be represented using partial fractions as $\varphi (x)=\sum _{i\in \mathbb {Z} }{\frac {s_{i}}{(x-i)^{k}}}$, where $k$ is a positive natural number and $s$ is a real sequence with finitely many non-zero elements (a Laurent polynomial) such that $s|(s\uparrow 2)$ (read: $\exists h(z)\in \mathbb {R} [z,z^{-1}]\ h(z)\cdot s(z)=s(z^{2})$). The Laurent polynomial $2^{k-1}\cdot h$ is the associated refinement mask.