Solve the IVP for periodic KdV and compute hyperelliptic solutions via dressing.
This respository contains the code for: arxiv.org/abs/2205.00153
An example usage follows.
gap_width = n -> isodd(n) ? exp(-n) : 0.1*n^5*exp(-n)
gap_start = n -> 4.0(n-1) + .4
g = 12
gaps = map(gap_start,1:g)
gaps = hcat(gaps, gaps + map(gap_width,1:g))
zs = gaps |> copy
zs[:,2] = 0*zs[:,2] .+ 1.0;
α1 = 0.1;
This code defines a sequence of intervals (gaps
) and zeros zs
that lie in these gaps along with their signs. The variable α1
gives the left most point the the spectrum of the associated hyperelliptic Schrodinger operator. Then the code to do the precomputation to setup the associated KdV solution is given by:
S = HyperellipticSurface(gaps,zs,α1,300);
BA = BakerAkhiezerFunction(S,200.; tols = [1e-17,1e-10]);
u(x,t) = KdV(BA,x,t,1e-8)
x = 0:.01:5
plot(x, map( x -> u(x,1.0), x) |> real)