using Plots, ComplexPhasePortrait, ApproxFun, SingularIntegralEquations
gr();
Dr. Sheehan Olver
The Hilbert transform is fundamental to the study of singular integrals, and is of particular use in Signal processing. We introduce it via its links to the Cauchy transform.
We now investigate the additive jump that the Cauchy transform satisfies. That is, we know C+f(x)−C−f(x)=f(x)
Definition (Principal value integral on an interval) The (Cauchy) principal value integral at a<x<b is defined as ∫−baf(t)dt:=limϵ→0(∫x−ϵa+∫bx+ϵ)f(t)dt
Examples:
Here is a plot of the integration domain, showing how it avoids the singularity:
ε = 0.05
x = 0.1
Γ = Segment(-1 , x-ε) ∪ Segment(x+ε , 1)
t = Fun(Γ)
f = Fun(1/(t - x))
@show log(1 - x) - log(1+x)
plot(f; label="f", title="eps = $(ε), integral = $(sum(f))",ylims=(-40,40))
scatter!([x],[0.0];label="x")
log(1 - x) - log(1 + x) = -0.20067069546215122
Using the principal value integral, we can define a singular integral operator called the Hilbert transform:
Definition (Hilbert transform) For a<x<b, define H[a,b]f(x)=1π∫−baf(t)t−xdt
Here's a plot of some simple hilbert transforms:
x = Fun(-1 .. 1)
f = exp(x)*sqrt(1-x^2)
plot(f; label="function")
plot!(hilbert(f); label="hilbert transform")
x = Fun(-1 .. 1)
f = exp(x)/sqrt(1-x^2)
plot(f; label="function", ylims=(-5,5))
plot!(hilbert(f); label="hilbert transform")
f = exp(x)
xx = range(-0.9999; stop=0.9999, length=500)
plot(f; ylims=(-5,5), label="function")
plot!(xx, hilbert.(f, xx); label="hilbert transform")
A key result is that the additive jump of the Cauchy transform is given by the Hilbert transform:
Theorem (Plemelj on the interval III) The Cauchy transform has the additive jump C+[a,b]f(x)+C−[a,b]f(x)=−iHf(x)
Sketch of Proof We first show the result for f(x)=1. Note that by deformation through half circles of radius r near x we have (using the notation from last lecture) C+[a,b]1(x)+C−[a,b]1(x)=12πi[∫γ+x+∫γ−x]dζζ−x=22πi[∫x−ϵa+∫bx+ϵ]dtt−x+12πi[∫{x+ϵeiθ:π≥θ≥0}+∫{x+ϵeiθ:−π≤θ≤0}]dζζ−x=12πi[∫x−ϵa+∫bx+ϵ]dtt−x
Here we test it numerically:
f = exp(x)sqrt(1-x^2)
cauchy(f, 0.1+0.0im)+cauchy(f, 0.1-0.0im) , -im*hilbert(f)(0.1)
(0.0 - 0.4372398225886695im, 0.0 - 0.43723982258866934im)
Examples Recall (using ⋄ for the dummy variable) 1√z−1√z+1=−2iC[1√1−⋄2](z)
x = Fun()
norm(hilbert(1/sqrt(1-x^2)))
0.0
Similarly, recall √z−1√z+1=z+2iC[√1−⋄2](z)
plot(hilbert(sqrt(1-x^2)))
One more example: since C1(z)=log(z−1)−log(z+1)2πi,
hilbert(Fun(1,Legendre()), 0.1), (log(1-0.1)-log(0.1+1))/π
(-0.06387546623297949, -0.06387546623297947)
Suppose f(x) is real. Then we have, for example, Cf(x)=12πi∫1−1f(t)t−xdt
f = exp(x)sqrt(1-x^2)
cauchy(f, 10.0+im), cauchy(f, 10.0-im)
(0.0029553295890040973 + 0.02871472499617892im, -0.0029553295890040973 + 0.02871472499617892im)
It follows that ¯C+f(x)=−C−f(x)
f(0.1), 2real(cauchy(f, 0.1+0.0im)), -2real(cauchy(f, 0.1-0.0im))
(1.0996311793408589, 1.0996311793408586, 1.0996311793408586)
Similarly, we can find the imaginary part via:
−Hf(x)=−i(C+f(x)+C−f(x))=−i(C+f(x)−¯C+f(x))=2ℑC+f(x)=2ℑC−f(x)-hilbert(f, 0.1), 2imag(cauchy(f, 0.1+0.0im)), 2imag(cauchy(f, 0.1-0.0im))
(-0.43723982258866934, -0.4372398225886695, -0.4372398225886695)