# Convergence of PL interpolationΒΆ

We measure the convergence rate for piecewise linear interpolation of $$e^{\sin 7x}$$.

using FundamentalsNumericalComputation

f = x -> exp(sin(7*x))
x = (0:10000)/1e4  # sample the difference at many points
n = @. 2^(3:10)
err = zeros(0)
for n in n
t = (0:n)/n   # interpolation nodes
p = FNC.plinterp(t,f.(t))
dif = @.f(x)-p(x)
push!(err,norm(dif,Inf) )
end

pretty_table((n=n,error=err),backend=:html)

n error
Int64 Float64
8 0.21602990323384974
16 0.06381730414968168
32 0.016038182942837764
64 0.004058789402869412
128 0.0010155253347479132
256 0.0002540280995928512
512 6.348972346570392e-5
1024 1.5876989992058554e-5

Since we expect convergence that is $$O(h^2)=O(n^{-2})$$, we use a log-log graph of error and expect a straight line of slope $$-2$$.

order2 = @. 0.1*(n/n[1])^(-2)

plot(n,[err order2],m=:o,l=[:solid :dash],label=["error" "2nd order"],
xaxis=(:log10,"n"), yaxis=(:log10,"\$\\| f-p \\|_\\infty\$"),
title="Convergence of PL interpolation")