Stefano De Marchi, Francesco Marchetti,
Emma Perracchione, Davide Poggiali
Slides are available online
Interpolation on Fake Nodes, or interpolation via Mapped Bases is a technique that applies to any interpolation method. It has shown in many cases the ability of obtaining a better interpolation without getting new samples.
This means that, provided that the original nodes are a sufficient sample of the given signal, it can be possible in principle to provide an interpolation of smaller error.
In terms of code: suppose that you have a generic interpolation function ...
def my_fancy_interpolator(x,y,xx):
.......
.......
return yy
def my_fancy_interpolator(x,y,xx):
p = np.polyfit(x,y)
yy = np.polyval(p,xx)
return yy
for instance ...
instead of calling the function directly you define a mapping function S and interpolate over the fake nodes S(x)
f = lambda x: np.log(x**2+1)
x = np.linspace(-1,1,10)
y = f(x)
xx = np.linspace(-1,1,100)
yy = my_fancy_interpolator(x,y,xx)
f = lambda x: np.log(x**2+1)
x = np.linspace(-1,1,10)
y = f(x)
xx = np.linspace(-1,1,100)
S = lambda x: -np.cos(np.pi * .5 * (x+1))
yy = my_fancy_interpolator(S(x),y,S(xx))
In symbolic terms: given a function
a set of nodes
and a set of basis functions
The interpolant is given by a function
s.t.
This process can be seen equivalently as:
1. An ordinary interpolation over the mapped basis
\[\mathcal{B}^s = \{b_i \circ S \}_{i=0, \dots, N}.\]
[Useful for theorems]
2. An interpolation over the original basis \(\mathcal{B}\) of a function \(g: S(\Omega) \longrightarrow\mathbb{R}\)
on the fake nodes
\[S(X) = \{S(x_i) \}_{i=0, \dots, N}.\]
\(g\in C^s\) must satisfy \(g(S(x_i)) = f(x_i)\;\;\forall i\).
If \(\mathcal{P} \approx g \) on \(S(X)\) with the original basis,
then \(\mathcal{R}^s = \mathcal{P} \circ S \approx f \) on \(X\)
[Useful for computations]
Common hypothesis from now on:
(1.) The mapping \(S\) is injective \(\longrightarrow\) Fake Nodes do not overlap
(2.) We interpolate a function \(g\) s.t. \( g\circ S =f\). Such function exists as (1.) holds
Proposition 1. [Equivalence of the Lebesgue constant]
The Lebesgue constant associated to the mapped nodes \(\Lambda^s(\Omega)\) is so that
\[\Lambda^s(\Omega) = \Lambda(S(\Omega)).\]
This means that the interpolation via mapped basis inherits the Lebesgue constant of the original basis in the Fake Nodes.
Lemma 1. [Equivalence of a cardinal basis]
If \(\{u_i\}_{i=0,\dots,N}\) is a cardinal basis on the Fake Nodes \(S(X)\) then
\( \{u_i\circ S\}_{i=0,\dots,N}\) is cardinal too on \(X\)
Proposition 2. [Stability]
Let \(\mathcal{R}^s_{\tilde{f}}\) be the interpolant of the function values
\(\tilde{f}(x_i)\), \(i=1,\ldots,n\). Then,
\[ \lvert\lvert \mathcal{R}_f^s - \mathcal{R}_{\tilde f}^s \rvert\rvert_{\infty,\Omega} \leq \Lambda^s(\Omega) \; \| f-{\tilde f} \|_{\infty, X_n}.\]
This guarantees the stability over (small) perturbation of the interpolant in case the Lebesgue constant at the Fake Nodes is sufficiently small.
Proposition 3. [Error bound inheritance]
The mapped basis interpolation inherits the error bounds of the original bases in any given norm, i.e.
\[\lvert\lvert \mathcal{R}_f^s-f \rvert\rvert_{\Omega} = \lvert\lvert \mathcal{P}_g-g \rvert\rvert_{S(\Omega)}. \]
This theorems links the error bounds. Any error bound found on the interpolation with the original basis \(\mathcal{B}\) on the Fake Nodes \(S(X)\) holds to the mapped basis \(\mathcal{B}^s\) in the original nodes \(X\).
1). Runge effect (1D)
The Runge effect is taught in every Num. Calculus course. Basically, we avoid it by resampling to Chebyshev or Chebyshev-Lobatto nodes...
...but what if we use a mapping that sends equispaced to CL nodes?
Fake-CL nodes (red) are not always better than actual CL nodes (blue)
Inheritance of the Lebesgue constant
2). Runge effect (2D)
In a similar way we can map a subsampling of the equispaced grid onto the Padua points, with comparable results
3). Gibbs phenomenon (1D)
If we interpolate a discontinuous function even over CL nodes we observe oscillations around the discontinuity points which grows with the number of samples.
...if we let the polynomial interpolation "breathe" by using a mapping that shift the nodes around all the discontinuity points we can get a good interpolation
Same technique, with a more complicated function...
3). Gibbs phenomenon (2D)
A similar mapping function can be used in 2D polynomial approximation.
To recap...
Python code is available online
Lots of open questions....here are some:
[1] B. Adcock, R.B. Platte, A mapped polynomial method for high-accuracy approximations on arbitrary grids, SIAM J. Numer. Anal.
[2J P. Berrut, S. De Marchi, G. Elefante, F. Marchetti, Treating the Gibbs phenomenon in barycentric rational interpolation and approximation via the S-Gibbs algorithm. Applied Math. Letters, 2020.
[3] S. De Marchi, F. Marchetti, E. Perracchione, Jumping with Variably Scaled Discontinuous Kernels (VSDKs), BIT Numerical Mathematics 2019.
[4] S. De Marchi, F. Marchetti, E. Perracchione, D. Poggiali, Polynomial interpolation via mapped bases without resampling, JCAM 2020.
[5] S. De Marchi, G. Elefante, E. Perracchione, D. Poggiali, Quadrature at Fake Nodes, preprint 2020.
[6] C. Runge, Uber empirische Funktionen und die Interpolation zwischen aquidistanten Ordinaten, Zeit. Math. Phys, 1901.