p03: Band-limited interpolation

p03: Band-limited interpolation#

We will interpolate following functions using band limited interpolation on an infinite grid.

Delta function

\[\begin{split} v(x) = \begin{cases} 1, & x =0 \\ 0, & \textrm{otherwise} \end{cases} \end{split}\]

Square wave

\[\begin{split} v(x) = \begin{cases} 1, & |x| \le 3 \\ 0, & \textrm{otherwise} \end{cases} \end{split}\]

Hat function

\[ v(x) = \max(0, 1-|x|/3) \]

Since all functions are zero away from origin, we can restrict to some finite interval, say \([-10,10]\).

%config InlineBackend.figure_format='svg'
from numpy import arange,maximum,abs,zeros,sin,pi
from matplotlib.pyplot import subplot,figure,plot,grid,axis
h = 1.0;
xmax = 10.0;
x = arange(-xmax,xmax+h,h)
xx = arange(-xmax-h/20, xmax+h/20, h/10) # for plotting
figure(figsize=(10,10))
for pl in range(3):
    subplot(4,1,pl+1)
    if pl==0:
        v = (x==0)                      # delta function
    elif pl==1:
        v = (abs(x) <= 3.0)             # square wave
    else:
        v = maximum(0.0,1.0-abs(x)/3.0) # hat function
    plot(x,v,'o'); grid(True)
    
    # Evaluate interpolant on xx
    p = zeros(len(xx))
    for i in range(len(x)):
        p = p + v[i]*sin(pi*(xx-x[i])/h)/(pi*(xx-x[i])/h)
    plot(xx,p)
    axis([-xmax,xmax,-0.5,1.5]);
_images/1bdc8abdd6a49f678613fd47305cf800afaed6b112128f1f3373b886151212df.svg